Esempio n. 1
0
 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;
 }
Esempio n. 2
0
 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) {
Esempio n. 3
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;
 }