mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-13 13:03:20 +00:00
PHRAS-335 #fix date mismatching in report
This commit is contained in:
@@ -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
|
||||
|
@@ -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']);
|
||||
|
@@ -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()
|
||||
|
Reference in New Issue
Block a user