commit 1cf75ef86934b041aceceff203115379afca7d11 Author: tomolimo Date: Fri Oct 9 14:13:52 2015 +0200 2.4.1 initial commit Previous releases can be found here: https://forge.glpi-project.org/projects/processmaker diff --git a/ajax/dropdownProcesses.php b/ajax/dropdownProcesses.php new file mode 100644 index 0000000..6f6498a --- /dev/null +++ b/ajax/dropdownProcesses.php @@ -0,0 +1,115 @@ +numrows($result)) { + while ($data=$DB->fetch_array($result)) { + if( in_array( $_POST["entity_restrict"], PluginProcessmakerProcess::getEntitiesForProfileByProcess( $data["id"], $_SESSION['glpiactiveprofile']['id'], true) ) ) { + $processes[$data["id"]] = $data["name"]; + } + } +} + + +echo ""; + +if (isset($_POST["comment"]) && $_POST["comment"]) { + $paramscomment = array('value' => '__VALUE__', + 'table' => "glpi_plugin_processmaker_processes"); + + if (isset($_POST['update_link'])) { + $paramscomment['withlink'] = "comment_link_".$_POST["myname"].$_POST["rand"]; + } + Ajax::updateItemOnSelectEvent("dropdown_".$_POST["myname"].$_POST["rand"], + "comment_".$_POST["myname"].$_POST["rand"], + $CFG_GLPI["root_doc"]."/ajax/comments.php", $paramscomment); +} + +Ajax::commonDropdownUpdateItem($_POST); +?> \ No newline at end of file diff --git a/ajax/dropdownUsers.php b/ajax/dropdownUsers.php new file mode 100644 index 0000000..ade11c2 --- /dev/null +++ b/ajax/dropdownUsers.php @@ -0,0 +1,134 @@ +numrows($result)) { + while ($data=$DB->fetch_array($result)) { + if( !$raynetPseudoGroupNoUse || mb_strpos( $data["name"], "*" ) === false ) { + $users[$data["id"]] = formatUserName($data["id"], $data["name"], $data["realname"], + $data["firstname"]); + $logins[$data["id"]] = $data["name"]; + } + } +} + +if (!function_exists('dpuser_cmp')) { + function dpuser_cmp($a, $b) { + return strcasecmp($a, $b); + } +} + +// Sort non case sensitive +uasort($users, 'dpuser_cmp'); + +echo ""; + +if (isset($_POST["comment"]) && $_POST["comment"]) { + $paramscomment = array('value' => '__VALUE__', + 'table' => "glpi_users"); + + if (isset($_POST['update_link'])) { + $paramscomment['withlink'] = "comment_link_".$_POST["myname"].$_POST["rand"]; + } + Ajax::updateItemOnSelectEvent("dropdown_".$_POST["myname"].$_POST["rand"], + "comment_".$_POST["myname"].$_POST["rand"], + $CFG_GLPI["root_doc"]."/ajax/comments.php", $paramscomment); +} + +Ajax::commonDropdownUpdateItem($_POST); +?> \ No newline at end of file diff --git a/ajax/task_resume.php b/ajax/task_resume.php new file mode 100644 index 0000000..bb1ce0c --- /dev/null +++ b/ajax/task_resume.php @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + +
+ + + + + +
+
+
 
 
 
+
+ + + + +
+ + + + + + + + + + + +
Task Properties
".urldecode($_REQUEST['taskname'])."
".urldecode($_REQUEST['username'])."
+
+
+
 
 
 
+
+
+ + + +
+
+ + + + +" ; + diff --git a/ajax/task_users.php b/ajax/task_users.php new file mode 100644 index 0000000..f352316 --- /dev/null +++ b/ajax/task_users.php @@ -0,0 +1,50 @@ +"; + echo $LANG['processmaker']['item']['reassigncase']." "; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + + PluginProcessmakerUsers::dropdown( array('name' => 'users_id_recipient', + 'value' => PluginProcessmakerProcessmaker::getGLPIUserId( $_REQUEST['userId'] ), + 'entity' => 0, //$item->fields["entities_id"], + 'entity_sons' => true, + 'right' => 'all', + 'rand' => $rand, + 'pmTaskId' => $_REQUEST['taskId'])); + echo "  "; + echo ""; +echo ""; + +?> \ No newline at end of file diff --git a/config/db_updates.txt b/config/db_updates.txt new file mode 100644 index 0000000..6d4fdf2 --- /dev/null +++ b/config/db_updates.txt @@ -0,0 +1,51 @@ +ALTER TABLE `glpi_plugin_processmaker_processes` + ADD COLUMN `is_helpdeskvisible` TINYINT(1) NOT NULL DEFAULT '1' AFTER `trigger_guid`; + +ALTER TABLE `glpi_plugin_processmaker_processes` + ADD COLUMN `comment` TEXT NULL AFTER `is_helpdeskvisible`; + +ALTER TABLE `glpi_plugin_processmaker_cases` + ADD COLUMN `processes_id` VARCHAR(32) NULL AFTER `case_status`; + +ALTER TABLE `glpi_plugin_processmaker_processes` + ADD COLUMN `is_active` TINYINT(1) NOT NULL DEFAULT '0' AFTER `is_helpdeskvisible`, + CHANGE COLUMN `comment` `comment` TEXT NULL AFTER `is_active`, + ADD COLUMN `date_mod` DATETIME NULL DEFAULT NULL AFTER `comment`, + DROP COLUMN `trigger_guid`; + +ALTER TABLE `glpi_plugin_processmaker_configs` + ADD COLUMN `taskcategories_id` INT(11) NULL AFTER `comment`; + +ALTER TABLE `glpi_plugin_processmaker_processes` + ADD COLUMN `taskcategories_id` INT(11) NULL AFTER `comment`; + +CREATE TABLE `glpi_plugin_processmaker_taskcategories` ( + `id` INT(11) NOT NULL, + `pm_task_guid` VARCHAR(32) NOT NULL, + `processes_id` INT(11) NOT NULL + ) + COLLATE='utf8_general_ci' + ENGINE=InnoDB + ; + +ALTER TABLE `glpi_plugin_processmaker_profiles` + ADD COLUMN `profiles_id` INT(11) NOT NULL DEFAULT '0' COMMENT 'RELATION to glpi_profiles (id)' AFTER `id`, + DROP COLUMN `name`, + DROP INDEX `name`, + ADD INDEX `profiles_id` (`profiles_id`); +ALTER TABLE `glpi_plugin_processmaker_profiles` + CHANGE COLUMN `process` `process_config` CHAR(1) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci' AFTER `profiles_id`; + + + +ALTER TABLE `glpi_plugin_processmaker_processes` + ADD COLUMN `hide_case_num_title` TINYINT(1) NOT NULL DEFAULT '0' AFTER `is_active`; + +ALTER TABLE `glpi_plugin_processmaker_processes` + ADD COLUMN `insert_task_comment` TINYINT(1) NOT NULL DEFAULT '0' AFTER `hide_case_num_title`; + +ALTER TABLE `glpi_plugin_processmaker_configs` + ADD COLUMN `users_id` INT(11) NULL DEFAULT NULL AFTER `taskcategories_id`; + +ALTER TABLE `glpi_plugin_processmaker_configs` + ADD COLUMN `pm_group_guid` VARCHAR(32) NULL AFTER `users_id`; diff --git a/config/pm_db_config.sql b/config/pm_db_config.sql new file mode 100644 index 0000000..e92158a --- /dev/null +++ b/config/pm_db_config.sql @@ -0,0 +1,175 @@ + +USE wf_workflow; + +DROP TRIGGER IF EXISTS `GLPI_APPLICATION_DELETE` ; +DROP TRIGGER IF EXISTS `GLPI_APP_DELAY_INSERT` ; +DROP TRIGGER IF EXISTS `GLPI_APP_DELAY_UPDATE` ; +DROP TRIGGER IF EXISTS `GLPI_APP_DELEGATION_INSERT` ; +DROP TRIGGER IF EXISTS `GLPI_APP_DELEGATION_UPDATE` ; +DROP TRIGGER IF EXISTS `GLPI_APP_DELEGATION_DELETE` ; + + +DELIMITER // + +CREATE DEFINER=CURRENT_USER TRIGGER `GLPI_APPLICATION_DELETE` AFTER DELETE ON `application` FOR EACH ROW BEGIN + DECLARE loc_Ticket_id INT(11) ; + SELECT ticket_id INTO loc_Ticket_id FROM glpi.glpi_plugin_processmaker_ticketcase WHERE case_id=OLD.APP_UID; + IF loc_Ticket_id IS NOT NULL THEN + DELETE FROM glpi.glpi_plugin_processmaker_ticketcase WHERE case_id=OLD.APP_UID ; + END IF; +END // + +CREATE DEFINER=CURRENT_USER TRIGGER `GLPI_APP_DELAY_INSERT` AFTER INSERT ON `app_delay` FOR EACH ROW BEGIN + DECLARE loc_task_cat_id, loc_Ticket_id, loc_Found_Pos, loc_glpi_users_id, loc_Count_Ticket INT(11) ; + DECLARE APP_TITLE, APP_PRO_TITLE, APP_TAS_TITLE VARCHAR(255); + DECLARE loc_pm_user_id VARCHAR(32) ; + + IF NEW.APP_TYPE = 'PAUSE' THEN + SELECT ticket_id INTO loc_Ticket_id FROM glpi.glpi_plugin_processmaker_ticketcase WHERE case_id=NEW.APP_UID; + IF loc_Ticket_id IS NOT NULL THEN + + SELECT CONTENT.CON_VALUE into APP_TITLE FROM CONTENT WHERE NEW.APP_UID=CON_ID AND CON_CATEGORY='APP_TITLE' and CON_LANG = 'en' LIMIT 1; + IF APP_TITLE IS NULL THEN + SET APP_TITLE = ''; + END IF; + SELECT CONTENT.CON_VALUE into APP_PRO_TITLE FROM CONTENT WHERE NEW.PRO_UID=CON_ID AND CON_CATEGORY='PRO_TITLE' and CON_LANG = 'en' LIMIT 1; + SET APP_TAS_TITLE = 'Case is paused'; + + SELECT glpi_users_id INTO loc_glpi_users_id FROM glpi.glpi_plugin_processmaker_users WHERE pm_users_id=NEW.APP_DELEGATION_USER LIMIT 1; + + SELECT id INTO loc_task_cat_id FROM glpi.glpi_taskcategories WHERE name=APP_PRO_TITLE; + IF loc_task_cat_id IS NULL THEN + SET loc_task_cat_id=0 ; + END IF ; + + INSERT INTO glpi.glpi_tickettasks + ( `tickets_id`, `taskcategories_id`, `date`, `users_id`, `content`, `is_private`, `actiontime`, `begin`, `end`, `state`, `users_id_tech`) + VALUES ( loc_Ticket_id, + loc_task_cat_id, + Now(), + 1, + CONCAT( 'Bound to process: ', APP_PRO_TITLE, ',
case title: ', APP_TITLE, ',
task: ', APP_TAS_TITLE,'.
Go to Case tab to manage!' ), + 0, + 0, + NEW.APP_ENABLE_ACTION_DATE, + NEW.APP_DISABLE_ACTION_DATE, + 1, + loc_glpi_users_id); + + INSERT INTO glpi.glpi_plugin_processmaker_tasks (`tickettasks_id`, `case_id`, `del_index`) VALUES (LAST_INSERT_ID(), NEW.APP_DELAY_UID, 0 ); + + END IF; + END IF; +END // + + +CREATE DEFINER=CURRENT_USER TRIGGER `GLPI_APP_DELAY_UPDATE` AFTER UPDATE ON `app_delay` FOR EACH ROW BEGIN + + DECLARE loc_tickettasks_id, loc_Count_Task INT(11) ; + DECLARE loc_glpi_users_id INT(11) ; + + SELECT glpi_pm_tasks.tickettasks_id INTO loc_tickettasks_id FROM glpi.glpi_plugin_processmaker_tasks as glpi_pm_tasks WHERE glpi_pm_tasks.case_id=NEW.APP_DELAY_UID ; + IF loc_tickettasks_id IS NOT NULL THEN + SELECT glpi_users_id INTO loc_glpi_users_id FROM glpi.glpi_plugin_processmaker_users WHERE pm_users_id=NEW.APP_DISABLE_ACTION_USER LIMIT 1; + + IF NEW.APP_DISABLE_ACTION_DATE IS NOT NULL THEN + UPDATE glpi.glpi_tickettasks + SET state=2, + `end`=NEW.APP_DISABLE_ACTION_DATE + WHERE id=loc_tickettasks_id ; + END IF ; + + END IF; +END // + + +CREATE DEFINER=CURRENT_USER TRIGGER `GLPI_APP_DELEGATION_DELETE` AFTER DELETE ON `app_delegation` FOR EACH ROW BEGIN + + DECLARE loc_Ticket_id, loc_tickettask_id INT(11) ; + + SELECT glpi_pm_tcase.ticket_id INTO loc_Ticket_id FROM glpi.glpi_plugin_processmaker_ticketcase as glpi_pm_tcase WHERE glpi_pm_tcase.case_id=OLD.APP_UID; + IF loc_Ticket_id IS NOT NULL THEN + SELECT glpi_pm_tasks.tickettasks_id INTO loc_tickettask_id FROM glpi.glpi_plugin_processmaker_tasks as glpi_pm_tasks WHERE glpi_pm_tasks.case_id=OLD.APP_UID AND glpi_pm_tasks.del_index=OLD.DEL_INDEX LIMIT 1; + DELETE FROM glpi.glpi_plugin_processmaker_tasks WHERE tickettasks_id = loc_tickettask_id ; + DELETE FROM glpi.glpi_tickettasks WHERE id = loc_tickettask_id ; + END IF; + +END // + + +CREATE DEFINER=CURRENT_USER TRIGGER `GLPI_APP_DELEGATION_INSERT` AFTER INSERT ON `app_delegation` FOR EACH ROW BEGIN + DECLARE loc_task_cat_id, loc_Ticket_id, loc_Found_Pos, loc_glpi_users_id, loc_Count_Ticket INT(11) ; + DECLARE APP_TITLE, APP_PRO_TITLE, APP_TAS_TITLE VARCHAR(255); + + SELECT ticket_id INTO loc_Ticket_id FROM glpi.glpi_plugin_processmaker_ticketcase WHERE case_id=NEW.APP_UID; + + IF loc_Ticket_id IS NOT NULL THEN + + SELECT CONTENT.CON_VALUE into APP_TITLE FROM CONTENT WHERE NEW.APP_UID=CON_ID AND CON_CATEGORY='APP_TITLE' and CON_LANG = 'en' LIMIT 1; + IF APP_TITLE IS NULL THEN + SET APP_TITLE = ''; + END IF; + SELECT CONTENT.CON_VALUE into APP_PRO_TITLE FROM CONTENT WHERE NEW.PRO_UID=CON_ID AND CON_CATEGORY='PRO_TITLE' and CON_LANG = 'en' LIMIT 1; + SELECT CONTENT.CON_VALUE into APP_TAS_TITLE FROM CONTENT WHERE NEW.TAS_UID=CON_ID AND CON_CATEGORY='TAS_TITLE' and CON_LANG = 'en' LIMIT 1; + + + SELECT glpi_users_id INTO loc_glpi_users_id FROM glpi.glpi_plugin_processmaker_users WHERE pm_users_id=NEW.USR_UID LIMIT 1; + IF loc_glpi_users_id IS NULL THEN + /* we must find a user linked to a group */ /* task is NEW.TAS_UID */ + select glpi.glpi_users.id INTO loc_glpi_users_id from task_user + join content on content.CON_ID=task_user.USR_UID and content.CON_CATEGORY='GRP_TITLE' + join glpi.glpi_users on glpi.glpi_users.name=content.CON_VALUE COLLATE utf8_unicode_ci + where tas_uid=NEW.TAS_UID and tu_relation=2 ; + END IF; + + SELECT id INTO loc_task_cat_id FROM glpi.glpi_taskcategories WHERE name=APP_PRO_TITLE; + IF loc_task_cat_id IS NULL THEN + SET loc_task_cat_id=0 ; + END IF ; + + INSERT INTO glpi.glpi_tickettasks + ( `tickets_id`, `taskcategories_id`, `date`, `users_id`, `content`, `is_private`, `actiontime`, `begin`, `end`, `state`, `users_id_tech`) + VALUES ( loc_Ticket_id, + loc_task_cat_id, + Now(), + 1, + CONCAT( 'Bound to process: ', APP_PRO_TITLE, ',
case title: ', APP_TITLE, ',
task: ', APP_TAS_TITLE,'.
Go to Case tab to manage!' ), + 0, + 0, + NEW.DEL_DELEGATE_DATE, + NEW.DEL_TASK_DUE_DATE, + 1, + loc_glpi_users_id); + + INSERT INTO glpi.glpi_plugin_processmaker_tasks (`tickettasks_id`, `case_id`, `del_index`) VALUES (LAST_INSERT_ID(), NEW.APP_UID, NEW.DEL_INDEX ); + + END IF; +END // + + +CREATE DEFINER=CURRENT_USER TRIGGER `GLPI_APP_DELEGATION_UPDATE` AFTER UPDATE ON `app_delegation` FOR EACH ROW BEGIN + + DECLARE loc_tickettasks_id, loc_Count_Task INT(11) ; + DECLARE loc_glpi_users_id INT(11) ; + + SELECT glpi_pm_tasks.tickettasks_id INTO loc_tickettasks_id FROM glpi.glpi_plugin_processmaker_tasks as glpi_pm_tasks WHERE glpi_pm_tasks.case_id=NEW.APP_UID AND glpi_pm_tasks.del_index=NEW.DEL_INDEX ; + IF loc_tickettasks_id IS NOT NULL THEN + SELECT glpi_users_id INTO loc_glpi_users_id FROM glpi.glpi_plugin_processmaker_users WHERE pm_users_id=NEW.USR_UID LIMIT 1; + + IF NEW.DEL_THREAD_STATUS = 'CLOSED' THEN + UPDATE glpi.glpi_tickettasks + SET state=2, + `begin`=NEW.DEL_DELEGATE_DATE, + `end`=NEW.DEL_FINISH_DATE + WHERE id=loc_tickettasks_id ; + ELSE + UPDATE glpi.glpi_tickettasks + SET users_id_tech=loc_glpi_users_id + WHERE id=loc_tickettasks_id ; + END IF ; + + END IF; +END // + +DELIMITER ; + diff --git a/config/pm_db_install.mysql b/config/pm_db_install.mysql new file mode 100644 index 0000000..23173ff --- /dev/null +++ b/config/pm_db_install.mysql @@ -0,0 +1,218 @@ + + +DROP TRIGGER IF EXISTS `GLPI_APPLICATION_DELETE` ; +DROP TRIGGER IF EXISTS `GLPI_APPLICATION_UPDATE` ; +DROP TRIGGER IF EXISTS `GLPI_APP_DELAY_INSERT` ; +DROP TRIGGER IF EXISTS `GLPI_APP_DELAY_UPDATE` ; +DROP TRIGGER IF EXISTS `GLPI_APP_DELEGATION_INSERT` ; +DROP TRIGGER IF EXISTS `GLPI_APP_DELEGATION_UPDATE` ; +DROP TRIGGER IF EXISTS `GLPI_APP_DELEGATION_DELETE` ; + + + +CREATE DEFINER=CURRENT_USER TRIGGER `GLPI_APPLICATION_DELETE` AFTER DELETE ON `application` FOR EACH ROW BEGIN + DECLARE loc_item_id INT(11) ; + SELECT items_id INTO loc_item_id FROM glpi.glpi_plugin_processmaker_cases WHERE case_id=OLD.APP_UID; + IF loc_item_id IS NOT NULL THEN + DELETE FROM glpi.glpi_plugin_processmaker_cases WHERE case_id=OLD.APP_UID ; + END IF; +END ; + +CREATE DEFINER=CURRENT_USER TRIGGER `GLPI_APPLICATION_UPDATE` AFTER UPDATE ON `application` FOR EACH ROW BEGIN + DECLARE loc_item_id INT(11) ; + SELECT items_id INTO loc_item_id FROM glpi.glpi_plugin_processmaker_cases WHERE case_id=NEW.APP_UID; + IF loc_item_id IS NOT NULL THEN + UPDATE glpi.glpi_plugin_processmaker_cases SET case_status=NEW.APP_STATUS WHERE case_id=NEW.APP_UID ; + END IF; +END ; + + +CREATE DEFINER=CURRENT_USER TRIGGER `GLPI_APP_DELAY_INSERT` AFTER INSERT ON `app_delay` FOR EACH ROW BEGIN + DECLARE loc_task_id, loc_task_cat_id, loc_item_id, loc_Found_Pos, loc_glpi_users_id, loc_Count_item INT(11) ; + DECLARE APP_TITLE, APP_PRO_TITLE, APP_TAS_TITLE VARCHAR(255); + DECLARE loc_pm_user_id, loc_item_type VARCHAR(32) ; + DECLARE locDate DATETIME ; + + IF NEW.APP_TYPE = 'PAUSE' THEN + + SELECT items_id, itemtype INTO loc_item_id, loc_item_type FROM glpi.glpi_plugin_processmaker_cases WHERE case_id=NEW.APP_UID; + + IF loc_item_id IS NOT NULL THEN + + SELECT CONTENT.CON_VALUE into APP_TITLE FROM CONTENT WHERE NEW.APP_UID=CON_ID AND CON_CATEGORY='APP_TITLE' and CON_LANG = 'en' LIMIT 1; + IF APP_TITLE IS NULL THEN + SET APP_TITLE = ''; + END IF; + SELECT CONTENT.CON_VALUE into APP_PRO_TITLE FROM CONTENT WHERE NEW.PRO_UID=CON_ID AND CON_CATEGORY='PRO_TITLE' and CON_LANG = 'en' LIMIT 1; + SET APP_TAS_TITLE = 'Task is paused'; + + + SELECT glpi_users_id INTO loc_glpi_users_id FROM glpi.glpi_plugin_processmaker_users WHERE pm_users_id=NEW.APP_DELEGATION_USER LIMIT 1; + IF loc_glpi_users_id IS NULL THEN + SET loc_glpi_users_id = 2 ; + END IF ; + + SELECT id INTO loc_task_cat_id FROM glpi.glpi_taskcategories WHERE name=APP_PRO_TITLE; + IF loc_task_cat_id IS NULL THEN + SET loc_task_cat_id=0 ; + END IF ; + + SET locDate = Now() ; + SET @table_name = CONCAT('glpi.glpi_', loc_item_type, 'tasks') ; + SET @field_name = CONCAT( loc_item_type, 's_id' ) ; + SET @query = CONCAT( 'INSERT INTO ', @table_name, ' + ( `', @field_name, '`, `taskcategories_id`, `date`, `users_id`, `content`, `actiontime`, `begin`, `end`, `state`, `users_id_tech`) + VALUES ( ',loc_item_id,', + ',loc_task_cat_id,', + ',locDate,', + 1, + \'Bound to process: ', APP_PRO_TITLE, ',
case title: ', APP_TITLE, ',
task: ', APP_TAS_TITLE,'.
Go to Case tab to manage!', '\', + 0,', + NEW.APP_ENABLE_ACTION_DATE, ',', + NEW.APP_DISABLE_ACTION_DATE, ', + 1,', + loc_glpi_users_id,');') ; + + SET loc_task_id = LAST_INSERT_ID(); + INSERT INTO glpi.glpi_plugin_processmaker_tasks (`tickettasks_id`, `case_id`, `del_index`) VALUES (loc_task_id, NEW.APP_DELAY_UID, 0 ); + + REPLACE INTO glpi.glpi_plugin_processmaker_tasksnotifications (`date`, `task_id`, `user_id`, `tech_id`, `action`) VALUES ( locDate, loc_task_id, 1, loc_glpi_users_id, 'INSERT'); + + END IF; + END IF; +END ; + + +CREATE DEFINER=CURRENT_USER TRIGGER `GLPI_APP_DELAY_UPDATE` AFTER UPDATE ON `app_delay` FOR EACH ROW BEGIN + + DECLARE loc_tickettasks_id, loc_Count_Task INT(11) ; + DECLARE loc_glpi_users_id INT(11) ; + + SELECT glpi_pm_tasks.tickettasks_id INTO loc_tickettasks_id FROM glpi.glpi_plugin_processmaker_tasks as glpi_pm_tasks WHERE glpi_pm_tasks.case_id=NEW.APP_DELAY_UID ; + IF loc_tickettasks_id IS NOT NULL THEN + SELECT glpi_users_id INTO loc_glpi_users_id FROM glpi.glpi_plugin_processmaker_users WHERE pm_users_id=NEW.APP_DISABLE_ACTION_USER LIMIT 1; + IF loc_glpi_users_id IS NULL THEN + SET loc_glpi_users_id = 2 ; + END IF ; + + IF NEW.APP_DISABLE_ACTION_DATE IS NOT NULL THEN + UPDATE glpi.glpi_tickettasks + SET state=2, + `end`=NEW.APP_DISABLE_ACTION_DATE + WHERE id=loc_tickettasks_id ; + END IF ; + + REPLACE INTO glpi.glpi_plugin_processmaker_tasksnotifications (`date`, `task_id`, `user_id`, `tech_id`, `action`) VALUES ( Now(), loc_tickettasks_id, 1, loc_glpi_users_id, 'UPDATE'); + + END IF; + +END ; + + +CREATE DEFINER=CURRENT_USER TRIGGER `GLPI_APP_DELEGATION_DELETE` AFTER DELETE ON `app_delegation` FOR EACH ROW BEGIN + + DECLARE loc_Ticket_id, loc_tickettask_id INT(11) ; + + SELECT glpi_pm_tcase.ticket_id INTO loc_Ticket_id FROM glpi.glpi_plugin_processmaker_cases as glpi_pm_tcase WHERE glpi_pm_tcase.case_id=OLD.APP_UID; + IF loc_Ticket_id IS NOT NULL THEN + SELECT glpi_pm_tasks.tickettasks_id INTO loc_tickettask_id FROM glpi.glpi_plugin_processmaker_tasks as glpi_pm_tasks WHERE glpi_pm_tasks.case_id=OLD.APP_UID AND glpi_pm_tasks.del_index=OLD.DEL_INDEX LIMIT 1; + DELETE FROM glpi.glpi_plugin_processmaker_tasks WHERE tickettasks_id = loc_tickettask_id ; + DELETE FROM glpi.glpi_tickettasks WHERE id = loc_tickettask_id ; + END IF; + +END ; + + +CREATE DEFINER=CURRENT_USER TRIGGER `GLPI_APP_DELEGATION_INSERT` AFTER INSERT ON `app_delegation` FOR EACH ROW BEGIN + DECLARE loc_task_id, loc_task_cat_id, loc_Ticket_id, loc_Found_Pos, loc_glpi_users_id, loc_Count_Ticket INT(11) ; + DECLARE APP_TITLE, APP_PRO_TITLE, APP_TAS_TITLE VARCHAR(255); + DECLARE locDate DATETIME ; + /*DECLARE loc_pm_user_id VARCHAR(32) ;*/ + + SELECT ticket_id INTO loc_Ticket_id FROM glpi.glpi_plugin_processmaker_cases WHERE case_id=NEW.APP_UID; + + IF loc_Ticket_id IS NOT NULL THEN + + SELECT CONTENT.CON_VALUE into APP_TITLE FROM CONTENT WHERE NEW.APP_UID=CON_ID AND CON_CATEGORY='APP_TITLE' and CON_LANG = 'en' LIMIT 1; + IF APP_TITLE IS NULL THEN + SET APP_TITLE = ''; + END IF; + SELECT CONTENT.CON_VALUE into APP_PRO_TITLE FROM CONTENT WHERE NEW.PRO_UID=CON_ID AND CON_CATEGORY='PRO_TITLE' and CON_LANG = 'en' LIMIT 1; + SELECT CONTENT.CON_VALUE into APP_TAS_TITLE FROM CONTENT WHERE NEW.TAS_UID=CON_ID AND CON_CATEGORY='TAS_TITLE' and CON_LANG = 'en' LIMIT 1; + + + SELECT glpi_users_id INTO loc_glpi_users_id FROM glpi.glpi_plugin_processmaker_users WHERE pm_users_id=NEW.USR_UID LIMIT 1; + IF loc_glpi_users_id IS NULL THEN + /* we must find a user linked to a group */ /* task is NEW.TAS_UID */ + select glpi.glpi_users.id INTO loc_glpi_users_id from task_user + join content on content.CON_ID=task_user.USR_UID and content.CON_CATEGORY='GRP_TITLE' and CON_LANG = 'en' + join glpi.glpi_users on glpi.glpi_users.name=content.CON_VALUE COLLATE utf8_unicode_ci + where tas_uid=NEW.TAS_UID and tu_relation=2 LIMIT 1; + IF loc_glpi_users_id IS NULL THEN + SET loc_glpi_users_id = 2 ; + END IF ; + END IF; + SELECT id INTO loc_task_cat_id FROM glpi.glpi_taskcategories WHERE name=APP_PRO_TITLE LIMIT 1; + IF loc_task_cat_id IS NULL THEN + SET loc_task_cat_id=0 ; + END IF ; + + SET locDate = Now() ; + INSERT INTO glpi.glpi_tickettasks + ( `tickets_id`, `taskcategories_id`, `date`, `users_id`, `content`, `is_private`, `actiontime`, `begin`, `end`, `state`, `users_id_tech`) + VALUES ( loc_Ticket_id, + loc_task_cat_id, + locDate, + 1, + CONCAT( 'Bound to process: ', APP_PRO_TITLE, ',
case title: ', APP_TITLE, ',
task: ', APP_TAS_TITLE,'.
Go to Case tab to manage!' ), + 0, + 0, + NEW.DEL_DELEGATE_DATE, + NEW.DEL_TASK_DUE_DATE, + 1, + loc_glpi_users_id); + + SET loc_task_id = LAST_INSERT_ID(); + INSERT INTO glpi.glpi_plugin_processmaker_tasks (`tickettasks_id`, `case_id`, `del_index`) VALUES (loc_task_id, NEW.APP_UID, NEW.DEL_INDEX ); + + REPLACE INTO glpi.glpi_plugin_processmaker_tasksnotifications (`date`, `task_id`, `user_id`, `tech_id`, `action`) VALUES ( locDate, loc_task_id, 1, loc_glpi_users_id, 'INSERT'); + + END IF; +END ; + + +CREATE DEFINER=CURRENT_USER TRIGGER `GLPI_APP_DELEGATION_UPDATE` AFTER UPDATE ON `app_delegation` FOR EACH ROW BEGIN + + DECLARE loc_tickettasks_id, loc_Count_Task INT(11) ; + DECLARE loc_glpi_users_id INT(11) ; + + SELECT glpi_pm_tasks.tickettasks_id INTO loc_tickettasks_id FROM glpi.glpi_plugin_processmaker_tasks as glpi_pm_tasks WHERE glpi_pm_tasks.case_id=NEW.APP_UID AND glpi_pm_tasks.del_index=NEW.DEL_INDEX ; + IF loc_tickettasks_id IS NOT NULL THEN + SELECT glpi_users_id INTO loc_glpi_users_id FROM glpi.glpi_plugin_processmaker_users WHERE pm_users_id=NEW.USR_UID LIMIT 1; + IF loc_glpi_users_id IS NULL THEN + SET loc_glpi_users_id = 2 ; + END IF ; + + IF NEW.DEL_THREAD_STATUS = 'CLOSED' THEN + UPDATE glpi.glpi_tickettasks + SET state=2, + `begin`=NEW.DEL_INIT_DATE, + `end`=NEW.DEL_FINISH_DATE, + `actiontime`= IFNULL(TIMESTAMPDIFF(SECOND,NEW.DEL_INIT_DATE,NEW.DEL_FINISH_DATE),0) + WHERE id=loc_tickettasks_id ; + ELSE + UPDATE glpi.glpi_tickettasks + SET users_id_tech=loc_glpi_users_id + WHERE id=loc_tickettasks_id ; + END IF ; + + REPLACE INTO glpi.glpi_plugin_processmaker_tasksnotifications (`date`, `task_id`, `user_id`, `tech_id`, `action`) VALUES ( Now(), loc_tickettasks_id, 1, loc_glpi_users_id, 'UPDATE'); + + END IF; + +END ; + +UPDATE glpi.glpi_plugin_processmaker_cases INNER JOIN wf_workflow.application on wf_workflow.application.APP_UID=glpi.glpi_plugin_processmaker_cases.case_id + SET glpi.glpi_plugin_processmaker_cases.case_status=wf_workflow.application.APP_STATUS ; + + diff --git a/config/pm_db_install.sql b/config/pm_db_install.sql new file mode 100644 index 0000000..0e7fadb --- /dev/null +++ b/config/pm_db_install.sql @@ -0,0 +1,203 @@ + + +DROP TRIGGER IF EXISTS `GLPI_APPLICATION_DELETE` ; +DROP TRIGGER IF EXISTS `GLPI_APP_DELAY_INSERT` ; +DROP TRIGGER IF EXISTS `GLPI_APP_DELAY_UPDATE` ; +DROP TRIGGER IF EXISTS `GLPI_APP_DELEGATION_INSERT` ; +DROP TRIGGER IF EXISTS `GLPI_APP_DELEGATION_UPDATE` ; +DROP TRIGGER IF EXISTS `GLPI_APP_DELEGATION_DELETE` ; + + + +CREATE DEFINER=CURRENT_USER TRIGGER `GLPI_APPLICATION_DELETE` AFTER DELETE ON `application` FOR EACH ROW BEGIN + DECLARE loc_Ticket_id INT(11) ; + SELECT ticket_id INTO loc_Ticket_id FROM glpi.glpi_plugin_processmaker_ticketcase WHERE case_id=OLD.APP_UID; + IF loc_Ticket_id IS NOT NULL THEN + DELETE FROM glpi.glpi_plugin_processmaker_ticketcase WHERE case_id=OLD.APP_UID ; + END IF; +END ; + +CREATE DEFINER=CURRENT_USER TRIGGER `GLPI_APP_DELAY_INSERT` AFTER INSERT ON `app_delay` FOR EACH ROW BEGIN +DECLARE loc_task_id, loc_task_cat_id, loc_Ticket_id, loc_Found_Pos, loc_glpi_users_id, loc_Count_Ticket INT(11) ; + DECLARE APP_TITLE, APP_PRO_TITLE, APP_TAS_TITLE VARCHAR(255); + DECLARE loc_pm_user_id VARCHAR(32) ; + DECLARE locDate DATETIME ; + + IF NEW.APP_TYPE = 'PAUSE' THEN + + SELECT ticket_id INTO loc_Ticket_id FROM glpi.glpi_plugin_processmaker_ticketcase WHERE case_id=NEW.APP_UID; + + IF loc_Ticket_id IS NOT NULL THEN + + SELECT CONTENT.CON_VALUE into APP_TITLE FROM CONTENT WHERE NEW.APP_UID=CON_ID AND CON_CATEGORY='APP_TITLE' and CON_LANG = 'en' LIMIT 1; + IF APP_TITLE IS NULL THEN + SET APP_TITLE = ''; + END IF; + SELECT CONTENT.CON_VALUE into APP_PRO_TITLE FROM CONTENT WHERE NEW.PRO_UID=CON_ID AND CON_CATEGORY='PRO_TITLE' and CON_LANG = 'en' LIMIT 1; + SET APP_TAS_TITLE = 'Task is paused'; + + SELECT glpi_users_id INTO loc_glpi_users_id FROM glpi.glpi_plugin_processmaker_users WHERE pm_users_id=NEW.APP_DELEGATION_USER LIMIT 1; + IF loc_glpi_users_id IS NULL THEN + SET loc_glpi_users_id = 2 ; + END IF ; + + SELECT id INTO loc_task_cat_id FROM glpi.glpi_taskcategories WHERE name=APP_PRO_TITLE; + IF loc_task_cat_id IS NULL THEN + SET loc_task_cat_id=0 ; + END IF ; + + SET locDate = Now() ; + INSERT INTO glpi.glpi_tickettasks + ( `tickets_id`, `taskcategories_id`, `date`, `users_id`, `content`, `is_private`, `actiontime`, `begin`, `end`, `state`, `users_id_tech`) + VALUES ( loc_Ticket_id, + loc_task_cat_id, + locDate, + 1, + CONCAT( 'Bound to process: ', APP_PRO_TITLE, ',
case title: ', APP_TITLE, ',
task: ', APP_TAS_TITLE,'.
Go to Case tab to manage!' ), + 0, + 0, + NEW.APP_ENABLE_ACTION_DATE, + NEW.APP_DISABLE_ACTION_DATE, + 1, + loc_glpi_users_id); + + SET loc_task_id = LAST_INSERT_ID(); + INSERT INTO glpi.glpi_plugin_processmaker_tasks (`tickettasks_id`, `case_id`, `del_index`) VALUES (loc_task_id, NEW.APP_DELAY_UID, 0 ); + + REPLACE INTO glpi.glpi_plugin_processmaker_tasksnotifications (`date`, `task_id`, `user_id`, `tech_id`, `action`) VALUES ( locDate, loc_task_id, 1, loc_glpi_users_id, 'INSERT'); + + END IF; + END IF; +END ; + + +CREATE DEFINER=CURRENT_USER TRIGGER `GLPI_APP_DELAY_UPDATE` AFTER UPDATE ON `app_delay` FOR EACH ROW BEGIN + + DECLARE loc_tickettasks_id, loc_Count_Task INT(11) ; + DECLARE loc_glpi_users_id INT(11) ; + + SELECT glpi_pm_tasks.tickettasks_id INTO loc_tickettasks_id FROM glpi.glpi_plugin_processmaker_tasks as glpi_pm_tasks WHERE glpi_pm_tasks.case_id=NEW.APP_DELAY_UID ; + IF loc_tickettasks_id IS NOT NULL THEN + SELECT glpi_users_id INTO loc_glpi_users_id FROM glpi.glpi_plugin_processmaker_users WHERE pm_users_id=NEW.APP_DISABLE_ACTION_USER LIMIT 1; + IF loc_glpi_users_id IS NULL THEN + SET loc_glpi_users_id = 2 ; + END IF ; + + IF NEW.APP_DISABLE_ACTION_DATE IS NOT NULL THEN + UPDATE glpi.glpi_tickettasks + SET state=2, + `end`=NEW.APP_DISABLE_ACTION_DATE + WHERE id=loc_tickettasks_id ; + END IF ; + + REPLACE INTO glpi.glpi_plugin_processmaker_tasksnotifications (`date`, `task_id`, `user_id`, `tech_id`, `action`) VALUES ( Now(), loc_tickettasks_id, 1, loc_glpi_users_id, 'UPDATE'); + + END IF; + +END ; + + +CREATE DEFINER=CURRENT_USER TRIGGER `GLPI_APP_DELEGATION_DELETE` AFTER DELETE ON `app_delegation` FOR EACH ROW BEGIN + + DECLARE loc_Ticket_id, loc_tickettask_id INT(11) ; + + SELECT glpi_pm_tcase.ticket_id INTO loc_Ticket_id FROM glpi.glpi_plugin_processmaker_ticketcase as glpi_pm_tcase WHERE glpi_pm_tcase.case_id=OLD.APP_UID; + IF loc_Ticket_id IS NOT NULL THEN + SELECT glpi_pm_tasks.tickettasks_id INTO loc_tickettask_id FROM glpi.glpi_plugin_processmaker_tasks as glpi_pm_tasks WHERE glpi_pm_tasks.case_id=OLD.APP_UID AND glpi_pm_tasks.del_index=OLD.DEL_INDEX LIMIT 1; + DELETE FROM glpi.glpi_plugin_processmaker_tasks WHERE tickettasks_id = loc_tickettask_id ; + DELETE FROM glpi.glpi_tickettasks WHERE id = loc_tickettask_id ; + END IF; + +END ; + + +CREATE DEFINER=CURRENT_USER TRIGGER `GLPI_APP_DELEGATION_INSERT` AFTER INSERT ON `app_delegation` FOR EACH ROW BEGIN + DECLARE loc_task_id, loc_task_cat_id, loc_Ticket_id, loc_Found_Pos, loc_glpi_users_id, loc_Count_Ticket INT(11) ; + DECLARE APP_TITLE, APP_PRO_TITLE, APP_TAS_TITLE VARCHAR(255); + DECLARE locDate DATETIME ; + /*DECLARE loc_pm_user_id VARCHAR(32) ;*/ + + SELECT ticket_id INTO loc_Ticket_id FROM glpi.glpi_plugin_processmaker_ticketcase WHERE case_id=NEW.APP_UID; + + IF loc_Ticket_id IS NOT NULL THEN + + SELECT CONTENT.CON_VALUE into APP_TITLE FROM CONTENT WHERE NEW.APP_UID=CON_ID AND CON_CATEGORY='APP_TITLE' and CON_LANG = 'en' LIMIT 1; + IF APP_TITLE IS NULL THEN + SET APP_TITLE = ''; + END IF; + SELECT CONTENT.CON_VALUE into APP_PRO_TITLE FROM CONTENT WHERE NEW.PRO_UID=CON_ID AND CON_CATEGORY='PRO_TITLE' and CON_LANG = 'en' LIMIT 1; + SELECT CONTENT.CON_VALUE into APP_TAS_TITLE FROM CONTENT WHERE NEW.TAS_UID=CON_ID AND CON_CATEGORY='TAS_TITLE' and CON_LANG = 'en' LIMIT 1; + + + SELECT glpi_users_id INTO loc_glpi_users_id FROM glpi.glpi_plugin_processmaker_users WHERE pm_users_id=NEW.USR_UID LIMIT 1; + IF loc_glpi_users_id IS NULL THEN + /* we must find a user linked to a group */ /* task is NEW.TAS_UID */ + select glpi.glpi_users.id INTO loc_glpi_users_id from task_user + join content on content.CON_ID=task_user.USR_UID and content.CON_CATEGORY='GRP_TITLE' and CON_LANG = 'en' + join glpi.glpi_users on glpi.glpi_users.name=content.CON_VALUE COLLATE utf8_unicode_ci + where tas_uid=NEW.TAS_UID and tu_relation=2 LIMIT 1; + IF loc_glpi_users_id IS NULL THEN + SET loc_glpi_users_id = 2 ; + END IF ; + END IF; + SELECT id INTO loc_task_cat_id FROM glpi.glpi_taskcategories WHERE name=APP_PRO_TITLE LIMIT 1; + IF loc_task_cat_id IS NULL THEN + SET loc_task_cat_id=0 ; + END IF ; + + SET locDate = Now() ; + INSERT INTO glpi.glpi_tickettasks + ( `tickets_id`, `taskcategories_id`, `date`, `users_id`, `content`, `is_private`, `actiontime`, `begin`, `end`, `state`, `users_id_tech`) + VALUES ( loc_Ticket_id, + loc_task_cat_id, + locDate, + 1, + CONCAT( 'Bound to process: ', APP_PRO_TITLE, ',
case title: ', APP_TITLE, ',
task: ', APP_TAS_TITLE,'.
Go to Case tab to manage!' ), + 0, + 0, + NEW.DEL_DELEGATE_DATE, + NEW.DEL_TASK_DUE_DATE, + 1, + loc_glpi_users_id); + + SET loc_task_id = LAST_INSERT_ID(); + INSERT INTO glpi.glpi_plugin_processmaker_tasks (`tickettasks_id`, `case_id`, `del_index`) VALUES (loc_task_id, NEW.APP_UID, NEW.DEL_INDEX ); + + REPLACE INTO glpi.glpi_plugin_processmaker_tasksnotifications (`date`, `task_id`, `user_id`, `tech_id`, `action`) VALUES ( locDate, loc_task_id, 1, loc_glpi_users_id, 'INSERT'); + + END IF; +END ; + + +CREATE DEFINER=CURRENT_USER TRIGGER `GLPI_APP_DELEGATION_UPDATE` AFTER UPDATE ON `app_delegation` FOR EACH ROW BEGIN + + DECLARE loc_tickettasks_id, loc_Count_Task INT(11) ; + DECLARE loc_glpi_users_id INT(11) ; + + SELECT glpi_pm_tasks.tickettasks_id INTO loc_tickettasks_id FROM glpi.glpi_plugin_processmaker_tasks as glpi_pm_tasks WHERE glpi_pm_tasks.case_id=NEW.APP_UID AND glpi_pm_tasks.del_index=NEW.DEL_INDEX ; + IF loc_tickettasks_id IS NOT NULL THEN + SELECT glpi_users_id INTO loc_glpi_users_id FROM glpi.glpi_plugin_processmaker_users WHERE pm_users_id=NEW.USR_UID LIMIT 1; + IF loc_glpi_users_id IS NULL THEN + SET loc_glpi_users_id = 2 ; + END IF ; + + IF NEW.DEL_THREAD_STATUS = 'CLOSED' THEN + UPDATE glpi.glpi_tickettasks + SET state=2, + `begin`=NEW.DEL_INIT_DATE, + `end`=NEW.DEL_FINISH_DATE, + `actiontime`= IFNULL(TIMESTAMPDIFF(SECOND,NEW.DEL_INIT_DATE,NEW.DEL_FINISH_DATE),0) + WHERE id=loc_tickettasks_id ; + ELSE + UPDATE glpi.glpi_tickettasks + SET users_id_tech=loc_glpi_users_id + WHERE id=loc_tickettasks_id ; + END IF ; + + REPLACE INTO glpi.glpi_plugin_processmaker_tasksnotifications (`date`, `task_id`, `user_id`, `tech_id`, `action`) VALUES ( Now(), loc_tickettasks_id, 1, loc_glpi_users_id, 'UPDATE'); + + END IF; + +END ; + + diff --git a/config/pm_db_uninstall.mysql b/config/pm_db_uninstall.mysql new file mode 100644 index 0000000..aaaf23e --- /dev/null +++ b/config/pm_db_uninstall.mysql @@ -0,0 +1,7 @@ +DROP TRIGGER IF EXISTS `GLPI_APPLICATION_DELETE` ; +DROP TRIGGER IF EXISTS `GLPI_APPLICATION_UPDATE` ; +DROP TRIGGER IF EXISTS `GLPI_APP_DELAY_INSERT` ; +DROP TRIGGER IF EXISTS `GLPI_APP_DELAY_UPDATE` ; +DROP TRIGGER IF EXISTS `GLPI_APP_DELEGATION_INSERT` ; +DROP TRIGGER IF EXISTS `GLPI_APP_DELEGATION_UPDATE` ; +DROP TRIGGER IF EXISTS `GLPI_APP_DELEGATION_DELETE` ; diff --git a/config/pm_db_uninstall.sql b/config/pm_db_uninstall.sql new file mode 100644 index 0000000..558f5e8 --- /dev/null +++ b/config/pm_db_uninstall.sql @@ -0,0 +1,6 @@ +DROP TRIGGER IF EXISTS `GLPI_APPLICATION_DELETE` ; +DROP TRIGGER IF EXISTS `GLPI_APP_DELAY_INSERT` ; +DROP TRIGGER IF EXISTS `GLPI_APP_DELAY_UPDATE` ; +DROP TRIGGER IF EXISTS `GLPI_APP_DELEGATION_INSERT` ; +DROP TRIGGER IF EXISTS `GLPI_APP_DELEGATION_UPDATE` ; +DROP TRIGGER IF EXISTS `GLPI_APP_DELEGATION_DELETE` ; diff --git a/front/cases.front.php b/front/cases.front.php new file mode 100644 index 0000000..bf066c7 --- /dev/null +++ b/front/cases.front.php @@ -0,0 +1,86 @@ +getFromDB( $_REQUEST['APP_UID'] ) ) { + $myProcessMaker = new PluginProcessmakerProcessmaker() ; + $myProcessMaker->login( ) ; + + if( isset( $_REQUEST['form'] ) ) { + // save the case variables + //$resultSave = $myProcessMaker->sendVariables( $myCase->getID() , $_REQUEST['form'] ) ; + $resultSave = $myProcessMaker->saveForm( $_REQUEST, $_SERVER['HTTP_COOKIE'] ) ; + //$myCase->sendVariables( $_REQUEST['form'] ) ; + + // now derivate the case !!! + $pmRouteCaseResponse = $myProcessMaker->routeCase( $myCase->getID(), $_REQUEST['DEL_INDEX']) ; + + // now tries to get some variables to setup content for new task and to append text to solved task + $txtForTasks = $myProcessMaker->getVariables( $myCase->getID(), array( "GLPI_ITEM_TASK_CONTENT", "GLPI_ITEM_APPEND_TO_TASK", "GLPI_NEXT_GROUP_TO_BE_ASSIGNED" ) ); + if( array_key_exists( 'GLPI_ITEM_APPEND_TO_TASK', $txtForTasks ) ) + $txtToAppendToTask = $txtForTasks[ 'GLPI_ITEM_APPEND_TO_TASK' ] ; + else + $txtToAppendToTask = '' ; + if( array_key_exists( 'GLPI_ITEM_TASK_CONTENT', $txtForTasks ) ) + $txtTaskContent = $txtForTasks[ 'GLPI_ITEM_TASK_CONTENT' ] ; + else + $txtTaskContent = '' ; + if( array_key_exists( 'GLPI_NEXT_GROUP_TO_BE_ASSIGNED', $txtForTasks ) ) + $groupId = $txtForTasks[ 'GLPI_NEXT_GROUP_TO_BE_ASSIGNED' ] ; + else + $groupId = 0 ; + + // reset those variables + $resultSave = $myProcessMaker->sendVariables( $myCase->getID() , array( "GLPI_ITEM_APPEND_TO_TASK" => '', 'GLPI_ITEM_TASK_CONTENT' => '', 'GLPI_NEXT_GROUP_TO_BE_ASSIGNED' => '' ) ) ; + + // print_r( $pmRouteCaseResponse ) ; + // die() ; + + // now manage tasks associated with item + $itemType = $myCase->getField('itemtype'); + $itemId = $myCase->getField('items_id'); + + // switch own task to 'done' and create a new one + $myProcessMaker->solveTask( $myCase->getID(), $_REQUEST['DEL_INDEX'], $txtToAppendToTask ) ; + $caseInfo = $myProcessMaker->getCaseInfo( $myCase->getID(), $_REQUEST['DEL_INDEX']) ; + if( property_exists( $pmRouteCaseResponse, 'routing' ) ) { + foreach( $pmRouteCaseResponse->routing as $route ) { + $myProcessMaker->addTask( $itemType, $itemId, $caseInfo, $route->delIndex, PluginProcessmakerProcessmaker::getGLPIUserId( $route->userId ), $groupId, $route->taskId, $txtTaskContent ) ; + } + } + + // evolution of case status: DRAFT, TO_DO, COMPLETED, CANCELLED + $myCase->update( array( 'id' => $myCase->getID(), 'case_status' => $caseInfo->caseStatus ) ) ; + + } + } +} +// Claim task management +elseif( isset( $_REQUEST['form'] ) && isset( $_REQUEST['form']['BTN_CATCH'] ) && isset( $_REQUEST['form']['APP_UID']) ){ + // here we are in a Claim request + $myCase = new PluginProcessmakerCases ; + if( $myCase->getFromDB( $_REQUEST['form']['APP_UID'] ) ) { + $myProcessMaker = new PluginProcessmakerProcessmaker() ; + $myProcessMaker->login( ) ; + + $pmClaimCase = $myProcessMaker->claimCase( $myCase->getID(), $_REQUEST['DEL_INDEX'] ) ; + + // now manage tasks associated with item + $myProcessMaker->claimTask( $myCase->getID(), $_REQUEST['DEL_INDEX'] ) ; + } + +} + +// now redirect to item form page +//Html::redirect( Toolbox::getItemTypeFormURL($myCase->getField('itemtype'))); +echo "" ; + + +?> \ No newline at end of file diff --git a/front/config.form.php b/front/config.form.php new file mode 100644 index 0000000..46f3925 --- /dev/null +++ b/front/config.form.php @@ -0,0 +1,23 @@ +check($_POST['id'],'w'); + + $config->update($_POST); + + Html::back(); +} elseif (isset($_POST["refresh"])) { + $config->refresh($_POST); // used to refresh process list, task category list + Html::back(); +} +Html::redirect($CFG_GLPI["root_doc"]."/front/config.form.php?forcetab=". + urlencode('PluginProcessmakerConfig$1')); diff --git a/front/process.form.php b/front/process.form.php new file mode 100644 index 0000000..4e4d7a7 --- /dev/null +++ b/front/process.form.php @@ -0,0 +1,33 @@ +check($_REQUEST['id'], 'w'); + $PluginProcess->update($_REQUEST); + Html::back(); + +} elseif (isset($_REQUEST["refreshtask"])) { + $PluginProcess->check($_REQUEST['id'], 'w'); + $PluginProcess->refreshTasks($_REQUEST); + Html::back(); + +} else { + $PluginProcess->checkGlobal('r'); + + Html::header($LANG['processmaker']['title'][1],$_SERVER["PHP_SELF"],"plugins","processmaker"); + + $PluginProcess->showForm($_REQUEST["id"]); + + Html::footer(); +} +?> \ No newline at end of file diff --git a/front/process.php b/front/process.php new file mode 100644 index 0000000..2f5dccb --- /dev/null +++ b/front/process.php @@ -0,0 +1,25 @@ +refresh(); + Html::back(); + } + + $process->title(); + + Search::show('PluginProcessmakerProcess'); + +} else { + Html::displayRightError(); +} +Html::footer(); + +?> \ No newline at end of file diff --git a/front/process_profile.form.php b/front/process_profile.form.php new file mode 100644 index 0000000..e656e03 --- /dev/null +++ b/front/process_profile.form.php @@ -0,0 +1,42 @@ +check(-1,'w',$_POST); + if ($right->add($_POST)) { + //Event::log($_POST["processes_id"], "PluginProcessMakerProcess", 4, "setup", + // $_SESSION["glpiname"]." ".$LANG['log'][61]); + } + Html::back(); + +} else if (isset($_POST["delete"])) { + + if (isset($_POST["item"]) && count($_POST["item"])) { + foreach ($_POST["item"] as $key => $val) { + if ($val == 1) { + if ($right->can($key,'w')) { + $right->delete(array('id' => $key)); + } + } + } + //if (isset($_POST["processes_id"])) { + // Event::log($_POST["processes_id"], "users", 4, "setup", + // $_SESSION["glpiname"]." ".$LANG['log'][62]); + // } + } + Html::back(); + +} + + +Html::displayErrorAndDie("lost"); +?> \ No newline at end of file diff --git a/front/processmaker.form.php b/front/processmaker.form.php new file mode 100644 index 0000000..55df0a9 --- /dev/null +++ b/front/processmaker.form.php @@ -0,0 +1,201 @@ + 0 ) { // then this case will be bound to an item + // we must check if a case is not already existing + // to manage the problem of F5 (Refresh) + $hasCase = PluginProcessmakerProcessmaker::getCaseIdFromItem( $_POST['itemtype'], $_POST['id'] ) ; + if( $hasCase === false && $_POST['plugin_processmaker_process_id'] > 0 ) { //$DB->numrows($res) == 0) { + $myProcessMaker = new PluginProcessmakerProcessmaker() ; + $myProcessMaker->login() ; //openSession(); + + $requesters = PluginProcessmakerProcessmaker::getItemUsers( $_POST['itemtype'], $_POST['id'], 1 ) ; // 1 for requesters + if( !key_exists( 0, $requesters ) ) { + $requesters[0]['glpi_id'] = 0 ; + $requesters[0]['pm_id'] = 0 ; + } + + //$technicians = PluginProcessmakerProcessmaker::getItemUsers( $_POST['itemtype'], $_POST['id'], 2 ) ; // 2 for technicians + //if( !key_exists( 0, $technicians ) ) { + // $technicians[0]['glpi_id'] = Session::getLoginUserID() ; + // $technicians[0]['pm_id'] = PluginProcessmakerProcessmaker::getPMUserId( Session::getLoginUserID() ) ; + //} + + // get item info to retreive title, description and duedate + $locTicket = new $_POST['itemtype'] ; //Ticket(); + $locTicket->getFromDB( $_POST['id'] ) ; + + if($locTicket->countUsers($locTicket::ASSIGN) == 0 + || !$locTicket->isUser($locTicket::ASSIGN, Session::getLoginUserID()) ){ + $locTicket->update( array( 'id' => $_POST['id'], '_itil_assign' => array( '_type' => 'user', 'users_id' => Session::getLoginUserID() ) ) ) ; + } + + //$writer = PluginProcessmakerProcessmaker::getPMUserId( Session::getLoginUserID() ); + if( !isset($locTicket->fields['due_date']) || $locTicket->fields['due_date'] == null ) { + $locTicket->fields['due_date'] = ""; + } + + $resultCase = $myProcessMaker->newCase( $_POST['plugin_processmaker_process_id'], + array( 'GLPI_ITEM_CAN_BE_SOLVED' => 0, + 'GLPI_TICKET_ID' => $_POST['id'], + 'GLPI_ITEM_TYPE' => $_POST['itemtype'], + 'GLPI_TICKET_REQUESTER_GLPI_ID' => $requesters[0]['glpi_id'], + 'GLPI_TICKET_REQUESTER_PM_ID' => $requesters[0]['pm_id'], + 'GLPI_TICKET_TITLE' => $locTicket->fields['name'], + 'GLPI_TICKET_DESCRIPTION' => $locTicket->fields['content'], + 'GLPI_TICKET_DUE_DATE' => $locTicket->fields['due_date'], + 'GLPI_TICKET_URGENCY' => $locTicket->fields['urgency'], + 'GLPI_ITEM_IMPACT' => $locTicket->fields['impact'], + 'GLPI_ITEM_PRIORITY' => $locTicket->fields['priority'], + 'GLPI_TICKET_GLOBAL_VALIDATION' => $locTicket->fields['global_validation'] , + 'GLPI_TICKET_TECHNICIAN_GLPI_ID' => Session::getLoginUserID(), //$technicians[0]['glpi_id'], + 'GLPI_TICKET_TECHNICIAN_PM_ID' => PluginProcessmakerProcessmaker::getPMUserId( Session::getLoginUserID() ) //$technicians[0]['pm_id'] + ) ) ; + + if ($resultCase->status_code == 0){ + $caseInfo = $myProcessMaker->getCaseInfo( $resultCase->caseId ); + + //$query = "UPDATE APPLICATION SET APP_STATUS='TO_DO' WHERE APP_UID='".$resultCase->caseId."' AND APP_STATUS='DRAFT'" ; + //$res = $DB->query($query) ; + // save info to DB + $query = "INSERT INTO glpi_plugin_processmaker_cases (items_id, itemtype, id, case_num, case_status, processes_id) VALUES (".$_POST['id'].", '".$_POST['itemtype']."', '".$resultCase->caseId."', ".$resultCase->caseNumber.", '".$caseInfo->caseStatus."', '".$caseInfo->processId."');" ; + $res = $DB->query($query) ; + + $myProcessMaker->add1stTask($_POST['itemtype'], $_POST['id'], $caseInfo ) ; + + //echo "New case ID: $result->caseId, Case No: $result->caseNumber \n"; + Html::back(); + } + else + Session::addMessageAfterRedirect($LANG['processmaker']['item']['error'][$resultCase->status_code]."
$resultCase->message ($resultCase->status_code)", true, ERROR); //echo "Error creating case: $resultCase->message \n"; + } else + Html::back(); + } + else { // the case is created before the ticket (used for user management before ticket creation) + // list of requesters is needed + // so read ticket + //$requesters = array( ) ; + + + //foreach( $DB->request( $query ) as $dbuser ) { + // $requesters[] = $dbuser['pm_users_id'] ; + //} + //$writer = PluginProcessmakerProcessmaker::getPMUserId( Session::getLoginUserID() ); + //$userGLPI = new User(); + //$userGLPI->getFromDB( Session::getLoginUserID() ) ; + //if( $userGLPI->fields['language'] != null ) + // $lang = substr( $userGLPI->fields['language'], 0, 2) ; + //else + // $lang = "en" ; + $myProcessMaker = new PluginProcessmakerProcessmaker() ; + $myProcessMaker->login() ; //openSession( $userGLPI->fields['name'], "md5:37d442efb43ebb80ec6f9649b375ab72", $lang) ; + + //$resultCase = $myProcessMaker->newCaseImpersonate( $_POST['plugin_processmaker_process_id'], $writer) ; + $resultCase = $myProcessMaker->newCase( $_POST['plugin_processmaker_process_id'], array( 'GLPI_ITEM_CAN_BE_SOLVED' => 0 ) ) ; + if ($resultCase->status_code == 0){ + // case is created + // Must show it... + // + $rand = rand( ) ; + Html::redirect($CFG_GLPI['root_doc']."/plugins/processmaker/front/processmaker.helpdesk.form.php?process_id=".$_POST['plugin_processmaker_process_id']."&case_id=".$resultCase->caseId."&rand=$rand&itilcategories_id=".$_POST["itilcategories_id"]."&type=".$_REQUEST["type"]); + + } else { + //Html::helpHeader($LANG['job'][13], $_SERVER['PHP_SELF'], $_SESSION["glpiname"]); + //// case is not created show error message + //echo "Error : ".$resultCase->status_code."
" ; + //echo $resultCase->message."
" ; + //Html::helpFooter(); + Session::addMessageAfterRedirect($LANG['processmaker']['item']['error'][$resultCase->status_code]."
$resultCase->message ($resultCase->status_code)", true, ERROR); //echo "Error creating case: $resultCase->message \n"; + Html::redirect($CFG_GLPI["root_doc"]."/front/helpdesk.public.php?create_ticket=1"); + } + + } + break; + + case 'unpausecase_or_reassign_or_delete' : + if( isset( $_POST['unpause'] ) ) { + $myProcessMaker = new PluginProcessmakerProcessmaker() ; + $myProcessMaker->login() ; //openSession(); + $pmResultUnpause = $myProcessMaker->unpauseCase( $_POST['plugin_processmaker_caseId'], $_POST['plugin_processmaker_delIndex'], $_POST['plugin_processmaker_userId'] ) ; + if ($pmResultUnpause->status_code == 0){ + Html::back(); + } + else + echo "Error unpausing case: ".$pmResultUnpause->message." \n"; + } + else if( isset( $_POST['reassign'] ) ) { + // here we should re-assign the current task to $_POST['users_id_recipient'] + $GLPINewPMUserId = PluginProcessmakerProcessmaker::getPMUserId( $_POST['users_id_recipient'] ) ; + if( $_POST['plugin_processmaker_userId'] != $GLPINewPMUserId ) { + $locPM = new PluginProcessmakerProcessmaker() ; + $locPM->login( ) ; + + $pmResponse = $locPM->reassignCase( $_POST['plugin_processmaker_caseId'], $_POST['plugin_processmaker_delIndex'], $_POST['plugin_processmaker_userId'], $GLPINewPMUserId ) ; + if ($pmResponse->status_code == 0){ + // we need to change the delindex of the glpi task and the assigned tech to prevent creation of new tasks + // we need the delindex of the current glpi task, and the delindex of the new one + // search for new delindex + $newCaseInfo = $locPM->getCaseInfo( $_POST['plugin_processmaker_caseId'] ) ; + $newDelIndex = 0 ; + foreach( $newCaseInfo->currentUsers as $newCaseUser ){ + if( $newCaseUser->taskId == $_POST['plugin_processmaker_taskId'] && $newCaseUser->delThread == $_POST['plugin_processmaker_delThread'] ) { + $newDelIndex = $newCaseUser->delIndex ; + break ; + } + } + $locPM->reassignTask( $_POST['plugin_processmaker_caseId'], $_POST['plugin_processmaker_delIndex'], $newDelIndex, $_POST['users_id_recipient'] ) ; + Session::addMessageAfterRedirect($LANG['processmaker']['item']['case']['reassigned'], true, INFO); + // Html::back(); + } + else + Session::addMessageAfterRedirect($LANG['processmaker']['item']['case']['notreassigned'].$pmResponse->message, true, ERROR); + } else + Session::addMessageAfterRedirect($LANG['processmaker']['item']['case']['assignedtoyou'], true, ERROR); // Html::back(); + } + else if( isset($_POST['delete']) ) { + // delete case from case table, this will also delete the tasks + $locCase = new PluginProcessmakerCases ; + $locCase->getFromDB( $_POST['plugin_processmaker_caseId'] ) ; + if( $locCase->deleteCase() ) { + // request delete from pm itself + $myProcessMaker = new PluginProcessmakerProcessmaker() ; + $myProcessMaker->login() ; + $resultPM = $myProcessMaker->deleteCase( $_POST['plugin_processmaker_caseId'] ) ; + + if( $resultPM->status_code == 0 ) { + Session::addMessageAfterRedirect($LANG['processmaker']['item']['case']['deleted'], true, INFO); + } else + Session::addMessageAfterRedirect($LANG['processmaker']['item']['case']['errordeleted'], true, ERROR); + } else + Session::addMessageAfterRedirect($LANG['processmaker']['item']['case']['errordeleted'], true, ERROR); + } + else if( isset($_POST['cancel']) ) { + // cancel case from PM + $myProcessMaker = new PluginProcessmakerProcessmaker() ; + $myProcessMaker->login() ; + $resultPM = $myProcessMaker->cancelCase( $_POST['plugin_processmaker_caseId'] ) ; //, $_POST['plugin_processmaker_delIndex'], $_POST['plugin_processmaker_userId'] ) ; + if( $resultPM->status_code === 0 ) { + $locCase = new PluginProcessmakerCases ; + $locCase->getFromDB( $_POST['plugin_processmaker_caseId'] ) ; + if( $locCase->cancelCase() ) + Session::addMessageAfterRedirect($LANG['processmaker']['item']['case']['cancelled'], true, INFO); + else + Session::addMessageAfterRedirect($LANG['processmaker']['item']['case']['errorcancelled'], true, ERROR); + } else + Session::addMessageAfterRedirect($LANG['processmaker']['item']['case']['errorcancelled'], true, ERROR); + } + + break; + +} + +// to return to ticket +Html::back(); + +?> \ No newline at end of file diff --git a/front/processmaker.helpdesk.form.php b/front/processmaker.helpdesk.form.php new file mode 100644 index 0000000..7c4a5ec --- /dev/null +++ b/front/processmaker.helpdesk.form.php @@ -0,0 +1,509 @@ +"; + echo "
"; + echo ""; + + + echo ""; + + echo "
".$LANG['processmaker']['item']['tab']."
"; + echo $LANG['processmaker']['item']['selectprocess']." "; + echo ""; + echo ""; + echo ""; +// Dropdown::show('PluginProcessmakerProcessmaker', array( 'name' => 'plugin_processmaker_process_id', 'condition' => "is_active=1 and is_helpdeskvisible=1")); // condition is used to prevent start of none-active and none-helpdesk-visible cases + PluginProcessmakerProcess::dropdown( array( 'entity' => $_SESSION['glpiactive_entity'], 'name' => 'plugin_processmaker_process_id' )); + echo ""; + echo ""; + echo "
"; + Html::closeForm(); +} + + +/** +* Print the helpdesk form +* +* @param $ID int : ID of the user who want to display the Helpdesk +* @param $ticket_template int : ID ticket template for preview : false if not used for preview +* +* @return nothing (print the helpdesk) +**/ +function showFormHelpdesk($ID, $pmItem, $caseInfo, $ticket_template=false) { + global $DB, $CFG_GLPI, $LANG; + + if (!Session::haveRight("create_ticket","1")) { + return false; + } + + $query = "SELECT `realname`, `firstname`, `name` + FROM `glpi_users` + WHERE `id` = '$ID'"; + $result = $DB->query($query); + + + $email = UserEmail::getDefaultForUser($ID); + + + // Set default values... + $default_values = array('_users_id_requester_notif' => array('use_notification' => ($email==""?0:1), + 'alternative_email' => ''), + 'nodelegate' => 1, + '_users_id_requester' => 0, + 'name' => '', + 'content' => '', + 'itilcategories_id' => 0, + 'urgency' => 3, + 'itemtype' => '', + 'entities_id' => $_SESSION['glpiactive_entity'], + 'items_id' => 0, + 'plan' => array(), + 'global_validation' => 'none', + 'due_date' => 'NULL', + 'slas_id' => 0, + '_add_validation' => 0, + 'type' => EntityData::getUsedConfig('tickettype', + $_SESSION['glpiactive_entity'], + '', Ticket::INCIDENT_TYPE), + '_right' => "id"); + + if (!$ticket_template) { + $options = $_REQUEST; + } + + // Restore saved value or override with page parameter + foreach ($default_values as $name => $value) { + if (!isset($options[$name])) { + if (isset($_SESSION["helpdeskSaved"][$name])) { + $options[$name] = $_SESSION["helpdeskSaved"][$name]; + } else { + $options[$name] = $value; + } + } + } + // Clean text fields + $options['name'] = stripslashes($options['name']); + $options['content'] = Html::cleanPostForTextArea($options['content']); + + if (!$ticket_template) { + echo "
"; + } + + + $delegating = User::getDelegateGroupsForUser($options['entities_id']); + + if (count($delegating)) { + echo "
"; + echo ""; + echo ""; + + echo "
".$LANG['job'][69]." : "; + + $rand = Dropdown::showYesNo("nodelegate", $options['nodelegate']); + + $params = array ('nodelegate' => '__VALUE__', + 'rand' => $rand, + 'right' => "delegate", + '_users_id_requester' + => $options['_users_id_requester'], + '_users_id_requester_notif' + => $options['_users_id_requester_notif'], + 'use_notification' + => $options['_users_id_requester_notif']['use_notification'], + 'entity_restrict' + => $_SESSION["glpiactive_entity"]); + + Ajax::UpdateItemOnSelectEvent("dropdown_nodelegate".$rand, "show_result".$rand, + $CFG_GLPI["root_doc"]."/ajax/dropdownDelegationUsers.php", + $params); + + echo "
"; + echo "
"; + + $self = new Ticket(); + if ($options["_users_id_requester"] == 0) { + $options['_users_id_requester'] = Session::getLoginUserID(); + } else { + $options['_right'] = "delegate"; + } + $self->showActorAddFormOnCreate(Ticket::REQUESTER, $options); + echo "
"; + echo "
"; + echo ""; + } + + echo ""; + echo ""; + + + // Load ticket template if available : + $tt = new TicketTemplate(); + + // First load default entity one + if ($template_id = EntityData::getUsedConfig('tickettemplates_id', $_SESSION["glpiactive_entity"])) { + // with type and categ + $tt->getFromDBWithDatas($template_id, true); + } + + $field = ''; + if ($options['type'] && $options['itilcategories_id']) { + $categ = new ITILCategory(); + if ($categ->getFromDB($options['itilcategories_id'])) { + switch ($options['type']) { + case Ticket::INCIDENT_TYPE : + $field = 'tickettemplates_id_incident'; + break; + + case Ticket::DEMAND_TYPE : + $field = 'tickettemplates_id_demand'; + break; + } + + if (!empty($field) && $categ->fields[$field]) { + // without type and categ + $tt->getFromDBWithDatas($categ->fields[$field], false); + } + } + } + if ($ticket_template) { + // with type and categ + $tt->getFromDBWithDatas($ticket_template, true); + } + + // Predefined fields from template : reset them + if (isset($options['_predefined_fields'])) { + $options['_predefined_fields'] + = unserialize(rawurldecode(stripslashes($options['_predefined_fields']))); + } else { + $options['_predefined_fields'] = array(); + } + + // Store predefined fields to be able not to take into account on change template + $predefined_fields = array(); + + if (isset($tt->predefined) && count($tt->predefined)) { + foreach ($tt->predefined as $predeffield => $predefvalue) { + if (isset($options[$predeffield]) && isset($default_values[$predeffield])) { + // Is always default value : not set + // Set if already predefined field + // Set if ticket template change + if ($options[$predeffield] == $default_values[$predeffield] + || (isset($options['_predefined_fields'][$predeffield]) + && $options[$predeffield] == $options['_predefined_fields'][$predeffield]) + || (isset($options['_tickettemplates_id']) + && $options['_tickettemplates_id'] != $tt->getID())) { + $options[$predeffield] = $predefvalue; + $predefined_fields[$predeffield] = $predefvalue; + } + } else { // Not defined options set as hidden field + echo ""; + } + } + + } else { // No template load : reset predefined values + if (count($options['_predefined_fields'])) { + foreach ($options['_predefined_fields'] as $predeffield => $predefvalue) { + if ($options[$predeffield] == $predefvalue) { + $options[$predeffield] = $default_values[$predeffield]; + } + } + } + } + unset($_SESSION["helpdeskSaved"]); + + if ($CFG_GLPI['urgency_mask']==(1<<3) || $tt->isHiddenField('urgency')) { + // Dont show dropdown if only 1 value enabled or field is hidden + echo ""; + } + + // Display predefined fields if hidden + if ($tt->isHiddenField('itemtype')) { + echo ""; + echo ""; + } + + echo ""; + echo "
"; + + echo ""; + + echo ""; + echo ""; + echo ""; + + echo ""; + echo ""; + + + if ($CFG_GLPI['urgency_mask']!=(1<<3)) { + if (!$tt->isHiddenField('urgency')) { + echo ""; + echo ""; + echo ""; + } + } + + if (empty($delegating) && NotificationTargetTicket::isAuthorMailingActivatedForHelpdesk()) { + echo ""; + echo ""; + echo ""; + } + + if ($_SESSION["glpiactiveprofile"]["helpdesk_hardware"] != 0) { + if (!$tt->isHiddenField('itemtype')) { + echo ""; + echo ""; + echo ""; + } + } + + if (!$tt->isHiddenField('name') + || $tt->isPredefinedField('name')) { + echo ""; + echo ""; + echo ""; + } + + if (!$tt->isHiddenField('content') + || $tt->isPredefinedField('content')) { + echo ""; + echo ""; + echo ""; + } + echo ""; + echo ""; + + + echo ""; + echo ""; + + echo ""; + + echo ""; + echo ""; + echo ""; + + if (!$ticket_template) { + echo ""; + echo ""; + } + + echo "
".$caseInfo->processName." : "; + if (Session::isMultiEntitiesMode()) { + echo " (".Dropdown::getDropdownName("glpi_entities", $_SESSION["glpiactive_entity"]).")"; + } + echo "
".$LANG['joblist'][29]." :".$tt->getMandatoryMark('urgency').""; + Ticket::dropdownUrgency("urgency", $options['urgency']); + echo "
".$LANG['help'][8]." : "; + if ($options["_users_id_requester"] == 0) { + $options['_users_id_requester'] = Session::getLoginUserID(); + } + $_REQUEST['value'] = $options['_users_id_requester']; + $_REQUEST['field'] = '_users_id_requester_notif'; + $_REQUEST['use_notification'] = $options['_users_id_requester_notif']['use_notification']; + include (GLPI_ROOT."/ajax/uemailUpdate.php"); + + echo "
 "; + echo "
"; + $rand = rand(); + $pmCaseUser = $caseInfo->currentUsers[0] ; // by default + $paramsURL = "DEL_INDEX=".$pmCaseUser->delIndex."&action=".$caseInfo->caseStatus ; + + echo ""; + echo "
 "; + echo "
".$LANG['document'][2]." (".Document::getMaxUploadSize().") : "; + echo "".
+            $LANG["; + + echo " "; + Ticket::showDocumentAddButton(60); + + echo "
"; + + echo "
"; + if (!$ticket_template) { + Html::closeForm(); + } +} + + + +function processMakerShowCase( $ID, $from_helpdesk ) { + global $LANG ; + + Html::helpHeader($LANG['job'][13], $_SERVER['PHP_SELF'], $_SESSION["glpiname"]); + + //$userGLPI = new User(); + //$userGLPI->getFromDB( $ID ) ; + //if( $userGLPI->fields['language'] != null ) + // $lang = substr( $userGLPI->fields['language'], 0, 2) ; + //else + // $lang = "en" ; + + $pmItem = new PluginProcessmakerProcessmaker( ) ; + $pmItem->login( ) ; + + //if( isset( $_REQUEST['sid'] )) { + // $pmItem->useSession( $_REQUEST['sid'], $lang ) ; + //} + //else { + // $pmItem->openSession( $userGLPI->fields['name'], "md5:37d442efb43ebb80ec6f9649b375ab72", $lang ) ; + //} + + $caseInfo = $pmItem->getCaseInfo( $_REQUEST['case_id'] ) ; + if ($caseInfo->status_code == 0){ + // case is created + // Must show it... + // we may input this case into a temporary case table with session id for key + // we need some more info, del_index... +// $pmCaseUser = $caseInfo->currentUsers[0] ; // by default + + $rand = rand(); + +// echo "