Пример #1
0
 /**
  * Gets all information about a task (and caches information if wanted)
  * @param integer $task_id
  * @param bool $cache_enabled
  * @access public static
  * @return mixed an array with all taskdetails or false on failure
  * @version 1.0
  */
 public static function GetTaskDetails($task_id, $cache_enabled = false)
 {
     global $db, $fs;
     static $cache = array();
     if (isset($cache[$task_id]) && $cache_enabled) {
         return $cache[$task_id];
     }
     //for some reason, task_id is not here
     // run away inmediately..
     if (!is_numeric($task_id)) {
         return false;
     }
     $get_details = $db->Query('SELECT t.*, p.*,
                                       c.category_name, c.category_owner, c.lft, c.rgt, c.project_id as cproj,
                                       o.os_name,
                                       r.resolution_name,
                                       tt.tasktype_name,
                                       vr.version_name   AS reported_version_name,
                                       vd.version_name   AS due_in_version_name,
                                       uo.real_name      AS opened_by_name,
                                       ue.real_name      AS last_edited_by_name,
                                       uc.real_name      AS closed_by_name,
                                       lst.status_name   AS status_name
                                 FROM  {tasks}              t
                            LEFT JOIN  {projects}           p  ON t.project_id = p.project_id
                            LEFT JOIN  {list_category}      c  ON t.product_category = c.category_id
                            LEFT JOIN  {list_os}            o  ON t.operating_system = o.os_id
                            LEFT JOIN  {list_resolution}    r  ON t.resolution_reason = r.resolution_id
                            LEFT JOIN  {list_tasktype}      tt ON t.task_type = tt.tasktype_id
                            LEFT JOIN  {list_version}       vr ON t.product_version = vr.version_id
                            LEFT JOIN  {list_version}       vd ON t.closedby_version = vd.version_id
                            LEFT JOIN  {list_status}       lst ON t.item_status = lst.status_id
                            LEFT JOIN  {users}              uo ON t.opened_by = uo.user_id
                            LEFT JOIN  {users}              ue ON t.last_edited_by = ue.user_id
                            LEFT JOIN  {users}              uc ON t.closed_by = uc.user_id
                                WHERE  t.task_id = ?', array($task_id));
     if (!$db->CountRows($get_details)) {
         return false;
     }
     if ($get_details = $db->FetchRow($get_details)) {
         $get_details += array('severity_name' => $get_details['task_severity'] == 0 ? '' : $fs->severities[$get_details['task_severity']]);
         $get_details += array('priority_name' => $get_details['task_priority'] == 0 ? '' : $fs->priorities[$get_details['task_priority']]);
     }
     $get_details['tags'] = Flyspray::getTags($task_id);
     $get_details['assigned_to'] = $get_details['assigned_to_name'] = array();
     if ($assignees = Flyspray::GetAssignees($task_id, true)) {
         $get_details['assigned_to'] = $assignees[0];
         $get_details['assigned_to_name'] = $assignees[1];
     }
     $cache[$task_id] = $get_details;
     return $get_details;
 }