} if (isset($_REQUEST['INFO']['TIME_FINISH'])) { $arFields['TIME_FINISH'] = intval($_REQUEST['INFO']['TIME_FINISH']); } if (isset($_REQUEST['INFO']['TIME_LEAKS'])) { $arFields['TIME_LEAKS'] = intval($_REQUEST['INFO']['TIME_LEAKS']); } $dbRes = CTimeManEntry::GetList(array(), array('ID' => $ID), false, false, array('*', 'ACTIVATED')); if ($arEntry = $dbRes->Fetch()) { if ($arFields['TIME_FINISH'] && $arEntry['PAUSED'] == 'Y') { $arFields['PAUSED'] = 'N'; } $arFields['TIME_LEAKS'] = isset($arFields['TIME_LEAKS']) ? $arFields['TIME_LEAKS'] : $arEntry['TIME_LEAKS']; $arFields['DURATION'] = $arFields['TIME_FINISH'] - $arFields['TIME_START'] - $arFields['TIME_LEAKS']; } CTimeManEntry::Update($ID, $arFields); $TMUSER = new CTimeManUser($arEntry['USER_ID']); $TMUSER->ClearCache(); } } case 'admin_entry': $ID = $_REQUEST['ID']; $arAccessUsers = CTimeMan::GetAccess(); if (count($arAccessUsers['READ']) > 0) { $bCanEditAll = in_array('*', $arAccessUsers['WRITE']); $bCanReadAll = in_array('*', $arAccessUsers['READ']); $dbRes = CTimeManEntry::GetList(array(), array('ID' => $ID), false, false, array('*', 'ACTIVATED')); if ($arRes = $dbRes->Fetch()) { if ($arRes['USER_ID'] == $USER->GetID() || $bCanReadAll || in_array($arRes['USER_ID'], $arAccessUsers['READ'])) { $arRes['TIME_OFFSET'] = CTimeManUser::getDayStartOffset($arRes); $bCanEdit = $bCanEditAll || in_array($arRes['USER_ID'], $arAccessUsers['WRITE']);
public static function Approve($ID, $check_rights = true) { if ($check_rights) { $hasAccess = false; $arAccessUsers = CTimeMan::GetAccess(); if (count($arAccessUsers['WRITE']) > 0) { $bCanEditAll = in_array('*', $arAccessUsers['WRITE']); $dbRes = CTimeManEntry::GetList(array(), array('ID' => $ID), false, false, array('*')); $arRes = $dbRes->Fetch(); if ($arRes) { $hasAccess = $bCanEditAll || in_array($arRes['USER_ID'], $arAccessUsers['WRITE']); } } if (!$hasAccess) { $GLOBALS['APPLICATION']->ThrowException('Access denied'); return false; } } if (CTimeManEntry::Update($ID, array('ACTIVE' => 'Y'))) { CTimeManReport::Approve($ID); CTimeManReportDaily::SetActive($ID); CTimeManNotify::SendMessage($ID, 'U'); return true; } return false; }
public static function AddCommentMessage($arFields, $FORUM_ID, $arLog) { global $USER, $DB; $dbRes = CTimeManEntry::GetList(array(), array('ID' => $arLog['SOURCE_ID'])); $arEntry = $dbRes->Fetch(); if ($arEntry && CModule::IncludeModule("forum")) { $ufFileID = array(); $ufDocID = array(); if (!($userName = trim($USER->GetFormattedName(false)))) { $userName = $USER->GetLogin(); } if ($arEntry["FORUM_TOPIC_ID"] <= 0) { $t = ConvertTimeStamp(time(), "FULL"); $arTopicFields = array("TITLE" => $arEntry["DATE_START"], "USER_START_ID" => $arFields["USER_ID"], "STATE" => "Y", "FORUM_ID" => $FORUM_ID, "USER_START_NAME" => $userName, "START_DATE" => $t, "POSTS" => 0, "VIEWS" => 0, "APPROVED" => "Y", "LAST_POSTER_NAME" => $userName, "LAST_POST_DATE" => $t, "LAST_MESSAGE_ID" => 0, "XML_ID" => "TIMEMAN_ENTRY_" . $arLog["SOURCE_ID"]); $TOPIC_ID = CForumTopic::Add($arTopicFields); if ($TOPIC_ID > 0) { CTimeManEntry::Update($arLog['SOURCE_ID'], array("FORUM_TOPIC_ID" => $TOPIC_ID)); } } else { $TOPIC_ID = $arEntry["FORUM_TOPIC_ID"]; } if ($TOPIC_ID) { $arFieldsP = array("AUTHOR_ID" => $arFields["USER_ID"], "AUTHOR_NAME" => $userName, "POST_MESSAGE" => $arFields["TEXT_MESSAGE"], "POST_DATE" => date($DB->DateFormatToPHP(CLang::GetDateFormat("FULL")), time() - 1), "FORUM_ID" => $FORUM_ID, "TOPIC_ID" => $TOPIC_ID, "APPROVED" => "Y", "PARAM2" => $arLog["SOURCE_ID"]); $GLOBALS["USER_FIELD_MANAGER"]->EditFormAddFields("SONET_COMMENT", $arTmp); if (is_array($arTmp)) { if (array_key_exists("UF_SONET_COM_DOC", $arTmp)) { $GLOBALS["UF_FORUM_MESSAGE_DOC"] = $arTmp["UF_SONET_COM_DOC"]; } elseif (array_key_exists("UF_SONET_COM_FILE", $arTmp)) { $arFieldsP["FILES"] = array(); foreach ($arTmp["UF_SONET_COM_FILE"] as $file_id) { $arFieldsP["FILES"][] = array("FILE_ID" => $file_id); } } } $GLOBALS["USER_FIELD_MANAGER"]->EditFormAddFields("FORUM_MESSAGE", $arFieldsP); $mess_id = CForumMessage::Add($arFieldsP); // get UF DOC value and FILE_ID there if ($mess_id > 0) { $dbAddedMessageFiles = CForumFiles::GetList(array("ID" => "ASC"), array("MESSAGE_ID" => $mess_id)); while ($arAddedMessageFiles = $dbAddedMessageFiles->Fetch()) { $ufFileID[] = $arAddedMessageFiles["FILE_ID"]; } $ufDocID = $GLOBALS["USER_FIELD_MANAGER"]->GetUserFieldValue("FORUM_MESSAGE", "UF_FORUM_MESSAGE_DOC", $mess_id, LANGUAGE_ID); } if (IsModuleInstalled("im")) { CTimeManNotify::AddCommentToIM(array("USER_ID" => $arFieldsP["AUTHOR_ID"], "ENTRY_ID" => $arEntry["ID"], "LOG_ID" => $arLog["ID"], "MESSAGE" => $arFields["TEXT_MESSAGE"])); } } return array("SOURCE_ID" => $mess_id, "UF" => array("FILE" => $ufFileID, "DOC" => $ufDocID)); } return false; }
public function TaskActions($arActions, $site_id = SITE_ID) { if ($last_entry = $this->_GetLastData()) { $this->SITE_ID = $site_id; $arTasks = $last_entry['TASKS']; if (!is_array($arTasks)) { $arTasks = array(); } if (strlen($arActions['name']) > 0) { $obt = new CTasks(); if ($ID = $obt->Add(array('RESPONSIBLE_ID' => $this->USER_ID, 'TITLE' => $arActions['name'], 'TAGS' => array(), 'STATUS' => 2, 'SITE_ID' => $this->SITE_ID))) { if (!is_array($arActions['add'])) { $arActions['add'] = array($ID); } else { $arActions['add'][] = $ID; } } } if (is_array($arActions['add'])) { foreach ($arActions['add'] as $task_id) { $arTasks[] = intval($task_id); } $GLOBALS['BX_TIMEMAN_RECENTLY_ADDED_TASK_ID'] = $task_id; } $arTasks = array_unique($arTasks); if (is_array($arActions['remove'])) { $arActions['remove'] = array_unique($arActions['remove']); foreach ($arActions['remove'] as $task_id) { $task_id = intval($task_id); if (false !== ($key = array_search($task_id, $arTasks))) { unset($arTasks[$key]); } } } $arFields = array('TASKS' => array()); if (count($arTasks) > 0) { $arCheck = $this->GetTasks($arTasks); foreach ($arCheck as $a) { $arFields['TASKS'][] = $a['ID']; } } if (CTimeManEntry::Update($last_entry['ID'], $arFields)) { return $this->_GetLastData(true); } } return false; }