| $ctags = $prj->getTagIdsByStatus('closed');␊ |
| if (count($otags) == 0) $otags[] = 0;␊ |
| if (count($ctags) == 0) $ctags[] = 0;␊ |
| ␊ |
| ␊ |
| // Get the id list of issue in the user watch list (for all projects !)␊ |
| $db =& Pluf::db();␊ |
| $sql_results = $db->select('SELECT idf_issue_id as id FROM '.Pluf::f('db_table_prefix', '').'idf_issue_pluf_user_assoc WHERE pluf_user_id='.$request->user->id);␊ |
| $issue_ids = array(0);␊ |
| foreach ($sql_results as $id) {␊ |
| $issue_ids[] = $id['id'];␊ |
| } ␊ |
| }␊ |
| $issue_ids = implode (',', $issue_ids);␊ |
| ␊ |
| ␊ |
| // Count open and close issues␊ |
| $sql = new Pluf_SQL('project=%s AND id IN ('.$issue_ids.') AND status IN ('.implode(', ', $otags).')', array($prj->id));␊ |
| $nb_open = Pluf::factory('IDF_Issue')->getCount(array('filter'=>$sql->gen()));␊ |
| $sql = new Pluf_SQL('project=%s AND id IN ('.$issue_ids.') AND status IN ('.implode(', ', $ctags).')', array($prj->id));␊ |
| $nb_closed = Pluf::factory('IDF_Issue')->getCount(array('filter'=>$sql->gen()));␊ |
| ␊ |
| ␊ |
| // Generate a filter for the paginator␊ |
| switch ($match[2]) {␊ |
| case 'closed':␊ |
| $title = sprintf(__('Watch List: Closed Issues for %s'), (string) $prj);␊ |
| $summary = __('This table shows the closed issues in your watch list for %s project.', (string) $prj);␊ |
| $f_sql = new Pluf_SQL('project=%s AND id IN ('.$issue_ids.') AND status IN ('.implode(', ', $ctags).')', array($prj->id)); ␊ |
| break; ␊ |
| $f_sql = new Pluf_SQL('project=%s AND id IN ('.$issue_ids.') AND status IN ('.implode(', ', $ctags).')', array($prj->id));␊ |
| break;␊ |
| case 'open':␊ |
| default:␊ |
| $title = sprintf(__('Watch List: Open Issues for %s'), (string) $prj);␊ |
| $summary = __('This table shows the open issues in your watch list for %s project.', (string) $prj);␊ |
| $f_sql = new Pluf_SQL('project=%s AND id IN ('.$issue_ids.') AND status IN ('.implode(', ', $otags).')', array($prj->id));␊ |
| break; ␊ |
| break;␊ |
| }␊ |
| ␊ |
| ␊ |
| // Paginator to paginate the issues␊ |
| $pag = new Pluf_Paginator(new IDF_Issue());␊ |
| $pag->class = 'recent-issues';␊ |
|
| }␊ |
| foreach (IDF_Views::getProjects($request->user) as $project) {␊ |
| $ctags = array_merge($ctags, $project->getTagIdsByStatus('closed'));␊ |
| } ␊ |
| }␊ |
| if (count($otags) == 0) $otags[] = 0;␊ |
| if (count($ctags) == 0) $ctags[] = 0;␊ |
| ␊ |
| ␊ |
| // Get the id list of issue in the user watch list (for all projects !)␊ |
| $db =& Pluf::db();␊ |
| $sql_results = $db->select('SELECT idf_issue_id as id FROM '.Pluf::f('db_table_prefix', '').'idf_issue_pluf_user_assoc WHERE pluf_user_id='.$request->user->id);␊ |
| $issue_ids = array(0);␊ |
| foreach ($sql_results as $id) {␊ |
| $issue_ids[] = $id['id'];␊ |
| } ␊ |
| }␊ |
| $issue_ids = implode (',', $issue_ids);␊ |
| ␊ |
| // Count open and close issues␊ |
|
| case 'closed':␊ |
| $title = sprintf(__('Watch List: Closed Issues'));␊ |
| $summary = __('This table shows the closed issues in your watch list.');␊ |
| $f_sql = new Pluf_SQL('id IN ('.$issue_ids.') AND status IN ('.implode(', ', $ctags).')', array()); ␊ |
| break; ␊ |
| $f_sql = new Pluf_SQL('id IN ('.$issue_ids.') AND status IN ('.implode(', ', $ctags).')', array());␊ |
| break;␊ |
| case 'open':␊ |
| default:␊ |
| $title = sprintf(__('Watch List: Open Issues'));␊ |
| $summary = __('This table shows the open issues in your watch list.');␊ |
| $f_sql = new Pluf_SQL('id IN ('.$issue_ids.') AND status IN ('.implode(', ', $otags).')', array());␊ |
| break; ␊ |
| break;␊ |
| }␊ |
| ␊ |
| ␊ |
| // Paginator to paginate the issues␊ |
| $pag = new Pluf_Paginator(new IDF_Issue());␊ |
| $pag->class = 'recent-issues';␊ |
|
| $next_issue = Pluf::factory('IDF_Issue')->getList(array('filter' => $sql_next->gen(),␊ |
| 'order' => 'id ASC',␊ |
| 'nb' => 1␊ |
| )); ␊ |
| ));␊ |
| $previous_issue_id = (isset($previous_issue[0])) ? $previous_issue[0]->id : 0;␊ |
| $next_issue_id = (isset($next_issue[0])) ? $next_issue[0]->id : 0;␊ |
| ␊ |
|
| }␊ |
| ␊ |
| /**␊ |
| * Renders a JSON string containing completed issue information␊ |
| * based on the queried / partial string␊ |
| */␊ |
| public $autoCompleteIssueList_precond = array('IDF_Precondition::accessIssues');␊ |
| public function autoCompleteIssueList($request, $match)␊ |
| {␊ |
| $prj = $request->project;␊ |
| ␊ |
| // Autocomplete from jQuery UI works with JSON, this old one still␊ |
| // expects a parsable string; since we'd need to bump jQuery beyond␊ |
| // 1.2.6 for this to use as well, we're trying to cope with the old format.␊ |
| // see http://www.learningjquery.com/2010/06/autocomplete-migration-guide␊ |
| ␊ |
| $arr = array(␊ |
| 'Fo|o' => 110,␊ |
| 'Bar' => 111,␊ |
| 'Baz' => 112,␊ |
| );␊ |
| ␊ |
| $out = '';␊ |
| foreach ($arr as $key => $val)␊ |
| {␊ |
| $out .= str_replace('|', '|', $key).'|'.$val."\n";␊ |
| }␊ |
| ␊ |
| return new Pluf_HTTP_Response($out);␊ |
| }␊ |
| ␊ |
| /**␊ |
| * Star/Unstar an issue.␊ |
| */␊ |
| public $star_precond = array('IDF_Precondition::accessIssues',␊ |
|
| }␊ |
| $auto['auto_owner'] = substr($auto['auto_owner'], 0, -2);␊ |
| unset($auto['_auto_owner']);␊ |
| // Get issue relations␊ |
| $r = $project->getRelationsFromConfig();␊ |
| $auto['auto_relation_types'] = '';␊ |
| foreach ($r as $rt) {␊ |
| $esc = Pluf_esc($rt);␊ |
| $auto['auto_relation_types'] .= sprintf('{ name: "%s", to: "%s" }, ',␊ |
| $esc, $esc);␊ |
| }␊ |
| $auto['auto_relation_types'] = substr($auto['auto_relation_types'], 0, -2);␊ |
| return $auto;␊ |
| }␊ |
| }␊ |