You are not logged in.

Announcement

 Téléchargez la dernière version stable de GLPI      -     Et vous, que pouvez vous faire pour le projet GLPI ? :  Contribuer
 Download last stable version of GLPI                      -     What can you do for GLPI ? :  Contribute

#1 2010-10-28 17:24:50

EiZ
Member
Registered: 2010-08-03
Posts: 7

Plugin report v1.3.0 ((LPI 0.72) : pb avec TicketStatusCriteria

Bonjour,

Si j'utilise TicketStatusCriteria dans un rapport, j'obtiens lors de l'appel     

$query.= $report->addSqlCriteriasRestriction("WHERE");

  pour la clause WHERE la syntaxe  :

WHERE status=assign

au lieu de

WHERE status='assign'  (avec les quotes).

(note : il est indispensable d'utiliser un glpi_tracking.status AS status dans la query puisque la clause n'est pas WHERE glpi_tracking.status='assign').

Une idée de l'origine du problème ?

(NB : Je ne peux pas passer en 0.78 pour l'instant.)

Merci d'avance

Offline

#2 2010-10-29 10:03:24

yllen
GLPI-DEV
From: Sillery (51)
Registered: 2008-01-14
Posts: 15,278

Re: Plugin report v1.3.0 ((LPI 0.72) : pb avec TicketStatusCriteria

Pas compris votre question. Dans la version 1.3.0, la valeur du champ est bien protégé dans la fonction getSqlCriteriasRestriction.

A quoi correspond $report dans votre code ? (sans le code, dificile de vous aider)


CentOS 6.5 - CentOS 7.x
PHP 5.6 - PHP 7.x - MySQL 5.6  - MariaDB 10.2 + APC + oOPcache
GLPI from 0.72 to dev version
Certifiée ITIL (ITV2F, ITILF, ITILOSA)

Offline

#3 2010-12-06 10:13:58

EiZ
Member
Registered: 2010-08-03
Posts: 7

Re: Plugin report v1.3.0 ((LPI 0.72) : pb avec TicketStatusCriteria

Voici un petit démonstrateur :

<?php

//$NEEDED_ITEMS = array("enterprise");
//Options for GLPI 0.71 and newer : need slave db to access the report
$USEDBREPLICATE=0;
$DBCONNECTION_REQUIRED=0; // Really a big SQL request

define('GLPI_ROOT', '../../../..');
include (GLPI_ROOT . "/inc/includes.php");

$report = new AutoReport("test2");


//Report's search criterias
//new DateIntervalCriteria($report,"glpi_tracking.date");
new TicketStatusCriteria($report);
//Display criterias form is needed
$report->displayCriteriasForm($_SERVER['PHP_SELF']);


//If criterias have been validated
if ($report->criteriasValidated())
{
    $report->setSubNameAuto();

    //Names of the columns to be displayed
    $colnumsnames = array ("id" => "id",
                        "name"=>"Titre",
                            "status"=>"status");
    $report->setColumnsNames($colnumsnames);
   
    //Colunmns mappings if needed
    //$columns_mappings = array("priority"=>getPriorityLabelsArray());
    //$report->setColumnsMappings($columns_mappings);
   
   
    $query ="SELECT glpi_tracking.ID AS id,
                 glpi_tracking.name AS name,
                 glpi_tracking.status AS status
            FROM glpi.glpi_tracking glpi_tracking ";
   
    $query.= $report->addSqlCriteriasRestriction("WHERE");

    print($query);
   
    $report->setSqlRequest($query);

    $report->execute();
}
else
commonFooter();
?>

résultat pour moi : la query générée est :

SELECT glpi_tracking.ID AS id, glpi_tracking.name AS name, glpi_tracking.status AS status FROM glpi.glpi_tracking glpi_tracking WHERE status=assign

et il n'y a pas de quote autour du status='assign'
et le résultat de la query contient les status new, old_notdone et plan ...

Offline

#4 2010-12-06 18:07:17

yllen
GLPI-DEV
From: Sillery (51)
Registered: 2008-01-14
Posts: 15,278

Re: Plugin report v1.3.0 ((LPI 0.72) : pb avec TicketStatusCriteria

Version du plugin ?
car je confirme que dans la version 1.3.0, la valeur du champ est bien protégé dans la fonction getSqlCriteriasRestriction.


CentOS 6.5 - CentOS 7.x
PHP 5.6 - PHP 7.x - MySQL 5.6  - MariaDB 10.2 + APC + oOPcache
GLPI from 0.72 to dev version
Certifiée ITIL (ITV2F, ITILF, ITILOSA)

Offline

#5 2010-12-08 12:55:24

farzitcom
Member
Registered: 2010-05-27
Posts: 1

Re: Plugin report v1.3.0 ((LPI 0.72) : pb avec TicketStatusCriteria

In the reports\inc\plugin_reports.autocriteria.class.php
find :     public function getSqlCriteriasRestriction($link = 'AND') {
and replace this fonction by:

    /**
     * Get SQL code associated with the criteria
     */
    public function getSqlCriteriasRestriction($link = 'AND') {
        if (!$this->childrens)
        // add control about type of getParameterValue if string we must add ''
        // last code :
        //return $link . " " . $this->getSqlField() . "=" . $this->getParameterValue() . " ";
            if(is_numeric($this->getParameterValue()))
            {
                return $link . " " . $this->getSqlField() . "=" . $this->getParameterValue() . " ";
            }
            else
            {
                return $link . " " . $this->getSqlField() . "='" . $this->getParameterValue() . "' ";
            }
            
        else
            return $link . " " . $this->getSqlField() . " IN (" . implode(',', getSonsOfTreeItem($this->getTable(), $this->getParameterValue())) . ") ";
    }

Offline

#6 2010-12-09 11:59:19

yllen
GLPI-DEV
From: Sillery (51)
Registered: 2008-01-14
Posts: 15,278

Re: Plugin report v1.3.0 ((LPI 0.72) : pb avec TicketStatusCriteria

Je confirme que vous n'avez pas la bonne version, car la function correcte est :
   public function getSqlCriteriasRestriction($link = 'AND') {
      return $link . " " . $this->getSqlField() . "='" . $this->parameters[$this->getName()] . "' ";
   }
et comme vous le voyez, le paramètre est bien protégé


CentOS 6.5 - CentOS 7.x
PHP 5.6 - PHP 7.x - MySQL 5.6  - MariaDB 10.2 + APC + oOPcache
GLPI from 0.72 to dev version
Certifiée ITIL (ITV2F, ITILF, ITILOSA)

Offline

Board footer

Powered by FluxBB