From a63150045d10e6f6bd186d3eeb9f253b65c85e1a Mon Sep 17 00:00:00 2001 From: jmontoyaa Date: Fri, 28 Oct 2016 10:02:56 +0200 Subject: [PATCH] Fix ticket mysql errors --- main/ticket/categories.php | 13 ++-- main/ticket/priorities.php | 23 +++++-- main/ticket/projects.php | 19 ++++-- main/ticket/status.php | 36 +++++++---- src/Chamilo/TicketBundle/Entity/Ticket.php | 75 ++++++++++++++++++++++ 5 files changed, 136 insertions(+), 30 deletions(-) diff --git a/main/ticket/categories.php b/main/ticket/categories.php index c0edc13574..d568240463 100644 --- a/main/ticket/categories.php +++ b/main/ticket/categories.php @@ -69,8 +69,13 @@ $interbreadcrumb[] = array( switch ($action) { case 'delete': - TicketManager::deleteCategory($id); - Display::addFlash(Display::return_message(get_lang('Deleted'))); + $tickets = TicketManager::getTicketsFromCriteria(['category' => $id]); + if (empty($tickets)) { + TicketManager::deleteCategory($id); + Display::addFlash(Display::return_message(get_lang('Deleted'))); + } else { + Display::addFlash(Display::return_message(get_lang('ThisItemIsRelatedToOtherTickets'))); + } header("Location: ".api_get_self().'?project_id='.$projectId); exit; break; @@ -148,9 +153,9 @@ switch ($action) { function modify_filter($id, $params, $row) { $projectId = Session::read('project_id'); - + $result = ''; if (api_get_setting('ticket_allow_category_edition') === 'true') { - $result = Display::url( + $result .= Display::url( Display::return_icon('edit.png', get_lang('Edit')), "categories.php?action=edit&id={$row['id']}&project_id=".$projectId ); diff --git a/main/ticket/priorities.php b/main/ticket/priorities.php index 4808ce0e5e..8735d1beff 100644 --- a/main/ticket/priorities.php +++ b/main/ticket/priorities.php @@ -43,12 +43,17 @@ $interbreadcrumb[] = array( 'name' => get_lang('Settings') ); - switch ($action) { case 'delete': - TicketManager::deletePriority($id); - Display::addFlash(Display::return_message(get_lang('Deleted'))); + $tickets = TicketManager::getTicketsFromCriteria(['priority' => $id]); + if (empty($tickets)) { + TicketManager::deletePriority($id); + Display::addFlash(Display::return_message(get_lang('Deleted'))); + } else { + Display::addFlash(Display::return_message(get_lang('ThisItemIsRelatedToOtherTickets'), 'warning')); + } header("Location: ".api_get_self()); + exit; break; case 'add': $toolName = get_lang('Add'); @@ -122,10 +127,14 @@ function modify_filter($id, $params, $row) api_get_self()."?action=edit&id={$row['id']}" ); - $result .= Display::url( - Display::return_icon('delete.png', get_lang('Delete')), - api_get_self()."?action=delete&id={$row['id']}" - ); + $code = $row['code']; + + if (!in_array($code, TicketManager::getDefaultPriorityList())) { + $result .= Display::url( + Display::return_icon('delete.png', get_lang('Delete')), + api_get_self()."?action=delete&id={$row['id']}" + ); + } return $result; } diff --git a/main/ticket/projects.php b/main/ticket/projects.php index bd938bdcac..89359d2a6d 100644 --- a/main/ticket/projects.php +++ b/main/ticket/projects.php @@ -10,8 +10,6 @@ require_once __DIR__.'/../inc/global.inc.php'; api_protect_admin_script(true); -//$toolName = get_lang('Project'); - $libPath = api_get_path(LIBRARY_PATH); $webLibPath = api_get_path(WEB_LIBRARY_PATH); @@ -50,9 +48,15 @@ $interbreadcrumb[] = array( switch ($action) { case 'delete': - TicketManager::deleteProject($id); - Display::addFlash(Display::return_message(get_lang('Deleted'))); + $tickets = TicketManager::getTicketsFromCriteria(['project' => $id]); + if (empty($tickets)) { + TicketManager::deleteProject($id); + Display::addFlash(Display::return_message(get_lang('Deleted'))); + } else { + Display::addFlash(Display::return_message(get_lang('ThisItemIsRelatedToOtherTickets'))); + } header("Location: ".api_get_self()); + exit; break; case 'add': $toolName = get_lang('Add'); @@ -86,8 +90,9 @@ switch ($action) { $form->setDefaults([ 'name' => $item->getName(), - 'description' => $item->getDescription()] - ); + 'description' => $item->getDescription() + ]); + $formToString = $form->returnForm(); if ($form->validate()) { $values =$form->getSubmitValues(); @@ -98,7 +103,7 @@ switch ($action) { 'sys_lastedit_datetime' => api_get_utc_datetime(), 'sys_lastedit_user_id' => api_get_user_id() ]; - $cat = TicketManager::updateProject($_GET['id'], $params); + TicketManager::updateProject($_GET['id'], $params); Display::addFlash(Display::return_message(get_lang('Updated'))); header("Location: ".api_get_self()); exit; diff --git a/main/ticket/status.php b/main/ticket/status.php index 335faec715..3f81d52b32 100644 --- a/main/ticket/status.php +++ b/main/ticket/status.php @@ -44,15 +44,22 @@ $interbreadcrumb[] = array( switch ($action) { case 'delete': - TicketManager::deleteStatus($id); - Display::addFlash(Display::return_message(get_lang('Deleted'))); + $tickets = TicketManager::getTicketsFromCriteria(['status' => $id]); + if (empty($tickets)) { + TicketManager::deleteStatus($id); + Display::addFlash(Display::return_message(get_lang('Deleted'))); + } else { + Display::addFlash(Display::return_message(get_lang('ThisItemIsRelatedToOtherTickets'), 'warning')); + } + header("Location: ".api_get_self()); + exit; break; case 'add': $toolName = get_lang('Add'); $interbreadcrumb[] = array( 'url' => api_get_path(WEB_CODE_PATH).'ticket/status.php', - 'name' => get_lang('Categories') + 'name' => get_lang('Status') ); $url = api_get_self().'?action=add'; $form = TicketManager::getStatusForm($url); @@ -74,8 +81,8 @@ switch ($action) { case 'edit': $toolName = get_lang('Edit'); $interbreadcrumb[] = array( - 'url' => api_get_path(WEB_CODE_PATH).'ticket/categories.php', - 'name' => get_lang('Categories') + 'url' => api_get_path(WEB_CODE_PATH).'ticket/status.php', + 'name' => get_lang('Status') ); $url = api_get_self().'?action=edit&id='.$id; $form = TicketManager::getStatusForm($url); @@ -83,8 +90,8 @@ switch ($action) { $item = TicketManager::getStatus($_GET['id']); $form->setDefaults([ 'name' => $item->getName(), - 'description' => $item->getDescription()] - ); + 'description' => $item->getDescription() + ]); $formToString = $form->returnForm(); if ($form->validate()) { $values =$form->getSubmitValues(); @@ -115,15 +122,20 @@ $isAdmin = api_is_platform_admin(); */ function modify_filter($id, $params, $row) { + $id = $row['id']; + $code = $row['code']; + $result = Display::url( Display::return_icon('edit.png', get_lang('Edit')), - api_get_self()."?action=edit&id={$row['id']}" + api_get_self()."?action=edit&id={$id}" ); - $result .= Display::url( - Display::return_icon('delete.png', get_lang('Delete')), - api_get_self()."?action=delete&id={$row['id']}" - ); + if (!in_array($code, TicketManager::getDefaultStatusList())) { + $result .= Display::url( + Display::return_icon('delete.png', get_lang('Delete')), + api_get_self()."?action=delete&id={$id}" + ); + } return $result; } diff --git a/src/Chamilo/TicketBundle/Entity/Ticket.php b/src/Chamilo/TicketBundle/Entity/Ticket.php index 57be2f388b..6fb02992af 100644 --- a/src/Chamilo/TicketBundle/Entity/Ticket.php +++ b/src/Chamilo/TicketBundle/Entity/Ticket.php @@ -173,4 +173,79 @@ class Ticket */ protected $lastEditDateTime; + /** + * @return int + */ + public function getId() + { + return $this->id; + } + + /** + * @param int $id + * @return Ticket + */ + public function setId($id) + { + $this->id = $id; + + return $this; + } + + /** + * @return string + */ + public function getCode() + { + return $this->code; + } + + /** + * @param string $code + * @return Ticket + */ + public function setCode($code) + { + $this->code = $code; + + return $this; + } + + /** + * @return string + */ + public function getSubject() + { + return $this->subject; + } + + /** + * @param string $subject + * @return Ticket + */ + public function setSubject($subject) + { + $this->subject = $subject; + + return $this; + } + + /** + * @return string + */ + public function getMessage() + { + return $this->message; + } + + /** + * @param string $message + * @return Ticket + */ + public function setMessage($message) + { + $this->message = $message; + + return $this; + } }