<?php

// Pandora FMS - http://pandorafms.com
// ==================================================
// Copyright (c) 2005-2021 Artica Soluciones Tecnologicas
// Please see http://pandorafms.org for full contribution list
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; version 2
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
global $config;

require_once 'include/functions_reports.php';

$linkReport = false;
$searchReports = check_acl($config['id_user'], 0, 'RR');

if (check_acl($config['id_user'], 0, 'RW')) {
    $linkReport = true;
}

$reports = false;

// Check ACL
$userreports = reports_get_reports();

$userreports_id = [];
foreach ($userreports as $userreport) {
    $userreports_id[] = $userreport['id_report'];
}

if (!$userreports_id) {
    $reports_condition = ' AND 1<>1';
} else {
    $reports_condition = ' AND id_report IN ('.implode(',', $userreports_id).')';
}

$reports = false;

if ($searchReports) {
    switch ($config['dbtype']) {
        case 'mysql':
        case 'postgresql':
            $sql = "SELECT id_report, name, description
				FROM treport
				WHERE (name LIKE '%".$stringSearchSQL."%' OR description LIKE '%".$stringSearchSQL."%')".$reports_condition;
        break;

        case 'oracle':
            $sql = "SELECT id_report, name, description
				FROM treport
				WHERE (upper(name) LIKE '%".strtolower($stringSearchSQL)."%' OR description LIKE '%".strtolower($stringSearchSQL)."%')".$reports_condition;
        break;
    }


    switch ($config['dbtype']) {
        case 'mysql':
        case 'postgresql':
            $sql .= ' LIMIT '.$config['block_size'].' OFFSET '.get_parameter('offset', 0);
        break;

        case 'oracle':
            $set = [];
            $set['limit'] = $config['block_size'];
            $set['offset'] = (int) get_parameter('offset');

            $sql = oracle_recode_query($sql, $set);
        break;
    }

    switch ($config['dbtype']) {
        case 'mysql':
        case 'postgresql':
            $sql_count = "SELECT COUNT(id_report) AS count
			FROM treport
			WHERE (name LIKE '%".$stringSearchSQL."%' OR description LIKE '%".$stringSearchSQL."%')".$reports_condition;
        break;

        case 'oracle':
            $sql_count = "SELECT COUNT(id_report) AS count
			FROM treport
			WHERE (upper(name) LIKE '%".strtolower($stringSearchSQL)."%' OR upper(description) LIKE '%".strtolower($stringSearchSQL)."%')".$reports_condition;
        break;
    }

    if ($only_count) {
        $totalReports = db_get_value_sql($sql_count);
    } else {
        $reports = db_process_sql($sql);
        $totalReports = db_get_value_sql($sql_count);
    }
}