예제 #1
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;
 }