diff --git a/workflow/engine/classes/DynaformEditor.php b/workflow/engine/classes/DynaformEditor.php
index 1591e5863..564b440c0 100644
--- a/workflow/engine/classes/DynaformEditor.php
+++ b/workflow/engine/classes/DynaformEditor.php
@@ -1,6 +1,12 @@
panelConf = array_merge($this->panelConf, $this->defaultConfig['Editor']);
//'title' => G::LoadTranslation('ID_DYNAFORM_EDITOR').' - ['.$this->title.']',
diff --git a/workflow/engine/classes/DynaformEditorAjax.php b/workflow/engine/classes/DynaformEditorAjax.php
index dd45319b4..048ab8421 100644
--- a/workflow/engine/classes/DynaformEditorAjax.php
+++ b/workflow/engine/classes/DynaformEditorAjax.php
@@ -1,718 +1,718 @@
-.
- *
- * For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
- * Coral Gables, FL, 33134, USA, or email info@colosa.com.
- */
-/**
- * Created on 21/12/2007
+.
+ *
+ * For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
+ * Coral Gables, FL, 33134, USA, or email info@colosa.com.
+ */
+/**
+ * Created on 21/12/2007
* Dynaform - Dynaform
-/**
- * DynaformEditorAjax - DynaformEditorAjax class
- *
- * @package workflow.engine.classes
- */class dynaformEditorAjax extends dynaformEditor implements iDynaformEditorAjax
-{
-
- /**
- * Constructor of the class dynaformEditorAjax
- *
- * @param var $post
- * @return void
- */
- public function dynaformEditorAjax($post)
- {
- $this->_run($post);
- }
-
- /**
- * Function Run
- *
- * @param var $post
- * @return void
- */
- public function _run($post)
- {
- WebResource::WebResource($_SERVER['REQUEST_URI'], $post);
- }
-
- /**
- * Prints the DynaformEditorAjax
- *
- * @param object $A
- * @return ob_get_clean
- */
- public function render_preview($A)
- {
- ob_start();
- $file = G::decrypt($A, URL_KEY);
- global $G_PUBLISH;
- $G_PUBLISH = new Publisher();
- $G_PUBLISH->publisherId = 'preview';
- $form = new Form($file, PATH_DYNAFORM, SYS_LANG, true, $G_PUBLISH->publisherId);
- switch (basename($form->template, '.html')) {
- case 'grid':
- $template = 'grid';
- $aAux = array_keys($form->fields);
- if (count($aAux) > 0) {
- $aFields = (array_combine($aAux, $aAux));
- } else {
- $aFields = $aAux;
- }
- if (is_array($aFields)) {
- foreach ($aFields as $key => $val) {
- $aFields[$key] = array(1 => "", 2 => "", 3 => "", 4 => "", 5 => "");
- }
- }
- break;
- default:
- $template = 'xmlform_' . $G_PUBLISH->publisherId;
- $aFields = array('__DYNAFORM_OPTIONS' => array('PREVIOUS_STEP' => '#', 'NEXT_STEP' => '#', 'NEXT_STEP_LABEL' => G::loadTranslation('ID_NEXT_STEP'), 'PREVIOUS_ACTION' => 'return false;', 'NEXT_ACTION' => 'return false;'
- )
- );
- }
- $G_PUBLISH->AddContent('dynaform', $template, $file, '', $aFields, '');
- G::RenderPage('publish', 'raw');
- return ob_get_clean();
- }
-
- /**
- * Prints the Dynaform in format HTML
- *
- * @param object $A
- * @return array
- */
- public function render_htmledit($A)
- {
- $script = '';
- $file = G::decrypt($A, URL_KEY);
- ob_start();
- global $G_PUBLISH;
- $form = new Form($file, PATH_DYNAFORM, SYS_LANG, true);
- $G_PUBLISH = new Publisher();
- $G_PUBLISH->publisherId = '';
- $html = $this->get_htmlcode($A);
- if (!is_string($html)) {
- $error = $html;
- $html = '';
- } else {
- $error = 0;
- }
- $HtmlEditor = array('URL' => $A, 'HTML' => $html, 'DYN_UID' => $file );
- $G_PUBLISH->AddContent('xmlform', 'xmlform', 'dynaforms/dynaforms_HtmlEditor', '', $HtmlEditor, '', '');
- G::RenderPage("publish", 'raw');
- return array('error' => $error, 'html' => ob_get_clean()
- );
- }
-
- /**
- * Get the html code
- * Loads the stored HTML or the default Template if
- * it doesn't exist.
- *
- * @param object $A
- * @return code html
- */
- public function get_htmlcode($A)
- {
- try {
- $script = null;
- $fileTmp = G::decrypt($A, URL_KEY);
- $form = new Form($fileTmp, PATH_DYNAFORM, SYS_LANG, true);
-
- //Navigation Bar
- $form->fields = G::array_merges(array("__DYNAFORM_OPTIONS" => new XmlForm_Field_XmlMenu(new Xml_Node("__DYNAFORM_OPTIONS", "complete", "", array("type" => "xmlmenu", "xmlfile" => "gulliver/dynaforms_Options"
- )), SYS_LANG, PATH_XMLFORM, $form)
- ), $form->fields);
-
- //Loads the stored HTML or the default Template if
- //it doesn't exist.
- $filename = substr($form->fileName, 0, - 3) . ($form->type === "xmlform" ? "" : "." . $form->type) . "html";
-
- if (!file_exists($filename)) {
- $html = $form->printTemplate($form->template, $script);
- } else {
- $html = implode("", file($filename));
- }
-
- /*
- * It adds the new fields automatically at the bottom of the form.
- * TODO: �TOP OR BOTTOM?
- * Improving detection algorithm of new fields.
- * Current: Do not check the fields that have already been reviewed (saving)
- * Already checked the temporary file dynaforms editor.
- */
- $tmp = self::_getTmpData();
- if (!isset($tmp['OLD_FIELDS'])) {
- $tmp['OLD_FIELDS'] = array(); //var_dump($html);die;
- }
- $aAux = explode('', $html);
- foreach ($form->fields as $field) {
- if ((strpos($html, '{$form.' . $field->name . '}') === false) && (strpos($html, '{$' . $field->name . '}') === false)) {
- //Aparantly is new (but could be a deleted or non visible like private type fields)
- switch (strtolower($field->type)) {
- case 'private':
- case 'phpvariable':
- break;
- default:
- if (array_search($field->name, $tmp['OLD_FIELDS']) === false) {
- //TOP
- $aAux[0] .= '
{$' . $field->name . '}' . '{$form.' . $field->name . '}';
- //$html.='
{$'.$field->name.'}'.'{$form.'.$field->name.'}';
- //BOTTOM
- //$html='{$'.$field->name.'}'.'{$form.'.$field->name.'}'.$html;
- //$tmp['OLD_FIELDS'][]=$field->name;
- }
- }
- }
- }
- self::_setTmpData($tmp);
- //$html=str_replace('{$form_className}','formDefault', $html );
- $html = str_replace('{$form_className}', 'formDefault', $aAux[0] . '');
-
- return $html;
- } catch (Exception $e) {
- return (array) $e;
- }
- }
-
- /**
- * Restore the html code
- *
- * @param object $A
- * @return code html
- */
- public function restore_html($A)
- {
-
- $filter = new InputFilter();
- $script = null;
- $fileTmp = G::decrypt($A, URL_KEY);
- $form = new Form($fileTmp, PATH_DYNAFORM, SYS_LANG, true);
-
- //Navigation Bar
- $form->fields = G::array_merges(array("__DYNAFORM_OPTIONS" => new XmlForm_Field_XmlMenu(new Xml_Node("__DYNAFORM_OPTIONS", "complete", "", array("type" => "xmlmenu", "xmlfile" => "gulliver/dynaforms_Options"
- )), SYS_LANG, PATH_XMLFORM, $form)
- ), $form->fields);
-
- $form->enableTemplate = false;
- $html = $form->printTemplate($form->template, $script);
- $html = str_replace('{$form_className}', 'formDefault', $html);
- $pathTmp = $filter->xssFilterHard(PATH_DYNAFORM . $fileTmp . '.html', 'path');
- if (file_exists($pathTmp)) {
- unlink($pathTmp);
- }
- $fp = fopen($pathTmp, 'w');
- fwrite($fp, $html);
- fclose($fp);
-
- return $html;
- }
-
- /**
- * Set the html code
- *
- * @param object $A
- * @return array
- */
- public function set_htmlcode($A, $htmlcode)
- {
- try {
-
- $filter = new InputFilter();
- $iOcurrences = preg_match_all('/\{\$.*?\}/im', $htmlcode, $matches);
- if ($iOcurrences) {
- if (isset($matches[0])) {
- $tagsHtml = $matches[0];
- foreach ($tagsHtml as $value) {
- $aTagVar = strip_tags($value);
- if ($value != $aTagVar) {
- $htmlcode = str_replace($value, $aTagVar, $htmlcode);
- }
- }
- }
- }
- $file = G::decrypt($A, URL_KEY);
- $form = new Form($file, PATH_DYNAFORM, SYS_LANG, true);
- $filename = substr($form->fileName, 0, - 3) . ($form->type === 'xmlform' ? '' : '.' . $form->type) . 'html';
- $filename = $filter->xssFilterHard($filename, 'path');
- $fp = fopen($filename, 'w');
- fwrite($fp, $htmlcode);
- fclose($fp);
- return 0;
- } catch (Exception $e) {
- return (array) $e;
- }
- }
-
- /**
- * Get the xml code
- *
- * @param object $A
- * @return array
- */
- public function get_xmlcode($A)
- {
- try {
- $file = G::decrypt($A, URL_KEY);
- $xmlcode = implode('', file(PATH_DYNAFORM . $file . '.xml'));
- return array("xmlcode" => $xmlcode, "error" => 0
- );
- } catch (Exception $e) {
- return array("xmlcode" => "", "error" => (array) $e
- );
- }
- }
-
- /**
- * Set the xml code
- *
- * @param object $A
- * @param array $xmlcode
- * @return string
- */
- public function set_xmlcode($A, $xmlcode)
- {
-
- $filter = new InputFilter();
- $xmlcode = urldecode($xmlcode);
- $file = G::decrypt($A, URL_KEY);
- $xmlcode = str_replace(' ', ' ', trim($xmlcode));
- $pathFile = $filter->xssFilterHard(PATH_DYNAFORM . $file . '.xml', "path");
- $fp = fopen($pathFile, 'w');
- fwrite($fp, $xmlcode);
- fclose($fp);
- return "";
- }
-
- /**
- * Get the javascript code
- *
- * @param object $A
- * @param string $fieldName
- * @return array
- */
- public function get_javascripts($A, $fieldName)
- {
- try {
- $file = G::decrypt($A, URL_KEY);
- $form = new Form($file, PATH_DYNAFORM, SYS_LANG, true);
- $aOptions = array();
- $sCode = '';
- foreach ($form->fields as $name => $value) {
- if (strcasecmp($value->type, "javascript") == 0) {
- $aOptions[] = array('key' => $name, 'value' => $name
- );
- if ($name == $fieldName) {
- $sCode = $value->code;
- }
- }
- }
- return array('aOptions' => $aOptions, 'sCode' => $sCode
- );
- } catch (Exception $e) {
- return (array) $e;
- }
- }
-
- /**
- * Set the javascript code
- *
- * @param object $A
- * @param string $fieldName
- * @param string $sCode
- * @return array
- */
- public function set_javascript($A, $fieldName, $sCode, $meta = '')
- {
-
- $filter = new InputFilter();
- $fieldName = $filter->xssFilterHard($fieldName, 'path');
- if ($fieldName == '___pm_boot_strap___') {
- return 0;
- }
-
- $sCode = urldecode($sCode);
- try {
- $sCode = rtrim($sCode);
- $file = G::decrypt($A, URL_KEY);
- /* $dbc2 = new DBConnection( PATH_DYNAFORM . $file . '.xml' ,'','','','myxml' );
- $ses2 = new DBSession($dbc2);
- $ses2->execute(G::replaceDataField("UPDATE dynaForm SET XMLNODE_VALUE = @@CODE WHERE XMLNODE_NAME = @@FIELDNAME ", array('FIELDNAME'=>$fieldName,'CODE'=>$sCode), "myxml" ));
- */
-
-
- $pathFile = $filter->xssFilterHard(PATH_DYNAFORM . "{$file}.xml", 'path');
- $dynaform = new DynaformHandler($pathFile);
- $dynaform->replace($fieldName, $fieldName, Array('type' => 'javascript', 'meta' => $meta, '#cdata' => $sCode
- ));
-
- return 0;
- } catch (Exception $e) {
- return (array) $e;
- }
- }
-
- /**
- * Get properties of the dynaForm
- *
- * @param file $A
- * @param string $DYN_UID
- * @return array
- */
- public function get_properties($A, $DYN_UID)
- {
- $file = G::decrypt($A, URL_KEY);
- $tmp = self::_getTmpData();
- if (!(isset($tmp['Properties']) && isset($tmp['useTmpCopy']))) {
- $dynaform = new Dynaform();
- $dynaform->load($DYN_UID);
- $form = new Form($file, PATH_DYNAFORM, SYS_LANG, true);
- $Properties = array('A' => $A, 'DYN_UID' => $dynaform->getDynUid(), 'PRO_UID' => $dynaform->getProUid(), 'DYN_TITLE' => $dynaform->getDynTitle(), 'DYN_TYPE' => $dynaform->getDynType(), 'DYN_DESCRIPTION' => $dynaform->getDynDescription(), 'WIDTH' => $form->width,
- //'ENABLETEMPLATE'=> $form->enableTemplate,
- 'MODE' => $form->mode, 'PRINTDYNAFORM' => $form->printdynaform, 'ADJUSTGRIDSWIDTH' => $form->adjustgridswidth, 'NEXTSTEPSAVE' => $form->nextstepsave
- );
- $tmp['Properties'] = $Properties;
- self::_setTmpData($tmp);
- } else {
- $form = new Form($file, PATH_DYNAFORM, SYS_LANG, true);
- $Properties = $tmp['Properties'];
- if (!isset($Properties['ENABLETEMPLATE'])) {
- $Properties['ENABLETEMPLATE'] = "0";
- }
- $Properties['WIDTH'] = $form->width;
- $Properties['MODE'] = $form->mode;
- }
- return $Properties;
- }
-
- /**
- * Set properties of the dynaForm
- *
- * @param file $A
- * @param string $DYN_UID
- * @param array $getFields
- * @return array
- */
- public function set_properties($A, $DYN_UID, $getFields)
- {
- try {
-
- $filter = new InputFilter();
- $post = array();
- parse_str($getFields, $post);
- $Fields = $post['form'];
- //if (!isset($Fields['ENABLETEMPLATE'])) $Fields['ENABLETEMPLATE'] ="0";
- $file = G::decrypt($A, URL_KEY);
- $tmp = self::_getTmpData();
- if (!isset($tmp['useTmpCopy'])) {
- $dynaform = new Dynaform();
- $dynaform->update($Fields);
- } else {
- $tmp['Properties'] = $Fields;
- self::_setTmpData($tmp);
- }
- $pathFile = $filter->xssFilterHard(PATH_DYNAFORM . "{$file}.xml", 'path');
- $dynaform = new DynaformHandler($pathFile);
- $dbc2 = new DBConnection($pathFile, '', '', '', 'myxml');
- $ses2 = new DBSession($dbc2);
- //if (!isset($Fields['ENABLETEMPLATE'])) $Fields['ENABLETEMPLATE'] ="0";
-
- /* if (isset($Fields['ENABLETEMPLATE'])) {
- $ses2->execute(G::replaceDataField("UPDATE . SET ENABLETEMPLATE = @@ENABLETEMPLATE WHERE XMLNODE_NAME = 'dynaForm' ", $Fields));
- } */
- if (isset($Fields['DYN_TYPE'])) {
- //$ses2->execute( G::replaceDataField( "UPDATE . SET TYPE = @@DYN_TYPE WHERE XMLNODE_NAME = 'dynaForm' ", $Fields ) );
- $dynaform->modifyHeaderAttribute('type', $Fields['DYN_TYPE']);
- }
- if (isset($Fields['WIDTH'])) {
- // $ses2->execute( G::replaceDataField( "UPDATE . SET WIDTH = @@WIDTH WHERE XMLNODE_NAME = 'dynaForm' ", $Fields ) );
- $dynaform->modifyHeaderAttribute('width', $Fields['WIDTH']);
- //g::pr($dynaform->getHeaderAttribute('width'));
- }
- if (isset($Fields['MODE'])) {
- // $ses2->execute( G::replaceDataField( "UPDATE . SET MODE = @@MODE WHERE XMLNODE_NAME = 'dynaForm' ", $Fields ) );
- $dynaform->modifyHeaderAttribute('mode', $Fields['MODE']);
- }
- if (isset($Fields['NEXTSTEPSAVE'])) {
- //$ses2->execute( G::replaceDataField( "UPDATE . SET NEXTSTEPSAVE = @@NEXTSTEPSAVE WHERE XMLNODE_NAME = 'dynaForm' ", $Fields ) );
- $dynaform->modifyHeaderAttribute('nextstepsave', $Fields['NEXTSTEPSAVE']);
- }
- if (isset($Fields['PRINTDYNAFORM'])) {
- //$ses2->execute( G::replaceDataField( "UPDATE . SET PRINTDYNAFORM = @@PRINTDYNAFORM WHERE XMLNODE_NAME = 'dynaForm' ", $Fields ) );
- $dynaform->modifyHeaderAttribute('printdynaform', $Fields['PRINTDYNAFORM']);
- }
- if (isset($Fields['ADJUSTGRIDSWIDTH'])) {
- //$ses2->execute( G::replaceDataField( "UPDATE . SET ADJUSTGRIDSWIDTH = @@ADJUSTGRIDSWIDTH WHERE XMLNODE_NAME = 'dynaForm' ", $Fields ) );
- $dynaform->modifyHeaderAttribute('adjustgridswidth', $Fields['ADJUSTGRIDSWIDTH']);
- }
-
- return 0;
- } catch (Exception $e) {
- return (array) $e;
- }
- }
-
- /**
- * Get enable template
- *
- * @param object $A
- * @return string
- */
- public function get_enabletemplate($A)
- {
- $file = G::decrypt($A, URL_KEY);
- $form = new Form($file, PATH_DYNAFORM, SYS_LANG, true);
- return $form->enableTemplate;
- }
-
- /**
- * Set enable template
- *
- * @param object $A
- * @param string $value
- * @return string
- */
- public function set_enabletemplate($A, $value)
- {
-
- $filter = new InputFilter();
- $file = G::decrypt($A, URL_KEY);
- $value = $value == "1" ? "1" : "0";
- // $dbc2 = new DBConnection( PATH_DYNAFORM . $file . '.xml', '', '', '', 'myxml' );
- // $ses2 = new DBSession( $dbc2 );
- // $ses2->execute( "UPDATE . SET ENABLETEMPLATE = '$value'" );
- $pathFile = $filter->xssFilterHard(PATH_DYNAFORM . "{$file}.xml", 'path');
- $dynaform = new DynaformHandler($pathFile);
- $dynaform->modifyHeaderAttribute('enabletemplate', $value);
-
- return $value;
- }
-
- /**
- * Save a dynaForm
- *
- * @param object $A
- * @param string $DYN_UID
- * @return array
- */
- public function save($A, $DYN_UID)
- {
- try {
- $answer = 0;
- $file = G::decrypt($A, URL_KEY);
- $tmp = self::_getTmpData();
- if (isset($tmp['Properties'])){
- $fileFirst = $tmp['Properties']['PRO_UID'].'/'.$tmp['Properties']['DYN_UID'];
- }
- if (isset($tmp['useTmpCopy'])) {
- /* Save Register */
- $dynaform = new Dynaform();
- $dynaform->update($tmp['Properties']);
- /* Save file */
- $copyFirst = implode('', file(PATH_DYNAFORM . $fileFirst . '.xml'));
- $copy = implode('', file(PATH_DYNAFORM . $file . '.xml'));
- /*Check differences between XML*/
- $elementFirst = new SimpleXMLElement($copyFirst);
- $elementCopy = new SimpleXMLElement($copy);
- $desAdd = '';
- $desDel = '';
- //Check the new fields
- foreach ($elementCopy as $key1 => $row1){
- $swAll = true;
- foreach ($elementFirst as $key2 => $row2){
- if ($key1 == $key2){
- $swAll = false;
- break;
- }
- }
- if ($swAll){
- $desAdd .= $key1." ";
- }
- }
- //Check the delete fields
- foreach ($elementFirst as $key1 => $row1){
- $swAll = true;
- foreach ($elementCopy as $key2 => $row2){
- if ($key1 == $key2){
- $swAll = false;
- break;
- }
- }
- if ($swAll){
- $desDel .= $key1." ";
- }
- }
-
- $mode = empty($tmp['Properties']['MODE'])? 'Determined by Fields' : $tmp['Properties']['MODE'];
- $auditDescription = "Dynaform Title: ".$tmp['Properties']['DYN_TITLE'].", Type: ".$tmp['Properties']['DYN_TYPE'].", Description: ".$tmp['Properties']['DYN_DESCRIPTION'].", Mode: ".$mode;
- if($desAdd != ''){
- $auditDescription .= ", Field(s) Add: ".$desAdd;
- }
- if($desDel != ''){
- $auditDescription .= ", Field(s) Delete: ".$desDel;
- }
- //Add Audit Log
- G::auditLog("UpdateDynaform", $auditDescription);
-
-
- /*
- * added by krlos carlos/a/colosa.com
- * in here we are validation if a xmlform has a submit action
- */
- // if (!preg_match("/type=\"submit\"/",$copy) && !preg_match("/type=\"grid\"/",$copy) && !isset($_SESSION['submitAction']) ){
- if (!preg_match("/type=\"submit\"/", $copy) && !preg_match("/type=\"grid\"/", $copy)) {
- // $_SESSION['submitAction'] = 1;
- $answer = 'noSub';
- }
- $copyHtml = false;
- if (file_exists(PATH_DYNAFORM . $file . '.html')) {
- $copyHtml = implode('', file(PATH_DYNAFORM . $file . '.html'));
- }
- $file = dynaformEditor::_getFilename($file);
- $fcopy = fopen(PATH_DYNAFORM . $file . '.xml', "w");
- fwrite($fcopy, $copy);
- fclose($fcopy);
- if ($copyHtml) {
- $fcopy = fopen(PATH_DYNAFORM . $file . '.html', "w");
- fwrite($fcopy, $copyHtml);
- fclose($fcopy);
- }
- } else {
- //throw new Exception("It should not come here unless you have disabled the temporary copy.");
- }
- return $answer;
- } catch (Exception $e) {
- return (array) $e;
- }
- }
-
- /**
- * Close a dynaform
- *
- * @param object $A
- * @return array
- */
- public function close($A)
- {
- try {
- /*
- * we are unseting this variable. It's our control about to save the xmlfrom
- */
- // unset($_SESSION['submitAction']);
- $file = G::decrypt($A, URL_KEY);
- //return(array('response'=>PATH_DYNAFORM . $file . '.xml'));
- /* Delete the temporal copy */
- $tmp = self::_getTmpData();
- $xmlFile = PATH_DYNAFORM . $file . '.xml';
- $htmlFile = PATH_DYNAFORM . $file . '.html';
- //return(array('response'=>$tmp['useTmpCopy']));
- if (isset($tmp['useTmpCopy'])) {
- //return(array('response'=>PATH_DYNAFORM . $file . '.xml'));
- if ($file !== dynaformEditor::_getFilename($file)) {
- // return(array('response'=>PATH_DYNAFORM . $file . '.xml'));
- if (file_exists($xmlFile)) {
- unlink($xmlFile);
- }
- if (file_exists($htmlFile)) {
- unlink($htmlFile);
- }
- }
- }
- return 0;
- } catch (Exception $e) {
- return (array) $e;
- }
- }
-
- /**
- * Checks if a dynaform was changed
- *
- * @param file $A
- * @param string $DYN_UID
- * @return array
- */
- public function is_modified($A, $DYN_UID)
- {
- $file = G::decrypt($A, URL_KEY);
- try {
- /* Compare Properties */
- $dynaform = new Dynaform();
- $dynaform->load($DYN_UID);
- $form = new Form($file, PATH_DYNAFORM, SYS_LANG, true);
- $sp = array('A' => $A, 'DYN_UID' => $dynaform->getDynUid(), 'PRO_UID' => $dynaform->getProUid(), 'DYN_TITLE' => $dynaform->getDynTitle(), 'DYN_TYPE' => $dynaform->getDynType(), 'DYN_DESCRIPTION' => $dynaform->getDynDescription(), 'WIDTH' => $form->width, 'ENABLETEMPLATE' => $form->enableTemplate, 'MODE' => $form->mode
- );
- $P = self::get_properties($A, $DYN_UID);
- if (!isset($P['DYN_TITLE'])) {
- $P['DYN_TITLE'] = $sp['DYN_TITLE'];
- }
- if (!isset($P['DYN_TYPE'])) {
- $P['DYN_TYPE'] = $sp['DYN_TYPE'];
- }
- if (!isset($P['DYN_DESCRIPTION'])) {
- $P['DYN_DESCRIPTION'] = $sp['DYN_DESCRIPTION'];
- }
- if (!isset($P['WIDTH'])) {
- $P['WIDTH'] = $sp['WIDTH'];
- }
- if (!isset($P['ENABLETEMPLATE'])) {
- $P['ENABLETEMPLATE'] = $sp['ENABLETEMPLATE'];
- }
- if (!isset($P['MODE'])) {
- $P['MODE'] = $sp['MODE'];
- }
- $modPro = ($sp['DYN_TITLE'] != $P['DYN_TITLE']) || ($sp['DYN_TYPE'] != $P['DYN_TYPE']) || ($sp['DYN_DESCRIPTION'] != $P['DYN_DESCRIPTION']);
- /* ||
- ($sp['WIDTH']!=$P['WIDTH']) ||
- ($sp['ENABLETEMPLATE']!=$P['ENABLETEMPLATE']) ||
- ($sp['MODE']!=$P['MODE']) */
- /* Compare copies */
- $fileOrigen = dynaformEditor::_getFilename($file);
- $copy = implode('', file(PATH_DYNAFORM . $file . '.xml'));
- $origen = implode('', file(PATH_DYNAFORM . $fileOrigen . '.xml'));
- $copyHTML = file_exists(PATH_DYNAFORM . $file . '.html') ? implode('', file(PATH_DYNAFORM . $file . '.html')) : false;
- $origenHTML = file_exists(PATH_DYNAFORM . $fileOrigen . '.html') ? implode('', file(PATH_DYNAFORM . $fileOrigen . '.html')) : false;
- $modFile = ($copy !== $origen) || ($origenHTML && ($copyHTML !== $origenHTML));
- //Return
- //return array("*message"=>sprintf("%s, (%s= %s %s):", $modPro?"1":"0" , $modFile?"1":"0", ($copy!==$origen)?"1":"0" , ($origenHTML && ($copyHTML!==$origenHTML))?"1":"0" ));
- //die("c'est fini");
- return $modPro || $modFile;
- } catch (Exception $e) {
- return (array) $e;
- }
- }
- /*
- Functionality: Funcion que convierte objecto en array
- Parameters : Object $object que queremos convertir
- Return: Array
- */
- public function convertObjectToArray($object){
- if( !is_object( $object ) && !is_array( $object ) ){
- return $object;
- }
- if( is_object( $object ) ){
- $object = get_object_vars( $object );
- }
- return array_map( 'objectToArray', $object );
- }
-}
+/**
+ * DynaformEditorAjax - DynaformEditorAjax class
+ *
+ * @package workflow.engine.classes
+ */class dynaformEditorAjax extends DynaformEditor implements iDynaformEditorAjax
+{
+
+ /**
+ * Constructor of the class dynaformEditorAjax
+ *
+ * @param var $post
+ * @return void
+ */
+ public function dynaformEditorAjax($post)
+ {
+ $this->_run($post);
+ }
+
+ /**
+ * Function Run
+ *
+ * @param var $post
+ * @return void
+ */
+ public function _run($post)
+ {
+ WebResource::WebResource($_SERVER['REQUEST_URI'], $post);
+ }
+
+ /**
+ * Prints the DynaformEditorAjax
+ *
+ * @param object $A
+ * @return ob_get_clean
+ */
+ public function render_preview($A)
+ {
+ ob_start();
+ $file = G::decrypt($A, URL_KEY);
+ global $G_PUBLISH;
+ $G_PUBLISH = new Publisher();
+ $G_PUBLISH->publisherId = 'preview';
+ $form = new Form($file, PATH_DYNAFORM, SYS_LANG, true, $G_PUBLISH->publisherId);
+ switch (basename($form->template, '.html')) {
+ case 'grid':
+ $template = 'grid';
+ $aAux = array_keys($form->fields);
+ if (count($aAux) > 0) {
+ $aFields = (array_combine($aAux, $aAux));
+ } else {
+ $aFields = $aAux;
+ }
+ if (is_array($aFields)) {
+ foreach ($aFields as $key => $val) {
+ $aFields[$key] = array(1 => "", 2 => "", 3 => "", 4 => "", 5 => "");
+ }
+ }
+ break;
+ default:
+ $template = 'xmlform_' . $G_PUBLISH->publisherId;
+ $aFields = array('__DYNAFORM_OPTIONS' => array('PREVIOUS_STEP' => '#', 'NEXT_STEP' => '#', 'NEXT_STEP_LABEL' => G::loadTranslation('ID_NEXT_STEP'), 'PREVIOUS_ACTION' => 'return false;', 'NEXT_ACTION' => 'return false;'
+ )
+ );
+ }
+ $G_PUBLISH->AddContent('dynaform', $template, $file, '', $aFields, '');
+ G::RenderPage('publish', 'raw');
+ return ob_get_clean();
+ }
+
+ /**
+ * Prints the Dynaform in format HTML
+ *
+ * @param object $A
+ * @return array
+ */
+ public function render_htmledit($A)
+ {
+ $script = '';
+ $file = G::decrypt($A, URL_KEY);
+ ob_start();
+ global $G_PUBLISH;
+ $form = new Form($file, PATH_DYNAFORM, SYS_LANG, true);
+ $G_PUBLISH = new Publisher();
+ $G_PUBLISH->publisherId = '';
+ $html = $this->get_htmlcode($A);
+ if (!is_string($html)) {
+ $error = $html;
+ $html = '';
+ } else {
+ $error = 0;
+ }
+ $HtmlEditor = array('URL' => $A, 'HTML' => $html, 'DYN_UID' => $file );
+ $G_PUBLISH->AddContent('xmlform', 'xmlform', 'dynaforms/dynaforms_HtmlEditor', '', $HtmlEditor, '', '');
+ G::RenderPage("publish", 'raw');
+ return array('error' => $error, 'html' => ob_get_clean()
+ );
+ }
+
+ /**
+ * Get the html code
+ * Loads the stored HTML or the default Template if
+ * it doesn't exist.
+ *
+ * @param object $A
+ * @return code html
+ */
+ public function get_htmlcode($A)
+ {
+ try {
+ $script = null;
+ $fileTmp = G::decrypt($A, URL_KEY);
+ $form = new Form($fileTmp, PATH_DYNAFORM, SYS_LANG, true);
+
+ //Navigation Bar
+ $form->fields = G::array_merges(array("__DYNAFORM_OPTIONS" => new XmlForm_Field_XmlMenu(new Xml_Node("__DYNAFORM_OPTIONS", "complete", "", array("type" => "xmlmenu", "xmlfile" => "gulliver/dynaforms_Options"
+ )), SYS_LANG, PATH_XMLFORM, $form)
+ ), $form->fields);
+
+ //Loads the stored HTML or the default Template if
+ //it doesn't exist.
+ $filename = substr($form->fileName, 0, - 3) . ($form->type === "xmlform" ? "" : "." . $form->type) . "html";
+
+ if (!file_exists($filename)) {
+ $html = $form->printTemplate($form->template, $script);
+ } else {
+ $html = implode("", file($filename));
+ }
+
+ /*
+ * It adds the new fields automatically at the bottom of the form.
+ * TODO: �TOP OR BOTTOM?
+ * Improving detection algorithm of new fields.
+ * Current: Do not check the fields that have already been reviewed (saving)
+ * Already checked the temporary file dynaforms editor.
+ */
+ $tmp = self::_getTmpData();
+ if (!isset($tmp['OLD_FIELDS'])) {
+ $tmp['OLD_FIELDS'] = array(); //var_dump($html);die;
+ }
+ $aAux = explode('', $html);
+ foreach ($form->fields as $field) {
+ if ((strpos($html, '{$form.' . $field->name . '}') === false) && (strpos($html, '{$' . $field->name . '}') === false)) {
+ //Aparantly is new (but could be a deleted or non visible like private type fields)
+ switch (strtolower($field->type)) {
+ case 'private':
+ case 'phpvariable':
+ break;
+ default:
+ if (array_search($field->name, $tmp['OLD_FIELDS']) === false) {
+ //TOP
+ $aAux[0] .= '
{$' . $field->name . '}' . '{$form.' . $field->name . '}';
+ //$html.='
{$'.$field->name.'}'.'{$form.'.$field->name.'}';
+ //BOTTOM
+ //$html='{$'.$field->name.'}'.'{$form.'.$field->name.'}'.$html;
+ //$tmp['OLD_FIELDS'][]=$field->name;
+ }
+ }
+ }
+ }
+ self::_setTmpData($tmp);
+ //$html=str_replace('{$form_className}','formDefault', $html );
+ $html = str_replace('{$form_className}', 'formDefault', $aAux[0] . '');
+
+ return $html;
+ } catch (Exception $e) {
+ return (array) $e;
+ }
+ }
+
+ /**
+ * Restore the html code
+ *
+ * @param object $A
+ * @return code html
+ */
+ public function restore_html($A)
+ {
+
+ $filter = new InputFilter();
+ $script = null;
+ $fileTmp = G::decrypt($A, URL_KEY);
+ $form = new Form($fileTmp, PATH_DYNAFORM, SYS_LANG, true);
+
+ //Navigation Bar
+ $form->fields = G::array_merges(array("__DYNAFORM_OPTIONS" => new XmlForm_Field_XmlMenu(new Xml_Node("__DYNAFORM_OPTIONS", "complete", "", array("type" => "xmlmenu", "xmlfile" => "gulliver/dynaforms_Options"
+ )), SYS_LANG, PATH_XMLFORM, $form)
+ ), $form->fields);
+
+ $form->enableTemplate = false;
+ $html = $form->printTemplate($form->template, $script);
+ $html = str_replace('{$form_className}', 'formDefault', $html);
+ $pathTmp = $filter->xssFilterHard(PATH_DYNAFORM . $fileTmp . '.html', 'path');
+ if (file_exists($pathTmp)) {
+ unlink($pathTmp);
+ }
+ $fp = fopen($pathTmp, 'w');
+ fwrite($fp, $html);
+ fclose($fp);
+
+ return $html;
+ }
+
+ /**
+ * Set the html code
+ *
+ * @param object $A
+ * @return array
+ */
+ public function set_htmlcode($A, $htmlcode)
+ {
+ try {
+
+ $filter = new InputFilter();
+ $iOcurrences = preg_match_all('/\{\$.*?\}/im', $htmlcode, $matches);
+ if ($iOcurrences) {
+ if (isset($matches[0])) {
+ $tagsHtml = $matches[0];
+ foreach ($tagsHtml as $value) {
+ $aTagVar = strip_tags($value);
+ if ($value != $aTagVar) {
+ $htmlcode = str_replace($value, $aTagVar, $htmlcode);
+ }
+ }
+ }
+ }
+ $file = G::decrypt($A, URL_KEY);
+ $form = new Form($file, PATH_DYNAFORM, SYS_LANG, true);
+ $filename = substr($form->fileName, 0, - 3) . ($form->type === 'xmlform' ? '' : '.' . $form->type) . 'html';
+ $filename = $filter->xssFilterHard($filename, 'path');
+ $fp = fopen($filename, 'w');
+ fwrite($fp, $htmlcode);
+ fclose($fp);
+ return 0;
+ } catch (Exception $e) {
+ return (array) $e;
+ }
+ }
+
+ /**
+ * Get the xml code
+ *
+ * @param object $A
+ * @return array
+ */
+ public function get_xmlcode($A)
+ {
+ try {
+ $file = G::decrypt($A, URL_KEY);
+ $xmlcode = implode('', file(PATH_DYNAFORM . $file . '.xml'));
+ return array("xmlcode" => $xmlcode, "error" => 0
+ );
+ } catch (Exception $e) {
+ return array("xmlcode" => "", "error" => (array) $e
+ );
+ }
+ }
+
+ /**
+ * Set the xml code
+ *
+ * @param object $A
+ * @param array $xmlcode
+ * @return string
+ */
+ public function set_xmlcode($A, $xmlcode)
+ {
+
+ $filter = new InputFilter();
+ $xmlcode = urldecode($xmlcode);
+ $file = G::decrypt($A, URL_KEY);
+ $xmlcode = str_replace(' ', ' ', trim($xmlcode));
+ $pathFile = $filter->xssFilterHard(PATH_DYNAFORM . $file . '.xml', "path");
+ $fp = fopen($pathFile, 'w');
+ fwrite($fp, $xmlcode);
+ fclose($fp);
+ return "";
+ }
+
+ /**
+ * Get the javascript code
+ *
+ * @param object $A
+ * @param string $fieldName
+ * @return array
+ */
+ public function get_javascripts($A, $fieldName)
+ {
+ try {
+ $file = G::decrypt($A, URL_KEY);
+ $form = new Form($file, PATH_DYNAFORM, SYS_LANG, true);
+ $aOptions = array();
+ $sCode = '';
+ foreach ($form->fields as $name => $value) {
+ if (strcasecmp($value->type, "javascript") == 0) {
+ $aOptions[] = array('key' => $name, 'value' => $name
+ );
+ if ($name == $fieldName) {
+ $sCode = $value->code;
+ }
+ }
+ }
+ return array('aOptions' => $aOptions, 'sCode' => $sCode
+ );
+ } catch (Exception $e) {
+ return (array) $e;
+ }
+ }
+
+ /**
+ * Set the javascript code
+ *
+ * @param object $A
+ * @param string $fieldName
+ * @param string $sCode
+ * @return array
+ */
+ public function set_javascript($A, $fieldName, $sCode, $meta = '')
+ {
+
+ $filter = new InputFilter();
+ $fieldName = $filter->xssFilterHard($fieldName, 'path');
+ if ($fieldName == '___pm_boot_strap___') {
+ return 0;
+ }
+
+ $sCode = urldecode($sCode);
+ try {
+ $sCode = rtrim($sCode);
+ $file = G::decrypt($A, URL_KEY);
+ /* $dbc2 = new DBConnection( PATH_DYNAFORM . $file . '.xml' ,'','','','myxml' );
+ $ses2 = new DBSession($dbc2);
+ $ses2->execute(G::replaceDataField("UPDATE dynaForm SET XMLNODE_VALUE = @@CODE WHERE XMLNODE_NAME = @@FIELDNAME ", array('FIELDNAME'=>$fieldName,'CODE'=>$sCode), "myxml" ));
+ */
+
+
+ $pathFile = $filter->xssFilterHard(PATH_DYNAFORM . "{$file}.xml", 'path');
+ $dynaform = new DynaformHandler($pathFile);
+ $dynaform->replace($fieldName, $fieldName, Array('type' => 'javascript', 'meta' => $meta, '#cdata' => $sCode
+ ));
+
+ return 0;
+ } catch (Exception $e) {
+ return (array) $e;
+ }
+ }
+
+ /**
+ * Get properties of the dynaForm
+ *
+ * @param file $A
+ * @param string $DYN_UID
+ * @return array
+ */
+ public function get_properties($A, $DYN_UID)
+ {
+ $file = G::decrypt($A, URL_KEY);
+ $tmp = self::_getTmpData();
+ if (!(isset($tmp['Properties']) && isset($tmp['useTmpCopy']))) {
+ $dynaform = new Dynaform();
+ $dynaform->load($DYN_UID);
+ $form = new Form($file, PATH_DYNAFORM, SYS_LANG, true);
+ $Properties = array('A' => $A, 'DYN_UID' => $dynaform->getDynUid(), 'PRO_UID' => $dynaform->getProUid(), 'DYN_TITLE' => $dynaform->getDynTitle(), 'DYN_TYPE' => $dynaform->getDynType(), 'DYN_DESCRIPTION' => $dynaform->getDynDescription(), 'WIDTH' => $form->width,
+ //'ENABLETEMPLATE'=> $form->enableTemplate,
+ 'MODE' => $form->mode, 'PRINTDYNAFORM' => $form->printdynaform, 'ADJUSTGRIDSWIDTH' => $form->adjustgridswidth, 'NEXTSTEPSAVE' => $form->nextstepsave
+ );
+ $tmp['Properties'] = $Properties;
+ self::_setTmpData($tmp);
+ } else {
+ $form = new Form($file, PATH_DYNAFORM, SYS_LANG, true);
+ $Properties = $tmp['Properties'];
+ if (!isset($Properties['ENABLETEMPLATE'])) {
+ $Properties['ENABLETEMPLATE'] = "0";
+ }
+ $Properties['WIDTH'] = $form->width;
+ $Properties['MODE'] = $form->mode;
+ }
+ return $Properties;
+ }
+
+ /**
+ * Set properties of the dynaForm
+ *
+ * @param file $A
+ * @param string $DYN_UID
+ * @param array $getFields
+ * @return array
+ */
+ public function set_properties($A, $DYN_UID, $getFields)
+ {
+ try {
+
+ $filter = new InputFilter();
+ $post = array();
+ parse_str($getFields, $post);
+ $Fields = $post['form'];
+ //if (!isset($Fields['ENABLETEMPLATE'])) $Fields['ENABLETEMPLATE'] ="0";
+ $file = G::decrypt($A, URL_KEY);
+ $tmp = self::_getTmpData();
+ if (!isset($tmp['useTmpCopy'])) {
+ $dynaform = new Dynaform();
+ $dynaform->update($Fields);
+ } else {
+ $tmp['Properties'] = $Fields;
+ self::_setTmpData($tmp);
+ }
+ $pathFile = $filter->xssFilterHard(PATH_DYNAFORM . "{$file}.xml", 'path');
+ $dynaform = new DynaformHandler($pathFile);
+ $dbc2 = new DBConnection($pathFile, '', '', '', 'myxml');
+ $ses2 = new DBSession($dbc2);
+ //if (!isset($Fields['ENABLETEMPLATE'])) $Fields['ENABLETEMPLATE'] ="0";
+
+ /* if (isset($Fields['ENABLETEMPLATE'])) {
+ $ses2->execute(G::replaceDataField("UPDATE . SET ENABLETEMPLATE = @@ENABLETEMPLATE WHERE XMLNODE_NAME = 'dynaForm' ", $Fields));
+ } */
+ if (isset($Fields['DYN_TYPE'])) {
+ //$ses2->execute( G::replaceDataField( "UPDATE . SET TYPE = @@DYN_TYPE WHERE XMLNODE_NAME = 'dynaForm' ", $Fields ) );
+ $dynaform->modifyHeaderAttribute('type', $Fields['DYN_TYPE']);
+ }
+ if (isset($Fields['WIDTH'])) {
+ // $ses2->execute( G::replaceDataField( "UPDATE . SET WIDTH = @@WIDTH WHERE XMLNODE_NAME = 'dynaForm' ", $Fields ) );
+ $dynaform->modifyHeaderAttribute('width', $Fields['WIDTH']);
+ //g::pr($dynaform->getHeaderAttribute('width'));
+ }
+ if (isset($Fields['MODE'])) {
+ // $ses2->execute( G::replaceDataField( "UPDATE . SET MODE = @@MODE WHERE XMLNODE_NAME = 'dynaForm' ", $Fields ) );
+ $dynaform->modifyHeaderAttribute('mode', $Fields['MODE']);
+ }
+ if (isset($Fields['NEXTSTEPSAVE'])) {
+ //$ses2->execute( G::replaceDataField( "UPDATE . SET NEXTSTEPSAVE = @@NEXTSTEPSAVE WHERE XMLNODE_NAME = 'dynaForm' ", $Fields ) );
+ $dynaform->modifyHeaderAttribute('nextstepsave', $Fields['NEXTSTEPSAVE']);
+ }
+ if (isset($Fields['PRINTDYNAFORM'])) {
+ //$ses2->execute( G::replaceDataField( "UPDATE . SET PRINTDYNAFORM = @@PRINTDYNAFORM WHERE XMLNODE_NAME = 'dynaForm' ", $Fields ) );
+ $dynaform->modifyHeaderAttribute('printdynaform', $Fields['PRINTDYNAFORM']);
+ }
+ if (isset($Fields['ADJUSTGRIDSWIDTH'])) {
+ //$ses2->execute( G::replaceDataField( "UPDATE . SET ADJUSTGRIDSWIDTH = @@ADJUSTGRIDSWIDTH WHERE XMLNODE_NAME = 'dynaForm' ", $Fields ) );
+ $dynaform->modifyHeaderAttribute('adjustgridswidth', $Fields['ADJUSTGRIDSWIDTH']);
+ }
+
+ return 0;
+ } catch (Exception $e) {
+ return (array) $e;
+ }
+ }
+
+ /**
+ * Get enable template
+ *
+ * @param object $A
+ * @return string
+ */
+ public function get_enabletemplate($A)
+ {
+ $file = G::decrypt($A, URL_KEY);
+ $form = new Form($file, PATH_DYNAFORM, SYS_LANG, true);
+ return $form->enableTemplate;
+ }
+
+ /**
+ * Set enable template
+ *
+ * @param object $A
+ * @param string $value
+ * @return string
+ */
+ public function set_enabletemplate($A, $value)
+ {
+
+ $filter = new InputFilter();
+ $file = G::decrypt($A, URL_KEY);
+ $value = $value == "1" ? "1" : "0";
+ // $dbc2 = new DBConnection( PATH_DYNAFORM . $file . '.xml', '', '', '', 'myxml' );
+ // $ses2 = new DBSession( $dbc2 );
+ // $ses2->execute( "UPDATE . SET ENABLETEMPLATE = '$value'" );
+ $pathFile = $filter->xssFilterHard(PATH_DYNAFORM . "{$file}.xml", 'path');
+ $dynaform = new DynaformHandler($pathFile);
+ $dynaform->modifyHeaderAttribute('enabletemplate', $value);
+
+ return $value;
+ }
+
+ /**
+ * Save a dynaForm
+ *
+ * @param object $A
+ * @param string $DYN_UID
+ * @return array
+ */
+ public function save($A, $DYN_UID)
+ {
+ try {
+ $answer = 0;
+ $file = G::decrypt($A, URL_KEY);
+ $tmp = self::_getTmpData();
+ if (isset($tmp['Properties'])){
+ $fileFirst = $tmp['Properties']['PRO_UID'].'/'.$tmp['Properties']['DYN_UID'];
+ }
+ if (isset($tmp['useTmpCopy'])) {
+ /* Save Register */
+ $dynaform = new Dynaform();
+ $dynaform->update($tmp['Properties']);
+ /* Save file */
+ $copyFirst = implode('', file(PATH_DYNAFORM . $fileFirst . '.xml'));
+ $copy = implode('', file(PATH_DYNAFORM . $file . '.xml'));
+ /*Check differences between XML*/
+ $elementFirst = new SimpleXMLElement($copyFirst);
+ $elementCopy = new SimpleXMLElement($copy);
+ $desAdd = '';
+ $desDel = '';
+ //Check the new fields
+ foreach ($elementCopy as $key1 => $row1){
+ $swAll = true;
+ foreach ($elementFirst as $key2 => $row2){
+ if ($key1 == $key2){
+ $swAll = false;
+ break;
+ }
+ }
+ if ($swAll){
+ $desAdd .= $key1." ";
+ }
+ }
+ //Check the delete fields
+ foreach ($elementFirst as $key1 => $row1){
+ $swAll = true;
+ foreach ($elementCopy as $key2 => $row2){
+ if ($key1 == $key2){
+ $swAll = false;
+ break;
+ }
+ }
+ if ($swAll){
+ $desDel .= $key1." ";
+ }
+ }
+
+ $mode = empty($tmp['Properties']['MODE'])? 'Determined by Fields' : $tmp['Properties']['MODE'];
+ $auditDescription = "Dynaform Title: ".$tmp['Properties']['DYN_TITLE'].", Type: ".$tmp['Properties']['DYN_TYPE'].", Description: ".$tmp['Properties']['DYN_DESCRIPTION'].", Mode: ".$mode;
+ if($desAdd != ''){
+ $auditDescription .= ", Field(s) Add: ".$desAdd;
+ }
+ if($desDel != ''){
+ $auditDescription .= ", Field(s) Delete: ".$desDel;
+ }
+ //Add Audit Log
+ G::auditLog("UpdateDynaform", $auditDescription);
+
+
+ /*
+ * added by krlos carlos/a/colosa.com
+ * in here we are validation if a xmlform has a submit action
+ */
+ // if (!preg_match("/type=\"submit\"/",$copy) && !preg_match("/type=\"grid\"/",$copy) && !isset($_SESSION['submitAction']) ){
+ if (!preg_match("/type=\"submit\"/", $copy) && !preg_match("/type=\"grid\"/", $copy)) {
+ // $_SESSION['submitAction'] = 1;
+ $answer = 'noSub';
+ }
+ $copyHtml = false;
+ if (file_exists(PATH_DYNAFORM . $file . '.html')) {
+ $copyHtml = implode('', file(PATH_DYNAFORM . $file . '.html'));
+ }
+ $file = DynaformEditor::_getFilename($file);
+ $fcopy = fopen(PATH_DYNAFORM . $file . '.xml', "w");
+ fwrite($fcopy, $copy);
+ fclose($fcopy);
+ if ($copyHtml) {
+ $fcopy = fopen(PATH_DYNAFORM . $file . '.html', "w");
+ fwrite($fcopy, $copyHtml);
+ fclose($fcopy);
+ }
+ } else {
+ //throw new Exception("It should not come here unless you have disabled the temporary copy.");
+ }
+ return $answer;
+ } catch (Exception $e) {
+ return (array) $e;
+ }
+ }
+
+ /**
+ * Close a dynaform
+ *
+ * @param object $A
+ * @return array
+ */
+ public function close($A)
+ {
+ try {
+ /*
+ * we are unseting this variable. It's our control about to save the xmlfrom
+ */
+ // unset($_SESSION['submitAction']);
+ $file = G::decrypt($A, URL_KEY);
+ //return(array('response'=>PATH_DYNAFORM . $file . '.xml'));
+ /* Delete the temporal copy */
+ $tmp = self::_getTmpData();
+ $xmlFile = PATH_DYNAFORM . $file . '.xml';
+ $htmlFile = PATH_DYNAFORM . $file . '.html';
+ //return(array('response'=>$tmp['useTmpCopy']));
+ if (isset($tmp['useTmpCopy'])) {
+ //return(array('response'=>PATH_DYNAFORM . $file . '.xml'));
+ if ($file !== DynaformEditor::_getFilename($file)) {
+ // return(array('response'=>PATH_DYNAFORM . $file . '.xml'));
+ if (file_exists($xmlFile)) {
+ unlink($xmlFile);
+ }
+ if (file_exists($htmlFile)) {
+ unlink($htmlFile);
+ }
+ }
+ }
+ return 0;
+ } catch (Exception $e) {
+ return (array) $e;
+ }
+ }
+
+ /**
+ * Checks if a dynaform was changed
+ *
+ * @param file $A
+ * @param string $DYN_UID
+ * @return array
+ */
+ public function is_modified($A, $DYN_UID)
+ {
+ $file = G::decrypt($A, URL_KEY);
+ try {
+ /* Compare Properties */
+ $dynaform = new Dynaform();
+ $dynaform->load($DYN_UID);
+ $form = new Form($file, PATH_DYNAFORM, SYS_LANG, true);
+ $sp = array('A' => $A, 'DYN_UID' => $dynaform->getDynUid(), 'PRO_UID' => $dynaform->getProUid(), 'DYN_TITLE' => $dynaform->getDynTitle(), 'DYN_TYPE' => $dynaform->getDynType(), 'DYN_DESCRIPTION' => $dynaform->getDynDescription(), 'WIDTH' => $form->width, 'ENABLETEMPLATE' => $form->enableTemplate, 'MODE' => $form->mode
+ );
+ $P = self::get_properties($A, $DYN_UID);
+ if (!isset($P['DYN_TITLE'])) {
+ $P['DYN_TITLE'] = $sp['DYN_TITLE'];
+ }
+ if (!isset($P['DYN_TYPE'])) {
+ $P['DYN_TYPE'] = $sp['DYN_TYPE'];
+ }
+ if (!isset($P['DYN_DESCRIPTION'])) {
+ $P['DYN_DESCRIPTION'] = $sp['DYN_DESCRIPTION'];
+ }
+ if (!isset($P['WIDTH'])) {
+ $P['WIDTH'] = $sp['WIDTH'];
+ }
+ if (!isset($P['ENABLETEMPLATE'])) {
+ $P['ENABLETEMPLATE'] = $sp['ENABLETEMPLATE'];
+ }
+ if (!isset($P['MODE'])) {
+ $P['MODE'] = $sp['MODE'];
+ }
+ $modPro = ($sp['DYN_TITLE'] != $P['DYN_TITLE']) || ($sp['DYN_TYPE'] != $P['DYN_TYPE']) || ($sp['DYN_DESCRIPTION'] != $P['DYN_DESCRIPTION']);
+ /* ||
+ ($sp['WIDTH']!=$P['WIDTH']) ||
+ ($sp['ENABLETEMPLATE']!=$P['ENABLETEMPLATE']) ||
+ ($sp['MODE']!=$P['MODE']) */
+ /* Compare copies */
+ $fileOrigen = DynaformEditor::_getFilename($file);
+ $copy = implode('', file(PATH_DYNAFORM . $file . '.xml'));
+ $origen = implode('', file(PATH_DYNAFORM . $fileOrigen . '.xml'));
+ $copyHTML = file_exists(PATH_DYNAFORM . $file . '.html') ? implode('', file(PATH_DYNAFORM . $file . '.html')) : false;
+ $origenHTML = file_exists(PATH_DYNAFORM . $fileOrigen . '.html') ? implode('', file(PATH_DYNAFORM . $fileOrigen . '.html')) : false;
+ $modFile = ($copy !== $origen) || ($origenHTML && ($copyHTML !== $origenHTML));
+ //Return
+ //return array("*message"=>sprintf("%s, (%s= %s %s):", $modPro?"1":"0" , $modFile?"1":"0", ($copy!==$origen)?"1":"0" , ($origenHTML && ($copyHTML!==$origenHTML))?"1":"0" ));
+ //die("c'est fini");
+ return $modPro || $modFile;
+ } catch (Exception $e) {
+ return (array) $e;
+ }
+ }
+ /*
+ Functionality: Funcion que convierte objecto en array
+ Parameters : Object $object que queremos convertir
+ Return: Array
+ */
+ public function convertObjectToArray($object){
+ if( !is_object( $object ) && !is_array( $object ) ){
+ return $object;
+ }
+ if( is_object( $object ) ){
+ $object = get_object_vars( $object );
+ }
+ return array_map( 'objectToArray', $object );
+ }
+}
diff --git a/workflow/engine/methods/dynaforms/dynaforms_Editor.php b/workflow/engine/methods/dynaforms/dynaforms_Editor.php
index 6021f5d7e..dc9a4d0f6 100644
--- a/workflow/engine/methods/dynaforms/dynaforms_Editor.php
+++ b/workflow/engine/methods/dynaforms/dynaforms_Editor.php
@@ -80,7 +80,7 @@ if (isset( $_GET['bpmn'] ) && $_GET['bpmn'] == '1') {
$_SESSION['dynaform_editor'] = 'processmap';
}
-$editor = new dynaformEditor( $_POST );
+$editor = new DynaformEditor( $_POST );
$editor->file = $dynaform->getDynFilename();
$editor->home = PATH_DYNAFORM;
$editor->title = $dynaform->getDynTitle();
diff --git a/workflow/engine/methods/services/sessionPersists.php b/workflow/engine/methods/services/sessionPersists.php
index 3a3128080..7b05bed07 100644
--- a/workflow/engine/methods/services/sessionPersists.php
+++ b/workflow/engine/methods/services/sessionPersists.php
@@ -15,7 +15,7 @@ if (isset($_REQUEST['dynaformEditorParams'])) {
$dynaform = new Dynaform();
$dynaform->load($_REQUEST['DYN_UID']);
- $editor = new dynaformEditor(array());
+ $editor = new DynaformEditor(array());
$editor->file = $dynaform->getDynFilename();
$editor->home = PATH_DYNAFORM;
$editor->title = $dynaform->getDynTitle();