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