Exemple #1
0
 /**
  * Do some post-processing of result of calling particular methods.
  * This method is only for rest purposes
  * 
  * @access private
  */
 public static function postProcessRestRequest($methodName, $result, $parameters = array())
 {
     if (!is_array($parameters)) {
         $parameters = array();
     }
     $originResult = $result;
     if ($methodName == 'getfiles') {
         $result = array('UF_TASK_WEBDAV_FILES' => $result);
         // translate file UF values
         $result = UserField::postProcessValues($result, array('FIELDS' => static::getEntityUserFields(), 'SERVER' => $parameters['SERVER']));
         $result = $result['UF_TASK_WEBDAV_FILES'];
     }
     if ($methodName == 'addfile') {
         if (intval($result)) {
             $result = array('UF_TASK_WEBDAV_FILES' => array($result));
             // translate file UF values
             $result = UserField::postProcessValues($result, array('FIELDS' => static::getEntityUserFields(), 'SERVER' => $parameters['SERVER']));
             if (isset($result['UF_TASK_WEBDAV_FILES'][0])) {
                 $result = $result['UF_TASK_WEBDAV_FILES'][0];
             } else {
                 return $originResult;
             }
         }
     }
     if ($methodName == 'getdata') {
         // CTaskItem::getData() does not return tags, but we want them in rest
         if (!empty($result) && intval($result['ID'])) {
             $result['TAGS'] = array();
             // at this point we know we already have access to this task, so no rights check needed. use simple get list here
             $res = CTaskTags::GetList(array(), array('TASK_ID' => $result['ID']));
             while ($item = $res->fetch()) {
                 $result['TAGS'][] = $item['NAME'];
             }
         }
         // translate file UF values
         $result = UserField::postProcessValues($result, array('FIELDS' => static::getEntityUserFields(), 'SERVER' => $parameters['SERVER']));
     }
     return $result;
 }
Exemple #2
0
 public static function GetList($arOrder, $arFilter)
 {
     global $DB;
     $arSqlSearch = array_filter(CTaskTags::GetFilter($arFilter));
     $strSql = "\n\t\t\tSELECT\n\t\t\t\tTT.*\n\t\t\tFROM\n\t\t\t\tb_tasks_tag TT\n\t\t\t" . (sizeof($arSqlSearch) ? "WHERE " . implode(" AND ", $arSqlSearch) : "") . "\n\t\t";
     if (!is_array($arOrder)) {
         $arOrder = array();
     }
     foreach ($arOrder as $by => $order) {
         $by = strtolower($by);
         $order = strtolower($order);
         if ($order != "asc") {
             $order = "desc";
         }
         if ($by == "task") {
             $arSqlOrder[] = " TT.TASK_ID " . $order . " ";
         } elseif ($by == "user") {
             $arSqlOrder[] = " TT.USER_ID " . $order . " ";
         } elseif ($by == "name") {
             $arSqlOrder[] = " TT.NAME " . $order . " ";
         } elseif ($by == "rand") {
             $arSqlOrder[] = CTasksTools::getRandFunction();
         } else {
             $arSqlOrder[] = " TT.TASK_ID " . $order . " ";
         }
     }
     $strSqlOrder = "";
     DelDuplicateSort($arSqlOrder);
     $arSqlOrderCnt = count($arSqlOrder);
     for ($i = 0; $i < $arSqlOrderCnt; $i++) {
         if ($i == 0) {
             $strSqlOrder = " ORDER BY ";
         } else {
             $strSqlOrder .= ",";
         }
         $strSqlOrder .= $arSqlOrder[$i];
     }
     $strSql .= $strSqlOrder;
     //echo $strSql;
     return $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
 }
Exemple #3
0
 function OnSearchReindex($NS = array(), $oCallback = NULL, $callback_method = "")
 {
     $arResult = array();
     $arOrder = array('ID' => 'ASC');
     $arFilter = array();
     if (isset($NS['MODULE']) && $NS['MODULE'] === 'tasks' && isset($NS['ID']) && $NS['ID'] > 0) {
         $arFilter['>ID'] = (int) $NS['ID'];
     } else {
         $arFilter['>ID'] = 0;
     }
     $rsTasks = CTasks::GetList($arOrder, $arFilter);
     while ($arTask = $rsTasks->Fetch()) {
         $rsTags = CTaskTags::GetList(array(), array("TASK_ID" => $arTask["ID"]));
         $arTags = array();
         while ($arTag = $rsTags->Fetch()) {
             $arTags[] = $arTag["NAME"];
         }
         $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 ($arTask["GROUP_ID"] > 0) {
             $path = str_replace("#group_id#", $arTask["GROUP_ID"], COption::GetOptionString("tasks", "paths_task_group_entry", "/workgroups/group/#group_id#/tasks/task/view/#task_id#/", $arTask["SITE_ID"]));
         } else {
             $path = str_replace("#user_id#", $arTask["RESPONSIBLE_ID"], COption::GetOptionString("tasks", "paths_task_user_entry", "/company/personal/user/#user_id#/tasks/task/view/#task_id#/", $arTask["SITE_ID"]));
         }
         $path = str_replace("#task_id#", $arTask["ID"], $path);
         $arPermissions = CTasks::__GetSearchPermissions($arTask);
         $Result = array("ID" => $arTask["ID"], "LAST_MODIFIED" => $arTask["CHANGED_DATE"] ? $arTask["CHANGED_DATE"] : $arTask["CREATED_DATE"], "TITLE" => $arTask["TITLE"], "BODY" => strip_tags($arTask["DESCRIPTION"]) ? strip_tags($arTask["DESCRIPTION"]) : $arTask["TITLE"], "TAGS" => implode(",", $arTags), "URL" => $path, "SITE_ID" => $arTask["SITE_ID"], "PERMISSIONS" => $arPermissions);
         if ($oCallback) {
             $index_res = call_user_func(array($oCallback, $callback_method), $Result);
             if (!$index_res) {
                 return $Result["ID"];
             }
         } else {
             $arResult[] = $Result;
         }
         CTasks::UpdateForumTopicIndex($arTask["FORUM_TOPIC_ID"], "U", $arTask["RESPONSIBLE_ID"], "tasks", "view_all", $path, $arPermissions, $arTask["SITE_ID"]);
     }
     if ($oCallback) {
         return false;
     }
     return $arResult;
 }
Exemple #4
0
 /**
  * @param $userId
  * @param $arOrder
  * @param $arFilter
  * @param array $arParams
  * @param array $arSelect
  * @throws TasksException
  * @return array $arReturn with elements
  *        <ul>
  *        <li>$arReturn[0] - array of items
  *        <li>$arReturn[1] - CDBResult
  *        </ul>
  */
 public static function fetchList($userId, $arOrder, $arFilter, $arParams = array(), $arSelect = array())
 {
     $arItems = array();
     try {
         $arParamsOut = array('USER_ID' => $userId, 'bIgnoreErrors' => true);
         if (isset($arParams['nPageTop'])) {
             $arParamsOut['nPageTop'] = $arParams['nPageTop'];
         } elseif (isset($arParams['NAV_PARAMS'])) {
             $arParamsOut['NAV_PARAMS'] = $arParams['NAV_PARAMS'];
         }
         $arFilter['CHECK_PERMISSIONS'] = 'Y';
         // Always check permissions
         if (!empty($arSelect)) {
             $arSelect = array_merge($arSelect, array('ID', 'STATUS', 'REAL_STATUS', 'RESPONSIBLE_ID', 'CREATED_BY', 'GROUP_ID'));
         }
         $arItemsData = array();
         $arTasksIDs = array();
         $rsData = CTasks::getList($arOrder, $arFilter, $arSelect, $arParamsOut);
         if (!is_object($rsData)) {
             throw new TasksException();
         }
         while ($arData = $rsData->fetch()) {
             $taskId = (int) $arData['ID'];
             $arTasksIDs[] = $taskId;
             $arData['AUDITORS'] = array();
             $arData['ACCOMPLICES'] = array();
             $arItemsData[$taskId] = $arData;
         }
         if (is_array($arTasksIDs) && !empty($arTasksIDs)) {
             // fill ACCOMPLICES and AUDITORS
             $rsMembers = CTaskMembers::GetList(array(), array('TASK_ID' => $arTasksIDs));
             if (!is_object($rsMembers)) {
                 throw new TasksException();
             }
             while ($arMember = $rsMembers->fetch()) {
                 $taskId = (int) $arMember['TASK_ID'];
                 if (in_array($taskId, $arTasksIDs, true)) {
                     if ($arMember['TYPE'] === 'A') {
                         $arItemsData[$taskId]['ACCOMPLICES'][] = $arMember['USER_ID'];
                     } elseif ($arMember['TYPE'] === 'U') {
                         $arItemsData[$taskId]['AUDITORS'][] = $arMember['USER_ID'];
                     }
                 }
             }
             // fill tags
             if (isset($arParams['LOAD_TAGS']) && $arParams['LOAD_TAGS']) {
                 foreach ($arTasksIDs as $taskId) {
                     $arItemsData[$taskId]['TAGS'] = array();
                 }
                 $rsTags = CTaskTags::getList(array(), array('TASK_ID' => $arTasksIDs));
                 if (!is_object($rsTags)) {
                     throw new TasksException();
                 }
                 while ($arTag = $rsTags->fetch()) {
                     $taskId = (int) $arTag['TASK_ID'];
                     if (in_array($taskId, $arTasksIDs, true)) {
                         $arItemsData[$taskId]['TAGS'][] = $arTag['NAME'];
                     }
                 }
             }
         }
     } catch (Exception $e) {
         CTaskAssert::logError('[0xa819f6f1] probably SQL error at ' . $e->getFile() . ':' . $e->getLine());
         throw new TasksException('', TasksException::TE_SQL_ERROR | TasksException::TE_ACTION_FAILED_TO_BE_PROCESSED);
     }
     foreach ($arItemsData as $arItemData) {
         $arItems[] = self::constructWithPreloadedData($userId, $arItemData);
     }
     return array($arItems, $rsData);
 }
Exemple #5
0
            }
        }
        foreach ($_POST["oldNames"] as $key => $value) {
            if ($_POST["oldNames"][$key] != $_POST["newNames"][$key]) {
                CTaskTags::Rename($_POST["oldNames"][$key], $_POST["newNames"][$key], $USER->GetID());
            }
        }
    }
    if (sizeof($_POST["deleted"])) {
        $rsDeletedTags = CTaskTags::GetList(array(), array("USER_ID" => $USER->GetID(), "NAME" => $_POST["deleted"]));
        while ($arTag = $rsDeletedTags->Fetch()) {
            if (!in_array($arTag["TASK_ID"], $arAffectedTasks)) {
                $arAffectedTasks[] = $arTag["TASK_ID"];
            }
        }
        CTaskTags::Delete(array("USER_ID" => $USER->GetID(), "NAME" => $_POST["deleted"]));
    }
    if (CModule::IncludeModule('search') && sizeof($arAffectedTasks)) {
        $rsTasks = CTasks::GetList(array(), array("ID" => $arAffectedTasks));
        while ($arTask = $rsTasks->Fetch()) {
            $rsTaskTags = CTaskTags::GetList(array(), array("TASK_ID" => $arTask["ID"]));
            $arTags = array();
            while ($tag = $rsTaskTags->Fetch()) {
                $arTags[] = $tag["NAME"];
            }
            CTasks::Index($arTask, $arTags);
        }
    }
    CMain::FinalActions();
    // to make events work on bitrix24
}
Exemple #6
0
<?php

if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) {
    die;
}
$arResult["USER_TAGS"] = array();
if (!CModule::IncludeModule("tasks")) {
    ShowError(GetMessage("TASKS_MODULE_NOT_FOUND"));
    return;
}
$dbRes = CTaskTags::getTagsNamesByUserId($USER->getId());
$arResult["~USER_TAGS"] = $arResult["USER_TAGS"] = array();
while ($tag = $dbRes->GetNext()) {
    $arResult["USER_TAGS"][] = $tag["NAME"];
    $arResult["~USER_TAGS"][] = $tag["~NAME"];
}
if (isset($arParams["VALUE"]) && $arParams["VALUE"]) {
    if (!is_array($arParams["VALUE"])) {
        $arResult["VALUE"] = explode(",", $arParams["VALUE"]);
        $arResult["~VALUE"] = explode(",", $arParams["~VALUE"]);
    } else {
        $arResult["VALUE"] = $arParams["VALUE"];
        $arResult["~VALUE"] = $arParams["~VALUE"];
    }
} else {
    $arResult["VALUE"] = $arResult["~VALUE"] = array();
}
if (sizeof($arResult["VALUE"]) > 0) {
    $arResult["VALUE"] = array_map("trim", $arResult["VALUE"]);
    $arResult["~VALUE"] = array_map("trim", $arResult["~VALUE"]);
}