Есть руководители. Если они приглашают в проект, то автоматом отправляется не приглашение, а то, что юзер - участник. Пользователь НЕ может выйти из группы сам. Только руководитель может исключить. |
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>"; } } } } } |