* SPDX-License-Identifier: AGPL-3.0-only ************************************/ /* crmv@92272 crmv@97566 crmv@115268 crmv@163905 */ require_once('modules/Settings/ProcessMaker/ProcessMakerUtils.php'); global $mod_strings, $app_strings, $theme, $upload_badext, $default_charset, $current_user; //crmv@147720 $PMUtils = ProcessMakerUtils::getInstance(); $mode = $_REQUEST['mode']; $sub_template = ''; // crmv@189903 if ($mode == 'modeler') { require_once('include/utils/PageHeader.php'); $pageHeader = VTEPageHeader::getInstance(); $smarty = $pageHeader->initSmarty(); } else { $smarty = new VteSmarty(); } // crmv@189903e $smarty->assign("MOD",$mod_strings); $smarty->assign("APP",$app_strings); $smarty->assign("THEME", $theme); $smarty->assign("IMAGE_PATH", "themes/$theme/images/"); $smarty->assign("MODE", $mode); // crmv@190834 $smarty->assign("SETTINGS_FIELD_TITLE", $mod_strings['LBL_PROCESS_MAKER']); $smarty->assign("SETTINGS_FIELD_DESC", $mod_strings['LBL_PROCESS_MAKER_DESC']); // crmv@190834e switch($mode) { //crmv@100972 crmv@147720 case 'create': if (!empty($_REQUEST['err'])) { $smarty->assign("DATA", array('name'=>$_REQUEST['name'],'description'=>$_REQUEST['description'])); $smarty->assign("ERROR", $_REQUEST['err']); } $sub_template = 'Settings/ProcessMaker/Create.tpl'; break; case 'import': $id = vtlib_purify($_REQUEST['id']); if (!empty($id)) $upload_ext = array('vtebpmn'); else $upload_ext = array(); // if update allow only vtebpmn $err = ''; $check = $PMUtils->checkUploadBPMN($err, $upload_ext); if ($check) { if (empty($id)) { // import new if (isset($_FILES['bpmnfile']['tmp_name']) && !empty($_FILES['bpmnfile']['tmp_name'])) { $data = $PMUtils->readUploadedFile(file_get_contents($_FILES['bpmnfile']['tmp_name'])); $smarty->assign("FILE", $data['file']); $smarty->assign("VERSION", $data['version']); $smarty->assign("XML", htmlentities($data['bpmn'],ENT_QUOTES,$default_charset)); } $smarty->assign("NAME", vtlib_purify($_REQUEST['name'])); $smarty->assign("DESCRIPTION", vtlib_purify($_REQUEST['description'])); $buttons = '
'; $smarty->assign("BUTTON_LIST", $buttons); $smarty->display('Settings/ProcessMaker/Modeler.tpl'); } else { // update from upload if (empty($_REQUEST['cachefile'])) { $retrieve = $PMUtils->retrieve($id); $data = $PMUtils->readUploadedFile(file_get_contents($_FILES['bpmnfile']['tmp_name'])); if (!empty($data['metarec'])) $data['metarec'] = Zend_Json::decode($data['metarec']); if (!empty($data['dynameta'])) $data['dynameta'] = Zend_Json::decode($data['dynameta']); if (!empty($data['system_versions'])) $data['system_versions'] = Zend_Json::decode($data['system_versions']); // the new process version must be higher of the current one if ($PMUtils->compareVersionNumber($data['version'],'<=',$retrieve['version'])) { VteSession::set('vtealert',getTranslatedString('LBL_NO_PROCESS_UPDATED_WRONG_VERSION','Settings')); header("Location: index.php?module=Settings&action=ProcessMaker"); exit; } $different_system_versions_founded = false; require_once('include/utils/UserInfoUtil.php'); $userInfoUtils = UserInfoUtils::getInstance(); $current_system_versions = $userInfoUtils->getCurrentVersionNumbers(array('tabs','roles','profiles','conditionals'),array('tabs'=>$PMUtils->getRecordsInvolvedModules($id,true,true))); // compare only tabs foreach($current_system_versions['tabs'] as $module => $info) { if ($PMUtils->compareVersionNumber($info['number'],'<=',$data['system_versions']['tabs'][$module]['number'])) { // continue } else { // the module in the new process version has a higher version $different_system_versions_founded = true; } } file_put_contents("cache/upload/upload_processmaker_{$current_user->id}.vtebpmn",file_get_contents($_FILES['bpmnfile']['tmp_name'])); // save file in cache/upload if ($different_system_versions_founded) { header("Location: index.php?module=Settings&action=ProcessMaker&show_confirm_different_system_versions=yes&id={$id}¤t_version={$retrieve['version']}"); } else { header("Location: index.php?module=Settings&action=ProcessMaker&check_increment_version=yes&id={$id}¤t_version={$retrieve['version']}"); } exit; } elseif ($_REQUEST['cachefile'] == 'yes') { $data = $PMUtils->readUploadedFile(file_get_contents("cache/upload/upload_processmaker_{$current_user->id}.vtebpmn")); if (!empty($data['metarec'])) $data['metarec'] = Zend_Json::decode($data['metarec']); if (!empty($data['dynameta'])) $data['dynameta'] = Zend_Json::decode($data['dynameta']); } if (!empty($data)) { @unlink("cache/upload/upload_processmaker_{$current_user->id}.vtebpmn"); $PMUtils->historicizeSaveForceVersion($id,($_REQUEST['force_version'] == 'true')); //crmv@155375 save previously structure $PMUtils->save($data,$id,true,false); $adb->pquery("update {$PMUtils->table_name} set pending_changes=? where id=?", array(0, $id)); header("Location: index.php?module=Settings&action=SettingsAjax&file=ProcessMaker&parenttab=Settings&mode=detail&id={$id}"); exit; } } } else { if (empty($id)) { // import new header("Location: index.php?module=Settings&action=ProcessMaker&parenttab=Settings&mode=create&name={$_REQUEST['name']}&description={$_REQUEST['description']}&err={$err}"); } else { // update VteSession::set('vtealert',$err); header("Location: index.php?module=Settings&action=ProcessMaker"); } } exit; break; case 'detail': $id = vtlib_purify($_REQUEST['id']); $PMUtils->clearProcessMakerCache($id); //crmv@153321_5 clear session $data = $PMUtils->retrieve($id); $smarty->assign("DATA", $data); $smarty->assign("TABLE_NAME", $PMUtils->table_name); $smarty->assign("default_charset", $default_charset); include_once('vtlib/Vtecrm/Link.php'); $COMMONHDRLINKS = Vtecrm_Link::getAllByType(Vtecrm_Link::IGNORE_MODULE, Array('HEADERSCRIPT')); $smarty->assign('HEADERSCRIPTS', $COMMONHDRLINKS['HEADERSCRIPT']); $smarty->assign('HEAD_INCLUDE',"icons,jquery,jquery_plugins,jquery_ui,fancybox,prototype,jscalendar,sdk_headers"); // crmv@177151 $buttons = '
'; // {* TODO *} // crmv@177151e $smarty->assign("BUTTON_LIST", $buttons); $smarty->display('Settings/ProcessMaker/Detail.tpl'); exit; break; case 'modeler': $id = vtlib_purify($_REQUEST['id']); $smarty->assign("PROCESSMAKERID", $id); // crmv@177151 crmv@189903 $buttons = '
'; // crmv@177151e crmv@189903e $smarty->assign("BUTTON_LIST", $buttons); $smarty->display('Settings/ProcessMaker/Modeler.tpl'); exit; break; case 'save_model': global $current_user; $id = vtlib_purify($_REQUEST['id']); $xml = $_REQUEST['xml']; if (empty($id)) { // new (create / import) $data = array(); $values = Zend_Json::decode($_REQUEST['values']); $file = $values['file']; if (stripos($file,'') !== false) { $data = $PMUtils->readUploadedFile($file); if (!empty($data['metarec'])) $data['metarec'] = Zend_Json::decode($data['metarec']); if (!empty($data['dynameta'])) $data['dynameta'] = Zend_Json::decode($data['dynameta']); } $data['name'] = $values['name']; $data['description'] = $values['description']; $data['bpmn'] = $xml; $id = $PMUtils->save($data,null,false,false); } else { // update model //crmv@155375 $PMUtils->saveVersion($id); //crmv@101057 save previously structure $adb->pquery("update {$PMUtils->table_name} set xml=?, pending_changes=?, structure=null where id=?", array($xml, 1, $id)); //crmv@155375e } echo $id; exit; break; case 'increment_version'; echo $PMUtils->incrementVersion(vtlib_purify($_REQUEST['id']),($_REQUEST['force_version'] == 'true')); //crmv@150751 exit; break; //crmv@100972e crmv@147720e //crmv@150751 case 'check_increment_version'; echo $PMUtils->checkIncrementVersion(vtlib_purify($_REQUEST['id'])); exit; break; //crmv@150751e case 'check_pending_changes': $id = vtlib_purify($_REQUEST['id']); $data = $PMUtils->retrieve($id); echo $data['pending_changes']; exit; break; case 'download': $id = vtlib_purify($_REQUEST['id']); $format = vtlib_purify($_REQUEST['format']); //crmv@150751 $xml_version = vtlib_purify($_REQUEST['xml_version']); $data = $PMUtils->retrieve($id, $xml_version); //crmv@150751e if ($format == 'bpmn') { $filename = $data['name'].'.bpmn'; $fileContent = $data['xml']; } elseif ($format == 'vtebpmn') { $filename = $data['name'].'.vtebpmn'; $filename = sanitizeUploadFileName($filename, $upload_badext); //crmv@147720 $xml = new SimpleXMLElement(''); $xml->addChild('name',$data['name']); $xml->addChild('description',$data['description']); $xml->addChild('version',$data['version']); //crmv@147720 $xml->addChild('bpmn',base64_encode($data['xml'])); $PMUtils->clearSubProcesses($id,$data['vte_metadata'],$data['structure']); //crmv@97575 crmv@136524 crmv@150751 $xml->addChild('vte_metadata',base64_encode($data['vte_metadata'])); $xml->addChild('structure',base64_encode($data['structure'])); $xml->addChild('helper',base64_encode($data['helper'])); $metarec = array(); $result = $adb->pquery("select * from {$table_prefix}_processmaker_metarec where processid = ?", array($id)); if ($result && $adb->num_rows($result) > 0) { while($row=$adb->fetchByAssoc($result)) { $metarec[] = $row; } } $xml->addChild('metarec',base64_encode(Zend_Json::encode($metarec))); $dynameta = array(); $result = $adb->pquery("select * from {$table_prefix}_process_dynaform_meta where processid = ?", array($id)); if ($result && $adb->num_rows($result) > 0) { while($row=$adb->fetchByAssoc($result)) { $dynameta[] = $row; } } $xml->addChild('dynameta',base64_encode(Zend_Json::encode($dynameta))); require_once('include/utils/UserInfoUtil.php'); $userInfoUtils = UserInfoUtils::getInstance(); $system_versions = $userInfoUtils->getCurrentVersionNumbers(array('tabs','roles','profiles','conditionals'),array('tabs'=>$PMUtils->getRecordsInvolvedModules($id,true,true))); $xml->addChild('system_versions',base64_encode(Zend_Json::encode($system_versions))); $fileContent = $xml->asXML(); } $fileType = 'application/octet-stream'; function_exists('mb_strlen') ? $filesize = mb_strlen($fileContent, '8bit') : $filesize = strlen($fileContent); header("Content-type: $fileType"); header("Content-length: $filesize"); header("Cache-Control: private"); header("Content-Disposition: attachment; filename={$filename}"); header("Content-Description: PHP Generated Data"); echo $fileContent; exit; break; case 'load_metadata': $id = vtlib_purify($_REQUEST['id']); $elementid = $_REQUEST['elementid']; $req_structure = Zend_Json::decode($_REQUEST['structure']); $data = $PMUtils->retrieve($id); $vte_metadata = Zend_Json::decode($data['vte_metadata']); $vte_metadata_arr = $vte_metadata[$elementid]; $helper = Zend_Json::decode($data['helper']); $helper_arr = $helper[$elementid]; if (empty($helper_arr)) $helper_arr['active'] = 'on'; // default helper active $structure = Zend_Json::decode($data['structure']); if (!isset($req_structure['text']) || !isset($req_structure['type'])) { $req_structure = $structure['shapes'][$elementid]; } $type = $PMUtils->formatType($req_structure['type']); $subType = $PMUtils->formatType($req_structure['subType']); $type_map = $PMUtils->getMetadataTypes($type,$req_structure); $type_tpl = $type_map['tpl']; if (empty($type_tpl)) { $error = $type; if (!empty($subType)) $error .= "($subType)"; $error .= ' not implemented'; die($error); } $engineType = $PMUtils->getEngineType($req_structure); $title = $PMUtils->getElementTitle($req_structure); $smarty->assign("PAGE_TITLE", $title); $smarty->assign("PAGE_RIGHT_TITLE", $elementid); $smarty->assign("HEADER_Z_INDEX", 1); $smarty->assign("ID", $elementid); $smarty->assign("PROCESSID", $id); $buttons['save'] = ''; $buttons['cancel'] = ''; //crmv@99316 if ($engineType == 'Action') { $buttons['advanced'] = ''; } //crmv@99316e if (isset($type_map['php'])) include($type_map['php']); $smarty->assign("METADATA", $vte_metadata_arr); $smarty->assign("HELPER", $helper_arr); $buttons = '
  '.implode('',$buttons).'
'; $smarty->assign("BUTTON_LIST", $buttons); //crmv@96450 retrieve dynaform require_once('modules/Settings/ModuleMaker/ModuleMakerUtils.php'); $MMUtils = new ModuleMakerUtils(); $MMSteps = new ProcessModuleMakerSteps($MMUtils); $smarty->assign("STEPVARS", $helper_arr['dynaform']); $smarty->assign("NEWFIELDS", $MMSteps->getNewFields()); $smarty->assign("NEWTABLEFIELDCOLUMNS", $MMSteps->getNewTableFieldColumns()); // crmv@102879 $smarty->assign("PROCESSMAKERMODE", true); //crmv@96450e include_once('vtlib/Vtecrm/Link.php'); $COMMONHDRLINKS = Vtecrm_Link::getAllByType(Vtecrm_Link::IGNORE_MODULE, Array('HEADERSCRIPT')); $smarty->assign('HEADERSCRIPTS', $COMMONHDRLINKS['HEADERSCRIPT']); $smarty->assign('HEAD_INCLUDE',"icons,jquery,jquery_plugins,jquery_ui,fancybox,prototype,jscalendar,sdk_headers"); $smarty->display($type_tpl); exit; break; case 'savemetadata': $id = vtlib_purify($_REQUEST['id']); $elementid = vtlib_purify($_REQUEST['elementid']); //crmv@96450 require_once('modules/Settings/ModuleMaker/ModuleMakerUtils.php'); $MMUtils = new ModuleMakerUtils(); $MMSteps = new ProcessModuleMakerSteps($MMUtils); $dynaform = Zend_Json::decode($_REQUEST['mmaker']); $MMSteps->preprocessStepVars('ajax', 2, 0, $dynaform); $dynaform = $MMSteps->extractStepVars($dynaform); //crmv@96450e //crmv@153321_5 $formatted_metadata = $PMUtils->formatMetadata($id,$elementid,vtlib_purify($_REQUEST['vte_metadata']),vtlib_purify($_REQUEST['helper']),$dynaform); $formatted_helper = Zend_Json::decode($formatted_metadata['helper']); $formatted_helper_json = Zend_Json::encode($formatted_helper[$elementid]); $data = $PMUtils->retrieve($id); $saved_helper = Zend_Json::decode($data['helper']); $saved_helper_json = Zend_Json::encode($saved_helper[$elementid]); if ($saved_helper_json != 'null' && $saved_helper_json != $formatted_helper_json) $PMUtils->clearCache('processmaker_entity_options_'.$id); // clear session //crmv@153321_5e $PMUtils->saveMetadata($id,$elementid,vtlib_purify($_REQUEST['vte_metadata']),vtlib_purify($_REQUEST['helper']),$dynaform); //crmv@96450 echo 'SUCCESS'; exit; break; case 'save_structure': $id = vtlib_purify($_REQUEST['id']); $PMUtils->saveStructure($id,vtlib_purify($_REQUEST['structure'])); echo 'SUCCESS'; exit; break; case 'editaction': $id = vtlib_purify($_REQUEST['id']); $elementid = vtlib_purify($_REQUEST['elementid']); $action_type = $_REQUEST['action_type']; $action_id = $_REQUEST['action_id']; // crmv@102879 $action_options = array(); // at the moment, only the cycle has options if ($action_type == 'Cycle' || $action_type == 'CycleRelated') {//crmv@203075 $action_options['cycle_field'] = vtlib_purify($_REQUEST['cycle_field']); $action_options['cycle_action'] = vtlib_purify($_REQUEST['cycle_action']); } $PMUtils->actionEdit($id,$elementid,$action_type,$action_id, $action_options); // crmv@102879e exit; break; case 'saveaction': $result = $PMUtils->actionSave($_REQUEST); die($result); break; case 'deleteaction': $id = vtlib_purify($_REQUEST['id']); $elementid = vtlib_purify($_REQUEST['elementid']); $action_id = $_REQUEST['action_id']; $result = $PMUtils->actionDelete($id,$elementid,$action_id); die($result); break; case 'manage_other_records': require_once('modules/Settings/ProcessMaker/ProcessMakerPopup.php'); $popup = ProcessMakerPopup::getInstance(); $smarty->assign("PAGE_TITLE", $mod_strings['LBL_PROCESS_MAKER_MANAGE_OTHER_RECORD']); $smarty->assign("HEADER_Z_INDEX", 1); $smarty->assign('LINK_MODULES', $popup->getModules()); // TODO extraInputs per gestire funzione ritorno list, togliere checkbox e tasto Aggiungi oppure usarli meglio // TODO blocco sotto stile wizard $smarty->display('Settings/ProcessMaker/ManageOtherRecords.tpl'); exit; break; case 'recurrence_preview': $vte_metadata = Zend_Json::decode($_REQUEST['vte_metadata']); $preview = $PMUtils->previewTimerStart($vte_metadata); $smarty->assign("PREVIEWS", $preview); $smarty->display('Settings/ProcessMaker/Metadata/TimerStartPreviewRecurrences.tpl'); exit; break; case 'checktimerstart': if (isset($_REQUEST['vte_metadata'])) { $vte_metadata = Zend_Json::decode($_REQUEST['vte_metadata']); } elseif (!empty($_REQUEST['id'])) { $processmakerid = vtlib_purify($_REQUEST['id']); $startElementid = ''; $isTimerProcess = $PMUtils->isTimerProcess($processmakerid,$startElementid); if ($isTimerProcess) { $data = $PMUtils->retrieve($processmakerid); $vte_metadata = Zend_Json::decode($data['vte_metadata']); $vte_metadata = $vte_metadata[$startElementid]; } else { exit; } } $date_start = getValidDBInsertDateValue($vte_metadata['date_start']).' '.$vte_metadata['starthr'].':'.$vte_metadata['startmin']; ($vte_metadata['date_end_mass_edit_check'] == 'on') ? $date_end = getValidDBInsertDateValue($vte_metadata['date_end']).' '.$vte_metadata['endhr'].':'.$vte_metadata['endmin'] : $date_end = false; if (strtotime($date_start) < time()) { echo getTranslatedString('LBL_PM_CHECK_TIMER_START_DATE','Settings'); } elseif (!empty($date_end) && strtotime($date_start) > strtotime($date_end)) { echo getTranslatedString('LBL_PM_CHECK_TIMER_START_GREATER_THAN_END','Settings'); } exit; break; //crmv@96450 retrieve dynaform case 'openimportdynaformblocks': $processmakerid = vtlib_purify($_REQUEST['id']); $elementid = $_REQUEST['elementid']; //crmv@160837 some code removed $data = $PMUtils->retrieve($processmakerid); $helper = Zend_Json::decode($data['helper']); $structure = Zend_Json::decode($data['structure']); require_once('modules/Settings/ModuleMaker/ModuleMakerUtils.php'); $MMUtils = new ModuleMakerUtils(); $MMSteps = new ProcessModuleMakerSteps($MMUtils); $titles = array(); $stepvars = array(); if (!empty($helper)) { unset($helper[$elementid]); foreach($helper as $dyna_elementid => $h) { if (!empty($h['dynaform']['mmaker_blocks'])) { $titles[$dyna_elementid] = $PMUtils->getElementTitle($structure['shapes'][$dyna_elementid]); $stepvars[$dyna_elementid] = $h['dynaform']; } } } $buttons = '
 
'; $smarty->assign("BUTTON_LIST", $buttons); $smarty->assign("PAGE_TITLE", $mod_strings['LBL_PM_IMPORT_DYNAFORM_BLOCK_TITLE']); //crmv@160837 $smarty->assign("PAGE_RIGHT_TITLE", $elementid); $smarty->assign("HEADER_Z_INDEX", 1); $smarty->assign("TITLES", $titles); $smarty->assign("STEPVARS_ARR", $stepvars); $smarty->assign("PROCESSMAKERMODE", true); $smarty->assign("LAYOUT_READONLY", true); //crmv@160837 //crmv@160837 some code removed $smarty->display('Settings/ProcessMaker/Metadata/ImportDynaformBlocks.tpl'); exit; break; case 'importdynaformblocks': $processmakerid = vtlib_purify($_REQUEST['id']); $elementid = $_REQUEST['elementid']; $dynaformblocks = $_REQUEST['dynaformblocks']; if (!empty($dynaformblocks)) { $data = $PMUtils->retrieve($processmakerid); $helper = Zend_Json::decode($data['helper']); require_once('modules/Settings/ModuleMaker/ModuleMakerUtils.php'); $MMUtils = new ModuleMakerUtils(); $MMSteps = new ProcessModuleMakerSteps($MMUtils); $dynaform = $_REQUEST['mmaker']; //crmv@160837 $MMSteps->preprocessStepVars('ajax', 2, 0, $dynaform); $final_dynaform = $MMSteps->extractStepVars($dynaform); if (empty($final_dynaform['mmaker_lastfieldid'])) $final_dynaform['mmaker_lastfieldid'] = 0; foreach($dynaformblocks as $dynaformblock) { $dynaform_elementid = substr($dynaformblock,0,strrpos($dynaformblock,'_')); $blockno = substr($dynaformblock,strrpos($dynaformblock,'_')+1); $dynaform = $helper[$dynaform_elementid]['dynaform']; if (!empty($dynaform['mmaker_blocks'][$blockno])) { if (!empty($dynaform['mmaker_blocks'][$blockno]['fields'])) { foreach($dynaform['mmaker_blocks'][$blockno]['fields'] as &$field) { $final_dynaform['mmaker_lastfieldid']++; $field['fieldname'] = 'vcf_'.$final_dynaform['mmaker_lastfieldid']; } } $final_dynaform['mmaker_blocks'][] = $dynaform['mmaker_blocks'][$blockno]; } } $smarty->assign("STEPVARS", $final_dynaform); $smarty->assign("NEWFIELDS", $MMSteps->getNewFields()); $smarty->assign("NEWTABLEFIELDCOLUMNS", $MMSteps->getNewTableFieldColumns()); // crmv@102879 crmv@160837 $smarty->assign("PROCESSMAKERMODE", true); $smarty->display('Settings/ModuleMaker/Step2Fields.tpl'); } exit; break; //crmv@96450e //crmv@160837 case 'openimportmoduleblocks': $processmakerid = vtlib_purify($_REQUEST['id']); $elementid = $_REQUEST['elementid']; $buttons = '
 
'; $smarty->assign("BUTTON_LIST", $buttons); $smarty->assign("PAGE_TITLE", $mod_strings['LBL_PM_IMPORT_MODULE_BLOCK_TITLE']); $smarty->assign("PAGE_RIGHT_TITLE", $elementid); $smarty->assign("ELEMENTID", $elementid); $smarty->assign("HEADER_Z_INDEX", 1); $smarty->assign("TITLES", $titles); $smarty->assign("ID", $processmakerid); $records_pick = $PMUtils->getRecordsInvolvedOptions($processmakerid, '', false, null, null, true); //crmv@135190 $smarty->assign("RECORDS_INVOLVED", $records_pick); $smarty->display('Settings/ProcessMaker/Metadata/ImportModuleBlocks.tpl'); exit; break; case 'loadmoduleblocks': $processmakerid = vtlib_purify($_REQUEST['id']); $record_involved = vtlib_purify($_REQUEST['record_involved']); if (empty($_REQUEST['record_involved'])) return; // support multiple reference list($metaid,$module,$reference,,$reference_module) = explode(':',$record_involved); if (!empty($reference)) { if (!empty($reference_module)) { $module = $reference_module; } else { $result = $adb->pquery("select relmodule from {$table_prefix}_fieldmodulerel where fieldid = ?", array($reference)); if ($result && $adb->num_rows($result) > 0) { $module = $adb->query_result($result,0,'relmodule'); } else { // field is not a reference return; } } $result = $adb->pquery("select fieldname from {$table_prefix}_field where fieldid = ?", array($reference)); if ($result && $adb->num_rows($result) > 0) { $reference_fieldname = $adb->query_result($result,0,'fieldname'); } } require_once('modules/Settings/ModuleMaker/ModuleMakerUtils.php'); ob_start(); require_once('modules/Settings/ModuleMaker/ModuleMakerAjax.php'); ob_end_clean(); // hide echo $MMUtils = new ModuleMakerUtils(); $MMSteps = new ProcessModuleMakerSteps($MMUtils); $MMGen = new ModuleMakerGenerator($MMUtils, $MMSteps); $MMajax = new ModuleMakerAjax($MMUtils, $MMSteps, $MMGen); $vars = array(); $MMSteps->preprocessStepVars('ajax', 2, 0, $vars); // add to vars the configuration of the module require_once("vtlib/Vtecrm/Package.php"); require_once("vtlib/Vtecrm/Module.php"); $package = new Vtecrm_Package(); $package->_export_write_mode = 'string'; $moduleInstance = Vtecrm_Module::getInstance($module); $package->__initExport($module, $moduleInstance); $package->export_Module($moduleInstance); $package->__finishExport(); $xml_string = $package->getManifestString(); $modulenode = simplexml_load_string($xml_string); if (!empty($modulenode->panels) && !empty($modulenode->panels->panel)) { $panel_i = 0; $block_i = 0; $field_i = 0; foreach($modulenode->panels->panel as $panelnode) { $MMajax->addPanel($vars, getTranslatedString(strval($panelnode->label),$module)); if(!empty($panelnode->blocks) && !empty($panelnode->blocks->block)) { foreach($panelnode->blocks->block as $blocknode) { $MMajax->addBlock($vars, getTranslatedString(strval($blocknode->label),$module), $panel_i, $block_i); if(!empty($blocknode->fields) && !empty($blocknode->fields->field)) { foreach($blocknode->fields->field as $fieldnode) { $fieldno = ''; $default = ''; $properties = $MMUtils->getModuleMakerFieldProperties($module, strval($fieldnode->fieldname), $fieldno); if ($fieldnode->uitype != 220) { if (empty($reference)) { $default = "\${$metaid}-{$fieldnode->fieldname}"; } else { $default = "\${$metaid}-({$reference_fieldname} : ({$module}) {$fieldnode->fieldname})"; } } $MMajax->addField($vars, $block_i, $fieldno, $properties, array( 'uitype' => strval($fieldnode->uitype), 'fieldname' => strval($fieldnode->fieldname), 'readonly' => 99, 'default' => $default, )); $field_i++; } } $block_i++; } } $panel_i++; } } // end $stepvars = $MMSteps->extractStepVars($vars); $smarty->assign("STEPVARS", $stepvars); $smarty->assign("PROCESSMAKERMODE", true); $smarty->assign("MODE", 'loadmoduleblocks'); $smarty->assign("LAYOUT_READONLY", true); echo '
'; $smarty->display('Settings/ProcessMaker/Metadata/HelperFields.tpl'); echo '
'; exit; break; case 'importmoduleblocks': $processmakerid = vtlib_purify($_REQUEST['id']); $elementid = $_REQUEST['elementid']; $module_mmaker = $_REQUEST['module_mmaker']; $dynaform = $_REQUEST['mmaker']; if (!empty($module_mmaker)) { $data = $PMUtils->retrieve($processmakerid); $helper = Zend_Json::decode($data['helper']); require_once('modules/Settings/ModuleMaker/ModuleMakerUtils.php'); $MMUtils = new ModuleMakerUtils(); $MMSteps = new ProcessModuleMakerSteps($MMUtils); $MMSteps->preprocessStepVars('ajax', 2, 0, $dynaform); $final_dynaform = $MMSteps->extractStepVars($dynaform); if (empty($final_dynaform['mmaker_lastfieldid'])) $final_dynaform['mmaker_lastfieldid'] = 0; $MMSteps->preprocessStepVars('ajax', 2, 0, $module_mmaker); $new_blocks = $MMSteps->extractStepVars($module_mmaker); if (!empty($new_blocks['mmaker_blocks'])) { foreach($new_blocks['mmaker_blocks'] as $b) { unset($b['panelno']); if (!empty($b['fields'])) { foreach($b['fields'] as &$field) { $final_dynaform['mmaker_lastfieldid']++; $field['fieldname'] = 'vcf_'.$final_dynaform['mmaker_lastfieldid']; if ($field['uitype'] == '300') $field['uitype'] = '15'; } } $final_dynaform['mmaker_blocks'][] = $b; } } $smarty->assign("STEPVARS", $final_dynaform); $smarty->assign("NEWFIELDS", $MMSteps->getNewFields()); $smarty->assign("NEWTABLEFIELDCOLUMNS", $MMSteps->getNewTableFieldColumns()); // crmv@102879 $smarty->assign("PROCESSMAKERMODE", true); $smarty->display('Settings/ModuleMaker/Step2Fields.tpl'); } exit; break; //crmv@160837e //crmv@99316 crmv@112297 case 'advanced_metadata': $id = vtlib_purify($_REQUEST['id']); $elementid = $_REQUEST['elementid']; $data = $PMUtils->retrieve($id); $structure = Zend_Json::decode($data['structure']); $vte_metadata = Zend_Json::decode($data['vte_metadata']); $vte_metadata_arr = $vte_metadata[$elementid]; $title = $PMUtils->getElementTitle($structure['shapes'][$elementid]); $smarty->assign("PAGE_TITLE", $title.': '.$mod_strings['LBL_PM_ADVANCED_ACTIONS']); $smarty->assign("PAGE_RIGHT_TITLE", $elementid); $smarty->assign("HEADER_Z_INDEX", 1); $smarty->assign("ID", $elementid); $smarty->assign("PROCESSID", $id); $buttons = '
 
'; $smarty->assign("BUTTON_LIST", $buttons); $smarty->assign("METADATA", $vte_metadata_arr); //crmv@100731 $smarty->assign("ADV_RECORD_INVOLVED", $PMUtils->getRecordsInvolvedOptions($id, '')); $_REQUEST['enable_editoptions'] = 'yes'; //crmv@160843 $_REQUEST['editoptionsfieldnames'] = 'assigned_user_id'; $adv_assignedto = getOutputHtml(53,'assigned_user_id','LBL_ASSIGNED_TO',100,array(),1,'Settings','',1,'I~M'); $adv_assignedto[3][2]['skip_advanced_type_option'] = true; $smarty->assign('ADV_ASSIGNEDTO', $adv_assignedto); //crmv@160843e $adv_permissions_list = $vte_metadata_arr['advanced_permissions']; if (!empty($adv_permissions_list)) { foreach($adv_permissions_list as &$ap) { $ap['record_involved_display'] = $PMUtils->getRecordsInvolvedLabel($id,substr($ap['record_involved'],0,strpos($ap['record_involved'],':'))); $ap['resource_display'] = $PMUtils->getTranslatedProcessResource($id,$ap['resource']); if ($ap['permission'] == 'rw') $ap['permission_display'] = getTranslatedString('Read/Write','Settings'); elseif ($ap['permission'] == 'ro') $ap['permission_display'] = getTranslatedString('Read Only ','Settings'); } } $smarty->assign('ADV_PERMISSIONS_LIST',$adv_permissions_list); $smarty->assign('SDK_CUSTOM_FUNCTIONS',SDK::getFormattedProcessMakerFieldActions()); $involvedRecords = $PMUtils->getRecordsInvolved($id,true); $smarty->assign('JSON_INVOLVED_RECORDS',Zend_Json::encode($involvedRecords)); require_once('modules/Settings/ProcessMaker/ProcessDynaForm.php'); $processDynaFormObj = ProcessDynaForm::getInstance(); $dynaFormOptions = $processDynaFormObj->getFieldsOptions($id,true); $smarty->assign('JSON_DYNAFORM_OPTIONS',Zend_Json::encode($dynaFormOptions)); //crmv@100731e //crmv@100591 $elementsActors = $PMUtils->getElementsActors($id); $smarty->assign('JSON_ELEMENTS_ACTORS',Zend_Json::encode($elementsActors)); //crmv@100591e $smarty->display('Settings/ProcessMaker/Metadata/Advanced.tpl'); exit; break; case 'edit_dynaform_conditional': case 'edit_conditional': $id = vtlib_purify($_REQUEST['id']); $elementid = $_REQUEST['elementid']; $ruleid = $_REQUEST['ruleid']; (empty($ruleid)) ? $mmode = '' : $mmode = 'edit'; $smarty->assign("MMODE", $mmode); $smarty->assign("ID", $elementid); $smarty->assign("PROCESSID", $id); $smarty->assign("RULEID", $ruleid); $data = $PMUtils->retrieve($id); $structure = Zend_Json::decode($data['structure']); $vte_metadata = Zend_Json::decode($data['vte_metadata']); $vte_metadata_arr = $vte_metadata[$elementid]; if ($mode == 'edit_dynaform_conditional') { $conditionals = $vte_metadata_arr['dfconditionals']; $save_function = 'saveDynaFormConditional'; $close_function = 'closeDynaFormConditional'; $smarty->assign("SAVE_MODE", 'save_dynaform_conditional'); } else { $conditionals = $vte_metadata_arr['conditionals']; $save_function = 'saveConditional'; $close_function = 'closeConditional'; $smarty->assign("SAVE_MODE", 'save_conditional'); } $title = $PMUtils->getElementTitle($structure['shapes'][$elementid]); ($mmode == '') ? $title .= ' > '.getTranslatedString('LBL_CREATE_NEW_CONDITIONAL','Conditionals') : $title .= ' > '.getTranslatedString('LBL_EDIT'); $smarty->assign("PAGE_TITLE", $title); $smarty->assign("PAGE_RIGHT_TITLE", $elementid); $smarty->assign("HEADER_Z_INDEX", 1); $buttons = '
 
'; $smarty->assign("BUTTON_LIST", $buttons); if ($mmode == 'edit') { $smarty->assign("TITLE", $conditionals[$ruleid]['title']); $smarty->assign("RULES", $conditionals[$ruleid]['rules']); $smarty->assign("CONDITIONS", Zend_Json::encode($conditionals[$ruleid]['conditions'])); $role_grp_check = $conditionals[$ruleid]['role_grp_check']; $fpofv_saved = $conditionals[$ruleid]['fpofv']; } $roleDetails=getAllRoleDetails(); unset($roleDetails['H1']); $grpDetails=getAllGroupName(); $role_grp_check_picklist = ''; $smarty->assign("ROLE_GRP_CHECK_PICKLIST",$role_grp_check_picklist); if ($mode == 'edit_dynaform_conditional') { $result = $adb->pquery("select id from {$table_prefix}_process_dynaform_meta where processid = ? and elementid = ?", array($id,$elementid)); if ($result && $adb->num_rows($result) > 0) { $smarty->assign("METAID", $adb->query_result($result,0,'id')); require_once('modules/Settings/ProcessMaker/ProcessDynaForm.php'); $processDynaFormObj = ProcessDynaForm::getInstance(); $blocks = $processDynaFormObj->getStructure($id, $elementid); $fpofv_value_options = array(); if (!empty($blocks)) { foreach($blocks as $block) { if(is_array($block['fields']) && !empty($block['fields'])){ // crmv@179124 foreach($block['fields'] as $field) { //crmv@106857 if ($field['uitype'] == 220) { $fieldname = $field['fieldname']; $label = $field['label']; $fpofv_value_options['$'.$fieldname] = $label; $fpofv[] = array( 'FpofvBlockLabel'=>$block['label'], 'TaskField'=>$fieldname, 'TaskFieldLabel'=>$label, 'FpovValueActive'=>$fpofv_saved[$fieldname]['FpovValueActive'], 'FpovValueStr'=>$fpofv_saved[$fieldname]['FpovValueStr'], 'FpovManaged'=>$fpofv_saved[$fieldname]['FpovManaged'], 'FpovReadPermission'=>$fpofv_saved[$fieldname]['FpovReadPermission'], 'FpovWritePermission'=>$fpofv_saved[$fieldname]['FpovWritePermission'], 'FpovMandatoryPermission'=>$fpofv_saved[$fieldname]['FpovMandatoryPermission'], 'HideFpovValue'=>true, // crmv@190916 removed code ); if (!empty($field['columns'])) { $columns = Zend_Json::decode($field['columns']); foreach($columns as $column) { $fieldname = $field['fieldname'].'::'.$column['fieldname']; $label = $field['label'].': '.$column['label']; $fpofv_value_options['$'.$fieldname] = $label; $fpofv[] = array( 'FpofvBlockLabel'=>$block['label'], 'TaskField'=>$fieldname, 'TaskFieldLabel'=>$label, 'FpovValueActive'=>$fpofv_saved[$fieldname]['FpovValueActive'], 'FpovValueStr'=>$fpofv_saved[$fieldname]['FpovValueStr'], 'FpovManaged'=>$fpofv_saved[$fieldname]['FpovManaged'], 'FpovReadPermission'=>$fpofv_saved[$fieldname]['FpovReadPermission'], 'FpovWritePermission'=>$fpofv_saved[$fieldname]['FpovWritePermission'], 'FpovMandatoryPermission'=>$fpofv_saved[$fieldname]['FpovMandatoryPermission'], ); } } } else { $fieldname = $field['fieldname']; $label = $field['label']; $fpofv_value_options['$'.$fieldname] = $label; $fpofv[] = array( 'FpofvBlockLabel'=>$block['label'], 'TaskField'=>$fieldname, 'TaskFieldLabel'=>$label, 'FpovValueActive'=>$fpofv_saved[$fieldname]['FpovValueActive'], 'FpovValueStr'=>$fpofv_saved[$fieldname]['FpovValueStr'], 'FpovManaged'=>$fpofv_saved[$fieldname]['FpovManaged'], 'FpovReadPermission'=>$fpofv_saved[$fieldname]['FpovReadPermission'], 'FpovWritePermission'=>$fpofv_saved[$fieldname]['FpovWritePermission'], 'FpovMandatoryPermission'=>$fpofv_saved[$fieldname]['FpovMandatoryPermission'], ); } //crmv@106857e } } } $smarty->assign("FPOFV_PIECE_DATA", $fpofv); $smarty->assign("FPOFV_VALUE_OPTIONS", $fpofv_value_options); $smarty->assign('SDK_CUSTOM_FUNCTIONS', SDK::getFormattedProcessMakerFieldActions()); } } else { $buttons = '
 
'; $smarty->assign("BUTTON_LIST", $buttons); $smarty->assign("ERROR", getTranslatedString('LBL_NONE_DYNAFORM_CONDITIONAL','Settings')); } $smarty->display('Settings/ProcessMaker/Metadata/DynaformConditional.tpl'); } else { if (empty($ruleid)) { $smarty->assign('FIELD_PERMISSIONS_DISPLAY','none'); } else { require_once('include/utils/ModLightUtils.php'); $MLUtils = ModLightUtils::getInstance(); $smarty->assign('FIELD_PERMISSIONS_DISPLAY','block'); $moduleName = $conditionals[$ruleid]['moduleName']; list($metaid,$module) = explode(':',$moduleName); $conditionals_obj = CRMEntity::getInstance('Conditionals'); $FpofvData = $conditionals_obj->wui_getFpofvData('',$module); $fpofv = array(); foreach($FpofvData as $tmp) { if ($tmp['uitype'] == 220) { $fieldname = $tmp['FpofvChkFieldName']; $label = $tmp['FpofvChkFieldLabel']; $fpofv_value_options['$'.$fieldname] = $label; $fpofv[] = array( 'FpofvBlockLabel'=>getTranslatedString($tmp['FpofvBlockLabel'],$module), 'TaskField'=>$fieldname, 'TaskFieldLabel'=>getTranslatedString($label,$module), 'FpovValueActive'=>$fpofv_saved[$fieldname]['FpovValueActive'], 'FpovValueStr'=>$fpofv_saved[$fieldname]['FpovValueStr'], 'FpovManaged'=>$fpofv_saved[$fieldname]['FpovManaged'], 'FpovReadPermission'=>$fpofv_saved[$fieldname]['FpovReadPermission'], 'FpovWritePermission'=>$fpofv_saved[$fieldname]['FpovWritePermission'], 'FpovMandatoryPermission'=>$fpofv_saved[$fieldname]['FpovMandatoryPermission'], 'HideFpovValue'=>$tmp['HideFpovValue'], 'HideFpovManaged'=>$tmp['HideFpovManaged'], 'HideFpovReadPermission'=>$tmp['HideFpovReadPermission'], 'HideFpovWritePermission'=>$tmp['HideFpovWritePermission'], 'HideFpovMandatoryPermission'=>$tmp['HideFpovMandatoryPermission'], ); $columns = $MLUtils->getColumns($module, $tmp['FpofvChkFieldName']); if (!empty($columns)) { foreach($columns as $column) { $fieldname = $tmp['FpofvChkFieldName'].'::'.$column['fieldname']; $label = $tmp['FpofvChkFieldLabel'].': '.$column['label']; $fpofv_value_options['$'.$fieldname] = $label; $fpofv[] = array( 'FpofvBlockLabel'=>getTranslatedString($tmp['FpofvBlockLabel'],$module), 'TaskField'=>$fieldname, 'TaskFieldLabel'=>getTranslatedString($label,$module), 'FpovValueActive'=>$fpofv_saved[$fieldname]['FpovValueActive'], 'FpovValueStr'=>$fpofv_saved[$fieldname]['FpovValueStr'], 'FpovManaged'=>$fpofv_saved[$fieldname]['FpovManaged'], 'FpovReadPermission'=>$fpofv_saved[$fieldname]['FpovReadPermission'], 'FpovWritePermission'=>$fpofv_saved[$fieldname]['FpovWritePermission'], 'FpovMandatoryPermission'=>$fpofv_saved[$fieldname]['FpovMandatoryPermission'], ); } } } else { $fieldname = $tmp['FpofvChkFieldName']; $label = $tmp['FpofvChkFieldLabel']; $fpofv_value_options['$'.$fieldname] = $label; $fpofv[] = array( 'FpofvBlockLabel'=>getTranslatedString($tmp['FpofvBlockLabel'],$module), 'TaskField'=>$fieldname, 'TaskFieldLabel'=>getTranslatedString($label,$module), 'FpovValueActive'=>$fpofv_saved[$fieldname]['FpovValueActive'], 'FpovValueStr'=>$fpofv_saved[$fieldname]['FpovValueStr'], 'FpovManaged'=>$fpofv_saved[$fieldname]['FpovManaged'], 'FpovReadPermission'=>$fpofv_saved[$fieldname]['FpovReadPermission'], 'FpovWritePermission'=>$fpofv_saved[$fieldname]['FpovWritePermission'], 'FpovMandatoryPermission'=>$fpofv_saved[$fieldname]['FpovMandatoryPermission'], 'HideFpovValue'=>$tmp['HideFpovValue'], 'HideFpovManaged'=>$tmp['HideFpovManaged'], 'HideFpovReadPermission'=>$tmp['HideFpovReadPermission'], 'HideFpovWritePermission'=>$tmp['HideFpovWritePermission'], 'HideFpovMandatoryPermission'=>$tmp['HideFpovMandatoryPermission'], ); } } $smarty->assign("FPOFV_PIECE_DATA", $fpofv); $smarty->assign("FPOFV_VALUE_OPTIONS", $fpofv_value_options); $smarty->assign('SDK_CUSTOM_FUNCTIONS', SDK::getFormattedProcessMakerFieldActions()); } $modules = $PMUtils->getRecordsInvolvedOptions($id, $moduleName); $smarty->assign("moduleNames", $modules); $smarty->display('Settings/ProcessMaker/Metadata/Conditional.tpl'); } exit; break; case 'load_field_permissions_table': require_once('include/utils/ModLightUtils.php'); $MLUtils = ModLightUtils::getInstance(); $chk_module = $_REQUEST['chk_module']; $conditionals_obj = CRMEntity::getInstance('Conditionals'); $fpofv = array(); $fpofv_value_options = array(); if (!empty($chk_module)) { $FpofvData = $conditionals_obj->wui_getFpofvData('',$chk_module); foreach($FpofvData as $tmp) { if ($tmp['uitype'] == 220) { $fieldname = $tmp['FpofvChkFieldName']; $label = $tmp['FpofvChkFieldLabel']; $fpofv_value_options['$'.$fieldname] = $label; $fpofv[] = array( 'FpofvBlockLabel'=>getTranslatedString($tmp['FpofvBlockLabel'],$chk_module), 'TaskField'=>$fieldname, 'TaskFieldLabel'=>getTranslatedString($label,$chk_module), 'HideFpovValue'=>$tmp['HideFpovValue'], 'HideFpovManaged'=>$tmp['HideFpovManaged'], 'HideFpovReadPermission'=>$tmp['HideFpovReadPermission'], 'HideFpovWritePermission'=>$tmp['HideFpovWritePermission'], 'HideFpovMandatoryPermission'=>$tmp['HideFpovMandatoryPermission'], ); $columns = $MLUtils->getColumns($chk_module, $tmp['FpofvChkFieldName']); if (!empty($columns)) { foreach($columns as $column) { $fieldname = $tmp['FpofvChkFieldName'].'::'.$column['fieldname']; $label = $tmp['FpofvChkFieldLabel'].': '.$column['label']; $fpofv_value_options['$'.$fieldname] = $label; $fpofv[] = array( 'FpofvBlockLabel'=>getTranslatedString($tmp['FpofvBlockLabel'],$chk_module), 'TaskField'=>$fieldname, 'TaskFieldLabel'=>getTranslatedString($label,$chk_module), ); } } } else { $fieldname = $tmp['FpofvChkFieldName']; $label = $tmp['FpofvChkFieldLabel']; $fpofv_value_options['$'.$fieldname] = $label; $fpofv[] = array( 'FpofvBlockLabel'=>getTranslatedString($tmp['FpofvBlockLabel'],$chk_module), 'TaskField'=>$fieldname, 'TaskFieldLabel'=>getTranslatedString($label,$chk_module), 'HideFpovValue'=>$tmp['HideFpovValue'], 'HideFpovManaged'=>$tmp['HideFpovManaged'], 'HideFpovReadPermission'=>$tmp['HideFpovReadPermission'], 'HideFpovWritePermission'=>$tmp['HideFpovWritePermission'], 'HideFpovMandatoryPermission'=>$tmp['HideFpovMandatoryPermission'], ); } } } $smarty->assign("FPOFV_PIECE_DATA", $fpofv); $smarty->assign("FPOFV_VALUE_OPTIONS", $fpofv_value_options); $smarty->assign('SDK_CUSTOM_FUNCTIONS', SDK::getFormattedProcessMakerFieldActions()); $smarty->display('Settings/ProcessMaker/Metadata/ConditionalFieldTable.tpl'); exit; break; case 'save_dynaform_conditional': case 'save_conditional': $id = vtlib_purify($_REQUEST['processmakerid']); $elementid = $_REQUEST['elementid']; $ruleid = $_REQUEST['ruleid']; $metaid = $_REQUEST['metaid']; $conditions = Zend_Json::decode($_REQUEST['conditions']); ($mode == 'save_dynaform_conditional') ? $item = 'dfconditionals' : $item = 'conditionals'; $fpofv = array(); foreach($_REQUEST as $k => $v) { $perms = array('FpovValueActive','FpovValueStr','FpovManaged','FpovReadPermission','FpovWritePermission','FpovMandatoryPermission'); foreach($perms as $perm) { if (strpos($k,$perm) !== false) { list($tmp,$fieldname) = explode($perm,$k); if (!empty($fieldname)) { $fpofv[$fieldname][$perm] = $v; } } } } foreach($fpofv as $fieldname => $info) { if ($info['FpovValueActive'] != '1') unset($fpofv[$fieldname]['FpovValueStr']); if (empty($fpofv[$fieldname])) unset($fpofv[$fieldname]); } $conditionals = array( 'title'=>$_REQUEST['title'], 'role_grp_check'=>$_REQUEST['role_grp_check'], 'conditions'=>$conditions, 'fpofv'=>$fpofv, ); if ($mode == 'save_conditional') { $conditionals['moduleName'] = $_REQUEST['moduleName']; } $data = $PMUtils->retrieve($id); $vte_metadata = Zend_Json::decode($data['vte_metadata']); if (empty($ruleid)) { $ruleid = 1; if (!empty($vte_metadata[$elementid][$item])) { end($vte_metadata[$elementid][$item]); $ruleid = key($vte_metadata[$elementid][$item])+1; } } $vte_metadata[$elementid][$item][$ruleid] = $conditionals; $PMUtils->saveMetadata($id,$elementid,Zend_Json::encode($vte_metadata[$elementid])); exit; break; case 'delete_dynaform_conditional': case 'delete_conditional': ($mode == 'delete_dynaform_conditional') ? $item = 'dfconditionals' : $item = 'conditionals'; $id = vtlib_purify($_REQUEST['id']); $elementid = vtlib_purify($_REQUEST['elementid']); $ruleid = vtlib_purify($_REQUEST['ruleid']); $data = $PMUtils->retrieve($id); $vte_metadata = Zend_Json::decode($data['vte_metadata']); unset($vte_metadata[$elementid][$item][$ruleid]); $PMUtils->saveMetadata($id,$elementid,Zend_Json::encode($vte_metadata[$elementid])); exit; break; //crmv@99316e crmv@112297e //crmv@100731 case 'add_advanced_permission': $id = vtlib_purify($_REQUEST['processmakerid']); $elementid = $_REQUEST['elementid']; $data = $PMUtils->retrieve($id); $vte_metadata = Zend_Json::decode($data['vte_metadata']); $vte_metadata[$elementid]['advanced_permissions'][] = array( 'record_involved'=>$_REQUEST['record_involved'], 'resource_type'=>$_REQUEST['resource_type'], 'resource'=>$_REQUEST['resource'], 'permission'=>$_REQUEST['permission'], ); $PMUtils->saveMetadata($id,$elementid,Zend_Json::encode($vte_metadata[$elementid])); exit; break; case 'delete_advanced_permission': $id = vtlib_purify($_REQUEST['id']); $elementid = vtlib_purify($_REQUEST['elementid']); $ruleid = vtlib_purify($_REQUEST['ruleid']); $data = $PMUtils->retrieve($id); $vte_metadata = Zend_Json::decode($data['vte_metadata']); unset($vte_metadata[$elementid]['advanced_permissions'][$ruleid]); $PMUtils->saveMetadata($id,$elementid,Zend_Json::encode($vte_metadata[$elementid])); exit; break; //crmv@100731e case 'CheckActiveProcesses': global $mod_strings; $ckeckProcesses = $PMUtils->checkActiveProcesses(); $success = $ckeckProcesses; if (!$success) { $limit = $PMUtils->limit_processes; $message = sprintf($mod_strings['LBL_PM_LIMIT_EXCEEDED'], $limit); } echo Zend_Json::encode(array('success' => $success, 'message' => $message)); exit; //crmv@106856 case 'open_advanced_field_assignment': $processmakerid = vtlib_purify($_REQUEST['processid']); $elementid = $_REQUEST['elementid']; $actionid = $_REQUEST['actionid']; $fieldname = $_REQUEST['fieldname']; $form_module = $_REQUEST['form_module']; $smarty->assign("PROCESSID", $processmakerid); $smarty->assign("ELEMENTID", $elementid); $smarty->assign("ACTIONID", $actionid); $smarty->assign("FIELDNAME", $fieldname); $smarty->assign("FORM_MODULE", $form_module); $smarty->assign("PAGE_TITLE", $mod_strings['LBL_PM_ADVANCED_FIELD_ASSIGNMENT']); $smarty->assign("HEADER_Z_INDEX", 1); $buttons = '
 
'; $smarty->assign("BUTTON_LIST", $buttons); $data = $PMUtils->retrieve($processmakerid); $vte_metadata = Zend_Json::decode($data['vte_metadata']); $helper = Zend_Json::decode($data['helper']); //crmv@183346 if ($form_module == 'ModNotifications') { $actionType = $PMUtils->getActionTypes('ModNotification'); require_once($actionType['php_file']); $action = new $actionType['class']($actionOptions); $uitype = $action->fields[$fieldname]['uitype']; } else { $formModuleInstance = Vtecrm_Module::getInstance($form_module); $result = $adb->pquery("SELECT uitype FROM {$table_prefix}_field WHERE tabid = ? and fieldname = ?", array($formModuleInstance->id,$fieldname)); if ($result && $adb->num_rows($result) > 0) { $uitype = $adb->query_result($result,0,'uitype'); } } if ($uitype == 50 || $uitype == 52) $uitype = 51; //crmv@160843 //crmv@183346e //crmv@160843 $storage = $_REQUEST['storage']; if ($storage == 'db') { if ($form_module == 'Processes') { $rules = $helper[$elementid]['advanced_field_assignment'][$fieldname]; } else { $rules = $vte_metadata[$elementid]['actions'][$actionid]['advanced_field_assignment'][$fieldname]; } $PMUtils->setAdvancedFieldAssignment($fieldname,$rules); } elseif ($storage == 'session') { $rules = $PMUtils->getAdvancedFieldAssignment($fieldname); } $PMUtils->addConditionTranslations($rules, $processmakerid); global $noof_group_rows, $current_user; $_REQUEST['enable_editoptions'] = 'yes'; $_REQUEST['editoptionsfieldnames'] = array(); get_group_options(); if (!empty($rules)) { foreach($rules as $i => &$rule) { $rule = getOutputHtml($uitype,'assigned_user_id'.$i,$rule['conditions_translate'],100,array('assigned_user_id'.$i=>$rule['value']),1,'Settings','',1,'I~M'); // unset advanced type option if ($uitype == 53) { $rule[3][2]['skip_advanced_type_option'] = true; } else { unset($rule[3][1]['type_options'][2]); } $_REQUEST['sdk_params_'.'assigned_user_id'.$i] = $rule['sdk_params']; $_REQUEST['editoptionsfieldnames'][] = 'assigned_user_id'.$i; } } $_REQUEST['editoptionsfieldnames'] = implode('|',$_REQUEST['editoptionsfieldnames']); //crmv@160843e $smarty->assign("RULES", $rules); $smarty->display('Settings/ProcessMaker/Metadata/AdvancedFieldAssignment.tpl'); exit; case 'open_advanced_field_assignment_condition': $ruleid = vtlib_purify($_REQUEST['ruleid']); $processid = vtlib_purify($_REQUEST['processid']); $elementid = vtlib_purify($_REQUEST['elementid']); $actionid = vtlib_purify($_REQUEST['actionid']); $fieldname = vtlib_purify($_REQUEST['fieldname']); $form_module = vtlib_purify($_REQUEST['form_module']); $smarty->assign("PROCESSID", $processid); $smarty->assign("ELEMENTID", $elementid); $smarty->assign("ACTIONID", $actionid); $smarty->assign("FIELDNAME", $fieldname); $current_entity = ''; if (isset($ruleid)) { $rules = $PMUtils->getAdvancedFieldAssignment($fieldname); $current_entity = $rules[$ruleid]['meta_record']; $smarty->assign("CONDITIONS", Zend_Json::encode($rules[$ruleid]['conditions'])); } $modules = $PMUtils->getRecordsInvolvedOptions($processid, $current_entity); //crmv@96450 require_once('modules/Settings/ProcessMaker/ProcessDynaForm.php'); $processDynaFormObj = ProcessDynaForm::getInstance(); $dynaforms = $processDynaFormObj->getOptions($processid, $current_entity); if (!empty($dynaforms)) $modules = array_merge($modules,$dynaforms); //crmv@96450e $smarty->assign("moduleNames", $modules); $smarty->assign("PAGE_TITLE", $mod_strings['LBL_PM_ADVANCED_FIELD_ASSIGNMENT'].': '.$mod_strings['LBL_NEW_CONDITION_BUTTON_LABEL']); $smarty->assign("HEADER_Z_INDEX", 1); $buttons = '
 
'; $smarty->assign("BUTTON_LIST", $buttons); $smarty->assign('SDK_CUSTOM_FUNCTIONS',SDK::getFormattedProcessMakerTaskConditions()); $smarty->display('Settings/ProcessMaker/Metadata/AdvancedFieldAssignmentCondition.tpl'); exit; case 'save_advanced_field_assignment_condition': $ruleid = vtlib_purify($_REQUEST['ruleid']); $fieldname = $_REQUEST['fieldname']; $meta_record = $_REQUEST['meta_record']; $conditions = $_REQUEST['conditions']; $PMUtils->saveAdvancedFieldAssignment($fieldname,'condition',array($ruleid,$meta_record,$conditions)); exit; case 'save_advanced_field_assignment_values': $fieldname = $_REQUEST['fieldname']; $PMUtils->saveAdvancedFieldAssignment($fieldname,'values',array($_REQUEST['form'])); exit; case 'delete_advanced_field_assignment': $PMUtils->removeAdvancedFieldAssignment($_REQUEST['processid'],$_REQUEST['elementid'],$_REQUEST['actionid'],$_REQUEST['fieldname'],$_REQUEST['ruleid']); exit; //crmv@106856e //crmv@113775 case 'load_potential_relations': $id = vtlib_purify($_REQUEST['id']); $elementid = vtlib_purify($_REQUEST['elementid']); $record1 = vtlib_purify($_REQUEST['record1']); list($metaid1,$module1) = explode(':',$record1); $relationManager = RelationManager::getInstance(); $recordsInvolved = $PMUtils->getRecordsInvolved($id); $values = array(''=>array(getTranslatedString('LBL_PLEASE_SELECT'),'')); $values = $PMUtils->getRecordsInvolvedOptions($id, $record1, false, null, null, true); // crmv@191351 $smarty->assign("RECORDPICK", $values); $smarty->assign("ENTITY", '2'); $smarty->display('Settings/ProcessMaker/actions/RelateRecord.tpl'); exit; //crmv@113775e //crmv@121416 crmv@173186 case 'logs': header('location: index.php?module=Settings&action=SettingsAjax&file=LogView&log=processes'); exit; //crmv@121416e crmv@173186e //crmv@126184 case 'load_relation_nton': // crmv@191351 global $table_prefix; $id = vtlib_purify($_REQUEST['id']); $elementid = vtlib_purify($_REQUEST['elementid']); $record1 = vtlib_purify($_REQUEST['record1']); list($metaid1,$module1,$reference1,$meta_processid1,$relatedModule1) = explode(':',$record1); $recordModule1 = getSalesEntityType($record1); if (!empty($relatedModule1)) { if ($relatedModule1 != $recordModule1) { return; } $module1 = $relatedModule1; } elseif (!empty($reference1)) { $module1 = getSingleFieldValue("{$table_prefix}_fieldmodulerel", "relmodule", "fieldid", $reference1); } if ($record1 !== false) { $RM = RelationManager::getInstance(); $relations = $RM->getRelations($module1, ModuleRelation::$TYPE_NTON, array(), $PMUtils->modules_excluded_link); $values = array(''=>array(getTranslatedString('LBL_PLEASE_SELECT'),'')); foreach ($relations as $rel) { $relmod = $rel->getSecondModule(); $values[$relmod] = array(getTranslatedString($relmod, $relmod), ''); } $smarty->assign("STATICRECORD", '1'); $smarty->assign("RECORDPICK", $values); $smarty->assign("ENTITY", '2'); $smarty->display('Settings/ProcessMaker/actions/RelateRecord.tpl'); } // crmv@191351e exit; case 'load_static_related': $id = vtlib_purify($_REQUEST['id']); $elementid = vtlib_purify($_REQUEST['elementid']); $record1 = vtlib_purify($_REQUEST['record1']); list($metaid1,$module1) = explode(':',$record1); $module2 = vtlib_purify($_REQUEST['relmodule']); $list = array_filter(explode(',',$_REQUEST['sel_static_records'])); require_once('modules/Settings/ProcessMaker/actions/RelateStatic.php'); $RelStat = PMActionRelateStatic::getInstance(); $RelStat->renderRelated($smarty, $module1, $module2, $list); $smarty->display('Settings/ProcessMaker/actions/RelatedRecordList.tpl'); exit; //crmv@126184e //crmv@185548 case 'load_entity_relations': $id = vtlib_purify($_REQUEST['id']); $elementid = vtlib_purify($_REQUEST['elementid']); $record1 = vtlib_purify($_REQUEST['record1']); list($metaid1,$module1) = explode(':',$record1); $record_pick_1 = array(); $record_pick_2 = array(); $record_pick_1 = $PMUtils->getRecordsInvolvedOptions($id, $record1, false, null, null, true); if (!empty($record1)) { $record_pick_2 = $PMUtils->getRecordsInvolvedOptions($id, null, false, null, null, true); //crmv@135190 } else{ $records_involved = $record_pick_1; foreach($records_involved as $single_module__involved => $single_record__involved){ if($single_record__involved[1] == 'selected'){ unset($records_involved[$single_module__involved]); } } $record_pick_2 = $records_involved; } $mode = 'create'; foreach($record_pick_1 as $module_list1 => $current_list1){ foreach($current_list1 as $current_module1 => $current_value1){ if(isset($current_value1[$record1])){ $record_pick_1[$module_list1][$current_module1][$record1][1] = 'selected'; $mode = 'edit'; break; } } } foreach($record_pick_2 as $module_list2 => $current_list2){ foreach($current_list2 as $current_module2 => $current_value2){ if($current_value2 == 'selected'){ $mode = 'edit'; break; } } } $smarty->assign("RECORDS_INVOLVED", $record_pick_2); $smarty->assign("ENTITY", '2'); $smarty->assign("MODE", $mode); $smarty->assign("SHOW", 1); $smarty->display('Settings/ProcessMaker/actions/TransferRelateRecord.tpl'); exit; case 'reload_module_list': $id = vtlib_purify($_REQUEST['id']); $elementid = vtlib_purify($_REQUEST['elementid']); $record1 = vtlib_purify($_REQUEST['record1']); $mode = vtlib_purify($_REQUEST['entity_mode']); list($metaid1,$module1,$reference1) = explode(':',$record1); $record2 = vtlib_purify($_REQUEST['record2']); list($metaid2,$module2,$reference2) = explode(':',$record2); if(!empty($reference1)){ $module1 = getSingleFieldValue($table_prefix.'_fieldmodulerel', 'relmodule', 'fieldid', $reference1); } if(!empty($reference2)){ $module2 = getSingleFieldValue($table_prefix.'_fieldmodulerel', 'relmodule', 'fieldid', $reference2); } $RM = RelationManager::getInstance(); $related_modules1 = $RM->getRelations($module1); $related_modules2 = $RM->getRelations($module2); $PMUtils = ProcessMakerUtils::getInstance(); $rel_modules1 = $PMUtils->get_all_related_modules($related_modules1); $rel_modules2 = $PMUtils->get_all_related_modules($related_modules2); $rel_modules = array_intersect($rel_modules1, $rel_modules2); $rel_modules = array_unique($rel_modules); foreach($rel_modules as $related_modules => $module){ $modules_list[] = $module; } $metadata_action['modules'] = Zend_Json::encode($modules_list); $rel_modules_list = Zend_Json::decode($metadata_action['modules']); $vte_metadata[$elementid]['actions'][$action_id]['modules'] = $rel_modules_list; if(!empty($rel_modules_list)){ foreach($rel_modules_list as $module_index => $module){ if($module == $module1 || $module == $module2){ unset($rel_modules_list[$module_index]); } } foreach($metadata_action as $parameters => $value){ if(in_array($parameters, $rel_modules_list)){ if($value === 'on'){ $selected_modules[] = $parameters; } } } } if($mode == 'edit'){ $show_pick2 = false; $show_list = true; } else{ $show_pick2 = false; $show_list = false; } $smarty->assign("MODE", $mode); $smarty->assign("RELOAD", false); $smarty->assign("SHOWPICK2", $show_pick2); $smarty->assign("SHOW_LIST", $show_list); $smarty->assign("MODULES_LIST", $rel_modules_list); $smarty->assign("SELECTED_MODULES_LIST", $selected_modules); $smarty->display('Settings/ProcessMaker/actions/TransferRelations.tpl'); exit; //crmv@185548e //crmv@126696 case 'select_nl_recipients': global $current_language; $camp_strings = get_lang_strings('Newsletter', $current_language); $pageTitle = getTranslatedString('ChooseRecipients', 'Newsletter'); $smarty->assign("MOD",$camp_strings); $smarty->assign('PAGE_TITLE', $pageTitle); $focusNewsletter = CRMEntity::getInstance('Newsletter'); //crmv@181281 $target_modinfo = array(); foreach ($focusNewsletter->target_modules as $tmod) { //crmv@181281 if (!vtlib_isModuleActive($tmod)) continue; //crmv@48990 if (isPermitted($tmod, 'index') != 'yes') continue; $cv = CRMEntity::getInstance('CustomView', $tmod); // crmv@115329 $filterlist = $cv->getCustomViewCombo(); $Slv = SimpleListView::getInstance($tmod); $Slv->entriesPerPage = 10; $Slv->showCreate = false; $Slv->showSuggested = false; $Slv->showCheckboxes = false; $Slv->selectFunction = 'nlwRecordSelect'; $list = $Slv->render(); $modinfo = array( 'filters' => $filterlist, 'list' => $list, 'listid' => $Slv->listid ); $target_modinfo[$tmod] = $modinfo; } $smarty->assign('TARGET_MODS', $target_modinfo); $smarty->assign('HEADER_Z_INDEX', 100); $smarty->display('Settings/ProcessMaker/actions/SelectNLRecipients.tpl'); exit; break; case 'load_nl_template': $res = $adb->pquery("SELECT * FROM {$table_prefix}_emailtemplates WHERE templateid = ?", array($_REQUEST['templateid'])); $templateinfo = $adb->fetchByAssoc($res, -1, false); echo Zend_Json::encode($templateinfo); exit; break; //crmv@126696e // crmv@187729 case 'reload_create_pdf': $id = vtlib_purify($_REQUEST['id']); $elementid = vtlib_purify($_REQUEST['elementid']); $pdf_entity = vtlib_purify($_REQUEST['pdf_entity']); $entity_mode = vtlib_purify($_REQUEST['entity_mode']); $json_result = ""; $related_field_modules = array(); $error = ""; list($metaid,$module,$reference) = explode(':',$pdf_entity); if(isset($reference) && !empty($reference)){ list($reference_values,$module) = explode('::',$pdf_entity); if(empty($module)){ $module = getSingleFieldValue($table_prefix."_fieldmodulerel", "relmodule", "fieldid", $reference); } } $fields = array( 'foldername' => array('label'=>'Folder','type'=>'picklist','uitype'=>15,'typeofdata'=>'I~M'), 'templatename' => array('label'=>'Template','type'=>'picklist','uitype'=>15,'typeofdata'=>'I~M'), ); $templates_name = array(); $folders_name = array(); $templates_query = "SELECT filename FROM {$table_prefix}_pdfmaker WHERE module = ?"; $template_res = $adb->pquery($templates_query, array($module)); if($template_res && $adb->num_rows($template_res) > 0){ while($row = $adb->fetchByAssoc($template_res, -1, false)){ $templates_name[] = $row['filename']; } } $folder_query = "SELECT foldername FROM {$table_prefix}_crmentityfolder WHERE tabid = ? ORDER BY sequence"; $folder_res = $adb->pquery($folder_query, array(8)); if($folder_res && $adb->num_rows($folder_res) > 0){ while($row = $adb->fetchByAssoc($folder_res, -1, false)){ $folders_name[] = $row['foldername']; } } $template = getOutputHtml($fields['templatename']['uitype'], 'templatename', $fields['templatename']['label'], 100, $col_fields, 1, $module, 'edit', 1, $fields['templatename']['typeofdata'], array('picklistvalues'=>implode("\n",$templates_name))); $template[] = 4; $folder = getOutputHtml($fields['foldername']['uitype'], 'foldername', $fields['foldername']['label'], 100, $col_fields, 1, $module, '', 1, $fields['foldername']['typeofdata'], array('picklistvalues'=>implode("\n",$folders_name))); $folder[] = 5; $blocks = array( 'LBL_CREATEPDF_INFORMATION' => array( 'blockid' => 1, 'panelid' => 0, 'label' => getTranslatedString('LBL_CREATEPDF_INFORMATION','PDFMaker'), 'fields' => array( array( $template, $folder, ), ) ), ); if(count($templates_name) == 0){ $error = getTranslatedString('LBL_NO_TEMPLATE','PDFMaker'); } $result = array("blocks" => $blocks, "templates" => $templates_name, "folders" => $folders_name, "error" => $error); $json_result = Zend_Json::encode($result); echo $json_result; exit; // crmv@187729e //crmv@153321_5 case 'get_cache': $item = vtlib_purify($_REQUEST['item']); $cache = $PMUtils->getCache($item); echo Zend_Json::encode($cache); exit; break; case 'set_cache': $item = vtlib_purify($_REQUEST['item']); $value = Zend_Json::decode($_REQUEST['value']); $PMUtils->setCache($item,$value); exit; break; //crmv@153321_5e default: if ($mode == 'delete') { $id = vtlib_purify($_REQUEST['id']); $PMUtils->delete($id); $smarty->assign("MODE", ''); /* } elseif ($mode == 'save') { $id = vtlib_purify($_REQUEST['id']); $PMUtils->edit($id,$_REQUEST); */ } $limit_exceeded = $PMUtils->limitProcessesExceeded(); if ($limit_exceeded !== false) { global $adb, $table_prefix; $result = $adb->limitpQuery("select id from {$table_prefix}_processmaker where active = ?",0,($limit_exceeded-$PMUtils->limit_processes),array(1)); if ($result && $adb->num_rows($result) > 0) { $ids = array(); while($row=$adb->fetchByAssoc($result)) { $ids[] = $row['id']; } $adb->pquery("update {$table_prefix}_processmaker set active = ? where id in (".generateQuestionMarks($ids).")",array(0,$ids)); } } // load list $smarty->assign("HEADER", $PMUtils->getHeaderList()); $smarty->assign("LIST", $PMUtils->getList()); //crmv@185705 global $current_language; $smarty->assign("CURRENT_LANGUAGE", $current_language); //crmv@185705e //crmv@121416 $VP = VTEProperties::getInstance(); $smarty->assign("SHOW_LOGS_BUTTON", ($VP->get('settings.process_manager.show_logs_button') == 1)); //crmv@121416e $smarty->assign("LIST_TABLE_PROP", array(50,4,'asc')); // crmv@190834 $sub_template = 'Settings/ProcessMaker/List.tpl'; break; } $smarty->assign("SUB_TEMPLATE", $sub_template); $smarty->display('Settings/ProcessMaker/ProcessMaker.tpl');