-
Notifications
You must be signed in to change notification settings - Fork 33
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Remove raw sql #139
base: main
Are you sure you want to change the base?
Remove raw sql #139
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -187,57 +187,71 @@ static function showCentralSpecificList($type) { | |||||||||||||||||
return false; | ||||||||||||||||||
} | ||||||||||||||||||
|
||||||||||||||||||
$groups = implode("','", $_SESSION['glpigroups']); | ||||||||||||||||||
$numrows = 0; | ||||||||||||||||||
$is_deleted = " `glpi_tickets`.`is_deleted` = 0 "; | ||||||||||||||||||
$criteria = [ | ||||||||||||||||||
'SELECT' => ['glpi_tickets.id'], | ||||||||||||||||||
'DISTINCT' => true, | ||||||||||||||||||
'FROM' => 'glpi_tickets', | ||||||||||||||||||
'LEFT JOIN' => [ | ||||||||||||||||||
'glpi_tickets_users' => [ | ||||||||||||||||||
'ON' => [ | ||||||||||||||||||
'glpi_tickets' => 'id', | ||||||||||||||||||
'glpi_tickets_users' => 'tickets_id' | ||||||||||||||||||
] | ||||||||||||||||||
] | ||||||||||||||||||
], | ||||||||||||||||||
'WHERE' => [ | ||||||||||||||||||
'glpi_tickets.is_deleted' => 0, | ||||||||||||||||||
], | ||||||||||||||||||
'ORDER' => ['glpi_tickets.date_mod DESC'] | ||||||||||||||||||
]; | ||||||||||||||||||
|
||||||||||||||||||
if ($type == "notold") { | ||||||||||||||||||
$title = __("Tickets to follow (escalated)", "escalade"); | ||||||||||||||||||
$status = CommonITILObject::INCOMING.", ".CommonITILObject::PLANNED.", ". | ||||||||||||||||||
CommonITILObject::ASSIGNED.", ".CommonITILObject::WAITING; | ||||||||||||||||||
Comment on lines
210
to
211
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This has to be converted into an array of values.
Suggested change
|
||||||||||||||||||
|
||||||||||||||||||
$search_assign = " `glpi_plugin_escalade_histories`.`groups_id` IN ('$groups') | ||||||||||||||||||
AND (`glpi_groups_tickets`.`groups_id` NOT IN ('$groups') | ||||||||||||||||||
OR `glpi_groups_tickets`.`groups_id` IS NULL)"; | ||||||||||||||||||
|
||||||||||||||||||
$query_join = "LEFT JOIN `glpi_plugin_escalade_histories` | ||||||||||||||||||
ON (`glpi_tickets`.`id` = `glpi_plugin_escalade_histories`.`tickets_id`) | ||||||||||||||||||
LEFT JOIN `glpi_groups_tickets` | ||||||||||||||||||
ON (`glpi_tickets`.`id` = `glpi_groups_tickets`.`tickets_id` | ||||||||||||||||||
AND `glpi_groups_tickets`.`type`=2)"; | ||||||||||||||||||
$criteria['WHERE']['glpi_plugin_escalade_histories.groups_id'] = $_SESSION['glpigroups']; | ||||||||||||||||||
$criteria['WHERE'][] = [ | ||||||||||||||||||
'OR' => [ | ||||||||||||||||||
'NOT' => ['glpi_groups_tickets.groups_id' => $_SESSION['glpigroups']], | ||||||||||||||||||
'glpi_groups_tickets.groups_id' => null | ||||||||||||||||||
] | ||||||||||||||||||
]; | ||||||||||||||||||
|
||||||||||||||||||
$criteria['LEFT JOIN']['glpi_plugin_escalade_histories'] = [ | ||||||||||||||||||
'ON' => [ | ||||||||||||||||||
'glpi_tickets' => 'id', | ||||||||||||||||||
'glpi_plugin_escalade_histories' => 'tickets_id' | ||||||||||||||||||
] | ||||||||||||||||||
]; | ||||||||||||||||||
} else { | ||||||||||||||||||
$title = __("Tickets to close (escalated)", "escalade"); | ||||||||||||||||||
$status = CommonITILObject::SOLVED; | ||||||||||||||||||
|
||||||||||||||||||
$search_assign = " (`glpi_groups_tickets`.`groups_id` IN ('$groups'))"; | ||||||||||||||||||
|
||||||||||||||||||
$query_join = "LEFT JOIN `glpi_groups_tickets` | ||||||||||||||||||
ON (`glpi_tickets`.`id` = `glpi_groups_tickets`.`tickets_id` | ||||||||||||||||||
AND `glpi_groups_tickets`.`type`=2)"; | ||||||||||||||||||
$criteria['WHERE']['glpi_groups_tickets.groups_id'] = $_SESSION['glpigroups']; | ||||||||||||||||||
} | ||||||||||||||||||
|
||||||||||||||||||
$query = "SELECT DISTINCT `glpi_tickets`.`id` | ||||||||||||||||||
FROM `glpi_tickets` | ||||||||||||||||||
LEFT JOIN `glpi_tickets_users` | ||||||||||||||||||
ON (`glpi_tickets`.`id` = `glpi_tickets_users`.`tickets_id`)"; | ||||||||||||||||||
|
||||||||||||||||||
$query .= $query_join; | ||||||||||||||||||
|
||||||||||||||||||
$query .= "WHERE $is_deleted AND ( $search_assign ) | ||||||||||||||||||
AND (`status` IN ($status))". | ||||||||||||||||||
getEntitiesRestrictRequest("AND", "glpi_tickets"); | ||||||||||||||||||
|
||||||||||||||||||
$query .= " ORDER BY glpi_tickets.date_mod DESC"; | ||||||||||||||||||
|
||||||||||||||||||
$result = $DB->query($query); | ||||||||||||||||||
$numrows = $DB->numrows($result); | ||||||||||||||||||
$criteria['LEFT JOIN']['glpi_groups_tickets'] = [ | ||||||||||||||||||
'ON' => [ | ||||||||||||||||||
'glpi_tickets' => 'id', | ||||||||||||||||||
'glpi_groups_tickets' => 'tickets_id', | ||||||||||||||||||
[ | ||||||||||||||||||
'AND' => ['glpi_groups_tickets.type' => 2] | ||||||||||||||||||
] | ||||||||||||||||||
] | ||||||||||||||||||
]; | ||||||||||||||||||
$criteria['WHERE']['status'] = $status; | ||||||||||||||||||
$criteria['WHERE'][] = getEntitiesRestrictCriteria('glpi_tickets'); | ||||||||||||||||||
|
||||||||||||||||||
$result = $DB->request($criteria); | ||||||||||||||||||
$numrows = count($result); | ||||||||||||||||||
if (!$numrows) { | ||||||||||||||||||
return; | ||||||||||||||||||
} | ||||||||||||||||||
|
||||||||||||||||||
$query .= " LIMIT 0, 5"; | ||||||||||||||||||
$result = $DB->query($query); | ||||||||||||||||||
$number = $DB->numrows($result); | ||||||||||||||||||
$criteria['START'] = 0; | ||||||||||||||||||
$criteria['LIMIT'] = 5; | ||||||||||||||||||
$result = $DB->request($criteria); | ||||||||||||||||||
$number = count($result); | ||||||||||||||||||
|
||||||||||||||||||
//show central list | ||||||||||||||||||
if ($numrows > 0) { | ||||||||||||||||||
|
@@ -287,9 +301,8 @@ static function showCentralSpecificList($type) { | |||||||||||||||||
echo "<th>".__('Requester')."</th>"; | ||||||||||||||||||
echo "<th>".__('Associated element')."</th>"; | ||||||||||||||||||
echo "<th>".__('Description')."</th></tr></thead>"; | ||||||||||||||||||
for ($i = 0; $i < $number; $i++) { | ||||||||||||||||||
$ID = $DB->result($result, $i, "id"); | ||||||||||||||||||
Ticket::showVeryShort($ID, 'Ticket$2'); | ||||||||||||||||||
foreach ($result as $data) { | ||||||||||||||||||
Ticket::showVeryShort($data['id'], 'Ticket$2'); | ||||||||||||||||||
} | ||||||||||||||||||
} | ||||||||||||||||||
echo "</table>"; | ||||||||||||||||||
|
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
|
@@ -257,10 +257,14 @@ static function addHistoryOnAddGroup(CommonDBTM $item) { | |||||
$history = new PluginEscaladeHistory(); | ||||||
|
||||||
$group_ticket = new Group_Ticket(); | ||||||
$group_ticket->getFromDBByRequest(['ORDER' => 'id DESC', | ||||||
'LIMIT' => 1, | ||||||
'tickets_id' => $tickets_id, | ||||||
'type' => 2]); | ||||||
$group_ticket->getFromDBByRequest([ | ||||||
'WHERE' => [ | ||||||
'tickets_id' => $tickets_id, | ||||||
'type' => 2 | ||||||
], | ||||||
'ORDER' => 'id DESC', | ||||||
'LIMIT' => 1 | ||||||
]); | ||||||
|
||||||
$previous_groups_id = 0; | ||||||
$counter = 0; | ||||||
|
@@ -755,30 +759,56 @@ static function cloneAndLink($tickets_id) { | |||||
|
||||||
//add actors to the new ticket (without assign) | ||||||
//users | ||||||
$query_users = "INSERT INTO glpi_tickets_users | ||||||
SELECT '' AS id, $newID as tickets_id, users_id, type, use_notification, alternative_email | ||||||
FROM glpi_tickets_users | ||||||
WHERE tickets_id = $tickets_id AND type != 2"; | ||||||
if (!$res = $DB->query($query_users)) { | ||||||
$res = $DB->insert('glpi_tickets_user', new QuerySubQuery([ | ||||||
'SELECT' => [ | ||||||
new QueryExpression("'' AS " . $DB::quoteName('id')), | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
new QueryExpression($DB::quoteValue($newID) . " AS " . $DB::quoteName('tickets_id')), | ||||||
'users_id', 'type', 'use_notification', 'alternative_email' | ||||||
], | ||||||
'FROM' => 'glpi_tickets_users', | ||||||
'WHERE' => [ | ||||||
'tickets_id' => $tickets_id, | ||||||
'type' => ['!=', 2] | ||||||
] | ||||||
])); | ||||||
if (!$res) { | ||||||
echo "{\"success\":false, \"message\":\"".__("Error : adding actors (user)", "escalade")."\"}"; | ||||||
exit; | ||||||
} | ||||||
//groups | ||||||
$query_groups = "INSERT INTO glpi_groups_tickets | ||||||
SELECT '' AS id, $newID as tickets_id, groups_id, type | ||||||
FROM glpi_groups_tickets | ||||||
WHERE tickets_id = $tickets_id AND type != 2"; | ||||||
if (!$res = $DB->query($query_groups)) { | ||||||
$res = $DB->insert('glpi_tickets_user', new QuerySubQuery([ | ||||||
'SELECT' => [ | ||||||
new QueryExpression("'' AS " . $DB::quoteName('id')), | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
new QueryExpression($DB::quoteValue($newID) . " AS " . $DB::quoteName('tickets_id')), | ||||||
'groups_id', 'type' | ||||||
], | ||||||
'FROM' => 'glpi_groups_tickets', | ||||||
'WHERE' => [ | ||||||
'tickets_id' => $tickets_id, | ||||||
'type' => ['!=', 2] | ||||||
] | ||||||
])); | ||||||
if (!$res) { | ||||||
echo "{\"success\":false, \"message\":\"".__("Error : adding actors (group)", "escalade")."\"}"; | ||||||
exit; | ||||||
} | ||||||
|
||||||
//add documents | ||||||
$query_docs = "INSERT INTO glpi_documents_items (documents_id, items_id, itemtype, entities_id, is_recursive, date_mod) | ||||||
SELECT documents_id, $newID, 'Ticket', entities_id, is_recursive, date_mod | ||||||
FROM glpi_documents_items | ||||||
WHERE items_id = $tickets_id AND itemtype = 'Ticket'"; | ||||||
if (! $res = $DB->query($query_docs)) { | ||||||
$res = $DB->insert('glpi_documents_items', new QuerySubQuery([ | ||||||
'SELECT' => [ | ||||||
new QueryExpression("'' AS " . $DB::quoteName('id')), | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
'documents_id', | ||||||
new QueryExpression($DB::quoteValue($newID) . " AS " . $DB::quoteName('items_id')), | ||||||
new QueryExpression($DB::quoteValue('Ticket') . " AS " . $DB::quoteName('itemtype')), | ||||||
'entities_id', 'is_recursive', 'date_mod' | ||||||
], | ||||||
'FROM' => 'glpi_documents_items', | ||||||
'WHERE' => [ | ||||||
'items_id' => $tickets_id, | ||||||
'itemtype' => 'Ticket' | ||||||
] | ||||||
])); | ||||||
if (!$res) { | ||||||
echo "{\"success\":false, \"message\":\"".__("Error : adding documents", "escalade")."\"}"; | ||||||
exit; | ||||||
} | ||||||
|
Original file line number | Diff line number | Diff line change | ||||||
---|---|---|---|---|---|---|---|---|
|
@@ -75,24 +75,35 @@ static function processMassiveActionsForOneItemtype(MassiveAction $ma, CommonDBT | |||||||
static private function getUserGroup($entity, $userid, $filter = '', $first = true) { | ||||||||
global $DB; | ||||||||
|
||||||||
$query = "SELECT glpi_groups.id | ||||||||
FROM glpi_groups_users | ||||||||
INNER JOIN glpi_groups ON (glpi_groups.id = glpi_groups_users.groups_id) | ||||||||
WHERE glpi_groups_users.users_id='$userid'". | ||||||||
getEntitiesRestrictRequest(' AND ', 'glpi_groups', '', $entity, true, true); | ||||||||
$criteria = [ | ||||||||
'SELECT' => ['glpi_groups.id'], | ||||||||
'FROM' => 'glpi_groups_users', | ||||||||
'INNER JOIN' => [ | ||||||||
'glpi_groups' => [ | ||||||||
'ON' => [ | ||||||||
'glpi_groups_users' => 'groups_id', | ||||||||
'glpi_groups' => 'id' | ||||||||
] | ||||||||
] | ||||||||
], | ||||||||
'WHERE' => [ | ||||||||
'glpi_groups_users.users_id' => $userid, | ||||||||
getEntitiesRestrictCriteria('glpi_groups', '', $entity, true, true) | ||||||||
], | ||||||||
Comment on lines
+91
to
+92
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We had an issue recently on treeview plugin with this because
Suggested change
|
||||||||
'ORDER' => ['glpi_groups_users.id'] | ||||||||
]; | ||||||||
|
||||||||
if ($filter) { | ||||||||
$query .= "AND ($filter)"; | ||||||||
$criteria['WHERE'][] = new QueryExpression($filter); | ||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Method is used only at 2 distinct places, please transform
Suggested change
|
||||||||
} | ||||||||
|
||||||||
$query.= " ORDER BY glpi_groups_users.id"; | ||||||||
|
||||||||
$it = $DB->request($criteria); | ||||||||
$rep = []; | ||||||||
foreach ($DB->request($query) as $data) { | ||||||||
foreach ($it as $data) { | ||||||||
if ($first) { | ||||||||
return $data['id']; | ||||||||
} | ||||||||
$rep[]=$data['id']; | ||||||||
$rep[] = $data['id']; | ||||||||
} | ||||||||
return ($first ? 0 : array_pop($rep)); | ||||||||
} | ||||||||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It was 0 on previous code.