/**
  * Display projects user belongs to
  *
  * @apiMethod GET
  * @apiUri    /projects/list
  * @apiParameter {
  * 		"name":          "limit",
  * 		"description":   "Number of result to return.",
  * 		"type":          "integer",
  * 		"required":      false,
  * 		"default":       0
  * }
  * @apiParameter {
  * 		"name":          "start",
  * 		"description":   "Number of where to start returning results.",
  * 		"type":          "integer",
  * 		"required":      false,
  * 		"default":       0
  * }
  * @apiParameter {
  * 		"name":          "sort",
  * 		"description":   "Field to sort results by.",
  * 		"type":          "string",
  * 		"required":      false,
  *      "default":       "title",
  * 		"allowedValues": "title, created, alias"
  * }
  * @apiParameter {
  * 		"name":          "sort_Dir",
  * 		"description":   "Direction to sort results by.",
  * 		"type":          "string",
  * 		"required":      false,
  * 		"default":       "asc",
  * 		"allowedValues": "asc, desc"
  * }
  * @apiParameter {
  * 		"name":          "verbose",
  * 		"description":   "Receive verbose output for project status, team member role and privacy.",
  * 		"type":          "integer",
  * 		"required":      false,
  * 		"default":       "0",
  * 		"allowedValues": "0, 1"
  * }
  * @return  void
  */
 public function listTask()
 {
     // Incoming
     $verbose = Request::getInt('verbose', 0);
     $model = new Project();
     // Set filters
     $filters = array('limit' => Request::getInt('limit', 0, 'post'), 'start' => Request::getInt('start', 0, 'post'), 'sortby' => Request::getWord('sort', 'title', 'post'), 'sortdir' => strtoupper(Request::getWord('sort_Dir', 'ASC')), 'getowner' => 1, 'updates' => 1, 'mine' => 1);
     $response = new stdClass();
     $response->projects = array();
     $response->total = $model->entries('count', $filters);
     if ($response->total) {
         $base = rtrim(Request::base(), '/');
         foreach ($model->entries('list', $filters) as $i => $entry) {
             $obj = new stdClass();
             $obj->id = $entry->get('id');
             $obj->alias = $entry->get('alias');
             $obj->title = $entry->get('title');
             $obj->description = $entry->get('about');
             $obj->state = $entry->get('state');
             $obj->inSetup = $entry->inSetup();
             $obj->owner = $entry->owner('name');
             $obj->created = $entry->get('created');
             $obj->userRole = $entry->member()->role;
             $obj->thumbUrl = str_replace('/api', '', $base . '/' . ltrim(Route::url($entry->link('thumb')), '/'));
             $obj->privacy = $entry->get('private');
             $obj->provisioned = $entry->isProvisioned();
             $obj->groupOwnerId = $entry->groupOwner('id');
             $obj->userOwnerId = $entry->owner('id');
             $obj->uri = str_replace('/api', '', $base . '/' . ltrim(Route::url($entry->link()), '/'));
             // Explain what status/role means
             if ($verbose) {
                 // Project status
                 switch ($entry->get('state')) {
                     case 0:
                         $obj->state = $entry->inSetup() ? Lang::txt('setup') : Lang::txt('suspended');
                         break;
                     case 1:
                     default:
                         $obj->state = Lang::txt('active');
                         break;
                     case 2:
                         $obj->state = Lang::txt('deleted');
                         break;
                     case 5:
                         $obj->state = Lang::txt('pending approval');
                         break;
                 }
                 // Privacy
                 $obj->privacy = $entry->get('private') == 1 ? Lang::txt('private') : Lang::txt('public');
                 // Team role
                 switch ($obj->userRole) {
                     case 0:
                     default:
                         $obj->userRole = Lang::txt('collaborator');
                         break;
                     case 1:
                         $obj->userRole = Lang::txt('manager');
                         break;
                     case 2:
                         $obj->userRole = Lang::txt('author');
                         break;
                     case 5:
                         $obj->userRole = Lang::txt('reviewer');
                         break;
                 }
             }
             $response->projects[] = $obj;
         }
     }
     $this->send($response);
 }