function _getIBlockItemsCount($ib, $section = null, $object = false, $object_id = false) { $arFilter = array("IBLOCK_ID" => intval($ib), "INCLUDE_SUBSECTIONS" => "Y", "CHECK_PERMISSIONS" => "N", "ACTIVE" => "Y"); if ($section !== null) { $arFilter["SECTION_ID"] = intval($section); } if ($object !== false) { if ($object == "user") { $arFilter["CREATED_BY"] = $object_id; } else { $arFilter["SOCNET_GROUP_ID"] = $object_id; } $arFilter["SECTION_ID"] = 0; $dbRes = CIBLockSection::GetList(array(), $arFilter, false); // find GROUP/USER SECTION_ID if ($dbRes && ($arRes = $dbRes->Fetch())) { $arFilter["SECTION_ID"] = $arRes["ID"]; } else { return 0; } } $itemsCount = CIBlockElement::GetList(array(), $arFilter, array(), false); // decrement by trash size $arParams = array(); if ($object !== false) { $arParams["ROOT_SECTION_ID"] = $arFilter["SECTION_ID"]; $arParams["ATTRIBUTES"] = $object == "user" ? array('user_id' => $object_id) : array('group_id' => $object_id); } $ob = new CWebDavIblock($arFilter['IBLOCK_ID'], '', $arParams); $arFilter["SECTION_ID"] = array($ob->GetMetaID("TRASH", false), $ob->GetMetaID("DROPPED", false)); unset($ob); $trashAndDroppedItemsCount = CIBlockElement::GetList(array(), $arFilter, array(), false); $itemsCount -= $trashAndDroppedItemsCount; return $itemsCount; }
if (COption::GetOptionString("intranet", "use_tasks_2_0", "N") != "Y") { if (($ID = intval($matches[1][0])) && CModule::IncludeModule('iblock')) { $dbRes = CIBlockElement::GetByID($ID); if ($obElement = $dbRes->GetNextElement()) { $arFields = $obElement->GetFields(); $obSection = CIBLockSection::GetByID($arFields['IBLOCK_SECTION_ID']); $arSection = $obSection->Fetch(); if ($arSection['XML_ID'] == 'users_tasks') { $arProperty = $obElement->GetProperty('TaskAssignedTo'); $url = str_replace(array('#USER_ID#', '#TASK_ID#'), array($arProperty['VALUE'], $ID), COption::GetOptionString('intranet', 'path_task_user_entry', '/company/personal/user/#USER_ID#/tasks/task/view/#TASK_ID#/')); } else { while (!$arSection['XML_ID']) { if ($arSection['IBLOCK_SECTION_ID'] <= 0) { break; } $obSection = CIBLockSection::GetByID($arSection['IBLOCK_SECTION_ID']); $arSection = $obSection->Fetch(); } if ($arSection['XML_ID']) { $url = str_replace(array('#GROUP_ID#', '#TASK_ID#'), array($arSection['XML_ID'], $ID), COption::GetOptionString('intranet', 'path_task_group_entry', '/workgroups/group/#GROUP_ID#/tasks/task/view/#TASK_ID#/')); } else { $url = str_replace(array('#USER_ID#'), array(intval($url)), COption::GetOptionString('intranet', 'path_task_user', '/company/personal/user/#USER_ID#/tasks/')); } } } } } else { if (($ID = intval($matches[1][0])) && CModule::IncludeModule('tasks')) { $dbRes = CTasks::GetByID($ID); if ($arTask = $dbRes->Fetch()) { if (intval($arTask["GROUP_ID"]) > 0) {
function FormatDestinationFromRights($arRights, $arParams, &$iMoreCount = false) { if (empty($arRights)) { return array(); } static $arDepartments = array(); $arDestination = array(); $arSonetGroups = array(); $bCheckPermissions = !array_key_exists("CHECK_PERMISSIONS_DEST", $arParams) || $arParams["CHECK_PERMISSIONS_DEST"] != "N"; if (!function_exists("__DestinationRightsSort")) { function __DestinationRightsSort($a, $b) { if ($a == $b) { return 0; } elseif (preg_match('/^US\\d+$/', $a)) { return -1; } elseif (in_array($a, array("G2", "AU"))) { if (in_array($b, array("G2", "AU"))) { return 0; } elseif (preg_match('/^US\\d+$/', $b)) { return 1; } else { return -1; } } elseif (preg_match('/^SG\\d+_' . SONET_ROLES_USER . '$/', $a)) { if (preg_match('/^SG\\d+_' . SONET_ROLES_USER . '$/', $b)) { return 0; } elseif (preg_match('/^US\\d+$/', $b) || in_array($b, array("G2", "AU"))) { return 1; } else { return -1; } } elseif (preg_match('/^SG\\d+_' . SONET_ROLES_MODERATOR . '$/', $a)) { if (preg_match('/^SG\\d+_' . SONET_ROLES_MODERATOR . '$/', $b)) { return 0; } elseif (preg_match('/^US\\d+$/', $b) || in_array($b, array("G2", "AU")) || preg_match('/^SG\\d+_' . SONET_ROLES_USER . '$/', $b)) { return 1; } else { return -1; } } elseif (preg_match('/^SG\\d+_' . SONET_ROLES_OWNER . '$/', $a)) { if (preg_match('/^SG\\d+_' . SONET_ROLES_OWNER . '$/', $b)) { return 0; } elseif (preg_match('/^US\\d+$/', $b) || in_array($b, array("G2", "AU")) || preg_match('/^SG\\d+_' . SONET_ROLES_USER . '$/', $b) || preg_match('/^SG\\d+_' . SONET_ROLES_MODERATOR . '$/', $b)) { return 1; } else { return -1; } } elseif (preg_match('/^D\\d+$/', $a)) { if (preg_match('/^D\\d+$/', $b)) { return 0; } elseif (preg_match('/^US\\d+$/', $b) || in_array($b, array("G2", "AU")) || preg_match('/^SG\\d+_' . SONET_ROLES_USER . '$/', $b) || preg_match('/^SG\\d+_' . SONET_ROLES_MODERATOR . '$/', $b) || preg_match('/^SG\\d+_' . SONET_ROLES_OWNER . '$/', $b)) { return 1; } else { return -1; } } elseif (preg_match('/^U\\d+$/', $a)) { if (preg_match('/^U\\d+$/', $b)) { return 0; } elseif (preg_match('/^US\\d+$/', $b) || in_array($b, array("G2", "AU")) || preg_match('/^SG\\d+_' . SONET_ROLES_USER . '$/', $b) || preg_match('/^SG\\d+_' . SONET_ROLES_MODERATOR . '$/', $b) || preg_match('/^SG\\d+_' . SONET_ROLES_OWNER . '$/', $b) || preg_match('/^D\\d+$/', $b)) { return 1; } else { return -1; } } elseif (preg_match('/^G\\d+$/', $a)) { if (preg_match('/^G\\d+$/', $b)) { return 0; } elseif (preg_match('/^US\\d+$/', $b) || in_array($b, array("G2", "AU")) || preg_match('/^SG\\d+_' . SONET_ROLES_USER . '$/', $b) || preg_match('/^SG\\d+_' . SONET_ROLES_MODERATOR . '$/', $b) || preg_match('/^SG\\d+_' . SONET_ROLES_OWNER . '$/', $b) || preg_match('/^D\\d+$/', $b) || preg_match('/^U\\d+$/', $b)) { return 1; } else { return -1; } } else { return 0; } } } $arRights = array_unique($arRights); uasort($arRights, "__DestinationRightsSort"); $cnt = 0; $bAll = false; $bJustCount = false; $arParams["DESTINATION_LIMIT"] = intval($arParams["DESTINATION_LIMIT"]) <= 0 ? 3 : $arParams["DESTINATION_LIMIT"]; foreach ($arRights as $right_tmp) { if ($cnt >= $arParams["DESTINATION_LIMIT"]) { $bJustCount = true; } if (in_array($right_tmp, array("G1")) && count($arRights) > 1) { continue; } elseif (preg_match('/^US\\d+$/', $right_tmp, $matches) || in_array($right_tmp, array("G2", "AU"))) { if ($bAll) { continue; } if (isset($arParams["USE_ALL_DESTINATION"]) && $arParams["USE_ALL_DESTINATION"] && in_array($right_tmp, array("G2", "AU"))) { continue; } if (!$bJustCount) { $arDestination[] = array("STYLE" => "all-users", "TITLE" => IsModuleInstalled("intranet") ? GetMessage("SONET_GL_DESTINATION_G2") : GetMessage("SONET_GL_DESTINATION_G2_BSM")); } $bAll = true; $cnt++; } elseif (preg_match('/^G(\\d+)$/', $right_tmp, $matches)) { $cnt++; if (!$bJustCount) { $rsGroupTmp = CGroup::GetByID($matches[1]); if ($arGroupTmp = $rsGroupTmp->Fetch()) { $arDestination[] = array("TYPE" => "G", "ID" => $arGroupTmp["ID"], "STYLE" => "groups", "TITLE" => $arGroupTmp["NAME"], "URL" => ""); } } } elseif (preg_match('/^U(\\d+)$/', $right_tmp, $matches)) { if (array_key_exists("CREATED_BY", $arParams) && intval($arParams["CREATED_BY"]) > 0 && $arParams["CREATED_BY"] == $matches[1]) { continue; } $cnt++; if (!$bJustCount) { $rsUserTmp = CUser::GetByID($matches[1]); if ($arUserTmp = $rsUserTmp->Fetch()) { $arDestination[] = array("TYPE" => "U", "ID" => $arUserTmp["ID"], "STYLE" => "users", "TITLE" => CUser::FormatName($arParams["NAME_TEMPLATE"], $arUserTmp, $arParams["SHOW_LOGIN"] == "Y"), "URL" => str_replace("#user_id#", $arUserTmp["ID"], $arParams["PATH_TO_USER"])); } } } elseif ((preg_match('/^D(\\d+)$/', $right_tmp, $matches) || preg_match('/^DR(\\d+)$/', $right_tmp, $matches)) && CModule::IncludeModule("iblock")) { $cnt++; if (!$bJustCount) { if (array_key_exists($matches[1], $arDepartments)) { $arDepartmentTmp = $arDepartments[$matches[1]]; } else { $rsDepartmentTmp = CIBLockSection::GetByID($matches[1]); if ($arDepartmentTmp = $rsDepartmentTmp->Fetch()) { $arDepartments[$matches[1]] = $arDepartmentTmp; } } if ($arDepartmentTmp) { $arDestination[] = array("TYPE" => "D", "ID" => $arDepartmentTmp["ID"], "STYLE" => "department", "TITLE" => $arDepartmentTmp["NAME"], "URL" => str_replace(array("#ID#", "#id#"), $arDepartmentTmp["ID"], $arParams["PATH_TO_CONPANY_DEPARTMENT"])); } } } elseif (preg_match('/^SG(\\d+)_' . SONET_ROLES_USER . '$/', $right_tmp, $matches) || preg_match('/^SG(\\d+)$/', $right_tmp, $matches)) { if (array_key_exists($matches[1], $arSonetGroups) && is_array($arSonetGroups[$matches[1]]) && in_array(SONET_ROLES_USER, $arSonetGroups[$matches[1]])) { continue; } $cnt++; if (!$bJustCount) { // already cached $arSonetGroup = CSocNetGroup::GetByID($matches[1], $bCheckPermissions); if ($arSonetGroup) { $arDestination[] = array("TYPE" => "SG", "ID" => $arSonetGroup["ID"], "STYLE" => "sonetgroups", "TITLE" => $arSonetGroup["NAME"], "URL" => str_replace("#group_id#", $arSonetGroup["ID"], $arParams["PATH_TO_GROUP"])); if (!array_key_exists($arSonetGroup["ID"], $arSonetGroups)) { $arSonetGroups[$arSonetGroup["ID"]] = array(); } $arSonetGroups[$arSonetGroup["ID"]][] = SONET_ROLES_USER; } } } elseif (preg_match('/^SG(\\d+)_' . SONET_ROLES_MODERATOR . '$/', $right_tmp, $matches)) { if (!in_array("SG" . $matches[1] . "_" . SONET_ROLES_USER, $arRights)) { $cnt++; if (!$bJustCount) { $arSonetGroup = CSocNetGroup::GetByID($matches[1], $bCheckPermissions); if ($arSonetGroup) { $arDestination[] = array("TYPE" => "SG", "ID" => $arSonetGroup["ID"], "STYLE" => "sonetgroups", "TITLE" => $arSonetGroup["NAME"] . GetMessage("SONET_GL_DESTINATION_SG_MODERATOR"), "URL" => str_replace("#group_id#", $arSonetGroup["ID"], $arParams["PATH_TO_GROUP"])); if (!array_key_exists($arSonetGroup["ID"], $arSonetGroups)) { $arSonetGroups[$arSonetGroup["ID"]] = array(); } $arSonetGroups[$arSonetGroup["ID"]][] = SONET_ROLES_MODERATOR; } } } } elseif (preg_match('/^SG(\\d+)_' . SONET_ROLES_OWNER . '$/', $right_tmp, $matches)) { if (!in_array("SG" . $matches[1] . "_" . SONET_ROLES_USER, $arRights) && !in_array("SG" . $matches[1] . "_" . SONET_ROLES_MODERATOR, $arRights)) { $cnt++; if (!$bJustCount) { $arSonetGroup = CSocNetGroup::GetByID($matches[1], $bCheckPermissions); if ($arSonetGroup) { $arDestination[] = array("TYPE" => "SG", "ID" => $arSonetGroup["ID"], "STYLE" => "sonetgroups", "TITLE" => $arSonetGroup["NAME"] . GetMessage("SONET_GL_DESTINATION_SG_OWNER"), "URL" => str_replace("#group_id#", $arSonetGroup["ID"], $arParams["PATH_TO_GROUP"])); if (!array_key_exists($arSonetGroup["ID"], $arSonetGroups)) { $arSonetGroups[$arSonetGroup["ID"]] = array(); } $arSonetGroups[$arSonetGroup["ID"]][] = SONET_ROLES_OWNER; } } } } } if ($cnt > $arParams["DESTINATION_LIMIT"]) { $iMoreCount = $cnt - $arParams["DESTINATION_LIMIT"]; } return $arDestination; }