Modify collections filter & add JOIN on log_colls table

Create entries in log_colls table

Fix SQL issue

Fix SQL issues

Update version

Add patch

Remove debug output

Fix CS

Fic CS

Add table schema

Fix Cs

Update patch

Update patch

Update patch

Update patch

Update patch

delete all coll_list call

Fix logger issue

Fix log_colls table structure definition

Rename patch

Fix SQL Issues

Fix patch

Fix test

Fix tests
This commit is contained in:
Nicolas Le Goff
2012-11-07 13:01:09 +01:00
parent 6c1f760813
commit 07300af3f4
15 changed files with 373 additions and 210 deletions

View File

@@ -113,9 +113,10 @@ class module_report_activity extends module_report
$sql = "
SELECT DATE_FORMAT( log.date, '%k' ) AS heures, SUM(1) AS nb
FROM log
WHERE (" . $date_filter['sql'] . ")
AND (" . $coll_filter['sql'] . ")
FROM (log)
INNER JOIN log_colls ON (log.id = log_colls.log_id)
WHERE " . $date_filter['sql'] . "
AND " . $coll_filter['sql'] . "
AND " . $site_filter['sql'] . "
GROUP BY heures
ORDER BY heures ASC";
@@ -177,11 +178,13 @@ class module_report_activity extends module_report
$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)
FROM (log_search)
INNER JOIN log ON (log.id = log_search.log_id)
INNER JOIN log_colls ON (log.id = log_colls.log_id)
WHERE log_search.date > " . $date_filter['sql'] . "
AND log.`" . $what . "` = :main_value
AND " . $site_filter['sql'] . "
AND (" . $coll_filter['sql'] . ")
AND " . $coll_filter['sql'] . "
ORDER BY date";
$stmt = $conn->prepare($sql);
@@ -240,7 +243,9 @@ class module_report_activity extends module_report
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)
FROM (log_search)
INNER JOIN log ON (log_search.log_id = log.id)
INNER JOIN log_colls ON (log.id = log_colls.log_id)
WHERE " . $date_filter['sql'] . "
AND log_search.search != 'all'
AND (" . $coll_filter['sql'] . ")";
@@ -309,8 +314,10 @@ class module_report_activity extends module_report
$sql = "
SELECT 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)
FROM (`log_docs`)
INNER JOIN log ON (log_docs.log_id = log.id)
INNER JOIN log_colls ON (log.id = log_colls.log_id)
INNER JOIN record ON (log_docs.record_id = record.record_id)
WHERE log_docs.action = 'download'
AND " . $date_filter['sql'] . "
AND " . $user_filter['sql'] . "
@@ -384,13 +391,11 @@ class module_report_activity extends module_report
log_docs.date
AS ddate,
final
FROM (
log_docs
INNER JOIN record ON record.record_id = log_docs.record_id
INNER JOIN log ON " . $site_filter['sql'] . "
AND log.id = log_docs.log_id
LEFT JOIN subdef AS s ON s.record_id = log_docs.record_id
AND s.name = log_docs.final)
FROM (log_docs)
INNER JOIN record ON (record.record_id = log_docs.record_id)
INNER JOIN log ON (" . $site_filter['sql'] . " AND log.id = log_docs.log_id)
INNER JOIN log_colls ON (log.id = log_colls.log_id)
LEFT JOIN subdef AS s ON (s.record_id = log_docs.record_id AND s.name = log_docs.final)
WHERE " . $date_filter['sql'] . "
AND (log_docs.final != 'caption')
AND log_docs.action = 'download'
@@ -472,18 +477,20 @@ class module_report_activity extends module_report
$conn = $s->getConnBas();
$params = array();
$date_filter = $filter->getDateFilter();
$params = array_merge($params, $date_filter['params']);
$coll_filter = $filter->getCollectionFilter();
$params = array_merge($params, $coll_filter['params']);
$site_filter = $filter->getGvSitFilter();
$params = array_merge($params, $site_filter['params']);
$this->req = "
SELECT DISTINCT(log." . $on . ") as " . $on . ",
usrid,
SUM(1) as connexion
FROM log
FROM (log)
INNER JOIN log_colls ON (log.id = log_colls.log_id)
WHERE log.user != 'API'
AND " . $site_filter['sql'] . "
AND " . $date_filter['sql'] . "
@@ -581,14 +588,15 @@ class module_report_activity extends module_report
TRIM(" . $on . ") as " . $on . ",
final, sum(1) as nb,
sum(size) as poid
FROM (log_docs as d
INNER JOIN log ON " . $site_filter['sql'] . "
AND log.id = d.log_id
AND " . $date_filter['sql'] . "
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
)
FROM (log_docs as d)
INNER JOIN log ON (" . $site_filter['sql'] . "
AND log.id = d.log_id
AND " . $date_filter['sql'] . ")
INNER JOIN log_colls ON (log.id = log_colls.log_id)
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 (" . $coll_filter['sql'] . ")
AND (" . $record_filter['sql'] . ")
GROUP BY " . $on . ", final, usrid
@@ -703,15 +711,14 @@ class module_report_activity extends module_report
$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 (" . $site_filter['sql'] . "
AND log.id = d.log_id
AND " . $date_filter['sql'] . ")
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 ((" . $coll_filter['sql'] . ")
AND " . $record_filter['sql'] . "
AND d.action='push')
FROM (log_docs as d)
INNER JOIN log ON (" . $site_filter['sql'] . "
AND log.id = d.log_id
AND " . $date_filter['sql'] . ")
INNER JOIN log_colls ON (log.id = log_colls.log_id)
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 ((" . $coll_filter['sql'] . ") AND " . $record_filter['sql'] . " AND d.action='push')
";
$stmt = $conn->prepare($sql);
@@ -773,14 +780,15 @@ class module_report_activity extends module_report
$sql = "
SELECT log.usrid, user, final, sum(1) AS nb, sum(size) AS poid
FROM (log_docs AS log_date
INNER JOIN log ON log.site = :site_id
AND log.id = log_date.log_id
AND " . $datefilter['sql'] . ")
LEFT JOIN subdef AS s ON log_date.action = 'download'
AND s.record_id = log_date.record_id
AND s.name = log_date.final
AND (" . $collfilter['sql'] . ")
FROM (log_docs AS log_date)
INNER JOIN log ON (log.site = :site_id
AND log.id = log_date.log_id
AND " . $datefilter['sql'] . ")
INNER JOIN log_colls ON (log.id = log_colls.log_id)
LEFT JOIN subdef AS s ON (log_date.action = 'download'
AND s.record_id = log_date.record_id
AND s.name = log_date.final
AND (" . $collfilter['sql'] . "))
GROUP BY user, final
WITH rollup";
@@ -848,7 +856,8 @@ class module_report_activity extends module_report
$sql = "
SELECT log_date.id, HOUR(log_date.date) as heures
FROM log as log_date
FROM (log as log_date)
INNER JOIN log_colls ON (log_date.id = log_colls.log_id)
WHERE " . $datefilter['sql'] . "
AND (" . $collfilter['sql'] . ")
AND log_date.site = :site_id";
@@ -890,7 +899,7 @@ class module_report_activity extends module_report
SELECT DISTINCT (
DATE_FORMAT( log_date.date, '%Y-%m-%d' )
) AS ddate, COUNT( DATE_FORMAT( log_date.date, '%d' ) ) AS activity
FROM log as log_date
FROM log as log_date INNER JOIN log_colls ON (log_date.id = log_colls.log_id)
WHERE " . $datefilter['sql'] . "
AND log_date.site = :site_id
AND (" . $collfilter['sql'] . ")
@@ -928,9 +937,9 @@ class module_report_activity extends module_report
$sql = "
SELECT log_date.usrid, log_date.user, sum(1) AS nb
FROM `log_search`
INNER JOIN log as log_date
ON log_search.log_id = log_date.id
FROM (`log_search`)
INNER JOIN log as log_date ON (log_search.log_id = log_date.id)
INNER JOIN log_colls ON (log_date.id = log_colls.log_id)
WHERE " . $datefilter['sql'] . "
AND log_date.site = :site_id
AND (" . $collfilter['sql'] . ")
@@ -969,9 +978,9 @@ class module_report_activity extends module_report
log_date.usrid,
log_date.user,
sum(1) AS nb
FROM `log_search`
INNER JOIN log as log_date
ON log_search.log_id = log_date.id
FROM (`log_search`)
INNER JOIN log as log_date ON (log_search.log_id = log_date.id)
INNER JOIN log_colls ON (log_date.id = log_colls.log_id)
WHERE " . $datefilter['sql'] . "
AND log_date.site = :site_id
AND (" . $collfilter['sql'] . ")
@@ -1007,9 +1016,9 @@ class module_report_activity extends module_report
$sql = "
SELECT referrer, COUNT(referrer) as nb_view
FROM log_view
INNER JOIN log as log_date
ON log_view.log_id = log_date.id
FROM (log_view)
INNER JOIN log as log_date ON (log_view.log_id = log_date.id)
INNER JOIN log_colls ON (log_date.id = log_colls.log_id)
WHERE " . $datefilter['sql'] . "
AND (" . $collfilter['sql'] . ")
GROUP BY referrer
@@ -1049,9 +1058,9 @@ class module_report_activity extends module_report
SELECT DISTINCT (
DATE_FORMAT( log_date.date, '%Y-%m-%d' )
) AS ddate, COUNT( DATE_FORMAT( log_date.date, '%d' ) ) AS activity
FROM log_docs as log_date
INNER JOIN log
ON log_date.log_id = log.id
FROM (log_docs as log_date)
INNER JOIN log ON (log_date.log_id = log.id)
INNER JOIN log_colls ON (log.id = log_colls.log_id)
WHERE " . $datefilter['sql'] . " AND log_date.action = 'add'
AND (" . $collfilter['sql'] . ")
GROUP BY ddate
@@ -1083,9 +1092,9 @@ class module_report_activity extends module_report
SELECT DISTINCT (
DATE_FORMAT( log_date.date, '%Y-%m-%d' )
) AS ddate, COUNT( DATE_FORMAT( log_date.date, '%d' ) ) AS activity
FROM log_docs as log_date
INNER JOIN log
ON log_date.log_id = log.id
FROM (log_docs as log_date)
INNER JOIN log ON log_date.log_id = log.id
INNER JOIN log_colls ON (log.id = log_colls.log_id)
WHERE " . $datefilter['sql'] . " AND log_date.action = 'edit'
AND (" . $collfilter['sql'] . ")
GROUP BY ddate
@@ -1116,8 +1125,9 @@ class module_report_activity extends module_report
$sql = "
SELECT log.usrid, log.user, sum( 1 ) AS nb
FROM log_docs as log_date
INNER JOIN log ON log_date.log_id = log.id
FROM (log_docs as log_date)
INNER JOIN log ON (log_date.log_id = log.id)
INNER JOIN log_colls ON (log.id = log_colls.log_id)
WHERE " . $datefilter['sql'] . " AND log_date.action = 'add'
AND (" . $collfilter['sql'] . ")
GROUP BY log.usrid

View File

@@ -29,7 +29,6 @@ class module_report_connexion extends module_report
, 'fonction' => 'log.fonction'
, 'site' => 'log.site'
, 'sit_session' => 'log.sit_session'
, 'coll_list' => 'log.coll_list'
, 'appli' => 'log.appli'
, 'ip' => 'log.ip'
);
@@ -115,18 +114,7 @@ class module_report_connexion extends module_report
continue;
}
if ($value == 'coll_list') {
$coll = explode(",", $row[$value]);
$this->result[$i][$value] = "";
foreach ($coll as $id) {
if ($this->result[$i][$value] != "") {
$this->result[$i][$value].= " / ";
$this->result[$i][$value] .= phrasea::bas_names(phrasea::baseFromColl($this->sbas_id, $id, $this->app), $this->app);
} elseif ($this->result[$i][$value] == "") {
$this->result[$i][$value] = phrasea::bas_names(phrasea::baseFromColl($this->sbas_id, $id, $this->app), $this->app);
}
}
} elseif ($value == 'appli') {
if ($value == 'appli') {
$applis = false;
if (($applis = @unserialize($row[$value])) !== false) {
if (empty($applis)) {
@@ -164,7 +152,8 @@ class module_report_connexion extends module_report
$finalfilter .= 'log_date.site = :site_id';
$sql = "SELECT COUNT(usrid) as nb
FROM log as log_date
FROM (log as log_date)
INNER JOIN log_colls ON (log.id = log_colls.log_id)
WHERE " . $finalfilter;
$stmt = $conn->prepare($sql);

View File

@@ -55,7 +55,7 @@ class module_report_dashboard_group implements module_report_dashboard_component
}
}
} else {
throw new Exception("cannot group on a none dashboard object");
continue;
}
}
}

View File

@@ -187,10 +187,9 @@ class module_report_download extends module_report
$sql = '
SELECT SUM(1) AS nb
FROM ( log
INNER JOIN log_docs as log_date ON log.id = log_date.log_id
INNER JOIN record on log_date.record_id = record.record_id
)
FROM (log)
INNER JOIN log_docs as log_date ON (log.id = log_date.log_id)
INNER JOIN record ON (log_date.record_id = record.record_id)
WHERE (
' . $finalfilter . '
)
@@ -230,11 +229,10 @@ class module_report_download extends module_report
$sql = '
SELECT record.record_id as id, SUM(1) AS nb, subdef.name
FROM ( log
INNER JOIN log_docs as log_date ON log.id = log_date.log_id
INNER JOIN record ON log_date.record_id = record.record_id
INNER JOIN subdef ON subdef.record_id = record.record_id
)
FROM ( log )
INNER JOIN log_docs as log_date (ON log.id = log_date.log_id)
INNER JOIN record ON (log_date.record_id = record.record_id)
INNER JOIN subdef ON (subdef.record_id = record.record_id)
WHERE (
' . $finalfilter . '
)

View File

@@ -74,7 +74,8 @@ class module_report_nav extends module_report
$sql = '
SELECT
SUM(1) AS total
FROM log
FROM (log)
INNER JOIN log_colls ON (log.id = log_colls.log_id)
WHERE (' . $report_filter['sql'] . '
AND nav != TRIM(\'\')
)

View File

@@ -30,7 +30,6 @@ class module_report_question extends module_report
, 'fonction' => 'log.fonction'
, 'site' => 'log.site'
, 'sit_session' => 'log.sit_session'
, 'coll_list' => 'log.coll_list'
, 'appli' => 'log.appli'
, 'ip' => 'log.ip'
);

View File

@@ -52,13 +52,13 @@ class module_report_sqlaction extends module_report_sql implements module_report
$this->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 " . $site_filter['sql'] . "
AND log.id = d.log_id
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";
SELECT log.usrid, log.user , d.final as getter, d.record_id, d.date, s.*
FROM (log_docs as d)
INNER JOIN log ON (" . $site_filter['sql'] . " AND log.id = d.log_id)
INNER JOIN log_colls ON (log.id = log_colls.log_id)
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";
$this->sql .= $report_filter['sql'] . " AND (d.action = :action)";
@@ -83,15 +83,15 @@ class module_report_sqlaction extends module_report_sql implements module_report
$params = array_merge($params, $site_filter['params'], $report_filter['params'], $record_filter['params']);
$this->sql = "
SELECT TRIM(" . $this->getTransQuery($this->groupby) . ")
as " . $this->groupby . ",
SUM(1) as nombre
FROM (log_docs as d
INNER JOIN log ON " . $site_filter['sql'] . "
AND log.id = d.log_id
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 ";
SELECT TRIM(" . $this->getTransQuery($this->groupby) . ")
as " . $this->groupby . ",
SUM(1) as nombre
FROM (log_docs as d)
INNER JOIN log ON (" . $site_filter['sql'] . " AND log.id = d.log_id)
INNER JOIN log_colls ON (log.id = log_colls.log_id)
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 ";
$this->sql .= $report_filter['sql'] . " AND (d.action = :action)";
@@ -122,12 +122,13 @@ class module_report_sqlaction extends module_report_sql implements module_report
$sql = "
SELECT DISTINCT(" . $this->getTransQuery($field) . ") as val
FROM (log_docs as d
INNER JOIN log ON (" . $site_filter['sql'] . "
AND log.id = d.log_id
AND " . $date_filter['sql'] . ")
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'))
FROM (log_docs as d)
INNER JOIN log ON (" . $site_filter['sql'] . "
AND log.id = d.log_id
AND " . $date_filter['sql'] . ")
INNER JOIN log_colls ON (log.id = log_colls.log_id)
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 ";
if ($this->filter->getReportFilter()) {

View File

@@ -43,10 +43,10 @@ class module_report_sqlconnexion extends module_report_sql implements module_rep
log.fonction,
site,
sit_session,
coll_list,
appli,
ip
FROM log";
FROM log
INNER JOIN log_colls ON (log.id = log_colls.log_id)";
$this->sql .= " WHERE " . $report_filter['sql'];
$this->sql .= $this->filter->getOrderFilter() ? : '';
@@ -59,9 +59,10 @@ class module_report_sqlconnexion extends module_report_sql implements module_rep
$this->sql .= $this->filter->getLimitFilter() ? : '';
} else {
$this->sql = "
SELECT TRIM(" . $this->getTransQuery($this->groupby) . ")
as " . $this->groupby . ", SUM(1) as nb
FROM log ";
SELECT TRIM(" . $this->getTransQuery($this->groupby) . ")
as " . $this->groupby . ", SUM(1) as nb
FROM (log)
INNER JOIN log_colls ON (log.id = log_colls.log_id)";
if ($report_filter['sql'])
$this->sql .= " WHERE " . $report_filter['sql'];
@@ -83,8 +84,10 @@ class module_report_sqlconnexion extends module_report_sql implements module_rep
$report_filter = $this->filter->getReportFilter();
$params = $report_filter['params'];
$sql = 'SELECT DISTINCT(' . $this->getTransQuery($field) . ') as val
FROM log ';
$sql = '
SELECT DISTINCT(' . $this->getTransQuery($field) . ') as val
FROM (log)
INNER JOIN log_colls ON (log.id = log_colls.log_id)';
if ($report_filter['sql'])
$sql .= ' WHERE ' . $report_filter['sql'];

View File

@@ -52,10 +52,10 @@ class module_report_sqldownload extends module_report_sql implements module_repo
log_docs.record_id,
log_docs.final,
log_docs.comment
FROM (log
INNER JOIN log_docs ON log.id = log_docs.log_id
INNER JOIN record ON log_docs.record_id = record.record_id
)
FROM (log)
INNER JOIN log_docs ON (log.id = log_docs.log_id)
INNER JOIN log_colls ON (log.id = log_colls.log_id)
INNER JOIN record ON (log_docs.record_id = record.record_id)
WHERE ";
$this->sql .= $report_filters['sql'] ? : '';
@@ -80,49 +80,44 @@ class module_report_sqldownload extends module_report_sql implements module_repo
if ($name == 'record_id' && $this->on == 'DOC') {
$this->sql = '
SELECT
TRIM( ' . $field . ' ) AS ' . $name . ',
SUM(1) AS telechargement,
record.coll_id,
log_docs.final,
log_docs.comment,
subdef.size,
subdef.file,
subdef.mime
FROM ( log
INNER JOIN log_docs ON log.id = log_docs.log_id
INNER JOIN record ON log_docs.record_id = record.record_id
INNER JOIN subdef ON (log_docs.record_id = subdef.record_id
AND subdef.name = log_docs.final
)
)
TRIM( ' . $field . ' ) AS ' . $name . ',
SUM(1) AS telechargement,
record.coll_id,
log_docs.final,
log_docs.comment,
subdef.size,
subdef.file,
subdef.mime
FROM (log)
INNER JOIN log_docs ON (log.id = log_docs.log_id)
INNER JOIN log_colls ON (log.id = log_colls.log_id)
INNER JOIN record ON (log_docs.record_id = record.record_id)
INNER JOIN subdef ON (log_docs.record_id = subdef.record_id AND subdef.name = log_docs.final)
WHERE
';
} elseif ($this->on == 'DOC') {
$this->sql = '
SELECT
TRIM(' . $field . ') AS ' . $name . ',
SUM(1) AS telechargement
FROM ( log
INNER JOIN log_docs ON log.id = log_docs.log_id
INNER JOIN record ON log_docs.record_id = record.record_id
INNER JOIN subdef ON ( log_docs.record_id = subdef.record_id
AND subdef.name = log_docs.final
)
)
WHERE
';
SELECT
TRIM(' . $field . ') AS ' . $name . ',
SUM(1) AS telechargement
FROM ( log )
INNER JOIN log_docs ON (log.id = log_docs.log_id)
INNER JOIN log_colls ON (log.id = log_colls.log_id)
INNER JOIN record ON (log_docs.record_id = record.record_id)
INNER JOIN subdef ON ( log_docs.record_id = subdef.record_id AND subdef.name = log_docs.final)
WHERE';
} else {
$this->sql = '
SELECT
TRIM( ' . $this->getTransQuery($this->groupby) . ') AS ' . $name . ',
SUM(1) AS nombre
FROM ( log
INNER JOIN log_docs ON log.id = log_docs.log_id
INNER JOIN record ON log_docs.record_id = record.record_id
INNER JOIN subdef ON (record.record_id = subdef.record_id AND subdef.name = "document")
)
WHERE ';
SELECT
TRIM( ' . $this->getTransQuery($this->groupby) . ') AS ' . $name . ',
SUM(1) AS nombre
FROM ( log )
INNER JOIN log_docs ON (log.id = log_docs.log_id)
INNER JOIN log_colls ON (log.id = log_colls.log_id)
INNER JOIN record ON (log_docs.record_id = record.record_id)
INNER JOIN subdef ON (record.record_id = subdef.record_id AND subdef.name = "document")
WHERE ';
}
$this->sql .= $report_filters['sql'];
@@ -159,10 +154,11 @@ class module_report_sqldownload extends module_report_sql implements module_repo
$sql = '
SELECT DISTINCT( ' . $this->getTransQuery($field) . ' ) AS val
FROM (log
INNER JOIN log_docs ON log.id = log_docs.log_id
INNER JOIN record ON log_docs.record_id = record.record_id
INNER JOIN subdef ON log_docs.record_id = subdef.record_id)
FROM (log)
INNER JOIN log_docs ON (log.id = log_docs.log_id)
INNER JOIN log_colls ON (log.id = log_colls.log_id)
INNER JOIN record ON (log_docs.record_id = record.record_id)
INNER JOIN subdef ON (log_docs.record_id = subdef.record_id)
WHERE ';
$sql .= $report_filters['sql'];

View File

@@ -47,10 +47,12 @@ class module_report_sqlfilter
{
$ret = array('sql' => '', 'params' => array());
$coll_filter = array();
foreach (explode(',', $list_coll_id) as $val) {
$coll_filter [] = " position('," . phrasea::collFromBas($app, $val) . ",' in concat(',' ,coll_list, ',')) > 0 ";
foreach (array_filter(explode(',', $list_coll_id)) as $val) {
if( false !== $val = phrasea::collFromBas($app, $val)) {
$coll_filter[] = 'log_colls.coll_id = '.phrasea::collFromBas($app, $val);
}
}
$ret['sql'] = implode(' OR ', $coll_filter);
$ret['sql'] = ' (' . implode(' OR ', array_unique($coll_filter)) . ') ';
return $ret;
}
@@ -75,7 +77,7 @@ class module_report_sqlfilter
$params = array_merge($params, $this->filter['user']['params']);
}
if ($this->filter['collection']) {
$finalfilter .= '(' . $this->filter['collection']['sql'] . ') AND ';
$finalfilter .= $this->filter['collection']['sql'] . ' AND ';
$params = array_merge($params, $this->filter['collection']['params']);
}
$finalfilter .= ' log.site = :log_site';
@@ -86,7 +88,7 @@ class module_report_sqlfilter
public function getGvSitFilter()
{
$params = array();
$sql = '';
$sql = '1';
if ($this->app['phraseanet.registry']->is_set('GV_sit')) {
$sql = 'log.site = :log_site_gv_filter';
@@ -190,12 +192,16 @@ class module_report_sqlfilter
return;
}
$tab = explode(",", $report->getListCollId());
$tab = array_filter(explode(",", $report->getListCollId()));
if (count($tab) > 0) {
foreach ($tab as $val) {
$coll_filter[] = " position('," . phrasea::collFromBas($this->app, $val) . ",' in concat(',' ,coll_list, ',')) > 0 ";
if( false !== $val = phrasea::collFromBas($this->app, $val)) {
$coll_filter[] = 'log_colls.coll_id = '.phrasea::collFromBas($this->app, $val);
}
}
$this->filter['collection'] = array('sql' => implode(' OR ', $coll_filter), 'params' => array());
$this->filter['collection'] = array('sql' => ' (' . implode(' OR ', array_unique($coll_filter)) . ') ', 'params' => array());
}
return;

View File

@@ -33,21 +33,19 @@ class module_report_sqlquestion extends module_report_sql implements module_repo
$this->params = $params;
if ($this->groupby == false) {
$this->sql =
"
SELECT
log_search.date ddate,
search,
usrid,
user,
pays,
societe,
activite,
fonction
FROM `log_search`
INNER JOIN log
ON log.id = log_search.log_id
";
$this->sql ="
SELECT
log_search.date ddate,
search,
usrid,
user,
pays,
societe,
activite,
fonction
FROM (`log_search`)
INNER JOIN log ON (log.id = log_search.log_id)
INNER JOIN log_colls ON (log.id = log_colls.log_id)";
$this->sql .= " WHERE " . $report_filter['sql'];
@@ -61,13 +59,13 @@ class module_report_sqlquestion extends module_report_sql implements module_repo
$this->sql .= $this->filter->getLimitFilter() ? : '';
} else {
$this->sql = "
SELECT
TRIM(" . $this->getTransQuery($this->groupby) . ") as " . $this->groupby . ",
SUM(1) as nb
FROM `log_search`
INNER JOIN log
ON log.id = log_search.log_id
";
SELECT
TRIM(" . $this->getTransQuery($this->groupby) . ") as " . $this->groupby . ",
SUM(1) as nb
FROM (`log_search`)
INNER JOIN log ON (log.id = log_search.log_id)
INNER JOIN log_colls ON (log.id = log_colls.log_id)
";
$this->sql .= " WHERE " . $report_filter['sql'];
$this->sql .= " GROUP BY " . $this->groupby;
@@ -90,9 +88,9 @@ class module_report_sqlquestion extends module_report_sql implements module_repo
$sql = "
SELECT DISTINCT(" . $this->getTransQuery($field) . ") as val
FROM `log_search`
INNER JOIN log
ON log.id = log_search.log_id
FROM (`log_search`)
INNER JOIN log ON (log.id = log_search.log_id)
INNER JOIN log_colls ON (log.id = log_colls.log_id)
";
if ($report_filter['sql'])