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 $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,
* 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();
$sqlBuilder = new module_report_sql($this->app, $this);
$this->setDateField('log_search.date');
$filter = $sqlBuilder->getFilters()->getReportFilter();
$params = array_merge(array(), $filter['params']);
@@ -278,21 +279,18 @@ class module_report_activity extends module_report
public function getDownloadByBaseByDay($tab = false)
{
$this->title = _('report:: telechargements par jour');
$this->setDateField('log_docs.date');
$sqlBuilder = new module_report_sql($this->app, $this);
$filter = $sqlBuilder->getFilters()->getGvSitFilter();
$params = array_merge(array(
':ld_date_max' => $this->getDmax(),
':ld_date_min' => $this->getDmin(),
), $filter['params']);
$filter = $sqlBuilder->getFilters()->getReportFilter();
$params = array_merge(array(), $filter['params']);
$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 (
SELECT DISTINCT(log.id), log_docs.date AS the_date, log_docs.final, log_docs.record_id
FROM (log_docs)
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.final = 'preview' OR log_docs.final = 'document')
) AS tt
@@ -469,6 +467,7 @@ class module_report_activity extends module_report
$this->title = _('report:: Detail des telechargements');
$sqlBuilder = new module_report_sql($this->app, $this);
$this->setDateField('log_search.date');
$filter = $sqlBuilder->getFilters()->getReportFilter();
$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']);
$datefilter = module_report_sqlfilter::constructDateFilter($dmin, $dmax);
$datefilter = module_report_sqlfilter::constructDateFilter($dmin, $dmax, 'log_search.date');
$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
@@ -798,7 +797,7 @@ class module_report_activity extends module_report
{
$conn = connection::getPDOConnection($app, $sbas_id);
$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_merge($params, $datefilter['params']);
@@ -849,7 +848,7 @@ class module_report_activity extends module_report
{
$conn = connection::getPDOConnection($app, $sbas_id);
$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_merge($params, $datefilter['params']);
@@ -958,7 +957,7 @@ class module_report_activity extends module_report
{
$conn = connection::getPDOConnection($app, $sbas_id);
$result = array();
$datefilter = module_report_sqlfilter::constructDateFilter($dmin, $dmax);
$datefilter = module_report_sqlfilter::constructDateFilter($dmin, $dmax,'log_docs.date');
$params = array();
$params = array_merge($params, $datefilter['params']);
@@ -1006,7 +1005,7 @@ class module_report_activity extends module_report
{
$conn = connection::getPDOConnection($app, $sbas_id);
$result = array();
$datefilter = module_report_sqlfilter::constructDateFilter($dmin, $dmax);
$datefilter = module_report_sqlfilter::constructDateFilter($dmin, $dmax, 'log_docs.date');
$params = array();
$params = array_merge($params, $datefilter['params']);
@@ -1054,7 +1053,7 @@ class module_report_activity extends module_report
{
$conn = connection::getPDOConnection($app, $sbas_id);
$result = array();
$datefilter = module_report_sqlfilter::constructDateFilter($dmin, $dmax);
$datefilter = module_report_sqlfilter::constructDateFilter($dmin, $dmax, 'log_docs.date');
$params = array();
$params = array_merge($params, $datefilter['params']);

View File

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