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 2011-04-13 16:24:20

abdora
Member
Registered: 2011-03-21
Posts: 16

Problem when I do a new Plugin

I try to do a new plugin to print charts using FusioCharts(www.fusioncharts.com).   So I did a class PluginsChartTicket who get's all informations about the tickets. To render this charts I have to return the datas in a xml string. My problem is when I try to get this xml I call a form(ticket.form.php) that will to return this xml receiving as parameters an ID and call a static method from my class like this:

$result = PluginsChartTicket ::getData(); When I do that this error occur: Fatal error: Call to a member function query() on a non-object

My method is like this

getData() {
global $DB;

$query = "SELECT * FROM glpi_tickets";
$result = $DB->query($query);
        if ($DB->numrows($result) > 0) {
           while ($line = $DB->fetch_assoc($result)) {
              $tmp["value"] = $line["amount"];
              $tmp["label"] = $line["status"];
              $tab[] = $tmp;
           }
         }
}


Someone can save me?

Offline

#2 2011-04-14 11:39:53

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

Re: Problem when I do a new Plugin

You have no object.
Try this :
$myobject = new PluginsChartTicket();
$result = $myobject->getData();


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 2011-04-14 14:15:20

abdora
Member
Registered: 2011-03-21
Posts: 16

Re: Problem when I do a new Plugin

The method is static.

Offline

#4 2011-04-14 14:56:36

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

Re: Problem when I do a new Plugin

sorry but i don't saw Static function getData() {

add return $tab; at the end of the function


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 2011-04-14 16:15:53

abdora
Member
Registered: 2011-03-21
Posts: 16

Re: Problem when I do a new Plugin

I did that. But an error is in $DB->query($query). First, when the object global $DB is created? It's used a lot in glpi.n.

I don't understand the global $DB. Can you explain me?

P.S: Sory I don't wrote static in function! big_smile

Thanks!

Offline

#6 2011-04-15 09:26:35

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

Re: Problem when I do a new Plugin

Can you give all your code of PluginsChartTicket.class


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

#7 2011-04-15 13:09:30

abdora
Member
Registered: 2011-03-21
Posts: 16

Re: Problem when I do a new Plugin

This is a PluginsChartTicket.class


<?php
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/


class PluginChartsTicket {

    static function getInformationsOfAllTickets($dateBegin="", $dateEnd="") {
        global $DB;
        $query = "SELECT * FROM `glpi_tickets`";

        $result = $DB->query($query);
        $tab = array();
        if ($DB->numrows($result) >=1) {
           while ($line = $DB->fetch_assoc($result)) {
              $tmp["id"]                 = $line["id"];
              $tmp["entities_id"]        = $line["entities_id"];
              $tmp["name"]               = $line["name"];
              $tmp["date"]               = $line["date"];
              $tmp["closedate"]          = $line["solvedate"];
              $tmp["date_mod"]           = $line["date_mod"];
              $tmp["status"]             = $line["status"];
              $tmp["users_id"]           = $line["users_id"];
              $tmp["users_id_recipient"] = $line["users_id_recipient"];
              $tmp["groups_id"]          = $line["groups_id"];
              $tmp["requesttypes_id"]    = $line["requesttypes_id"];
              $tmp["users_id_assign"] = $line["users_id_assign"];
              $tmp["suppliers_id_assign"] = $line["suppliers_id_assign"];
              $tmp["groups_id_assign"] = $line["groups_id_assign"];
              $tmp["itemtype"] = $line["itemtype"];
              $tmp["items_id"] = $line["items_id"];
              $tmp["content"] = $line["content"];
              $tmp["urgency"] = $line["urgency"];
              $tmp["impact"] = $line["impact"];
              $tmp["priority"] = $line["priority"];
              $tmp["user_email"] = $line["user_email"];
              $tmp["use_email_notification"] = $line["use_email_notification"];
              $tmp["realtime"] = $line["realtime"];
              $tmp["ticketcategories_id"] = $line["ticketcategories_id"];
              $tmp["cost_time"] = $line["cost_time"];
              $tmp["cost_fixed"] = $line["cost_fixed"];
              $tmp["cost_material"] = $line["cost_material"];
              //$tmp["ticketsolutiotype_id"] = $line["ticketsolutiotype_id"];
              $tmp["solution"] = $line["solution"];
              $tmp["global_validation"] = $line["global_validation"];
              //$tmp['ticketsolutiontypes_id'] = $line["ticketsolutiontypes_id"];
              $tab[] = $tmp;
           }
        }
//        echo "<pre>";
//        print_r($tab);
//        echo "</pre>";

        return $tab;
    }

    /*
     * Retorna um objeto Json com as $num primeiras categorias mais recorrentes;
     */
    static function getTicketsByCategory($dateBegin="", $dateEnd="", $num=5) {
        global $DB;
        $where = " WHERE ";
        if(!$dateBegin && $dateEnd) {
            $dateBegin = $dateEnd;
            $where .="'".$dateBegin."'<=DATE(glpi_tickets.date)
                     AND '".$dateEnd."'>=DATE(glpi_tickets.date)";
        } else if($dateBegin && !$dateEnd) {
            $dateEnd = $dateBegin;
            $where .="'".$dateBegin."'<=DATE(glpi_tickets.date)
                     AND '".$dateEnd."'>=DATE(glpi_tickets.date)";
        }else if($dateBegin && $dateEnd) {
            $where .="'".$dateBegin."'<=DATE(glpi_tickets.date)
                     AND' ".$dateEnd."'>=DATE(glpi_tickets.date)";
        } else {
            $where .="DATE(NOW()) = DATE(glpi_tickets.date) ";
        }
        $query = "SELECT
                  COUNT(glpi_tickets.ticketcategories_id) AS amount,
                  glpi_tickets.ticketcategories_id,
                  glpi_ticketcategories.name,
                  glpi_ticketcategories.completename
                  FROM `glpi_tickets`
                  LEFT JOIN glpi_ticketcategories ON (glpi_ticketcategories.id = glpi_tickets.ticketcategories_id)".
                  $where.
                  " GROUP BY glpi_tickets.ticketcategories_id
                  ORDER BY amount DESC
                  LIMIT ".$num."";

        $tab = array();
        $result = $DB->query($query);
        if ($DB->numrows($result) > 0) {
           while ($line = $DB->fetch_assoc($result)) {
              $tmp["value"]       = $line["amount"];
              $tmp["name"]         = $line["name"];
              $tmp["id"]           = $line["ticketcategories_id"];
              $tmp["label"] = $line["completename"];
              $tab[] = $tmp;
           }
        }

      return $tab;
    }

    static function getTicketsIdByCategory($dateBegin="", $dateEnd="",$category_id='') {
        global $DB;

        $where = " WHERE ";

        if(!$dateBegin && $dateEnd) {
            $dateBegin = $dateEnd;
            $where .="'".$dateBegin."'<=DATE(glpi_tickets.date)
                     AND '".$dateEnd."'>=DATE(glpi_tickets.date)";
        } else if($dateBegin && !$dateEnd) {
            $dateEnd = $dateBegin;
            $where .="'".$dateBegin."'<=DATE(glpi_tickets.date)
                     AND '".$dateEnd."'>=DATE(glpi_tickets.date)";
        }else if($dateBegin && $dateEnd) {
            $where .="'".$dateBegin."'<=DATE(glpi_tickets.date)
                     AND' ".$dateEnd."'>=DATE(glpi_tickets.date)";
        } else {
            $where .="DATE(NOW()) = DATE(glpi_tickets.date) ";
        }

        if(!$category_id) {
            $where .=" AND (1)";
        } else {
            $where .=" AND glpi_tickets.ticketcategories_id=".$category_id;
        }

        $query = "SELECT glpi_tickets.id
                  FROM glpi_tickets".$where;

        $tab = array();
        $result = $DB->query($query);
        if ($DB->numrows($result) > 0) {
           while ($line = $DB->fetch_assoc($result)) {
              $tmp["id"]       = $line["id"];
              $tab[] = $tmp;
           }
        }

        return $tab;
    }

    static function getTaskByTicketCategory($dateBegin = '',$dateEnd = '',$ticketcategory_id='', $num=5 ) {

        global $DB;

        $where = " WHERE ";
        if(!$dateBegin && $dateEnd) {
            $dateBegin = $dateEnd;
            $where .="'".$dateBegin."'<=DATE(glpi_tickettasks.date)
                     AND '".$dateEnd."'>=DATE(glpi_tickettasks.date)";
        } else if($dateBegin && !$dateEnd) {
            $dateEnd = $dateBegin;
            $where .="'".$dateBegin."'<=DATE(glpi_tickettasks.date)
                     AND '".$dateEnd."'>=DATE(glpi_tickettasks.date)";
        }else if($dateBegin && $dateEnd) {
            $where .="'".$dateBegin."'<=DATE(glpi_tickettasks.date)
                     AND' ".$dateEnd."'>=DATE(glpi_tickettasks.date)";
        } else {
            $where .="DATE(NOW()) = DATE(glpi_tickettasks.date) ";
        }

        $arrayTicketsId = self::getTicketsIdByCategory($dateBegin, $dateEnd, $ticketcategory_id);
        if(count($arrayTicketsId) > 0) {
            $where .=" AND glpi_tickettasks.tickets_id IN(";
            foreach ($arrayTicketsId as $value) {
                $where .=$value["id"].",";
            }
            $where .="0)";
        }

        //$where .=" AND glpi_taskcategories.id IS NOT NULL ";

        $query = "SELECT COUNT(glpi_tickettasks.id) AS amount, glpi_tickettasks.id,
                         glpi_taskcategories.id as id_taskcategory,
                         glpi_taskcategories.name,
                         glpi_taskcategories.completename
                  FROM glpi_tickettasks
                  LEFT JOIN glpi_taskcategories ON (glpi_tickettasks.taskcategories_id = glpi_taskcategories.id )"
                  .$where.
                  " GROUP BY glpi_taskcategories.name
                   ORDER BY amount DESC
                   LIMIT ".$num;

        $tab = array();
        $result = $DB->query($query);
        if ($DB->numrows($result) > 0) {
           while ($line = $DB->fetch_assoc($result)) {
              $tmp["value"]       = $line["amount"];
              $tmp["id"]           = $line["id_taskcategory"];
              $tmp["name"]         = $line["name"];
              $tmp["label"] = $line["completename"];
              $tab[] = $tmp;
           }
        }

      return $tab;
    }

    static function getTickeStatusByCategory($dateBegin = '',$dateEnd = '',$ticketcategory_id='', $num=5) {

        global $DB;

        $where = " WHERE ";
        if(!$dateBegin && $dateEnd) {
            $dateBegin = $dateEnd;
            $where .="'".$dateBegin."'<=DATE(glpi_tickets.date)
                     AND '".$dateEnd."'>=DATE(glpi_tickets.date)";
        } else if($dateBegin && !$dateEnd) {
            $dateEnd = $dateBegin;
            $where .="'".$dateBegin."'<=DATE(glpi_tickets.date)
                     AND '".$dateEnd."'>=DATE(glpi_tickets.date)";
        }else if($dateBegin && $dateEnd) {
            $where .="'".$dateBegin."'<=DATE(glpi_tickets.date)
                     AND' ".$dateEnd."'>=DATE(glpi_tickets.date)";
        } else {
            $where .="DATE(NOW()) = DATE(glpi_ticketks.date) ";
        }

        if($ticketcategory_id) {
            $where .=" AND ticketcategories_id=".$ticketcategory_id;
        } else {
            $where .=" AND (1) ";
        }

        $query = "SELECT COUNT(status) as amount,  status
                  FROM glpi_tickets"
                  .$where.
                  " GROUP BY status
                   ORDER BY amount DESC
                   LIMIT ".$num;
        $tab = array();
        $result = $DB->query($query);
        if ($DB->numrows($result) > 0) {
           while ($line = $DB->fetch_assoc($result)) {
              $tmp["value"] = $line["amount"];
              $tmp["label"] = $line["status"];
              $tab[] = $tmp;
           }
         }

        return $tab;
    }

    static function getTaskByCategory($dateBegin="", $dateEnd="", $num=5) {

        global $DB;

        $where = " WHERE ";
        if(!$dateBegin && $dateEnd) {
            $dateBegin = $dateEnd;
            $where .="'".$dateBegin."'<=DATE(glpi_tickettasks.date)
                     AND '".$dateEnd."'>=DATE(glpi_tickettasks.date)";
        } else if($dateBegin && !$dateEnd) {
            $dateEnd = $dateBegin;
            $where .="'".$dateBegin."'<=DATE(glpi_tickettasks.date)
                     AND '".$dateEnd."'>=DATE(glpi_tickettasks.date)";
        }else if($dateBegin && $dateEnd) {
            $where .="'".$dateBegin."'<=DATE(glpi_tickettasks.date)
                     AND' ".$dateEnd."'>=DATE(glpi_tickettasks.date)";
        } else {
            $where .="DATE(NOW()) = DATE(glpi_tickettasks.date) ";
        }

        $query = "SELECT glpi_tickettasks.taskcategories_id AS id,
                         COUNT(glpi_tickettasks.id) AS amount,
                         AVG(glpi_tickettasks.realtime) average,
                         glpi_taskcategories.name,
                         glpi_taskcategories.completename
                  FROM glpi_tickettasks
                  LEFT JOIN glpi_taskcategories ON (glpi_tickettasks.taskcategories_id = glpi_taskcategories.id )"
                  .$where.
                  "GROUP BY glpi_taskcategories.name
                  ORDER BY amount DESC
                  LIMIT ".$num;

        $tab = array();
        $result = $DB->query($query);
        if ($DB->numrows($result) > 0) {
           while ($line = $DB->fetch_assoc($result)) {
              $tmp["id"] = $line["id"];
              $tmp["value"] = $line["amount"];
              $tmp["name"] = $line["name"];
              $tmp["label"] = $line["completename"];
              $tmp["average"] = $line["average"];
              $tab[] = $tmp;
           }
        }

        return $tab;
    }

    static function getTicketByEntityAssign($dateBegin="", $dateEnd="", $num=5) {
        global $DB;

        $where = " WHERE ";
        if(!$dateBegin && $dateEnd) {
            $dateBegin = $dateEnd;
            $where .="'".$dateBegin."'<=DATE(glpi_tickets.date)
                     AND '".$dateEnd."'>=DATE(glpi_tickets.date)";
        } else if($dateBegin && !$dateEnd) {
            $dateEnd = $dateBegin;
            $where .="'".$dateBegin."'<=DATE(glpi_tickets.date)
                     AND '".$dateEnd."'>=DATE(glpi_tickets.date)";
        }else if($dateBegin && $dateEnd) {
            $where .="'".$dateBegin."'<=DATE(glpi_tickets.date)
                     AND' ".$dateEnd."'>=DATE(glpi_tickets.date)";
        } else {
            $where .="DATE(NOW()) = DATE(glpi_ticketks.date) ";
        }

        $query = "SELECT COUNT(glpi_tickets.id) as amount,
                         glpi_entities.id,
                         glpi_entities.name,
                         glpi_entities.completename
                  FROM glpi_tickets
                  LEFT JOIN glpi_entities ON (glpi_entities.id = glpi_tickets.entities_id)"
                  .$where.
                  "GROUP BY glpi_tickets.entities_id
                  ORDER BY amount DESC
                  LIMIT ".$num;

        $tab = array();
        $result = $DB->query($query);
        if ($DB->numrows($result) > 0) {
           while ($line = $DB->fetch_assoc($result)) {
              $tmp["value"] = $line["amount"];
              if(!$line["name"] || !$line["completename"]) {
                  $tmp["id"] = 0;
                  $tmp["name"] = "Sem entidade atibuida";
                  $tmp["label"] = "Sem entidade atibuida";
              } else {
                  $tmp["id"] = $line["id"];
                  $tmp["name"] = $line["name"];
                  $tmp["label"] = $line["completename"];
              }
              $tab[] = $tmp;
           }
         }

         return $tab;
    }

    static function getTicketCategoryByEntityAssign($dateBegin="", $dateEnd="",$entity_id="", $num=5) {
        global $DB;

        $where = " WHERE ";
        if(!$dateBegin && $dateEnd) {
            $dateBegin = $dateEnd;
            $where .="'".$dateBegin."'<=DATE(glpi_tickets.date)
                     AND '".$dateEnd."'>=DATE(glpi_tickets.date)";
        } else if($dateBegin && !$dateEnd) {
            $dateEnd = $dateBegin;
            $where .="'".$dateBegin."'<=DATE(glpi_tickets.date)
                     AND '".$dateEnd."'>=DATE(glpi_tickets.date)";
        }else if($dateBegin && $dateEnd) {
            $where .="'".$dateBegin."'<=DATE(glpi_tickets.date)
                     AND' ".$dateEnd."'>=DATE(glpi_tickets.date)";
        } else {
            $where .="DATE(NOW()) = DATE(glpi_ticketks.date) ";
        }

        $query = "SELECT COUNT(glpi_tickets.id) AS amount,
                         glpi_ticketcategories.name,
                         glpi_ticketcategories.completename
                  FROM glpi_tickets
                  LEFT JOIN glpi_ticketcategories ON (glpi_ticketcategories.id = glpi_tickets.ticketcategories_id )"
                  .$where.
                  "WHERE glpi_tickets.entities_id=1
                  GROUP BY glpi_tickets.ticketcategories_id
                  ORDER BY amount DESC".$num;

        $tab = array();
        $result = $DB->query($query);
        if ($DB->numrows($result) > 0) {
           while ($line = $DB->fetch_assoc($result)) {
              $tmp["value"] = $line["amount"];
              if(!$line["name"] || !$line["completename"]) {
                  $tmp["id"] = NULL;
                  $tmp["name"] = "Sem entidade atibuida";
                  $tmp["value"] = "Sem entidade atibuida";
              } else {
                  $tmp["id"] = $line["id"];
                  $tmp["name"] = $line["name"];
                  $tmp["value"] = $line["completename"];
              }
              $tab[] = $tmp;
           }
         }

         return $tab;
    }

    static function getTicketByTech($dateBegin="", $dateEnd="", $num=5) {
        $query = "";
        $tab = array();
        $result = $DB->query($query);
    }

    static function show($array) {
        echo "<pre>";
        print_r($array);
        echo "</pre>";
    }
}
?>

Offline

#8 2011-04-15 13:15:31

abdora
Member
Registered: 2011-03-21
Posts: 16

Re: Problem when I do a new Plugin

And this is my form:

I call this form GET method, like this

taskCategoryByTicketCategory.form.php?id=5&dateBegin=20110401&dateEnd=20110415&FCTime=5121

<?php
define('GLPI_ROOT', '..');
include (GLPI_ROOT . "/inc/includes.php");
//Xml das categorias das tarefas de uma categoria de chamados

    $Id = $_GET['id'];
    $dateBegin = $_GET["dateBgin"];
    $dateEnd = $GET["dateEnd"];

    $strXML = "<chart palette='2' caption='Factory " . $Id ." Output ' subcaption='(In Units)' xAxisName='Date' showValues='1' >";

    $result = PluginChartsTicket::getTaskByTicketCategory($dateBegin, $dateEnd, $Id);
    foreach ($result as $value) {
        $strXML .= "<set label='".$value['label']." 'value='".$value['value']."'/>";
    }
    //Close <chart> element
    $strXML .= "</chart>";

    header('Content-type: text/xml');

    //Just write out the XML data
    //NOTE THAT THIS PAGE DOESN'T CONTAIN ANY HTML TAG, WHATSOEVER
    echo $strXML;
?>

Offline

Board footer

Powered by FluxBB