コード例 #1
0
ファイル: component.php プロジェクト: mrdeadmouse/u136006
}
$arSubDeps = CTasks::GetSubordinateDeps();
$GLOBALS['GROUP_SITE_ID'] = $arParams['SITE_ID'];
if ($arParams["GROUP_ID_FOR_SITE"] && CModule::IncludeModule("extranet") && CModule::IncludeModule("socialnetwork")) {
    $arSites = array();
    $rsGroupSite = CSocNetGroup::GetSite($arParams["GROUP_ID_FOR_SITE"]);
    while ($arGroupSite = $rsGroupSite->Fetch()) {
        $arSites[] = $arGroupSite["LID"];
    }
    $extranet_site_id = CExtranet::GetExtranetSiteID();
    if ($extranet_site_id && in_array(CExtranet::GetExtranetSiteID(), $arSites)) {
        $GLOBALS['GROUP_SITE_ID'] = $extranet_site_id;
    }
}
$arManagers = array();
if (($arDepartments = CTasks::GetUserDepartments($USER->GetID())) && is_array($arDepartments) && count($arDepartments) > 0) {
    $arManagers = array_keys(CTasks::GetDepartmentManagers($arDepartments, $USER->GetID()));
}
$bSubordinateOnly = isset($arParams["SUBORDINATE_ONLY"]) && $arParams["SUBORDINATE_ONLY"] == "Y";
$IBlockID = COption::GetOptionInt('intranet', 'iblock_structure');
$arSecFilter = array('IBLOCK_ID' => $IBlockID);
if ($bSubordinateOnly) {
    if (!$arSubDeps) {
        $arSubDeps = array(-1);
    }
    $arSecFilter["ID"] = $arSubDeps;
}
$obCache = new CPHPCache();
$arStructure = array();
$arSections = array();
if (!CModule::IncludeModule('extranet') || CExtranet::IsIntranetUser()) {
コード例 #2
0
ファイル: task.php プロジェクト: mrdeadmouse/u136006
 public static function __GetSearchPermissions($arTask)
 {
     $arPermissions = array();
     if (!isset($arTask['ACCOMPLICES']) || !isset($arTask['AUDITORS'])) {
         if (!isset($arTask['ACCOMPLICES'])) {
             $arTask['ACCOMPLICES'] = array();
         }
         if (!isset($arTask['AUDITORS'])) {
             $arTask['AUDITORS'] = array();
         }
         $rsMembers = CTaskMembers::GetList(array(), array("TASK_ID" => $arTask["ID"]));
         while ($arMember = $rsMembers->Fetch()) {
             if ($arMember["TYPE"] == "A") {
                 $arTask["ACCOMPLICES"][] = $arMember["USER_ID"];
             } elseif ($arMember["TYPE"] == "U") {
                 $arTask["AUDITORS"][] = $arMember["USER_ID"];
             }
         }
     }
     if ($arTask["GROUP_ID"] > 0 && CModule::IncludeModule("socialnetwork")) {
         $prefix = "SG" . $arTask["GROUP_ID"] . "_";
         $letter = CSocNetFeaturesPerms::GetOperationPerm(SONET_ENTITY_GROUP, $arTask["GROUP_ID"], "tasks", "view_all");
         switch ($letter) {
             case "N":
                 //All
                 $arPermissions[] = 'G2';
                 break;
             case "L":
                 //Authorized
                 $arPermissions[] = 'AU';
                 break;
             case "K":
                 //Group members includes moderators and admins
                 $arPermissions[] = $prefix . 'K';
             case "E":
                 //Moderators includes admins
                 $arPermissions[] = $prefix . 'E';
             case "A":
                 //Admins
                 $arPermissions[] = $prefix . 'A';
                 break;
         }
     }
     if (!in_array("G2", $arPermissions) && !in_array("AU", $arPermissions)) {
         if (!$arTask["ACCOMPLICES"]) {
             $arTask["ACCOMPLICES"] = array();
         }
         if (!$arTask["AUDITORS"]) {
             $arTask["AUDITORS"] = array();
         }
         $arParticipants = array_unique(array_merge(array($arTask["CREATED_BY"], $arTask["RESPONSIBLE_ID"]), $arTask["ACCOMPLICES"], $arTask["AUDITORS"]));
         foreach ($arParticipants as $userId) {
             $arPermissions[] = "U" . $userId;
         }
         $arDepartments = array();
         $arSubUsers = array_unique(array($arTask['RESPONSIBLE_ID'], $arTask['CREATED_BY']));
         foreach ($arSubUsers as $subUserId) {
             $arUserDepartments = CTasks::GetUserDepartments($subUserId);
             if (is_array($arUserDepartments) && count($arUserDepartments)) {
                 $arDepartments = array_merge($arDepartments, $arUserDepartments);
             }
         }
         $arDepartments = array_unique($arDepartments);
         $arManagersTmp = CTasks::GetDepartmentManagers($arDepartments);
         if (is_array($arManagersTmp)) {
             $arManagers = array_keys($arManagersTmp);
             // Remove $arSubUsers from $arManagers
             $arManagers = array_diff($arManagers, $arSubUsers);
             foreach ($arManagers as $userId) {
                 if (!in_array("U" . $userId, $arPermissions)) {
                     $arPermissions[] = "U" . $userId;
                 }
             }
         }
     }
     return $arPermissions;
 }