Обучаю битриксу программистов, интеграторов. Подробнee ⇒

Приглашение в проект, от которого нельзя отказаться



Есть руководители.
Если они приглашают в проект, то автоматом отправляется не приглашение, а то, что юзер - участник.
Пользователь НЕ может выйти из группы сам. Только руководитель может исключить.
завела глобальную константу в CRM типа привязка к пользователям множественная
AddEventHandler("socialnetwork", "OnBeforeSocNetUserToGroupAdd","MyOnBeforeSocNetUserToGroupAdd",1); //перед добавлением
function MyOnBeforeSocNetUserToGroupAdd(&$arFields){   
   if(CModule::IncludeModule("bizproc")){      
      $result = \Bitrix\Bizproc\Workflow\Type\GlobalConst::getValue("Constant1709816900365"); 
      $arUserIds = [];
      foreach($result as $user){
         $userId = str_replace("user_", "", $user);
         $arUserIds[$userId] = $userId;   
      }      
      if(isset($arUserIds[$arFields["INITIATED_BY_USER_ID"]])){
         $arFields["ROLE"] = \Bitrix\Socialnetwork\UserToGroupTable::ROLE_USER;   
         $arFields["SEND_MAIL"] = "N";   
      }
   }
}

AddEventHandler("socialnetwork", "OnBeforeSocNetUserToGroupDelete","MyOnBeforeSocNetUserToGroupDelete"); //перед удалением
function MyOnBeforeSocNetUserToGroupDelete($id){
   global $USER;
   $userId = $USER->GetID();
   $arRelation = CSocNetUserToGroup::GetById($id);   
   $groupId = $arRelation['GROUP_ID'];
   $arGroup = CSocNetGroup::getById($groupId,false);   
   if(CModule::IncludeModule("bizproc")){
      $result = \Bitrix\Bizproc\Workflow\Type\GlobalConst::getValue("Constant1709816900365"); 
      $arUserIds = [];
      foreach($result as $user){
         $userIdTemp = str_replace("user_", "", $user);
         $arUserIds[$userIdTemp] = $userIdTemp;   
      }      
      if(isset($arUserIds[$arGroup["OWNER_ID"]])&& !isset($arUserIds[$userId])){
         return false;
      }
   }   
}

AddEventHandler("im","OnBeforeMessageNotifyAdd","MyOnBeforeMessageNotifyAdd");
function MyOnBeforeMessageNotifyAdd(&$arFields){
   
   if(($arFields["NOTIFY_MODULE"]=="socialnetwork") && ($arFields["NOTIFY_EVENT"]=="invite_group_btn") && !empty($arFields["NOTIFY_TAG"])){
      $fromUserId = $arFields["FROM_USER_ID"];
      $toUserId = $arFields["TO_USER_ID"];
      
      
      //ид группы выцарапываем
      if(
         (strpos($arFields["NOTIFY_MESSAGE_OUT"], "Адрес группы: https://corp.nikaverro.ru/workgroups/group/")!==false) &&
         (strpos($arFields["NOTIFY_MESSAGE_OUT"], "Приглашение в группу ")!==false)
      ){
         
         $str = substr($arFields["NOTIFY_MESSAGE_OUT"], strpos($arFields["NOTIFY_MESSAGE_OUT"], "Адрес группы: https://corp.nikaverro.ru/workgroups/group/")+strlen("Адрес группы: https://corp.nikaverro.ru/workgroups/group/"));
         
         $groupId = intval(substr($str, 0,strpos($str,"/")));
         
         if($groupId>0 && CModule::IncludeModule("bizproc") && CModule::IncludeModule("socialnetwork")){            
            $result = \Bitrix\Bizproc\Workflow\Type\GlobalConst::getValue("Constant1709816900365"); 
            $arUserIds = [];
            foreach($result as $user){
               $userIdTemp = str_replace("user_", "", $user);
               $arUserIds[$userIdTemp] = $userIdTemp;   
            }      
            if(isset($arUserIds[$fromUserId])){
               //меняем текст на то, что он вступил

               $arFields["NOTIFY_MESSAGE_OUT"] = "Вы добавлены в группу: https://corp.nikaverro.ru/workgroups/group/".$groupId."/";
               $arFields["NOTIFY_BUTTONS"] = [];
               $arFields["NOTIFY_MESSAGE"] = $arFields["MESSAGE"] = $arFields["MESSAGE_OUT"] = $arFields["NOTIFY_TITLE"] = str_replace("Приглашение ","Вы добавлены ",$arFields["NOTIFY_MESSAGE"]);                
               
               $arFields["NOTIFY_MESSAGE"] .= " <a href='https://corp.nikaverro.ru/workgroups/group/".$groupId."/'>Перейти в группу</a>";
               $arFields["MESSAGE_OUT"] .= " <a href='https://corp.nikaverro.ru/workgroups/group/".$groupId."/'>Перейти в группу</a>";
               $arFields["MESSAGE"] .= ". <a href='https://corp.nikaverro.ru/workgroups/group/".$groupId."/'>Перейти в группу</a>";            
            }            
         }
      }         
   }
}
Если блог был полезным, можете угостить меня "чашечкой кофе" :)

Сбер по номеру телефона +7 (953) 585-13-09 Вероника.
Спасибо!