PHRAS-335 #fix date mismatching in report

This commit is contained in:
Nicolas Le Goff
2014-11-17 16:50:20 +01:00
parent 93516ed1ec
commit 6a8b79be45
3 changed files with 30 additions and 18 deletions

View File

@@ -232,6 +232,7 @@ class module_report
/** /**
* *
*/ */
protected $dateField = 'log.date';
protected $cor_query = array(); protected $cor_query = array();
protected $isInformative; protected $isInformative;
@@ -804,6 +805,18 @@ class module_report
} }
} }
public function setDateField($dateField)
{
$this->dateField = $dateField;
return $this;
}
public function getDateField()
{
return $this->dateField;
}
/** /**
* Build the final formated array which contains all the result, * Build the final formated array which contains all the result,
* we construct the html code from this array * we construct the html code from this array

View File

@@ -154,6 +154,7 @@ class module_report_activity extends module_report
$this->report['value2'] = array(); $this->report['value2'] = array();
$sqlBuilder = new module_report_sql($this->app, $this); $sqlBuilder = new module_report_sql($this->app, $this);
$this->setDateField('log_search.date');
$filter = $sqlBuilder->getFilters()->getReportFilter(); $filter = $sqlBuilder->getFilters()->getReportFilter();
$params = array_merge(array(), $filter['params']); $params = array_merge(array(), $filter['params']);
@@ -278,21 +279,18 @@ class module_report_activity extends module_report
public function getDownloadByBaseByDay($tab = false) public function getDownloadByBaseByDay($tab = false)
{ {
$this->title = _('report:: telechargements par jour'); $this->title = _('report:: telechargements par jour');
$this->setDateField('log_docs.date');
$sqlBuilder = new module_report_sql($this->app, $this); $sqlBuilder = new module_report_sql($this->app, $this);
$filter = $sqlBuilder->getFilters()->getGvSitFilter(); $filter = $sqlBuilder->getFilters()->getReportFilter();
$params = array_merge(array( $params = array_merge(array(), $filter['params']);
':ld_date_max' => $this->getDmax(),
':ld_date_min' => $this->getDmin(),
), $filter['params']);
$sql = " $sql = "
SELECT tt.record_id, DATE_FORMAT(tt.the_date, GET_FORMAT(DATE, 'INTERNAL')) AS ddate, tt.final, SUM(1) AS nb SELECT tt.record_id, tt.the_date AS ddate, tt.final, SUM(1) AS nb
FROM ( FROM (
SELECT DISTINCT(log.id), log_docs.date AS the_date, log_docs.final, log_docs.record_id SELECT DISTINCT(log.id), log_docs.date AS the_date, log_docs.final, log_docs.record_id
FROM (log_docs) FROM (log_docs)
INNER JOIN log FORCE INDEX (date_site) ON (log.id = log_docs.log_id) INNER JOIN log FORCE INDEX (date_site) ON (log.id = log_docs.log_id)
WHERE (" . $filter['sql'] . ") AND (log_docs.date >= :ld_date_min AND log_docs.date <= :ld_date_max) AND !ISNULL(usrid) WHERE (" . $filter['sql'] . ") AND !ISNULL(usrid)
AND (log_docs.action = 'download' OR log_docs.action = 'mail') AND (log_docs.action = 'download' OR log_docs.action = 'mail')
AND (log_docs.final = 'preview' OR log_docs.final = 'document') AND (log_docs.final = 'preview' OR log_docs.final = 'document')
) AS tt ) AS tt
@@ -469,6 +467,7 @@ class module_report_activity extends module_report
$this->title = _('report:: Detail des telechargements'); $this->title = _('report:: Detail des telechargements');
$sqlBuilder = new module_report_sql($this->app, $this); $sqlBuilder = new module_report_sql($this->app, $this);
$this->setDateField('log_search.date');
$filter = $sqlBuilder->getFilters()->getReportFilter(); $filter = $sqlBuilder->getFilters()->getReportFilter();
$params = array_merge(array(), $filter['params']); $params = array_merge(array(), $filter['params']);
@@ -603,7 +602,7 @@ class module_report_activity extends module_report
$params = array(':site_id' => $app['phraseanet.configuration']['main']['key']); $params = array(':site_id' => $app['phraseanet.configuration']['main']['key']);
$datefilter = module_report_sqlfilter::constructDateFilter($dmin, $dmax); $datefilter = module_report_sqlfilter::constructDateFilter($dmin, $dmax, 'log_search.date');
$params = array_merge($params, $datefilter['params']); $params = array_merge($params, $datefilter['params']);
/* /*
$sql = "SELECT tt.usrid, tt.user, tt.final, tt.record_id, SUM(1) AS nb, SUM(size) AS poid $sql = "SELECT tt.usrid, tt.user, tt.final, tt.record_id, SUM(1) AS nb, SUM(size) AS poid
@@ -798,7 +797,7 @@ class module_report_activity extends module_report
{ {
$conn = connection::getPDOConnection($app, $sbas_id); $conn = connection::getPDOConnection($app, $sbas_id);
$result = array(); $result = array();
$datefilter = module_report_sqlfilter::constructDateFilter($dmin, $dmax); $datefilter = module_report_sqlfilter::constructDateFilter($dmin, $dmax, 'log_search.date');
$params = array(':site_id' => $app['phraseanet.configuration']['main']['key']); $params = array(':site_id' => $app['phraseanet.configuration']['main']['key']);
$params = array_merge($params, $datefilter['params']); $params = array_merge($params, $datefilter['params']);
@@ -849,7 +848,7 @@ class module_report_activity extends module_report
{ {
$conn = connection::getPDOConnection($app, $sbas_id); $conn = connection::getPDOConnection($app, $sbas_id);
$result = array(); $result = array();
$datefilter = module_report_sqlfilter::constructDateFilter($dmin, $dmax); $datefilter = module_report_sqlfilter::constructDateFilter($dmin, $dmax, 'log_search.date');
$params = array(':site_id' => $app['phraseanet.configuration']['main']['key']); $params = array(':site_id' => $app['phraseanet.configuration']['main']['key']);
$params = array_merge($params, $datefilter['params']); $params = array_merge($params, $datefilter['params']);
@@ -958,7 +957,7 @@ class module_report_activity extends module_report
{ {
$conn = connection::getPDOConnection($app, $sbas_id); $conn = connection::getPDOConnection($app, $sbas_id);
$result = array(); $result = array();
$datefilter = module_report_sqlfilter::constructDateFilter($dmin, $dmax); $datefilter = module_report_sqlfilter::constructDateFilter($dmin, $dmax,'log_docs.date');
$params = array(); $params = array();
$params = array_merge($params, $datefilter['params']); $params = array_merge($params, $datefilter['params']);
@@ -1006,7 +1005,7 @@ class module_report_activity extends module_report
{ {
$conn = connection::getPDOConnection($app, $sbas_id); $conn = connection::getPDOConnection($app, $sbas_id);
$result = array(); $result = array();
$datefilter = module_report_sqlfilter::constructDateFilter($dmin, $dmax); $datefilter = module_report_sqlfilter::constructDateFilter($dmin, $dmax, 'log_docs.date');
$params = array(); $params = array();
$params = array_merge($params, $datefilter['params']); $params = array_merge($params, $datefilter['params']);
@@ -1054,7 +1053,7 @@ class module_report_activity extends module_report
{ {
$conn = connection::getPDOConnection($app, $sbas_id); $conn = connection::getPDOConnection($app, $sbas_id);
$result = array(); $result = array();
$datefilter = module_report_sqlfilter::constructDateFilter($dmin, $dmax); $datefilter = module_report_sqlfilter::constructDateFilter($dmin, $dmax, 'log_docs.date');
$params = array(); $params = array();
$params = array_merge($params, $datefilter['params']); $params = array_merge($params, $datefilter['params']);

View File

@@ -32,10 +32,10 @@ class module_report_sqlfilter
$this->report = $report; $this->report = $report;
} }
public static function constructDateFilter($dmin, $dmax) public static function constructDateFilter($dmin, $dmax, $dateField = 'log_date.date')
{ {
return array( return array(
'sql' => ($dmin && $dmax ? ' log_date.date > :date_min AND log_date.date < :date_max ' : false) 'sql' => ($dmin && $dmax ? ' '.$dateField.' > :date_min AND '.$dateField.' < :date_max ' : false)
, 'params' => ($dmin && $dmax ? array(':date_min' => $dmin, ':date_max' => $dmax) : array()) , 'params' => ($dmin && $dmax ? array(':date_min' => $dmin, ':date_max' => $dmax) : array())
); );
} }
@@ -125,13 +125,13 @@ class module_report_sqlfilter
*/ */
$sql = ""; $sql = "";
if($report->getDmin()) { if($report->getDmin()) {
$sql = "log.date>=" . $this->conn->quote($report->getDmin()); $sql = $report->getDateField().">=" . $this->conn->quote($report->getDmin());
} }
if($report->getDmax()) { if($report->getDmax()) {
if($sql != "") { if($sql != "") {
$sql .= " AND "; $sql .= " AND ";
} }
$sql .= "log.date<=" . $this->conn->quote($report->getDmax()); $sql .= $report->getDateField()."<=" . $this->conn->quote($report->getDmax());
} }
$this->filter['date'] = array( $this->filter['date'] = array(
'sql' => $sql, 'params' => array() 'sql' => $sql, 'params' => array()