/** * Save Fields of a dynaform * @param array $Fields * @param array $labels * @param array $options * @return void */ function Save($Fields, $labels = array(), $options = array()) { if ($Fields['TYPE'] === 'javascript') { $Fields['XMLNODE_VALUE'] = $Fields['CODE']; unset($Fields['CODE']); $labels = array(); } if ($Fields['XMLNODE_NAME_OLD'] == '') { if ($Fields['XMLNODE_NAME'][0] == '1' || $Fields['XMLNODE_NAME'][0] == '2' || $Fields['XMLNODE_NAME'][0] == '3' || $Fields['XMLNODE_NAME'][0] == '4' || $Fields['XMLNODE_NAME'][0] == '5' || $Fields['XMLNODE_NAME'][0] == '6' || $Fields['XMLNODE_NAME'][0] == '7' || $Fields['XMLNODE_NAME'][0] == '8' || $Fields['XMLNODE_NAME'][0] == '9' || $Fields['XMLNODE_NAME'][0] == '10') { $Fields['XMLNODE_NAME'] = '_' . $Fields['XMLNODE_NAME']; } $res = $this->_dbses->Execute('SELECT * FROM dynaForm WHERE XMLNODE_NAME="' . $Fields['XMLNODE_NAME'] . '"'); } else { if ($Fields['XMLNODE_NAME_OLD'][0] == '1' || $Fields['XMLNODE_NAME_OLD'][0] == '2' || $Fields['XMLNODE_NAME_OLD'][0] == '3' || $Fields['XMLNODE_NAME_OLD'][0] == '4' || $Fields['XMLNODE_NAME_OLD'][0] == '5' || $Fields['XMLNODE_NAME_OLD'][0] == '6' || $Fields['XMLNODE_NAME_OLD'][0] == '7' || $Fields['XMLNODE_NAME_OLD'][0] == '8' || $Fields['XMLNODE_NAME_OLD'][0] == '9' || $Fields['XMLNODE_NAME_OLD'][0] == '10') { $Fields['XMLNODE_NAME_OLD'] = '_' . $Fields['XMLNODE_NAME_OLD']; } $res = $this->_dbses->Execute('SELECT * FROM dynaForm WHERE XMLNODE_NAME="' . $Fields['XMLNODE_NAME_OLD'] . '"'); } $this->is_new = $res->count() == 0; $this->Fields = $Fields; unset($this->Fields['XMLNODE_NAME_OLD']); /* * MPD-10 to create fields that do not appear many attributes, only the main ones? * The show those who are not white */ if ($this->is_new) { foreach ($this->Fields as $key => $value) { if ($value == "") { unset($this->Fields[$key]); } } } else { $this->Fields['XMLNODE_NAME'] = $Fields['XMLNODE_NAME_OLD']; } /*$res = $this->_dbses->Execute('INSERT INTO dynaForm'. ' (XMLNODE_TYPE,XMLNODE_VALUE)'. ' VALUES ("cdata", "'."\n".'")');*/ parent::Save(); if ($this->is_new) { /* * Create a new field. */ foreach ($labels as $lang => $value) { /*$res = $this->_dbses->Execute('INSERT INTO dynaForm'. ' (XMLNODE_TYPE,XMLNODE_VALUE)'. ' VALUES ("cdata", "'."\n".'")');*/ $res = $this->_dbses->Execute('INSERT INTO dynaForm.' . $Fields['XMLNODE_NAME'] . ' (XMLNODE_NAME,XMLNODE_VALUE,XMLNODE_TYPE) ' . 'VALUES ("","' . "\n " . '","cdata")'); $res = $this->_dbses->Execute('INSERT INTO dynaForm.' . $Fields['XMLNODE_NAME'] . ' (XMLNODE_NAME,XMLNODE_VALUE) ' . 'VALUES ("' . $lang . '","' . str_replace('"', '""', $value) . '")'); if (isset($options[$lang])) { foreach ($options[$lang] as $option => $text) { $res = $this->_dbses->Execute('INSERT INTO dynaForm.' . $Fields['XMLNODE_NAME'] . '.' . $lang . ' (XMLNODE_NAME,XMLNODE_VALUE,XMLNODE_TYPE) ' . 'VALUES ("","' . " " . '","cdata")'); $res = $this->_dbses->Execute('INSERT INTO dynaForm.' . $Fields['XMLNODE_NAME'] . '.' . $lang . ' (XMLNODE_NAME,XMLNODE_VALUE,name) ' . 'VALUES ("option","' . str_replace('"', '""', $text) . '","' . str_replace('"', '""', $option) . '")'); $res = $this->_dbses->Execute('INSERT INTO dynaForm.' . $Fields['XMLNODE_NAME'] . '.' . $lang . ' (XMLNODE_NAME,XMLNODE_VALUE,XMLNODE_TYPE) ' . 'VALUES ("","' . "\n " . '","cdata")'); } } $res = $this->_dbses->Execute('INSERT INTO dynaForm.' . $Fields['XMLNODE_NAME'] . ' (XMLNODE_NAME,XMLNODE_VALUE,XMLNODE_TYPE) ' . 'VALUES ("","' . "\n" . '","cdata")'); } $res = $this->_dbses->Execute('INSERT INTO dynaForm' . ' (XMLNODE_TYPE,XMLNODE_VALUE)' . ' VALUES ("cdata", "' . "\n" . '")'); } else { /* * Update an existing field. */ $this->_dbses->Execute('UPDATE dynaForm SET XMLNODE_NAME = "' . $Fields['XMLNODE_NAME'] . '" WHERE XMLNODE_NAME = "' . $Fields['XMLNODE_NAME_OLD'] . '"'); foreach ($labels as $lang => $value) { $res = $this->_dbses->Execute('SELECT * FROM dynaForm.' . $Fields['XMLNODE_NAME'] . ' WHERE XMLNODE_NAME ="' . $lang . '"'); if ($res->count() > 0) { $res = $this->_dbses->Execute('UPDATE dynaForm.' . $Fields['XMLNODE_NAME'] . ' SET XMLNODE_VALUE = ' . '"' . str_replace('"', '""', $value) . '" WHERE XMLNODE_NAME ="' . $lang . '"'); } else { $res = $this->_dbses->Execute('INSERT INTO dynaForm.' . $Fields['XMLNODE_NAME'] . ' (XMLNODE_NAME,XMLNODE_VALUE) ' . 'VALUES ("' . $lang . '","' . str_replace('"', '""', $value) . '")'); } if (isset($options[$lang])) { $res = $this->_dbses->Execute('DELETE FROM dynaForm.' . $Fields['XMLNODE_NAME'] . '.' . $lang . ' WHERE 1'); foreach ($options[$lang] as $option => $text) { $res = $this->_dbses->Execute('INSERT INTO dynaForm.' . $Fields['XMLNODE_NAME'] . '.' . $lang . ' (XMLNODE_NAME,XMLNODE_VALUE,name) ' . 'VALUES ("option","' . str_replace('"', '""', $text) . '","' . str_replace('"', '""', $option) . '")'); } } } } }