. */ /** * @brief Action : Process a document * * Open a modal box to displays the process form, make the form checks and loads the result in database. * Used by the core (manage_action.php page). * * @file * @author Claire Figueras * @author Laurent Giovannoni * @date $date$ * @version $Revision$ * @ingroup apps */ /** * $confirm bool false */ $confirm = false; /** * $etapes array Contains 2 etaps : form and status (order matters) */ $etapes = array('form'); /** * $frm_width Width of the modal (empty) */ $frm_width=''; /** * $frm_height Height of the modal (empty) */ $frm_height = ''; /** * $mode_form Mode of the modal : fullscreen */ $mode_form = 'fullscreen'; include('apps/' . $_SESSION['config']['app_id']. '/definition_mail_categories.php'); /** * Gets the folder data for a given document * * @param $coll_id string Collection identifier * @param $res_id string Resource identifier * @return Array Folder data (folder + subfolder) **/ function get_folder_data($coll_id, $res_id) { require_once('core/class/class_security.php'); $sec = new security(); $view = $sec->retrieve_view_from_coll_id($coll_id); if (empty($view)) { $view = $sec->retrieve_table_from_coll($coll_id); } $db = new dbquery(); $db->connect(); $folder = ''; $db->query("select folders_system_id, folder_id, folder_name, fold_parent_id, fold_subject, folder_level from " . $view . " where res_id = " . $res_id); if ($db->nb_result() == 1) { $res = $db->fetch_object(); if (!empty($res->folders_system_id)) { // $folder = $res->folder_name.', '.$res->fold_subject.' ('.$res->folders_system_id.')'; $folder = $res->folder_id.', '.$res->folder_name.' ('.$res->folders_system_id.')'; } } return $folder; } /** * Returns the indexing form text * * @param $values Array Contains the res_id of the document to process * @param $path_manage_action String Path to the PHP file called in Ajax * @param $id_action String Action identifier * @param $table String Table * @param $module String Origin of the action * @param $coll_id String Collection identifier * @param $mode String Action mode 'mass' or 'page' * @return String The form content text **/ function get_form_txt($values, $path_manage_action, $id_action, $table, $module, $coll_id, $mode) { //print_r($_SESSION['current_basket']); if (preg_match("/MSIE 6.0/", $_SERVER["HTTP_USER_AGENT"])) { $browser_ie = true; $display_value = 'block'; } elseif ( preg_match('/msie/i', $_SERVER["HTTP_USER_AGENT"]) && !preg_match('/opera/i', $_SERVER["HTTP_USER_AGENT"]) ) { $browser_ie = true; $display_value = 'block'; } else { $browser_ie = false; $display_value = 'table-row'; } $_SESSION['req'] = "action"; $res_id = $values[0]; $frm_str = ''; require_once('core/class/class_security.php'); require_once('modules/basket/class/class_modules_tools.php'); require_once('core/class/class_request.php'); require_once('apps/' . $_SESSION['config']['app_id'] . '/class/class_types.php'); require_once('apps/' . $_SESSION['config']['app_id'] . '/class/class_indexing_searching_app.php'); require_once('apps/' . $_SESSION['config']['app_id'] . '/class/class_chrono.php'); $type = new types(); $sec =new security(); $core_tools =new core_tools(); $doctypes = $type->getArrayTypes($coll_id); $b = new basket(); $is = new indexing_searching_app(); $cr = new chrono(); $data = array(); $params_data = array('show_folder' => false); $data = get_general_data($coll_id, $res_id, 'full', $params_data); $process_data = $is->get_process_data($coll_id, $res_id); $chrono_number = $cr->get_chrono_number($res_id, $sec->retrieve_view_from_table($table)); $_SESSION['doc_id'] = $res_id; $indexes = array(); if (isset($data['type_id'])) { $indexes = $type->get_indexes($data['type_id']['value'], $coll_id); $fields = 'res_id'; foreach (array_keys($indexes) as $key) { $fields .= ','.$key; } $b->connect(); $b->query("select ".$fields." from ".$table." where res_id = ".$res_id); $values_fields = $b->fetch_object(); //print_r($indexes); } if ($core_tools->is_module_loaded('entities')) { require_once('modules/entities/class/class_manage_listdiff.php'); $listdiff = new diffusion_list(); $roles = $listdiff->list_difflist_roles(); $_SESSION['process']['diff_list'] = $listdiff->get_listinstance($res_id, false, $coll_id); $_SESSION['process']['difflist_type'] = $listdiff->get_difflist_type($_SESSION['process']['diff_list']['object_type']); } // to activate locking decomment these lines /*if ($b->reserve_doc($_SESSION['user']['UserId'], $res_id, $coll_id) == false) { $frm_str = '
'; $frm_str .= '

'._DOC_NUM." ".$res_id ; $frm_str .= '

'; $frm_str .= '
'._DOC_ALREADY_RSV.'
'; $frm_str .= '
'; $frm_str .= '
'; } else { */ /********************************* LEFT PART **************************************/ $frm_str = '
'; $frm_str .= '

' . _PROCESS . _LETTER_NUM . ' ' . $res_id; $frm_str .= '

'; $frm_str .= '
'; $frm_str .= '
'; $frm_str .= ''; $frm_str .= ''; $frm_str .= ''; $frm_str .= ''; $frm_str .= ''; $frm_str .= ''; $frm_str .= ''; $frm_str .= '

'; $frm_str .= ' >> ' . _GENERAL_INFO . ' :'; $frm_str .= ' '; $frm_str .= '

'; //GENERAL DATAS $frm_str .= '
'; $frm_str .= '
'; $frm_str .= ''; // Displays the document indexes foreach (array_keys($data) as $key) { $frm_str .= ''; $frm_str .= ''; $frm_str .= ''; $frm_str .= ''; } if ($chrono_number <> '') { $frm_str .= ''; $frm_str .= ''; $frm_str .= ''; $frm_str .= ''; } if (count($indexes) > 0) { foreach (array_keys($indexes) as $key) { $frm_str .= ''; $frm_str .= ''; $frm_str .= ''; $frm_str .= ''; } } //extension $db = new dbquery(); $db->connect(); $db->query("select format from ".$table." where res_id = ".$res_id); $formatLine = $db->fetch_object(); $frm_str .= ''; $frm_str .= ''; $frm_str .= ''; $frm_str .= ''; $frm_str .= '
' . $data[$key]['label'] . ' :'; if ($data[$key]['display'] == 'textinput') { $frm_str .= ''; } elseif ($data[$key]['display'] == 'textarea') { $frm_str .= ''; if (isset($data[$key]['addon'])) { $frm_str .= $data[$key]['addon']; } } if($key == 'type_id'){ $_SESSION['category_id_session'] = $data[$key]['value']; } $frm_str .= '
' . _CHRONO_NUMBER . ' :'; $frm_str .= ''; $frm_str .= '
' . $indexes[$key]['label'] . ' :'; $frm_str .= '$key.'" '; } else { $val = ''; for ($i=0; count($indexes[$key]['values']); $i++) { if ($values_fields->$key == $indexes[$key]['values'][$i]['id']) { $val = $indexes[$key]['values'][$i]['label']; break; } } $frm_str .= ' value="'.$val.'" '; } $frm_str .= ' />'; $frm_str .= '
' . _FORMAT . ' :'; $frm_str .= ''; $frm_str .= '
'; $frm_str .= '
'; $frm_str .= '

'; //RESPONSE FORM $nb_attach = 0; $db = new request; $db->connect(); $db->query("select answer_type_bitmask from ".$_SESSION['collections'][0]['extensions'][0]." where res_id = ".$res_id); $res = $db->fetch_object(); $bitmask = $res->answer_type_bitmask; switch ($bitmask) { case "000000": $answer = ''; break; case "000001": $answer = _SIMPLE_MAIL; break; case "000010": $answer = _REGISTERED_MAIL; break; case "000100": $answer = _DIRECT_CONTACT; break; case "001000": $answer = _EMAIL; break; case "010000": $answer = _FAX; break; case "100000": $answer = _ANSWER; break; default: $answer = _ANSWER; } if ($core_tools->is_module_loaded('attachments')) { $req = new request; $req->connect(); $req->query("select res_id from " . $_SESSION['tablename']['attach_res_attachments'] . " where status <> 'DEL' and res_id_master = " . $res_id . " and coll_id = '" . $coll_id . "'"); if ($req->nb_result() > 0) { $nb_attach = $req->nb_result(); } } if ($answer <> '') { $answer .= ': '; } $frm_str .= '

'; $frm_str .= ' <<'; $frm_str .= ' ' . _PJ . ', ' . _DONE_ANSWERS . ' (' . $answer .''. $nb_attach . ') :'; $frm_str .= ' '; $frm_str .= '

'; $frm_str .= ''; $frm_str .= '
'; //TAGS if ( $core_tools->is_module_loaded('tags') && ( $core_tools->test_service('tag_view', 'tags',false) == 1) ) { include_once("modules".DIRECTORY_SEPARATOR."tags". DIRECTORY_SEPARATOR."templates/process/index.php"); } //CASES if ($core_tools->is_module_loaded('cases')) { require_once('modules/cases/class/class_modules_tools.php'); $cases = new cases(); $case_id = $cases->get_case_id($res_id); if ($case_id <> false) { $case_properties = $cases->get_case_info($case_id); } else { $case_properties = array(); } $frm_str .= '

'; $frm_str .= ' << ' . _CASE . ' :'; $frm_str .= ' '; $frm_str .= '

'; $frm_str .= '
'; } //FOLDERS if ($core_tools->is_module_loaded('folder')) { // Displays the folder data $folder = get_folder_data($coll_id, $res_id); $frm_str .= '

'; $frm_str .= ' << ' . _FOLDER_ATTACH . ' :'; $frm_str .= ' '; $frm_str .= '

'; $frm_str .= ''; $frm_str .=''; $frm_str .= '
'; } //ACTIONS $frm_str .= '
'; $frm_str .= '

'; $frm_str .= ''._ACTIONS.' : '; $actions = $b->get_actions_from_current_basket($res_id, $coll_id, 'PAGE_USE'); if (count($actions) > 0) { $frm_str .='
'; $frm_str .= ' '; } $frm_str .= ''; $frm_str .= '

'; $frm_str .= '
'; $frm_str .= '
'; $frm_str .= ''; // ****************************** RIGHT PART *******************************************/ $frm_str .= '
'; /*** TOOLBAR ***/ $frm_str .= '
'; $frm_str .= ''; $frm_str .= ''; //HISTORY $frm_str .= ''; //NOTE if ($core_tools->is_module_loaded('notes')) { $frm_str .= ''; } //SENDMAILS if ($core_tools->is_module_loaded('sendmail') === true && $core_tools->test_service('sendmail', 'sendmail', false) === true ) { require_once "modules" . DIRECTORY_SEPARATOR . "sendmail" . DIRECTORY_SEPARATOR . "class" . DIRECTORY_SEPARATOR . "class_modules_tools.php"; $sendmail_tools = new sendmail(); //Count mails $nbr_emails = 0; $nbr_emails = $sendmail_tools->countUserEmails($res_id, $coll_id); $frm_str .= ''; } //DIFFUSION LIST if ($core_tools->is_module_loaded('entities')) { $frm_str .= ''; } //test service add new version $viewVersions = false; if ($core->test_service('add_new_version', 'apps', false)) { $viewVersions = true; } //VERSIONS if ($core->is_module_loaded('content_management') && $viewVersions) { $versionTable = $sec->retrieve_version_table_from_coll_id( $coll_id ); $selectVersions = "select res_id from " . $versionTable . " where res_id_master = " . $res_id . " and status <> 'DEL' order by res_id desc"; $dbVersions = new dbquery(); $dbVersions->connect(); $dbVersions->query($selectVersions); $nb_versions_for_title = $dbVersions->nb_result(); $lineLastVersion = $dbVersions->fetch_object(); $lastVersion = $lineLastVersion->res_id; if ($lastVersion <> '') { $objectId = $lastVersion; $objectTable = $versionTable; } else { $objectTable = $sec->retrieve_table_from_coll( $coll_id ); $objectId = $res_id; $_SESSION['cm']['objectId4List'] = $res_id; } if ($nb_versions_for_title == 0) { $extend_title_for_versions = '0'; } else { $extend_title_for_versions = $nb_versions_for_title; } $_SESSION['cm']['resMaster'] = ''; $frm_str .= ''; } //LINKS $frm_str .= ''; //END TOOLBAR $frm_str .= '
'; $frm_str .= '|'; $frm_str .= '<<' . '' . _DOC_HISTORY . ''; $frm_str .= '|'; $frm_str .= ''; require_once 'modules/notes/class/class_modules_tools.php'; $notes_tools = new notes(); //Count notes $nbr_notes = $notes_tools->countUserNotes($res_id, $coll_id); $nbr_notes = ' ('.$nbr_notes.')'; $frm_str .= '|'; $frm_str .= '<<' . '' . _NOTES . $nbr_notes . ''; $frm_str .= '|'; $frm_str .= ''; $frm_str .= '|'; $frm_str .= ' << ' . '' ._SENDED_EMAILS . ' ('.$nbr_emails.')'; $frm_str .= ' |'; $frm_str .= ''; $frm_str .= '|'; $frm_str .= '<<' . '' . _DIFF_LIST_COPY . ''; $frm_str .= '|'; $frm_str .= ''; $frm_str .= '|'; $frm_str .= '<<' . '' . _VERSIONS . ' (' . $extend_title_for_versions . ')'; $frm_str .= '|'; $frm_str .= ''; require_once('core/class/LinkController.php'); $Class_LinkController = new LinkController(); $nbLink = $Class_LinkController->nbDirectLink( $res_id, $coll_id, 'all' ); $frm_str .= '|'; $frm_str .= '<<' . '' . _LINK_TAB . ' (' . $nbLink . ')'; $frm_str .= '|'; $frm_str .= '
'; $frm_str .= '
'; //ATTACHMENTS FRAME if ($core_tools->is_module_loaded('attachments')) { require 'modules/templates/class/templates_controler.php'; $templatesControler = new templates_controler(); $templates = array(); $templates = $templatesControler->getAllTemplatesForProcess($data['destination']['value']); $frm_str .= '