You are not logged in.
Pages: 1
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
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
The method is static.
Offline
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
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!
Thanks!
Offline
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
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
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
Pages: 1