コード例 #1
0
ファイル: task.php プロジェクト: mrdeadmouse/u136006
 function CanCurrentUserViewTopic($topicID)
 {
     global $USER;
     $isSocNetModuleIncluded = CModule::IncludeModule("socialnetwork");
     if (($topicID = intval($topicID)) && is_object($USER)) {
         if ($USER->IsAdmin() || CTasksTools::IsPortalB24Admin()) {
             return true;
         }
         $rsTask = $res = CTasks::GetList(array(), array("FORUM_TOPIC_ID" => $topicID));
         if ($arTask = $rsTask->Fetch()) {
             if ((int) $arTask['GROUP_ID'] > 0) {
                 if (in_array(CSocNetFeaturesPerms::GetOperationPerm(SONET_ENTITY_GROUP, $arTask["GROUP_ID"], "tasks", "view_all"), array("G2", "AU"))) {
                     return true;
                 } elseif ($isSocNetModuleIncluded && false !== CSocNetFeaturesPerms::CurrentUserCanPerformOperation(SONET_ENTITY_GROUP, $arTask['GROUP_ID'], 'tasks', 'view_all')) {
                     return true;
                 }
             }
             $arTask["ACCOMPLICES"] = $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 (in_array($USER->GetID(), array_unique(array_merge(array($arTask["CREATED_BY"], $arTask["RESPONSIBLE_ID"]), $arTask["ACCOMPLICES"], $arTask["AUDITORS"])))) {
                 return true;
             }
             $dbRes = CUser::GetList($by = 'ID', $order = 'ASC', array('ID' => $arTask["RESPONSIBLE_ID"]), array('SELECT' => array('UF_DEPARTMENT')));
             if (($arRes = $dbRes->Fetch()) && is_array($arRes['UF_DEPARTMENT']) && count($arRes['UF_DEPARTMENT']) > 0) {
                 if (in_array($USER->GetID(), array_keys(CTasks::GetDepartmentManagers($arRes['UF_DEPARTMENT'], $arTask["RESPONSIBLE_ID"])))) {
                     return true;
                 }
             }
         }
     }
     return false;
 }
コード例 #2
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()) {
    if ($obCache->InitCache(CTasksTools::CACHE_TTL_UNLIM, md5(serialize($arSecFilter)) . (string) $arParams['SHOW_INACTIVE_USERS'], "/tasks/subordinatedeps")) {
コード例 #3
0
ファイル: ajax.php プロジェクト: mrdeadmouse/u136006
} elseif ($SITE_ID != '') {
    $GLOBALS["GROUP_SITE_ID"] = $SITE_ID;
}
require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php";
require_once "functions.php";
if (!$USER->IsAuthorized()) {
    die;
}
CModule::IncludeModule('intranet');
CModule::IncludeModule('tasks');
__IncludeLang(dirname(__FILE__) . '/lang/' . LANGUAGE_ID . '/' . basename(__FILE__));
$arSubDeps = CTasks::GetSubordinateDeps();
$dbRes = CUser::GetList($by = 'ID', $order = 'ASC', array('ID' => $USER->GetID()), array('SELECT' => array('UF_DEPARTMENT')));
$arManagers = array();
if (($arRes = $dbRes->Fetch()) && is_array($arRes['UF_DEPARTMENT']) && count($arRes['UF_DEPARTMENT']) > 0) {
    $arManagers = array_keys(CTasks::GetDepartmentManagers($arRes['UF_DEPARTMENT'], $USER->GetID()));
}
$bSubordinateOnly = isset($_GET["S_ONLY"]) && $_GET["S_ONLY"] == "Y";
if (isset($_REQUEST["nt"])) {
    preg_match_all("/(#NAME#)|(#NOBR#)|(#\\/NOBR#)|(#LAST_NAME#)|(#SECOND_NAME#)|(#NAME_SHORT#)|(#SECOND_NAME_SHORT#)|\\s|\\,/", urldecode($_REQUEST["nt"]), $matches);
    $nameTemplate = implode("", $matches[0]);
} else {
    $nameTemplate = CSite::GetNameFormat(false);
}
if ($_REQUEST['MODE'] == 'EMPLOYEES' && (!CModule::IncludeModule('extranet') || CExtranet::IsIntranetUser() || $SECTION_ID == 'extranet')) {
    if ($SECTION_ID != 'extranet') {
        $SECTION_ID = intval($_REQUEST['SECTION_ID']);
    }
    $arUsers = TasksGetDepartmentUsers($SECTION_ID, $SITE_ID, $arSubDeps, $arManagers, $_REQUEST['SHOW_INACTIVE_USERS'], $nameTemplate);
    $APPLICATION->RestartBuffer();
    Header('Content-Type: application/x-javascript; charset=' . LANG_CHARSET);