function trackStartedTask($stopStartedTask = true) { CModule::IncludeModule('iblock'); $res = CIBlockElement::GetList(array(), array("IBLOCK_ID" => TASKS_IBLOCK_ID, 'ACTIVE' => 'Y', "PROPERTY_PROGRAMMER" => CUser::GetID(), "PROPERTY_STATUS" => STATUS_LIST_WORK), false, false, array('ID', 'NAME', 'PROPERTY_PROJECT', 'PROPERTY_STATUS_DATE')); if ($taskArr = $res->Fetch()) { if ($stopStartedTask) { CIBlockElement::SetPropertyValuesEx($taskArr['ID'], TASKS_IBLOCK_ID, array('STATUS' => STATUS_LIST_PAUSE)); } $link = TASKS_LIST_URL . $taskArr["PROPERTY_PROJECT_VALUE"] . '/' . $taskArr['ID'] . '/'; $date = new DateTime($taskArr["PROPERTY_STATUS_DATE_VALUE"]); $curdate = new DateTime(); $diff = $date->diff($curdate); $h = $diff->format('%h'); $i = $diff->format('%i'); if ($h || $i) { $timingText = ''; if ($h) { $timingText = "{$h} ч, "; } if ($i) { $timingText = $timingText . "{$i} мин. "; } $decTime = $h + $i / 60; $decTime = round($decTime, 2); $el = new CIBlockElement(); if ($el->Add(array("DATE_ACTIVE_FROM" => ConvertTimeStamp(time(), "SHORT"), "MODIFIED_BY" => CUser::GetID(), "IBLOCK_SECTION_ID" => false, "IBLOCK_ID" => TRACKING_IBLOCK_ID, "NAME" => 'Без названия' . ' (' . $decTime . 'ч.)', "ACTIVE" => "Y", "PROPERTY_VALUES" => array("HOURS" => $decTime, "TASK" => $taskArr['ID'])))) { crmEntitiesHelper::recalcTaskTracking($taskArr['ID']); ToolTip::Add("+ {$timingText} в трекер задачи \"<a target=\"_blank\" href=\"{$link}\">{$taskArr['ID']} {$taskArr['NAME']}</a>\""); } else { ToolTip::AddError($el->LAST_ERROR); } } } }
private function collectEventsToArr($res, $collectNotViewed = false) { while ($item = $res->Fetch()) { if ($collectNotViewed && !$item['VIEW']) { $this->newCnt++; self::$notViewedIds[] = $item['ITEM_ID']; if ($item['ACTION'] == 2) { self::$commentsCnt[$item['ITEM_ID']]++; } } $date = new DateTime($item['DATE']); $item['DATE_FORMATED'] = $date->format('H:i d.m.Y'); switch ($item['MODULE']) { case TASKS_IBLOCK_ID: $item['LINK'] = crmEntitiesHelper::GetTaskUrl($item['ITEM_ID']); break; case COMMENTS_IBLOCK_ID: $item['LINK'] = '#'; break; } switch ($item['ACTION']) { case 1: $item['TEXT_ACTION'] = 'Создана задача'; break; case 2: $item['LINK'] .= '#bottom'; $item['TEXT_ACTION'] = 'Добавлен комментарий'; break; case 3: $item['TEXT_ACTION'] = 'Изменён статус задачи'; break; case 4: $item['TEXT_ACTION'] = 'Изменена задача'; break; case 5: $item['TEXT_ACTION'] = 'Изменён комментарий'; break; case 6: $item['TEXT_ACTION'] = 'Изменён статус комментария'; break; case 7: $item['TEXT_ACTION'] = 'Комментарий удалён'; break; } $result[] = $item; } return $result; }
if ($result = $res->GetNext()) { CIBlockElement::Delete($track); $summ = crmEntitiesHelper::recalcTaskTracking($result['PROPERTY_TASK_VALUE']); die(json_encode(array('summ' => $summ))); } else { die(json_encode(array('error' => 'Ошибка доступа к таймингу'))); } break; case 'trackTime': $task = intval($_REQUEST['task']); if ($USER->iAmAProgrammerInTask($task)) { $desc = trim(TruncateText($_REQUEST['desc'], 250)); $time = formatTime($_REQUEST['h'], MAX_TRACKING_TIME); if (!$time) { die(json_encode(array('error' => 'Введено неверное время'))); } $el = new CIBlockElement(); if ($newId = $el->Add(array("DATE_ACTIVE_FROM" => ConvertTimeStamp(time(), "SHORT"), "MODIFIED_BY" => $USER->GetID(), "IBLOCK_SECTION_ID" => false, "IBLOCK_ID" => TRACKING_IBLOCK_ID, "NAME" => (strlen($desc) ? $desc : 'Без названия') . ' (' . $time . 'ч.)', "DETAIL_TEXT" => $desc, "ACTIVE" => "Y", "PROPERTY_VALUES" => array("HOURS" => $time, "TASK" => $task)))) { $summ = crmEntitiesHelper::recalcTaskTracking($task); die(json_encode(array('ok' => $newId, 'summ' => $summ))); } else { die(json_encode(array('error' => $el->LAST_ERROR))); } } else { die(json_encode(array('error' => 'Ошибка доступа к задаче'))); } break; default: die(json_encode(array('error' => 'передан неверный параметр'))); break; }
public static function getProjectsByThisUser() { if (self::$thisUserProjects === false) { self::$thisUserProjects = array(); CModule::IncludeModule('iblock'); global $USER; $arrFilter = array("IBLOCK_ID" => PROJECTS_IBLOCK_ID); $arrFilter = array_merge($USER->GetViewProjectsFilter(), $arrFilter); $res = CIBlockElement::GetList(array(), $arrFilter, false, false, array("ID")); while ($project = $res->GetNext()) { self::$thisUserProjects[] = $project["ID"]; } } return self::$thisUserProjects; }
break; } } LocalRedirect($APPLICATION->GetCurDir() . '#comment' . intval($_REQUEST['id'])); } /* delete comment */ if ($delete_comment = $_REQUEST['delete_comment']) { foreach ($arResult['COMMENTS'] as $comment) { if ($comment['ID'] == $delete_comment) { if ($comment['CREATED_BY'] == $arResult['USER_ID']) { $el = new CIBlockElement(); $res = $el->Update($delete_comment, array("ACTIVE" => 'N')); crmEntitiesHelper::recalcCommentsCnt($arParams['ID']); $logger->add(array($arResult['TASK']['PROPS']['CUSTOMER']['VALUE'], $arResult['TASK']['PROPS']['PROGRAMMER']['VALUE']), $arParams['ID'], 'delete_comment', strip_tags($comment['~PREVIEW_TEXT'])); ToolTip::Add('Комментарий удалён'); crmEntitiesHelper::RecalcLastCommentDateTime($arParams['ID']); } else { ToolTip::AddError('Ошибка доступа к комментарию'); } break; } } LocalRedirect($APPLICATION->GetCurDir()); } /* tracking time */ $res = CIBlockElement::GetList(array("ID" => "ASC"), array("PROPERTY_TASK" => $arParams['ID'], "IBLOCK_ID" => TRACKING_IBLOCK_ID, "ACTIVE" => "Y"), false, false, array('DETAIL_TEXT', 'ID', 'DATE_CREATE', 'PROPERTY_HOURS')); while ($ar_fields = $res->GetNext()) { $ar_fields['DATE_CREATE'] = CIBlockFormatProperties::DateFormat($arParams['DATE_FORMAT'], MakeTimeStamp($ar_fields['DATE_CREATE'], CSite::GetDateFormat())); $arResult['TRACKING'][] = $ar_fields; } $this->IncludeComponentTemplate();