Esempio n. 1
0
 /**
  * Get all projects, optionaly fetch stats for each project and can check users permissions
  *
  * @access public
  * @param  bool       $fetch_stats          If true, return metrics about each projects
  * @param  bool       $check_permissions    If true, remove projects not allowed for the current user
  * @return array
  */
 public function getAll($fetch_stats = false, $check_permissions = false)
 {
     if (!$fetch_stats) {
         return $this->db->table(self::TABLE)->asc('name')->findAll();
     }
     $this->db->startTransaction();
     $projects = $this->db->table(self::TABLE)->asc('name')->findAll();
     $boardModel = new Board($this->db, $this->event);
     $taskModel = new Task($this->db, $this->event);
     $aclModel = new Acl($this->db, $this->event);
     foreach ($projects as $pkey => &$project) {
         if ($check_permissions && !$this->isUserAllowed($project['id'], $aclModel->getUserId())) {
             unset($projects[$pkey]);
         } else {
             $columns = $boardModel->getcolumns($project['id']);
             $project['nb_active_tasks'] = 0;
             foreach ($columns as &$column) {
                 $column['nb_active_tasks'] = $taskModel->countByColumnId($project['id'], $column['id']);
                 $project['nb_active_tasks'] += $column['nb_active_tasks'];
             }
             $project['columns'] = $columns;
             $project['nb_tasks'] = $taskModel->countByProjectId($project['id']);
             $project['nb_inactive_tasks'] = $project['nb_tasks'] - $project['nb_active_tasks'];
         }
     }
     $this->db->closeTransaction();
     return $projects;
 }