*␊ |
* 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']);␊ |