| *␊ |
| * Return an array of tags sorted class, then name. Each tag get␊ |
| * the extra property 'nb_use' for the number of use in the␊ |
| * project. Only open issues are used to generate the cloud.␊ |
| * project. For issues, only open issues are used to generate the␊ |
| * cloud.␊ |
| *␊ |
| * @param string ('issues') or 'downloads'␊ |
| * @return ArrayObject of IDF_Tag␊ |
| */␊ |
| public function getTagCloud()␊ |
| public function getTagCloud($what='issues')␊ |
| {␊ |
| $tag_t = Pluf::factory('IDF_Tag')->getSqlTable();␊ |
| $issue_t = Pluf::factory('IDF_Issue')->getSqlTable();␊ |
| $asso_t = $this->_con->pfx.'idf_issue_idf_tag_assoc';␊ |
| $ostatus = $this->getTagIdsByStatus('open');␊ |
| if (count($ostatus) == 0) $ostatus[] = 0;␊ |
| $sql = sprintf('SELECT '.$tag_t.'.id AS id, COUNT(*) AS nb_use FROM '.$tag_t.' '."\n".␊ |
| if ($what == 'issues') {␊ |
| $what_t = Pluf::factory('IDF_Issue')->getSqlTable();␊ |
| $asso_t = $this->_con->pfx.'idf_issue_idf_tag_assoc';␊ |
| $ostatus = $this->getTagIdsByStatus('open');␊ |
| if (count($ostatus) == 0) $ostatus[] = 0;␊ |
| $sql = sprintf('SELECT '.$tag_t.'.id AS id, COUNT(*) AS nb_use FROM '.$tag_t.' '."\n".␊ |
| 'LEFT JOIN '.$asso_t.' ON idf_tag_id='.$tag_t.'.id '."\n".␊ |
| 'LEFT JOIN '.$issue_t.' ON idf_issue_id='.$issue_t.'.id '."\n".␊ |
| 'WHERE idf_tag_id IS NOT NULL AND '.$issue_t.'.status IN (%s) AND '.$issue_t.'.project='.$this->id.' GROUP BY '.$tag_t.'.id, '.$tag_t.'.class, '.$tag_t.'.name ORDER BY '.$tag_t.'.class ASC, '.$tag_t.'.name ASC',␊ |
| 'LEFT JOIN '.$what_t.' ON idf_issue_id='.$what_t.'.id '."\n".␊ |
| 'WHERE idf_tag_id IS NOT NULL AND '.$what_t.'.status IN (%s) AND '.$what_t.'.project='.$this->id.' GROUP BY '.$tag_t.'.id, '.$tag_t.'.class, '.$tag_t.'.name ORDER BY '.$tag_t.'.class ASC, '.$tag_t.'.name ASC',␊ |
| implode(', ', $ostatus));␊ |
| } else {␊ |
| $what_t = Pluf::factory('IDF_Upload')->getSqlTable();␊ |
| $asso_t = $this->_con->pfx.'idf_tag_idf_upload_assoc';␊ |
| $sql = 'SELECT '.$tag_t.'.id AS id, COUNT(*) AS nb_use FROM '.$tag_t.' '."\n".␊ |
| 'LEFT JOIN '.$asso_t.' ON idf_tag_id='.$tag_t.'.id '."\n".␊ |
| 'LEFT JOIN '.$what_t.' ON idf_upload_id='.$what_t.'.id '."\n".␊ |
| 'WHERE idf_tag_id IS NOT NULL AND '.$what_t.'.project='.$this->id.' GROUP BY '.$tag_t.'.id, '.$tag_t.'.class, '.$tag_t.'.name ORDER BY '.$tag_t.'.class ASC, '.$tag_t.'.name ASC';␊ |
| }␊ |
| $tags = array();␊ |
| foreach ($this->_con->select($sql) as $idc) {␊ |
| $tag = new IDF_Tag($idc['id']);␊ |