'log.user', 'site' => 'log.site', 'societe' => 'log.societe', 'pays' => 'log.pays', 'activite' => 'log.activite', 'fonction' => 'log.fonction', 'usrid' => 'log.usrid', 'coll_id' => 'record.coll_id', 'xml' => 'record.xml', 'ddate' => "DATE_FORMAT(log.date, '%Y-%m-%d')", 'id' => 'log_docs.id', 'log_id' => 'log_docs.log_id', 'record_id' => 'log_docs.record_id', 'final' => 'log_docs.final', 'comment' => 'log_docs.comment', 'size' => 'subdef.size' ); public function __construct($arg1, $arg2, $sbas_id, $collist) { parent::__construct($arg1, $arg2, $sbas_id, $collist); } public function setTop($nb_top) { $this->nb_top = $nb_top; } /** * * */ private function setDisplayForActivity($rs) { $conn = connection::getInstance($this->sbas_id); $num_fields = $conn->num_fields($rs); $j = 0; $hours = array(); for($i = 0;$i < 24; $i++) { array_push($this->display, $i); $hours[$i] = 0; } while ($j < $num_fields) { array_push($this->champ, $conn->field_name($rs, $j)); $j++; } return $hours; } private function setTotal($sql) { $conn = connection::getInstance($this->sbas_id); if($rs_total = $conn->query($sql)) $this->total = $conn->num_rows($rs_total); } /** * @desc get the site activity per hours * @return array */ public function getActivityPerHours() { $result = array(); $this->title = _('report:: activite par heure'); $conn = connection::getInstance($this->sbas_id); $tab_filter = parent::buildFilter($conn); //get all filter extract($tab_filter); $sql = " SELECT DATE_FORMAT( log.date, '%k' ) AS heures, SUM(1) AS nb FROM log WHERE (log.date > '".$conn->escape_string($this->dmin)."' AND log.date < '".$conn->escape_string($this->dmax)."') AND (".$collfilter.") AND log.site = '".$conn->escape_string(GV_sit)."' GROUP BY heures ORDER BY heures ASC"; if($rs = $conn->query($sql)) { $res = $this->setDisplayForActivity($rs); $this->initDefaultConfigColumn($this->display); while( ($row = $conn->fetch_assoc($rs))) { $row['heures'] = (string)$row['heures']; $res[$row['heures']] = round(($row['nb'] / 24), 2); if($res[$row['heures']] < 1) $res[$row['heures']] = number_format($res[$row['heures']],2); else $res[$row['heures']] = (int)$res[$row['heures']]; } $this->result[] = $res; //calculate prev and next page $this->calculatePages($rs); //do we display navigator ? $this->setDisplayNav(); //set report $this->setReport(); $conn->free_result($rs); $this->report['legend'] = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23); } return $this->report; } /** * @desc get all questions by user * @param string $idUser */ public function getAllQuestionByUser($value, $what) { $result = array(); $conn = connection::getInstance($this->sbas_id); $tab_filter = parent::buildFilter($conn); //get all filter extract($tab_filter); $sql = " SELECT DATE_FORMAT(log_search.date,'%Y-%m-%d %H:%i:%S') as date ,log_search.search ,log_search.results FROM (log_search inner join log on log.id = log_search.log_id) WHERE log_search.date > '".$conn->escape_string($this->dmin)."' AND log_search.date < '".$conn->escape_string($this->dmax)."' AND log.".$what." = '".$conn->escape_string($value)."' AND log.site ='".$conn->escape_string(GV_sit)."' AND (".$collfilter.") ORDER BY date"; $this->getTotal($sql); $sql .= " LIMIT ".$limit; if($rs = $conn->query($sql)) { $this->setDisplay($rs); $this->initDefaultConfigColumn($this->display); $i = 0; while($row = $conn->fetch_assoc($rs)) { foreach($this->champ as $key => $value) $result[$i][$value] = $row[$value]; $i++; } $conn->free_result($rs); } $this->setResult(_('report:: questions'), $result); return $this->result; } /** * get the most asked question * @param array $tab config for html table * @param bool $no_answer true for question with no answer */ public function getTopQuestion($tab = false, $no_answer = false) { $this->report['value'] = array(); $this->report['value2'] = array(); $conn = connection::getInstance($this->sbas_id); $tab_filter = parent::buildFilter($conn); extract($tab_filter); $i = 0; ($no_answer) ? $this->title = _('report:: questions sans reponses') : $this->title = _('report:: questions les plus posees'); $sql = " SELECT TRIM(log_search.search) as search, SUM(1) as nb, ROUND(avg(results)) as nb_rep FROM (log_search inner join log on log_search.log_id = log.id) WHERE log_search.date > '".$conn->escape_string($this->dmin)."' AND log_search.date < '".$conn->escape_string($this->dmax)."' AND log_search.search != 'all' AND (".$collfilter.")"; ($no_answer) ? $sql .= " AND log_search.results = 0 " : ""; $sql .= " GROUP BY log_search.search ORDER BY nb DESC"; (!$no_answer) ? $sql .= " LIMIT 0,".$this->nb_top : ""; if($rs = $conn->query($sql)) { $this->setChamp($rs); $this->setDisplay($tab); while(($row = $conn->fetch_assoc($rs))) { foreach($this->champ as $key => $value) $this->result[$i][$value] = $row[$value]; $i++; $this->report['legend'][] = $row['search']; $this->report['value'][] = $row['nb']; $this->report['value2'][] = $row['nb_rep']; } $this->total = sizeof($this->result); //calculate prev and next page $this->calculatePages($rs); //do we display navigator ? $this->setDisplayNav(); //set report $this->setReport(); $conn->free_result($rs); } return $this->report; } /** * @desc get all downloads from one specific user * @param $usr user id * @param array $config config for the html table * @return array */ public function getAllDownloadByUserBase($usr, $config = false) { $result = array(); $conn = connection::getInstance($this->sbas_id); $tab_filter = parent::buildFilter($conn); //get all filter extract($tab_filter); $sql = " SELECT record.xml as titre, log_docs.record_id, log_docs.date, log_docs.final as objets FROM (`log_docs` inner join log on log_docs.log_id = log.id inner join record on log_docs.record_id = record.record_id) WHERE log_docs.action = 'download' AND log_docs.date > '".$conn->escape_string($this->dmin)."' AND log_docs.date < '".$conn->escape_string($this->dmax)."' AND log.usrid = '".$conn->escape_string($usr)."' AND log.site ='".$conn->escape_string(GV_sit)."' AND (".$collfilter.")"; $this->getTotal($sql); $sql .= " ORDER BY date DESC LIMIT 0, 30"; $this->initialize(); if($rs = $conn->query($sql)) { $login = parent::getUsrLogin($usr); $this->setDisplay($rs); ($config) ? $this->setConfigColumn($config) : $this->initDefaultConfigColumn($this->display); $i = 0; while($row = $conn->fetch_assoc($rs)) { foreach($this->champ as $key => $value) { if($value == 'titre') $result[$i][$value] = parent::getChamp($row[$value], 'Titre'); else $result[$i][$value] = $row[$value]; } $i++; } $conn->free_result($rs); $this->setResult(sprintf(_('report:: Telechargement effectue par l\'utilisateur %s'),$login), $result); } return $this->result; } /** * @desc get all download by base by day * @param array $tab config for html table * @return array */ public function getDownloadByBaseByDay($tab = false) { $conn = connection::getInstance($this->sbas_id); $tab_filter = parent::buildFilter($conn); extract($tab_filter); $this->title = _('report:: telechargements par jour'); $sql = "SELECT DISTINCT ( DATE_FORMAT( log_docs.date, '%Y-%c-%d' ) ) AS ddate, COUNT( DATE_FORMAT( log_docs.date, '%d' ) ) AS download, final FROM ( log_docs INNER JOIN record ON record.record_id = log_docs.record_id INNER JOIN log ON log.site = '".$conn->escape_string(GV_sit)."' AND log.id = log_docs.log_id LEFT JOIN subdef AS s ON log_docs.action = 'download' AND s.record_id = log_docs.record_id AND s.name = log_docs.final) WHERE log_docs.date > '".$conn->escape_string($this->dmin)."' AND log_docs.date < '".$conn->escape_string($this->dmax)."' AND (log_docs.final ='document' OR log_docs.final = 'preview') AND (".$collfilter.") AND (".$dl_coll_filter.") GROUP BY ddate, final WITH rollup"; if($rs = $conn->query($sql)) { $this->setChamp($rs); $this->setDisplay($tab); $save_date = ""; $total = array('tot_doc' => 0, 'tot_prev' => 0,'tot_dl' => 0); $i = -1; while(($row = $conn->fetch_assoc($rs))) { $date = $row['ddate']; (($save_date != $date) && !is_null($date)) ? $i++ : ""; if(!is_null($date)) { $this->result[$i]['ddate'] = phraseadate::getPrettyString(new DateTime($date)); } if($row['final'] == 'document') { $this->result[$i]['document'] = $row['download']; $total['tot_doc'] += $row['download']; } elseif($row['final'] == 'preview') { $this->result[$i]['preview'] = $row['download']; $total['tot_prev'] += $row['download']; } (is_null($row['final']) && !is_null($row['ddate'])) ? $this->result[$i]['total'] = $row['download'] : ""; (is_null($row['final']) && is_null($row['ddate'])) ? $total['tot_dl'] = $row['download']: ""; (!isset($this->result[$i]['preview'])) ? $this->result[$i]['preview'] = 0 : ""; (!isset($this->result[$i]['document'])) ? $this->result[$i]['document'] = 0 : ""; $save_date = $date; } $nb_row = $i + 1; $this->total = $nb_row; if($this->total > 0) { $this->result[$nb_row]['ddate'] = 'TOTAL'; $this->result[$nb_row]['document'] = ''.$total['tot_doc'].''; $this->result[$nb_row]['preview'] = ''.$total['tot_prev'].''; $this->result[$nb_row]['total'] = ''.$total['tot_dl'].''; } $this->calculatePages($rs); $this->setDisplayNav(); $this->setReport(); $conn->free_result($rs); } return $this->report; } /** * @desc get nb connexion by user , fonction ,societe etc.. * @param array $tab config for html table * @param string $on choose the field on what you want the result * @return array */ public function getConnexionBase($tab = false, $on ) { //default group on user column if(empty($on)) { $on = "user"; } $conn = connection::getInstance($this->sbas_id); $tab_filter = parent::buildFilter($conn); //get all filter extract($tab_filter); $this->req = "SELECT DISTINCT(log.".$on.") as ".$on.", usrid, SUM(1) as connexion FROM log WHERE log.user != 'API' AND log.site = '".$conn->escape_string(GV_sit)."' AND log.date > '".$conn->escape_string($this->dmin)."' AND log.date < '".$conn->escape_string($this->dmax)."' AND (".$collfilter.") GROUP BY ".$on." ORDER BY connexion DESC "; //set total $this->setTotal($this->req); //get limit $limit ? $this->req .= "LIMIT 0,".$this->nb_record: ""; if($rs = $conn->query($this->req)) { $i = 0; //set title $this->title = _('report:: Detail des connexions'); //set champ $this->champ = array($on,'connexion'); //set display $this->default_display = array($on,'connexion'); ($tab) ? $this->setConfigColumn($tab) : $this->initDefaultConfigColumn($this->default_display); //build result while(($row = $conn->fetch_assoc($rs)) && ($i < $this->nb_record)) { foreach($this->champ as $key => $value) { $this->result[$i][$value] = empty($row[$value]) ? ""._('report:: non-renseigne')."" : $row[$value]; if($value == 'connexion') $this->total_connexion += $row['connexion']; } $this->result[$i]['usrid'] = $row['usrid']; $i++; } $conn->free_result($rs); if ($this->total > 0) { $this->result[$i]['usrid'] = 0; $this->result[$i]['connexion'] = ''.$this->total_connexion.''; $this->result[$i][$on] ='TOTAL'; } //calculate prev and next page $this->calculatePages($rs); //do we display navigator ? $this->setDisplayNav(); //set report $this->setReport(); } return $this->report; } /** * @desc get the deail of download by users * @param bool $ext false for your appbox conn, true for external connections * @param array $tab config for the html table * @return array */ public function getDetailDownload($tab = false, $on) { empty($on) ? $on = "user" :""; //by default always report on user $conn = connection::getInstance($this->sbas_id); $tab_filter = parent::buildFilter($conn); //get all filter extract($tab_filter); $this->title = _('report:: Detail des telechargements'); $sql = " SELECT usrid, TRIM(".$on.") as ".$on.", final, sum(1) as nb, sum(size) as poid FROM (log_docs as d INNER JOIN log ON log.site = '".$conn->escape_string(GV_sit)."' AND log.id = d.log_id AND log.date > '".$conn->escape_string($this->dmin)."' AND log.date < '".$conn->escape_string($this->dmax)."') INNER JOIN record ON record.record_id = d.record_id LEFT JOIN subdef as s on (d.action = 'download' OR d.action = 'mail') AND s.record_id=d.record_id and s.name=d.final WHERE (".$collfilter.") AND (".$dl_coll_filter.") GROUP BY ".$on.", final, usrid WITH rollup"; if($rs = $conn->query($sql)) { $save_user = ""; $i = -1; $total = array('nbdoc' => 0, 'poiddoc' => 0, 'nbprev' => 0, 'poidprev' => 0); $this->setChamp($rs); $this->setDisplay($tab); while(($row = $conn->fetch_assoc($rs))) { $user = $row[$on]; if(($save_user != $user) && !is_null($user)) $i++; //doc info if($row['final'] == 'document' && !is_null($user) && !is_null($row['usrid'])) { $this->result[$i]['nbdoc'] = (!is_null($row['nb']) ? $row['nb'] : 0); $this->result[$i]['poiddoc'] = (!is_null($row['poid']) ? parent::unite($row['poid']) : 0); if(!isset($this->result[$i]['nbprev'])) $this->result[$i]['nbprev'] = 0; if(!isset($this->result[$i]['poidprev'])) $this->result[$i]['poidprev'] = 0; $this->result[$i]['user'] = empty($row[$on]) ? ""._('report:: non-renseigne')."" : $row[$on]; $total['nbdoc'] += $this->result[$i]['nbdoc']; $total['poiddoc'] += (!is_null($row['poid']) ? $row['poid'] : 0); $this->result[$i]['usrid'] = $row['usrid']; } //preview info if($row['final'] == 'preview' && !is_null($user) && !is_null($row['usrid'])) { if(!isset($this->result[$i]['nbdoc'])) $this->result[$i]['nbdoc'] = 0; if(!isset($this->result[$i]['poiddoc'])) $this->result[$i]['poiddoc'] = 0; $this->result[$i]['nbprev'] = (!is_null($row['nb']) ? $row['nb'] : 0); $this->result[$i]['poidprev'] = (!is_null($row['poid']) ? parent::unite($row['poid']) : 0); $this->result[$i]['user'] = empty($row[$on]) ? ""._('report:: non-renseigne')."" : $row[$on]; $total['nbprev'] += $this->result[$i]['nbprev']; $total['poidprev'] += (!is_null($row['poid']) ? $row['poid'] : 0); $this->result[$i]['usrid'] = $row['usrid']; } $save_user = $user; } $nb_row = $i + 1; $this->total = $nb_row; if($this->total > 0) { $this->result[$nb_row]['user'] = 'TOTAL'; $this->result[$nb_row]['nbdoc'] = ''.$total['nbdoc'].''; $this->result[$nb_row]['poiddoc'] = ''.parent::unite($total['poiddoc']).''; $this->result[$nb_row]['nbprev'] = ''.$total['nbprev'].''; $this->result[$nb_row]['poidprev'] = ''.parent::unite($total['poidprev']).''; } $this->total = sizeof($this->result); $this->calculatePages($rs); $this->setDisplayNav(); $this->setReport(); $conn->free_result($rs); } return $this->report; } public function getPush($tab = false) { $conn = connection::getInstance($this->sbas_id); $tab_filter = parent::buildFilter($conn); $id_to_colname = parent::returnCollName(); //get all filter extract($tab_filter); $push = array(); $sql = " SELECT log.usrid, log.user , d.final as getter, d.record_id, d.date, s.* FROM (log_docs as d INNER JOIN log ON log.site = '".$conn->escape_string(GV_sit)."' AND log.id = d.log_id AND log.date > '".$conn->escape_string($this->dmin)."' AND log.date < '".$conn->escape_string($this->dmax)."') INNER JOIN record ON record.record_id = d.record_id LEFT JOIN subdef as s ON s.record_id=d.record_id and s.name='document' WHERE (".$collfilter.") AND (".$dl_coll_filter.") AND d.action='push' "; if($rs = $conn->query($sql)) { $this->setChamp($rs); $this->setDisplay($tab); $i = 0; while($row = $conn->fetch_assoc($rs)) { foreach($this->champ as $key => $value) { $value == "getter" ? $this->result[$i][$value] = user::getInfos($row[$value]) : $this->result[$i][$value] = $row[$value]; if($value == "size") $this->result[$i][$value] = parent::unite($row[$value]); elseif($value == "date") $this->result[$i][$value] = phraseadate::getPrettyString(new DateTime($row[$value])); } $i++; } $this->total = sizeof($this->result); //calculate prev and next page $this->calculatePages($rs); //do we display navigator ? $this->setDisplayNav(); //set report $this->setReport(); $conn->free_result($rs); } return($this->report); } public static function topTenUser($dmin, $dmax, $sbas_id, $list_coll_id) { $conn = connection::getInstance($sbas_id); $result = array(); $datefilter = parent::getDateFilter($dmin, $dmax); $collfilter = parent::getCollectionFilter($list_coll_id); $sql = " SELECT log.usrid, user, final, sum(1) AS nb, sum(size) AS poid FROM (log_docs AS d INNER JOIN log ON log.site='".$conn->escape_string(GV_sit)."' AND log.id = d.log_id AND ".$datefilter.") LEFT JOIN subdef AS s ON d.action = 'download' AND s.record_id = d.record_id AND s.name = d.final AND (".$collfilter.") GROUP BY user, final WITH rollup"; if($rs = $conn->query($sql)) { $save_id =""; while(($row = $conn->fetch_assoc($rs))) { $id = $row['usrid']; if(!is_null($row['usrid']) && !is_null($row['user']) && !is_null($row['final']) && !is_null($row['nb']) && !is_null($row['poid']) ) { $result[$id]['user'] = $row['user']; if($row['final'] == 'document') { $result[$id]['nbdoc'] = (!is_null($row['nb']) ? $row['nb'] : 0); $result[$id]['poiddoc'] = (!is_null($row['poid']) ? $row['poid'] : 0); if(!isset($result[$id]['nbprev'])) $result[$id]['nbprev'] = 0; if(!isset($result[$id]['poidprev'])) $result[$id]['poidprev'] = 0; } if($row['final'] == 'preview') { if(!isset($result[$id]['nbdoc'])) $result[$id]['nbdoc'] = 0; if(!isset($result[$id]['poiddoc'])) $result[$id]['poiddoc'] = 0; $result[$id]['nbprev'] = (!is_null($row['nb']) ? $row['nb'] : 0); $result[$id]['poidprev'] = (!is_null($row['poid']) ? $row['poid'] : 0); } } $save_id = $id; } $conn->free_result($rs); } return $result; } public static function activity($dmin, $dmax, $sbas_id, $list_coll_id) { $conn = connection::getInstance($sbas_id); $res = array(); $datefilter = parent::getDateFilter($dmin, $dmax); $collfilter = parent::getCollectionFilter($list_coll_id); $sql = "SELECT log.id, HOUR(log.date) as heures FROM log WHERE ".$datefilter." AND (".$collfilter.") AND log.site = '".$conn->escape_string(GV_sit)."'"; if($rs = $conn->query($sql)) { for($i = 0;$i < 24; $i++) $res[$i] = 0; while( ($row = $conn->fetch_assoc($rs)) ) { $total = $conn->num_rows($rs); if($total > 0) $res[$row["heures"]]++; } foreach($res as $heure => $value) $res[$heure] = (float)number_format(round(($value / 24), 2), 2); $conn->free_result($rs); } return $res; } public static function activityDay($dmin, $dmax, $sbas_id, $list_coll_id, $nb_days) { $conn = connection::getInstance($sbas_id); $result = array(); $res = array(); $datefilter = parent::getDateFilter($dmin, $dmax); $collfilter = parent::getCollectionFilter($list_coll_id); $sql = "SELECT DISTINCT ( DATE_FORMAT( log.date, '%d-%m-%Y' ) ) AS ddate, COUNT( DATE_FORMAT( log.date, '%d' ) ) AS activity FROM log WHERE ".$datefilter." AND log.site ='".$conn->escape_string(GV_sit)."' AND (".$collfilter.") GROUP by ddate ORDER BY ddate DESC"; if($rs = $conn->query($sql)) { $num_fields = $conn->num_fields($rs); while(($row = $conn->fetch_assoc($rs))) { $c = 0; while($c < $num_fields) { $value = $conn->field_name($rs, $c); if($value == 'ddate') { $date = phraseadate::getPrettyString(new DateTime($row['ddate'])); } else $connexions = $row[$value]; $c++; } $result[$date] = $connexions; } foreach($result as $key => $act) { $res[$key] = (float)number_format($act,2); } $conn->free_result($rs); } return $res; } public static function activityQuestion($dmin, $dmax, $sbas_id, $list_coll_id) { $conn = connection::getInstance($sbas_id); $result = array(); $datefilter = parent::getDateFilter($dmin, $dmax); $collfilter = parent::getCollectionFilter($list_coll_id); $sql = "SELECT log.usrid, log.user, sum(1) AS nb FROM `log_search` INNER JOIN log ON log_search.log_id = log.id WHERE ".$datefilter." AND log.site ='".$conn->escape_string(GV_sit)."' AND (".$collfilter.") GROUP BY log.usrid ORDER BY nb DESC"; if($rs = $conn->query($sql)) { while( ($row = $conn->fetch_assoc($rs)) ) { $result[$row['usrid']]['user'] = $row['user']; $result[$row['usrid']]['nb'] = $row['nb']; } $conn->free_result($rs); } return $result; } public static function activiteTopQuestion($dmin, $dmax, $sbas_id, $list_coll_id) { $conn = connection::getInstance($sbas_id); $result = array(); $datefilter = parent::getDateFilter($dmin, $dmax); $collfilter = parent::getCollectionFilter($list_coll_id); $sql = "SELECT TRIM(log_search.search) as question, log.usrid, log.user, sum(1) AS nb FROM `log_search` INNER JOIN log ON log_search.log_id = log.id WHERE ".$datefilter." AND log.site ='".$conn->escape_string(GV_sit)."' AND (".$collfilter.") GROUP BY log_search.search ORDER BY nb DESC"; if($rs = $conn->query($sql)) { $conv = array(" " => ""); while( ($row = $conn->fetch_assoc($rs)) ) { $question = $row['question']; $question = mb_strtolower(strtr($question, $conv)); $result[$question]['question'] = $row['question']; $result[$question]['nb'] = $row['nb']; } $conn->free_result($rs); } return $result; } //AND referrer NOT LIKE '".$conn->escape_string(GV_ServerName)."%' public static function activiteTopTenSiteView($dmin, $dmax, $sbas_id, $list_coll_id) { $conn = connection::getInstance($sbas_id); $result = array(); $datefilter = parent::getDateFilter($dmin, $dmax); $collfilter = parent::getCollectionFilter($list_coll_id); $sql = "SELECT referrer, COUNT(referrer) as nb_view FROM log_view INNER JOIN log ON log_view.log_id = log.id WHERE ".$datefilter." AND (".$collfilter.") GROUP BY referrer ORDER BY nb_view DESC "; if($rs = $conn->query($sql)) { while( ($row = $conn->fetch_assoc($rs)) ) { ($row['referrer'] != 'NO REFERRER') ? $host = parent::getHost($row['referrer']) : $host = 'NO REFERRER'; !isset($result[$host]) ? $result[$host] = 0 : ""; $result[$host] += ($row['nb_view']); } $conn->free_result($rs); } return $result; } public static function activiteAddedDocument($dmin, $dmax, $sbas_id, $list_coll_id) { $conn = connection::getInstance($sbas_id); $result = array(); $datefilter = parent::getDateFilter($dmin, $dmax); $collfilter = parent::getCollectionFilter($list_coll_id); $sql = "SELECT DISTINCT ( DATE_FORMAT( log_docs.date, '%d-%m-%Y' ) ) AS ddate, COUNT( DATE_FORMAT( log_docs.date, '%d' ) ) AS activity FROM log_docs INNER JOIN log ON log_docs.log_id = log.id WHERE ".$datefilter." AND log_docs.action = 'add' AND (".$collfilter.") GROUP BY ddate ORDER BY activity DESC "; if($rs = $conn->query($sql)) { $num_fields = $conn->num_fields($rs); while(($row = $conn->fetch_assoc($rs))) { $c = 0; while($c < $num_fields) { $value = $conn->field_name($rs, $c); if($value == 'ddate') { $date= phraseadate::getPrettyString(new DateTime($row['ddate'])); } else $download = $row[$value]; $c++; } $result[$date] = $download; } } return $result; } public static function activiteEditedDocument($dmin, $dmax, $sbas_id, $list_coll_id) { $conn = connection::getInstance($sbas_id); $result = array(); $datefilter = parent::getDateFilter($dmin, $dmax); $collfilter = parent::getCollectionFilter($list_coll_id); $sql = "SELECT DISTINCT ( DATE_FORMAT( log_docs.date, '%d-%m-%Y' ) ) AS ddate, COUNT( DATE_FORMAT( log_docs.date, '%d' ) ) AS activity FROM log_docs INNER JOIN log ON log_docs.log_id = log.id WHERE ".$datefilter." AND log_docs.action = 'edit' AND (".$collfilter.") GROUP BY ddate ORDER BY activity DESC "; if($rs = $conn->query($sql)) { $num_fields = $conn->num_fields($rs); while(($row = $conn->fetch_assoc($rs))) { $c = 0; while($c < $num_fields) { $value = $conn->field_name($rs, $c); if($value == 'ddate') { $date= phraseadate::getPrettyString(new DateTime($row['ddate'])); } else $download = $row[$value]; $c++; } $result[$date] = $download; } } return $result; } }