%PDF- %PDF-
Server IP : 37.220.80.31 / Your IP : 3.15.26.145 Web Server : Apache/2.4.52 (Ubuntu) System : Linux 3051455-guretool.twc1.net 5.15.0-107-generic #117-Ubuntu SMP Fri Apr 26 12:26:49 UTC 2024 x86_64 User : www-root ( 1010) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/www/www-root/data/www/dev.artlot24.ru/bitrix/modules/sale/install/components/bitrix/sale.crm.site.master/wizard/ |
Upload File : |
<?php namespace Bitrix\Sale\CrmSiteMaster\Steps; if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) { die(); } use Bitrix\Main, Bitrix\Main\Application, Bitrix\Main\Localization\Loc, Bitrix\Sale\CrmSiteMaster\Tools\SitePatcher; Loc::loadMessages(__FILE__); /** * Class CrmGroupStep * @package Bitrix\Sale\CrmSiteMaster\Steps */ class CrmGroupStep extends \CWizardStep { const ADMIN_USER_GROUP_ID = 1; const SELECTED_USER_GROUPS = "~SELECTED_USER_GROUPS"; const EMPLOYEE_USER_GROUP_ID = "~EMPLOYEE_USER_GROUP_ID"; private $currentStepName = __CLASS__; /** @var \SaleCrmSiteMaster */ private $component = null; /** @var Main\Request */ private $request; /** * Check step errors */ private function setStepErrors() { $errors = $this->component->getWizardStepErrors($this->currentStepName); if ($errors) { foreach ($errors as $error) { $this->SetError($error); } } } /** * Prepare next/prev buttons * * @throws \ReflectionException */ private function prepareButtons() { $steps = $this->component->getSteps($this->currentStepName); $shortClassName = (new \ReflectionClass($this))->getShortName(); if (isset($steps["NEXT_STEP"])) { $this->SetNextStep($steps["NEXT_STEP"]); $this->SetNextCaption(Loc::getMessage("SALE_CSM_WIZARD_".mb_strtoupper($shortClassName)."_NEXT")); } } /** * Initialization step id, title and next step * * @throws Main\SystemException * @throws \ReflectionException */ public function initStep() { $this->component = $this->GetWizard()->GetVar("component"); $this->SetStepID($this->currentStepName); $this->SetTitle(Loc::getMessage("SALE_CSM_WIZARD_CRMGROUPSTEP_TITLE")); $this->request = Application::getInstance()->getContext()->getRequest(); $this->prepareButtons(); $this->setStepErrors(); } /** * Show step content * * @return bool * @throws Main\ArgumentException * @throws Main\ObjectPropertyException * @throws Main\SystemException */ public function showStep() { ob_start(); ?> <div class="adm-crm-site-master-paragraph"><?=Loc::getMessage("SALE_CSM_WIZARD_CRMGROUPSTEP_DESCR1")?></div> <div class="adm-crm-site-master-paragraph"><?=Loc::getMessage("SALE_CSM_WIZARD_CRMGROUPSTEP_DESCR2")?></div> <div class="adm-crm-site-master-paragraph"><?=Loc::getMessage("SALE_CSM_WIZARD_CRMGROUPSTEP_DESCR3")?></div> <div class="ui-alert ui-alert-danger ui-alert-inline ui-alert-icon-danger"> <span class="ui-alert-message"><?=Loc::getMessage("SALE_CSM_WIZARD_CRMGROUPSTEP_NOTE")?></span> </div> <div class="adm-crm-group-master-form"> <div class="adm-crm-group-master-form-select-manager"> {#USER_GROUPS_SELECT_MANAGER#} </div> <div class="adm-crm-group-master-form-select-admin"> {#USER_GROUPS_SELECT_ADMIN#} </div> </div> <? $content = ob_get_contents(); ob_end_clean(); $this->content = $content; $this->showSelectUserGroupManagerHtml(); $this->showSelectUserGroupAdminHtml(); return true; } /** * @return bool * @throws Main\ArgumentException * @throws Main\ArgumentNullException * @throws Main\ArgumentOutOfRangeException * @throws Main\LoaderException * @throws Main\ObjectPropertyException * @throws Main\SystemException */ public function onPostForm() { Main\Loader::includeModule("crm"); $this->saveSelectedGroups(); $employeeGroupId = $this->getEmployeesGroupId(); if ($employeeGroupId) { Main\Config\Option::set("crm", self::EMPLOYEE_USER_GROUP_ID, $employeeGroupId); } $crmRoleId = $this->getCrmRoleId( Loc::getMessage("SALE_CSM_WIZARD_CRMGROUPSTEP_CRM_ROLE_ADM") ); if ($crmRoleId === null) { $crmRoleId = $this->getCrmRoleId( Loc::getMessage("SALE_CSM_WIZARD_CRMGROUPSTEP_CRM_ROLE_MAN") ); } if ($crmRoleId && $employeeGroupId) { $this->setCrmRole($crmRoleId, [$employeeGroupId]); } $this->setIntranetUserGroups(); $sitePatcher = SitePatcher::getInstance(); $sitePatcher->addEmployeesToCompanyStructure(); return true; } /** * @throws Main\ArgumentOutOfRangeException */ private function saveSelectedGroups() { $selectedGroups = []; $groupManagerList = $this->request->get("USER_GROUPS_MANAGER"); if ($groupManagerList) { $selectedGroups["MANAGER"] = $groupManagerList; } $groupAdminList = $this->request->get("USER_GROUPS_ADMIN"); if ($groupAdminList) { $selectedGroups["ADMIN"] = $groupAdminList; } if ($selectedGroups) { Main\Config\Option::set("sale", self::SELECTED_USER_GROUPS, serialize($selectedGroups)); } unset($groupManagerList, $groupAdminList, $selectedGroups); } /** * @throws Main\ArgumentException * @throws Main\ArgumentNullException * @throws Main\ArgumentOutOfRangeException * @throws Main\LoaderException * @throws Main\ObjectPropertyException * @throws Main\SystemException */ private function setIntranetUserGroups() { $groups = [self::ADMIN_USER_GROUP_ID]; $groupManagerList = $this->request->get("USER_GROUPS_MANAGER"); if ($groupManagerList) { $groups = array_merge($groupManagerList, $groups); } $groupAdminList = $this->request->get("USER_GROUPS_ADMIN"); if ($groupAdminList) { $groups = array_merge($groupAdminList, $groups); } $employeesGroupId = $this->getEmployeesGroupId(); if ($employeesGroupId) { $sitePatcher = SitePatcher::getInstance(); $userList = $sitePatcher->getUserIdList($groups); $sitePatcher->addNewGroup($userList, [$employeesGroupId]); } } /** * @throws Main\ArgumentException * @throws Main\ObjectPropertyException * @throws Main\SystemException */ private function showSelectUserGroupManagerHtml() { $groupList = $this->getUserGroupList(); ob_start(); ?> <div class="adm-crm-site-master-form-row"> <label for="USER_GROUPS_MANAGER" class="adm-crm-site-master-form-label"> <?=Loc::getMessage("SALE_CSM_WIZARD_CRMGROUPSTEP_SELECT_TITLE_MAN")?> </label> <div class="adm-crm-site-master-form-control"> <div class="ui-ctl-multiple-select ui-ctl-w75"> <select class="ui-ctl-element ui-ctl-element-auto" name="USER_GROUPS_MANAGER[]" id="USER_GROUPS_MANAGER" title="" multiple size="5" > <? foreach ($groupList as $group) { ?><option value="<?=$group["ID"]?>"><?=$group["NAME"]?></option><? } ?> </select> </div> </div> </div> <? $content = ob_get_contents(); ob_end_clean(); $this->content = str_replace("{#USER_GROUPS_SELECT_MANAGER#}", $content, $this->content); } /** * @throws Main\ArgumentException * @throws Main\ObjectPropertyException * @throws Main\SystemException */ private function showSelectUserGroupAdminHtml() { $groupList = $this->getUserGroupList(); ob_start(); ?> <div class="adm-crm-site-master-form-row"> <label for="USER_GROUPS_ADMIN" class="adm-crm-site-master-form-label"> <?=Loc::getMessage("SALE_CSM_WIZARD_CRMGROUPSTEP_SELECT_TITLE_ADM")?> </label> <div class="adm-crm-site-master-form-control"> <div class="ui-ctl-multiple-select ui-ctl-w75"> <select class="ui-ctl-element ui-ctl-element-auto" name="USER_GROUPS_ADMIN[]" id="USER_GROUPS_ADMIN" title="" multiple size="5"> <? foreach ($groupList as $group) { ?><option value="<?=$group["ID"]?>"><?=$group["NAME"]?></option><? } ?> </select> </div> </div> </div> <? $content = ob_get_contents(); ob_end_clean(); $this->content = str_replace("{#USER_GROUPS_SELECT_ADMIN#}", $content, $this->content); } /** * @return array * @throws Main\ArgumentException * @throws Main\ObjectPropertyException * @throws Main\SystemException */ private function getUserGroupList() { $groupList = []; $groupIterator = Main\GroupTable::getList([ "select" => ["ID", "NAME"], "filter" => [ 'LOGIC' => 'AND', ["!%STRING_ID" => "CRM_SHOP_"], ["!STRING_ID" => "ADMIN_SECTION"], ["!STRING_ID" => "SUPPORT"], ["!STRING_ID" => "CREATE_GROUPS"], ["!STRING_ID" => "PERSONNEL_DEPARTMENT"], ["!STRING_ID" => "DIRECTION"], ["!STRING_ID" => "MARKETING_AND_SALES"], ["!%STRING_ID" => "EMPLOYEES_"], ["!%STRING_ID" => "PORTAL_ADMINISTRATION_"], ], ]); while ($group = $groupIterator->fetch()) { $groupList[] = $group; } return $groupList; } /** * @return array */ public function showButtons() { ob_start(); if ($this->GetNextStepID() !== null) { ?> <input type="hidden" name="<?=$this->GetWizard()->nextStepHiddenID?>" value="<?=$this->GetNextStepID()?>"> <button type="submit" class="ui-btn ui-btn-primary" name="<?=$this->GetWizard()->nextButtonID?>"> <?=$this->GetNextCaption()?> </button> <? } $content = ob_get_contents(); ob_end_clean(); return [ "CONTENT" => $content, "NEED_WRAPPER" => true, "CENTER" => true, ]; } /** * @return int|null * @throws Main\ArgumentException * @throws Main\ArgumentNullException * @throws Main\ArgumentOutOfRangeException * @throws Main\LoaderException * @throws Main\ObjectPropertyException * @throws Main\SystemException */ private function getEmployeesGroupId() { $employeeGroupId = Main\GroupTable::getList([ "select" => ["ID"], "filter" => ["=STRING_ID" => "EMPLOYEES_".SitePatcher::getInstance()->getCrmSiteId()], ])->fetch(); return $employeeGroupId ? (int)$employeeGroupId["ID"] : null; } /** * @param $crmRoleId * @param array $groups */ private function setCrmRole($crmRoleId, array $groups) { $arPerms = []; foreach ($groups as $group) { $arPerms["G".$group][] = $crmRoleId; } $crmRole = new \CcrmRole(); $crmRole->SetRelation($arPerms); try { \CCrmSaleHelper::addUserToShopGroup(); $cache = new \CPHPCache; $cache->CleanDir("/crm/list_crm_roles/"); } catch (\Exception $ex) { $this->SetError($ex->getMessage()); } } /** * @param $name * @return int|null */ private function getCrmRoleId($name) { $crmRoleId = null; $crmRoleIterator = \CCrmRole::GetList( ["ID" => "DESC"], ["NAME" => $name] ); if ($crmRole = $crmRoleIterator->Fetch()) { $crmRoleId = (int)$crmRole["ID"]; } return $crmRoleId; } }