рдЬреАрдПрд▓рдкреАрдЖрдИ рдореЗрдВ рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ

рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рд╕рдордп рд╕реЗ рд╣рдорд╛рд░реА рдХрдВрдкрдиреА рдиреЗ GLPI рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реЗрд▓реНрдкрдбреЗрд╕реНрдХ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рд╣реИред рдЖрдк рдпрд╣рд╛рдВ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдмреЗрд╢рдХ, рдЬреАрдПрд▓рдкреАрдЖрдИ рдХреЗ рдирд┐рд░реНрд╡рд┐рд╡рд╛рдж рдлрд╛рдпрджреЗ рдЗрд╕рдХреЗ рд╕реНрд╡рддрдВрддреНрд░ рдФрд░ рдЦреБрд▓реЗ рд╕реНрд░реЛрдд рдХреЛрдб рд╣реИрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓рдЧ-рдЗрди рдХреА рдХрд╛рдлреА рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ - рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред
рд╣рдорд╛рд░реЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рд╣рдо рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдЖрдИрдЯреАрдЖрдИрдПрд▓ рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╡реЗ рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рдХреЛ рдорд╛рдкрдиреЗ рдФрд░ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП GLPI рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫреА рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЕрднрд╛рд╡ рд╣реИред
рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, 4 рдЯрд┐рдХрдЯ рд░рд┐рдкреЛрд░реНрдЯ GLPI (v.0.80.2) рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ рдереАрдВ:

рдпреЗ рдЖрдБрдХрдбрд╝реЗ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИрдВред

рдореБрдЭреЗ GLPI рдХреЗ рд▓рд┐рдП рд░рд┐рдкреЛрд░реНрдЯреНрд╕ рдкреНрд▓рдЧрдЗрди рдорд┐рд▓рд╛, GLPI рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдФрд░ рд░рд┐рдкреЛрд░реНрдЯреЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдФрд░ рдЬреЛрдбрд╝ рджреА рдЧрдИрдВ - рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдореЗрдВ рд╕реЗ рдПрдХ: рд░рд╛рдд рдореЗрдВ рдЦреЛрд▓реЗ рдЧрдП рдЯрд┐рдХрдЯ, рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЫрд╛рдБрдЯреЗ рдЧрдПред рдпрд╣ рд░рд┐рдкреЛрд░реНрдЯ рдЖрдкрдХреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ рдХрд┐ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрд╡рдзрд┐ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рдЕрд╡рдзрд┐ рдореЗрдВ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрд┐рддрдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдереЗ (рд╣рд╛рд▓рд╛рдБрдХрд┐, рдлрд┐рд░ рд╕реЗ, рдЖрдкрдХреЛ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдмрджрд▓рд╛рд╡ рдХрд░рдирд╛ рдерд╛)ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдЗрд╕ рдмрд╛рдд рдореЗрдВ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рд╕рд┐рддрдВрдмрд░ 2011 рдореЗрдВ рд░рд╛рдд рдореЗрдВ рдХрд┐рддрдиреЗ рдЖрд╡реЗрджрди рдмрдирд╛рдП - рддрджрдиреБрд╕рд╛рд░, рд╣рдо рдХрдИ рддрд┐рдерд┐рдпреЛрдВ рдФрд░ рд╕рдордпреЛрдВ рдХреЛ рджрд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред
рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрди:

рд░рд╛рдд рдореЗрдВ рдЦреЛрд▓реА рдЧрдИ рдЯрд┐рдХрдЯ рд░рд┐рдкреЛрд░реНрдЯ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛:

82: WHERE `glpi_tickets`.`status` NOT IN ('new') ".

:

WHERE `glpi_tickets`.`status` NOT IN ('solved', 'closed') ".


рдирдИ рд░рд┐рдкреЛрд░реНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рдкреЛрд░реНрдЯреНрд╕ рдкреНрд▓рдЧрдЗрди рднреА рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред
рдореИрдВ рд╕рд╛рдзрд╛рд░рдг рд░рд┐рдкреЛрд░реНрдЯ (рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ) рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ - рд╡реЗ рд╕рд░рд▓ рд░реВрдк рд╕реЗ SimpleReport рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВред

рдПрдХ рд╕рд╛рд░рд╛рдВрд╢ рд░рд┐рдкреЛрд░реНрдЯ рдмрдирд╛рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ - рдПрдХ рдкреГрд╖реНрда рдкрд░ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЖрдЙрдЯрдкреБрдЯ (рдпрд╣ рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ)ред

рд░рд┐рдкреЛрд░реНрдЯ рдХреЛ рдХреЗрдкреАрдЖрдИ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ - рдЗрд╕рдореЗрдВ рд╣рдо рд╕рдордп рдХреА рдЕрд╡рдзрд┐ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛, рджреВрд░ рд╕реЗ рд╣рд▓ рдХрд┐рдП рдЧрдП рдЯрд┐рдХрдЯреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛, рдЬрдЧрд╣ рдореЗрдВ рдмрдврд╝реЗ рд╣реБрдП рдФрд░ рдЧрд┐рдиреЗ рдЬрд╛рдПрдВрдЧреЗред

1. рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд░рд┐рдкреЛрд░реНрдЯреНрд╕ рдкреНрд▓рдЧрдЗрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред
2. рдЕрдЧрд▓рд╛, \ glpi \ plugins \ рд░рд┐рдкреЛрд░реНрдЯ \ рд░рд┐рдкреЛрд░реНрдЯ \ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ, рд╕реНрдЯреЗрдЯрдХрдкреА рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдПрдБ (рд╕реНрдЯреЗрдЯрд╕ рдЙрдкрд╕рд░реНрдЧ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рд░рд┐рдкреЛрд░реНрдЯ рдЕрд╕рд┐рд╕реНрдЯреЗрдВрд╕-рд╕реНрдЯреЗрдЯрд┐рд╕реНрдЯрд┐рдХреНрд╕ рд╕реЗрдХреНрд╢рди рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛ, рдФрд░ рд░рд┐рдкреЛрд░реНрдЯ рдирд╣реАрдВ - рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ)ред
3. рдЗрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ, рд╕реНрдЯреЗрдЯрдХрдкреАред Php рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ (рдпрджрд┐ рдЖрдк рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдлрд╝рд╛рдЗрд▓реЗрдВ рдмрдирд╛рдирд╛ рдФрд░ рдЙрдирд╕реЗ рд╕рднреА рдирд╛рдо рдкрдврд╝рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ)ред
4. рд╣реЗрдбрд░ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рд░рд┐рдкреЛрд░реНрдЯ рд╕реЗ рдХреЙрдкреА рдХрд░реЗрдВ:

<?php
$USEDBREPLICATE=1;
$DBCONNECTION_REQUIRED=0;
define('GLPI_ROOT', '../../../..');
include (GLPI_ROOT . "/inc/includes.php");
$report = new PluginReportsAutoReport();


5. рдЕрдЧрд▓рд╛, рдореИрдВрдиреЗ рдЦреБрдж рдХреЛ рд╕рдордп рдорд╛рдирджрдВрдб рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП PluginReportsDateIntervalCriteria рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЬреЛрдбрд╝рд╛ред

$dt = new PluginReportsDateIntervalCriteria($report, '`glpi_tickets`.`date`', $LANG["reports"][60]);

6. рд╣рдо рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдЕрд╡рдзрд┐ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд▓рд┐рдП рдлрд╝реЙрд░реНрдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рднрд░рдиреЗ рдХреА рд╡реИрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ:

$report->displayCriteriasForm();
$display_type = HTML_OUTPUT;
if ($report->criteriasValidated())


7. рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рдмрдирд╛рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ (рд╣рдореЗрдВ рдирд╛рдо рдорд┐рд▓рддрд╛ рд╣реИ)

{
$report->setSubNameAuto();
$title = $report->getFullTitle();


8. рд╣рдореЗрдВ рдЕрд╡рдзрд┐ рдХреА рд╢реБрд░реБрдЖрдд рдФрд░ рдЕрдВрдд рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд╣рдорд╛рд░реЗ рд╕рдВрдЧрдарди рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рднреА рдорд┐рд▓рддреЗ рд╣реИрдВ:

$stdate=$dt->getStartDate();
$findate=$dt->getEndDate();
$ent=$CFG_GLPI["entity"];


9. рд╣рдо mysql рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд╡реЗрд░реА рдмрдирд╛рддреЗ рд╣реИрдВ (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗрд╡рд▓ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рдЪреБрдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рдирдХрд╛ рдирд╛рдо 'рдЖрд░рдпреВ' рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЯрд┐рдХрдЯ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди рдХреЗ рдкреНрд░рдХрд╛рд░ рдкреВрд░реНрд╡-рдирд┐рд░реНрдорд┐рдд рд╣реЛрддреЗ рд╣реИрдВ - рдЖрдкрдХреА рдХрдВрдкрдиреА рдХреЗ рд▓рд┐рдП рд╕рд╣реА):

$sql = "SELECT (select name from glpi_entities where id=$ent) as 'entity',
(select count(id) from glpi_users where is_active=1 and name like 'ru%') as 'users',
(select count(id) from glpi_tickets where date >= '$stdate' and date <= '$findate') as 'id3',
(select count(id) from glpi_tickets where date >= '$stdate' and date <= '$findate')/(select count(id) from glpi_users where is_active=1 and name like 'ru%') as 'avg',
(select count(id) from glpi_tickets where date >= '$stdate' and date <= '$findate' and ticketsolutiontypes_id = 5) as 'onsite',
(select count(id) from glpi_tickets where date >= '$stdate' and date <= '$findate' and ticketsolutiontypes_id = 4) as 'servicedesk',
(select count(id) from glpi_tickets where date >= '$stdate' and date <= '$findate' and ticketsolutiontypes_id = 6) as 'escalated'";


10. рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд╡реЗрд░реА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдо рд╕реЗ рдЪрд░ рдЦреАрдВрдЪрддреЗ рд╣реИрдВ:

$result_sql = mysql_query ($sql);
$result_row=mysql_fetch_array($result_sql, MYSQL_ASSOC);
$entity = $result_row['entity'];
$users = $result_row['users'];
$tickets = $result_row['id3'];
$avg = $result_row['avg'];
$tickets_onsite = $result_row['onsite'];
$onsite_ratio = round($tickets_onsite/$tickets*100, 1);
$onsite_ef = round($tickets_onsite/$users, 1);
$tickets_servicedesk = $result_row['servicedesk'];
$servicedesk_ratio = round($tickets_servicedesk/$tickets*100, 1);
$servicedesk_ef = round($tickets_servicedesk/$users, 1);
$tickets_escalated = $result_row['escalated'];
$escalated_ratio = round($tickets_escalated/$tickets*100, 1);
$escalated_ef = round($tickets_escalated/$users, 4);


11. рдФрд░ рд╣рдо рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рдЦреАрдВрдЪрддреЗ рд╣реИрдВ (рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдм рддрдХ 3 рд╣реИрдВ) - рдХреЛрдб рдХрд╛рдлреА рд▓рдВрдмрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдлрд╛рдЗрд▓ рдореЗрдВ рд╣реИ ред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдпрд╣ рдХреЗрд╡рд▓ рдЕрдкрдиреА рд░рд┐рдкреЛрд░реНрдЯ рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ - рд╢рд╛рдпрдж рдпрд╣ рдХрд┐рд╕реА рдХреА рдорджрдж рдХрд░реЗрдЧрд╛ред

Source: https://habr.com/ru/post/In131155/


All Articles