' , 'like', ... , 'contains'(== ' like "%value%"') */ public $dataCompareType = '='; public $sql = ''; public $sqlConnection = ''; //Attributes for PM Tables integration (only ProcessMaker for now) public $pmtable = ''; public $keys = ''; public $pmconnection = ''; public $pmfield = ''; // For mode cases Grid public $modeGrid = ''; public $modeForGrid = ''; /** * Function XmlFormField * * @access public * @param string xmlNode * @param string lang * @param string home * @return string */ public function __construct($xmlNode, $lang = 'en', $home = '', $owner = null) { //Loads any attribute that were defined in the xmlNode //except name and label. $myAttributes = get_class_vars(get_class($this)); foreach ($myAttributes as $k => $v) { $myAttributes[$k] = strtoupper($k); } //$data: Includes labels and options. $data = &$xmlNode->findNode($lang); if (!isset($data->value)) { //It seems that in the actual language there are no value for the current field, so get the value in English $data = &$xmlNode->findNode("en"); if (!isset($data->value)) { //It seems that in the actual language there are no value for the current field, so get the value in First language if (isset($xmlNode->children[0])) { //Lets find first child if ((isset($xmlNode->children[0]->name)) && (strlen($xmlNode->children[0]->name) == 2)) { //Just to be sure that the node ocrresponds to a valid lang $data = &$xmlNode->findNode($xmlNode->children[0]->name); } } } } @$this->label = $this->pmLabel = $data->value; /*Loads the field attributes*/ foreach ($xmlNode->attributes as $k => $v) { $key = array_search(strtoupper($k), $myAttributes); if ($key) { eval('$this->' . $key . '=$v;'); } } //Loads the main attributes $this->name = $xmlNode->name; $this->type = strtolower($xmlNode->attributes['type']); preg_match('/\s*([^\s][\w\W]*)?/m', $xmlNode->value, $matches); $this->sql = (isset($matches[1])) ? $matches[1] : ''; //List Options if (isset($data->children)) { foreach ($data->children as $k => $v) { if ($v->type !== 'cdata') { if (isset($v->name) && isset($v->attributes["name"])) { $this->{$v->name}[$v->attributes["name"]] = $v->value; } } } } $this->options = (isset($this->option)) ? $this->option : []; //Sql Options : cause warning because values are not setted yet. if (isset($owner)) { if (isset($owner->mode)) { $ownerMode = $owner->mode; } else { $ownerMode = ''; } } else { $ownerMode = ''; } if ($ownerMode != '') { $this->mode = $ownerMode; } if ($this->mode == '') { $this->mode = 'edit'; } $this->modeForGrid = $this->mode; } /** * validate if a value is setted * * @param $value * @return boolean true/false */ public function validateValue($value) { return isset($value); } /** * execute a xml query * * @param &$owner reference of owner * @param $row * @return $result array of results */ private function executeXmlDB(&$owner, $row = -1) { if (!$this->sqlConnection) { $dbc = new DBConnection(); } else { if (defined('DB_' . $this->sqlConnection . '_USER')) { if (defined('DB_' . $this->sqlConnection . '_HOST')) { eval('$res[\'DBC_SERVER\'] = DB_' . $this->sqlConnection . '_HOST;'); } else { $res['DBC_SERVER'] = DB_HOST; } if (defined('DB_' . $this->sqlConnection . '_USER')) { eval('$res[\'DBC_USERNAME\'] = DB_' . $this->sqlConnection . '_USER;'); } if (defined('DB_' . $this->sqlConnection . '_PASS')) { eval('$res[\'DBC_PASSWORD\'] = DB_' . $this->sqlConnection . '_PASS;'); } else { $res['DBC_PASSWORD'] = DB_PASS; } if (defined('DB_' . $this->sqlConnection . '_NAME')) { eval('$res[\'DBC_DATABASE\'] = DB_' . $this->sqlConnection . '_NAME;'); } else { $res['DBC_DATABASE'] = DB_NAME; } if (defined('DB_' . $this->sqlConnection . '_TYPE')) { eval('$res[\'DBC_TYPE\'] = DB_' . $this->sqlConnection . '_TYPE;'); } else { $res['DBC_TYPE'] = defined('DB_TYPE') ? DB_TYPE : 'mysql'; } $dbc = new DBConnection($res['DBC_SERVER'], $res['DBC_USERNAME'], $res['DBC_PASSWORD'], $res['DBC_DATABASE'], $res['DBC_TYPE']); } else { $dbc0 = new DBConnection(); $dbs0 = new DBSession($dbc0); $res = $dbs0->execute("select * from DB_CONNECTION WHERE DBC_UID=" . $this->sqlConnection); $res = $res->read(); $dbc = new DBConnection($res['DBC_SERVER'], $res['DBC_USERNAME'], $res['DBC_PASSWORD'], $res['DBC_DATABASE']); } } $query = G::replaceDataField($this->sql, $owner->values); $dbs = new DBSession($dbc); $res = $dbs->execute($query); $result = []; while ($row = $res->Read()) { $result[] = $row; } return $result; } /** * Execute a propel query * * @param &$owner reference * @param $row * @return $result array of */ private function executePropel(&$owner, $row = -1) { //g::pr($row); if (!isset($owner->values[$this->name])) { if ($row > -1) { $owner->values[$this->name] = []; } else { $owner->values[$this->name] = ''; } } if (!is_array($owner->values[$this->name])) { //echo '1'; $query = G::replaceDataField($this->sql, $owner->values); } else { $aAux = []; foreach ($owner->values as $key => $data) { if (is_array($data)) { //echo '3:'.$key.' '; if (isset($data[$row])) { $qValue = $data[$row]; } else { if (isset($owner->fields[$key]->selectedValue)) { $qValue = $owner->fields[$key]->selectedValue; } else { $qValue = ''; } } $aAux[$key] = $qValue; //$aAux [$key] = isset ( $data [$row] ) ? $data [$row] : ''; } else { //echo '4'.$key.' '; $aAux[$key] = $data; } } //echo '2'; //g::pr($aAux); $query = G::replaceDataField($this->sql, $aAux); } //echo $query; $result = []; if ($this->sqlConnection == 'dbarray') { try { $con = Propel::getConnection($this->sqlConnection); $stmt = $con->createStatement(); $rs = $con->executeQuery($query, ResultSet::FETCHMODE_NUM); } catch (Exception $e) { //dismiss error because dbarray shouldnt be defined in some contexts. $workspace = !empty(config("system.workspace")) ? config("system.workspace") : "Undefined Workspace"; G::log($workspace . " | ip: | " . G::getIpAddress() . " | type error: | " . $e->getMessage() . " | query: " . $query, PATH_DATA, "queriesWithErrors.log"); return $result; } } else { try { $con = Propel::getConnection($this->sqlConnection); $stmt = $con->createStatement(); $rs = $stmt->executeQuery($query, ResultSet::FETCHMODE_NUM); } catch (Exception $e) { //dismiss error because dbarray shouldnt be defined in some contexts. $workspace = !empty(config("system.workspace")) ? config("system.workspace") : "Undefined Workspace"; G::log($workspace . " | ip: | " . G::getIpAddress() . " | type error: | " . $e->getMessage() . " | query: " . $query, PATH_DATA, "queriesWithErrors.log"); return $result; } } $rs->next(); $row = $rs->getRow(); while (is_array($row)) { $result[] = $row; $rs->next(); $row = $rs->getRow(); } return $result; } /** * Function executeSQL * * @access public * @param string owner * @return string */ public function executeSQL(&$owner, $row = -1) { if (!isset($this->sql)) { return 1; } if ($this->sql === '') { return 1; } if (isset($this->mode) && $this->mode == "edit" && (isset($this->owner->values[$this->name]) && $this->owner->values[$this->name] !== "") && ($this->type == "text" || $this->type == "currency" || $this->type == "percentage" || $this->type == "textarea" || $this->type == "hidden" || $this->type == "suggest")) { return 1; } if (isset($this->mode) && $this->mode == "view" && ($this->type == "text" || $this->type == "currency" || $this->type == "percentage" || $this->type == "textarea" || $this->type == "hidden" || $this->type == "suggest")) { return 1; } if (!$this->sqlConnection) { $this->sqlConnection = 'workflow'; } //Read the result of the query if ($this->sqlConnection === "XMLDB") { $result = $this->executeXmlDB($owner, $row); } else { $result = $this->executePropel($owner, $row); } $this->sqlOption = []; $this->options = []; if (isset($this->option)) { foreach ($this->option as $k => $v) { $this->options[$k] = $v; } } for ($r = 0; $r < sizeof($result); $r++) { $key = reset($result[$r]); $this->sqlOption[$key] = next($result[$r]); $this->options[$key] = $this->sqlOption[$key]; } if ($this->type != 'listbox') { if (isset($this->options) && isset($this->owner) && isset($this->owner->values[$this->name])) { if ((!is_array($this->owner->values[$this->name])) && !((is_string($this->owner->values[$this->name]) || is_int($this->owner->values[$this->name])) && array_key_exists($this->owner->values[$this->name], $this->options))) { reset($this->options); $firstElement = key($this->options); if (isset($firstElement)) { $this->owner->values[$this->name] = $firstElement; } else { $this->owner->values[$this->name] = ''; } } } } return 0; } /** * return the html entities of a value * * @param $value * @param $flags * @param $encoding * @return */ public function htmlentities($value, $flags = ENT_QUOTES, $encoding = 'utf-8') { if ($this->enableHtml) { return $value; } else { return htmlentities($value, $flags, $encoding); } } /** * Function render * * @access public * @param string value * @return string */ public function render($value = null, $paramDummy2 = null) { //this is an unknown field type. return $this->htmlentities($value != '' ? $value : $this->name, ENT_COMPAT, 'utf-8'); } /** * Function renderGrid * * @access public * @param string values * @return string */ public function renderGrid($values = null, $owner = null, $onlyValue = false, $therow = -1) { if ($values === null) { $values = []; } $result = []; $r = 1; foreach ($values as $v) { $result[] = $this->render($v, $owner, '[' . $owner->name . '][' . $r . ']', $onlyValue, $r, $therow); $r++; } return $result; } /** * render the field in a table * * @param $values * @param $owner * @param $onlyValue * @return $result */ public function renderTable($values = '', $owner = null, $onlyValue = false) { $r = 1; $result = $this->render($values, $owner, '[' . $owner->name . '][' . $r . ']', $onlyValue); return $result; } /** * Function dependentOf * * @access public * @return array */ public function dependentOf() { $fields = []; if (isset($this->formula)) { preg_match_all("/\b[a-zA-Z][a-zA-Z_0-9]*\b/", $this->formula, $matches, PREG_PATTERN_ORDER); /* if ($this->formula!=''){ var_dump($this->formula); var_dump($matches); var_dump(array_keys($this->owner->fields)); die; }*/ foreach ($matches[0] as $field) { //if (array_key_exists( $this->owner->fields, $field )) $fields[] = $field; } } return $fields; } /** * Function mask * * @access public * @param string format * @param string value * @return string */ public function mask($format, $value) { $value = explode('', $value); for ($j = 0; $j < strlen($format); $j++) { $result = ''; $correct = true; for ($i = $j; $i < strlen($format); $i++) { $a = substr($format, $i, 1); $e = $i < strlen($value) ? substr($value, $i, 1) : ''; //$e=$i ^...$ no parece pero no, o mejor si, donde # es \d?, en general todos // es valida cuando no encuentra un caracter que no deberia estar, puede no terminar la mascara // pero si sobran caracteres en el value entonces no se cumple la mascara. return $correct ? $result : $correct; } /** * Function getAttributes * * @access public * @return string */ public function getAttributes() { $attributes = []; foreach ($this as $attribute => $value) { switch ($attribute) { case 'sql': case 'sqlConnection': case 'name': case 'type': case 'owner': break; default: if (substr($attribute, 0, 2) !== 'on') { $attributes[$attribute] = $value; } } } if (sizeof($attributes) < 1) { return '{}'; } //$json = new Services_JSON(); //return $json->encode( $attributes ); return G::json_encode($attributes); } /** * Function getEvents * * @access public * @return string */ public function getEvents() { $events = []; foreach ($this as $attribute => $value) { if (substr($attribute, 0, 2) === 'on') { $events[$attribute] = $value; } } if (sizeof($events) < 1) { return '{}'; } //$json = new Services_JSON(); //return $json->encode( $events ); return G::json_encode($events); } /** * Function attachEvents: Attaches events to a control using * leimnud.event.add * * @param $elementRef * @access public */ public function attachEvents($elementRef) { $events = ''; foreach ($this as $attribute => $value) { if (substr($attribute, 0, 2) == 'on') { $events = 'if (' . $elementRef . ') leimnud.event.add(' . $elementRef . ',"' . substr($attribute, 2) . '",function(){' . $value . '});' . "\n"; } } } /** * Function createXmlNode: Creates an Xml_Node object storing * the data of $this Xml_Field. * * @access public * @return Xml_Node */ public function createXmlNode($includeDefaultValues = false) { /* Start Comment: Creates the corresponding XML Tag for $this * object. */ $attributesList = $this->getXmlAttributes($includeDefaultValues); $node = new Xml_Node($this->name, 'open', $this->sql, $attributesList); /* End Comment */ /* Start Comment: Creates the languages nodes and options * if exist. */ $node->addChildNode(new Xml_Node('', 'cdata', "\n")); $node->addChildNode(new Xml_Node($this->language, 'open', $this->label)); if (isset($this->option)) { foreach ($this->option as $k => $v) { $node->children[1]->addChildNode(new Xml_Node('option', 'open', $v, array('name' => $k ))); } } /* End Comment */ return $node; } /** * Function updateXmlNode: Updates and existing Xml_Node * with the data of $this Xml_Field. * * @access public * @param string value * @return Xml_Node */ public function &updateXmlNode(&$node, $includeDefaultValues = false) { /* Start Comment: Modify the node's attributes and value. */ $attributesList = $this->getXmlAttributes($includeDefaultValues); $node->name = $this->name; $node->value = $this->sql; $node->attributes = $attributesList; /* End Comment */ /* Start Comment: Modifies the languages nodes */ $langNode = &$node->findNode($this->language); $langNode->value = $this->label; if (isset($this->option)) { $langNode->children = []; foreach ($this->option as $k => $v) { $langNode->addChildNode(new Xml_Node('option', 'open', $v, array('name' => $k ))); } } /* End Comment */ return $node; } /** * Function getXmlAttributes: Returns an associative array * with the attributes of $this Xml_field (only the modified ones). * * @access public * @param boolean includeDefaultValues Includes attributes * with default values. * @return Xml_Node */ public function getXmlAttributes($includeDefaultValues = false) { $attributesList = []; $class = get_class($this); $default = new $class(new Xml_Node('DEFAULT', 'open', '', array('type' => $this->type ))); foreach ($this as $k => $v) { switch ($k) { case 'owner': case 'name': case 'type': case 'language': case 'sql': break; default: if (($v !== $default->{$k}) || $includeDefaultValues) { $attributesList[$k] = $v; } } } return $attributesList; } /** * Used in Form::validatePost * * @param $value * @param &$owner * @return $value */ public function maskValue($value, &$owner) { return $value; } /*Close this object*/ /** * clone the current object * * @return */ public function cloneObject() { //return unserialize( serialize( $this ) );//con este cambio los formularios ya no funcionan en php4 return clone ($this); } /** * get a value from a PM Table * * @param $oOwner * @return $sValue */ public function getPMTableValue($oOwner) { $sValue = ''; if (isset($oOwner->fields[$this->pmconnection])) { if (defined('PATH_CORE')) { if (file_exists(PATH_CORE . 'classes' . PATH_SEP . 'model' . PATH_SEP . 'AdditionalTables.php')) { $oAdditionalTables = new AdditionalTables(); try { $aData = $oAdditionalTables->load($oOwner->fields[$this->pmconnection]->pmtable, true); } catch (Exception $oError) { $aData = array('FIELDS' => array()); } $aKeys = []; $aValues = explode('|', $oOwner->fields[$this->pmconnection]->keys); $i = 0; if ($aData == "" || count($aData['FIELDS']) < 1) { $message = G::LoadTranslation('ID_PMTABLE_NOT_FOUND'); G::SendMessageText($message, "WARNING"); $sValue = ""; } else { foreach ($aData['FIELDS'] as $aField) { if ($aField['FLD_KEY'] == '1') { // note added by gustavo cruz gustavo[at]colosa[dot]com // this additional [if] checks if a case variable has been set // in the keys attribute, so it can be parsed and replaced for // their respective value. if (preg_match("/@#/", $aValues[$i])) { // check if a case are running in order to prevent that preview is // erroneous rendered. if (isset($_SESSION['APPLICATION'])) { $oApp = new Cases(); if ($oApp->loadCase($_SESSION['APPLICATION']) != null) { $aFields = $oApp->loadCase($_SESSION['APPLICATION']); $formVariable = substr($aValues[$i], 2); if (isset($aFields['APP_DATA'][$formVariable])) { $formVariableValue = $aFields['APP_DATA'][$formVariable]; $aKeys[$aField['FLD_NAME']] = (isset($formVariableValue) ? G::replaceDataField($formVariableValue, $oOwner->values) : ''); } else { $aKeys[$aField['FLD_NAME']] = ''; } } else { $aKeys[$aField['FLD_NAME']] = ''; } } else { $aKeys[$aField['FLD_NAME']] = ''; } } else { $aKeys[$aField['FLD_NAME']] = (isset($aValues[$i]) ? G::replaceDataField($aValues[$i], $oOwner->values) : ''); } $i++; } } try { $aData = $oAdditionalTables->getDataTable($oOwner->fields[$this->pmconnection]->pmtable, $aKeys); } catch (Exception $oError) { $aData = []; } if (isset($aData[$this->pmfield])) { $sValue = $aData[$this->pmfield]; } } } } } return $sValue; } /** * Prepares NS Required Value * * @author Enrique Ponce de Leon * @param boolean optional (true = always show, false = show only if not empty) * @return string */ public function NSRequiredValue($show = false) { if (isset($this->required)) { $req = ($this->required) ? '1' : '0'; } else { $req = '0'; } $idv = 'pm:required="' . $req . '"'; if ($show) { return $idv; } else { return ($req != '0') ? $idv : ''; } } /** * Prepares NS Required Value * * @author Enrique Ponce de Leon * @param boolean optional (true = always show, false = show only if not empty) * @return string */ public function NSGridLabel($show = false) { $idv = 'pm:label="' . htmlentities($this->pmLabel, ENT_COMPAT, 'utf-8') . '"'; if ($show) { return $idv; } else { return ($this->pmLabel != '') ? $idv : ''; } } /** * Prepares NS Default Text * * @author Enrique Ponce de Leon * @param boolean optional (true = always show, false = show only if not empty) * @return string */ public function NSDefaultValue($show = false) { $idv = 'pm:defaultvalue="' . $this->defaultValue . '"'; if ($show) { return $idv; } else { return ($this->defaultValue != '') ? $idv : ''; } } /** * Prepares NS Field Type * * @author Julio Cesar Laura * @return string */ public function NSFieldType() { return 'pmfieldtype="' . $this->type . '"'; } /** * Prepares NS Grid Type * * @author Enrique Ponce de Leon * @param boolean optional (true = always show, false = show only if not empty) * @return string */ public function NSGridType($show = false) { $igt = 'pmgridtype="' . $this->gridFieldType . '"'; if ($show) { return $igt; } else { return ($this->gridFieldType != '') ? $igt : ''; } } /** * Prepares NS Grid Type * * @author Enrique Ponce de Leon * @param boolean optional (true = always show, false = show only if not empty) * @return string */ public function NSDependentFields($show = false) { $idf = 'pm:dependent="' . (($this->dependentFields != '') ? '1' : '0') . '"'; if ($show) { return $idf; } else { return ($this->dependentFields != '') ? $idf : ''; } } /** * Prepares Hint HTML if hint value is defined * * @author Enrique Ponce de Leon * @param void * @return string * */ public function renderHint() { $_outHint = ''; if ($this->hint != '' && $this->mode == 'edit') { $_outHint = ' '; } return $_outHint; } } /** * Class XmlFormFieldTitle * * @package gulliver.system * @access public */ class XmlFormFieldTitle extends XmlFormField { /** * Function render * * @access public * @param string value * @return string */ public function render($value = null, $owner = null) { $this->label = G::replaceDataField($this->label, $owner->values); return 'name . ']\' name=\'form[' . $this->name . ']\' ' . $this->NSFieldType() . ' >' . $this->htmlentities($this->label) . ''; } /** * A title node has no value * * @param $value * @return false */ public function validateValue($value) { return false; } } /** * Class XmlFormFieldSubtitle * * @package gulliver.system * @access public */ class XmlFormFieldSubtitle extends XmlFormField { /** * Function render * * @access public * @param string value * @return string */ public function render($value = null, $paramDummy2 = null) { return 'name . ']\' name=\'form[' . $this->name . ']\' ' . $this->NSFieldType() . ' >' . $this->htmlentities($this->label) . ''; } /** * A subtitle node has no value * * @param $value * @return false */ public function validateValue($value) { return false; } } /** * Class XmlFormFieldSimpleText * * @package gulliver.system * @access public */ class XmlFormFieldSimpleText extends XmlFormField { public $size = 15; public $maxLength = ''; public $validate = 'Any'; public $mask = ''; /* Additional events */ public $onkeypress = ''; public $renderMode = ''; /** * Function render * * @access public * @param string value * @return string */ public function render($value = null, $owner = null) { if (($this->pmconnection != '') && ($this->pmfield != '') && $value == null) { $value = $this->getPMTableValue($owner); } $onkeypress = G::replaceDataField($this->onkeypress, $owner->values); if ($this->mode === 'edit') { if ($this->readOnly) { return 'maxLength) ? ' maxlength="' . $this->maxLength . '"' : '') . ' value=\'' . htmlentities($value, ENT_COMPAT, 'utf-8') . '\' ' . $this->NSRequiredValue() . ' ' . $this->NSFieldType() . ' readOnly="readOnly" style="' . htmlentities($this->style, ENT_COMPAT, 'utf-8') . '" onkeypress="' . htmlentities($onkeypress, ENT_COMPAT, 'utf-8') . '"/>'; } else { return 'maxLength) ? ' maxlength="' . $this->maxLength . '"' : '') . ' value=\'' . htmlentities($value, ENT_COMPAT, 'utf-8') . '\' ' . $this->NSRequiredValue() . ' ' . $this->NSFieldType() . ' style="' . htmlentities($this->style, ENT_COMPAT, 'utf-8') . '" onkeypress="' . htmlentities($onkeypress, ENT_COMPAT, 'utf-8') . '"/>'; } } elseif ($this->mode === 'view') { return 'maxLength) ? ' maxlength="' . $this->maxLength . '"' : '') . ' value=\'' . htmlentities($value, ENT_COMPAT, 'utf-8') . '\' ' . $this->NSRequiredValue() . ' ' . $this->NSFieldType() . ' style="display:none;' . htmlentities($this->style, ENT_COMPAT, 'utf-8') . '" onkeypress="' . htmlentities($onkeypress, ENT_COMPAT, 'utf-8') . '"/>' . htmlentities($value, ENT_COMPAT, 'utf-8'); } else { return $this->htmlentities($value, ENT_COMPAT, 'utf-8'); } } /** * Function renderGrid * * @access public * @param string values * @param string owner * @return string */ public function renderGrid($values = array(), $owner = null, $paramDummy3 = null, $paramDummy4 = null) { $result = []; $r = 1; if ($owner->mode != 'view') { $this->renderMode = $this->modeForGrid; } foreach ($values as $v) { $html = ''; if ($this->renderMode === 'edit') { //EDIT MODE $readOnlyText = ($this->readOnly == 1 || $this->readOnly == '1') ? 'readOnly="readOnly"' : ''; $html .= 'name . '][' . $r . '][' . $this->name . ']" '; $html .= 'name="form[' . $owner->name . '][' . $r . '][' . $this->name . ']" '; $html .= 'type="text" size="' . $this->size . '" maxlength="' . $this->maxLength . '" '; $html .= 'value="' . $this->htmlentities($v, ENT_QUOTES, 'utf-8') . '" '; $html .= 'style="' . $this->htmlentities($this->style, ENT_COMPAT, 'utf-8') . '" '; $html .= $this->NSDefaultValue() . ' '; $html .= $this->NSRequiredValue() . ' '; $html .= $this->NSGridType() . ' '; $html .= $this->NSGridLabel() . ' '; $html .= '/>'; } else { //VIEW MODE $html .= $this->htmlentities($v, ENT_QUOTES, 'utf-8'); $html .= 'name . '][' . $r . '][' . $this->name . ']" '; $html .= 'name="form[' . $owner->name . '][' . $r . '][' . $this->name . ']" '; $html .= 'type="hidden" value="' . $this->htmlentities($v, ENT_QUOTES, 'utf-8') . '" />'; } $result[] = $html; $r++; } return $result; } } /** * Class XmlFormFieldText * * @package gulliver.system * @access public */ class XmlFormFieldText extends XmlFormFieldSimpleText { public $size = 15; public $maxLength = 64; public $validate = 'Any'; public $mask = ''; public $defaultValue = ''; public $required = false; public $dependentFields = ''; public $linkField = ''; //Possible values:(-|UPPER|LOWER|CAPITALIZE) public $strTo = ''; public $readOnly = false; public $sqlConnection = 0; public $sql = ''; public $sqlOption = []; //Attributes only for grids public $gridFieldType = 'text'; public $formula = ''; public $function = ''; public $replaceTags = 0; public $renderMode = ''; public $comma_separator = '.'; public $autocomplete = "on"; /** * Function render * * @access public * @param string value * @param string owner * @return string */ public function render($value = null, $owner = null) { if ($this->autocomplete === '1') { $this->autocomplete = "on"; } else { if ($this->autocomplete === '0') { $this->autocomplete = "off"; } } if ($this->renderMode == '') { $this->renderMode = $this->mode; } if (($this->pmconnection != '') && ($this->pmfield != '') && $value == null) { $value = $this->getPMTableValue($owner); } else { $this->executeSQL($owner); $firstElement = key($this->sqlOption); if (isset($firstElement)) { $value = $firstElement; } } //NOTE: string functions must be in G class if ($this->strTo === 'UPPER') { $value = strtoupper($value); } if ($this->strTo === 'LOWER') { $value = strtolower($value); } if ($this->strTo === 'TITLE') { $value = strtolower($value); $value = ucwords($value); } if ($this->strTo === 'PHRASE') { //$value = strtolower( $value ); $title = explode(" ", $value); $title[0] = ucwords($title[0]); $value = implode(" ", $title); } //if ($this->strTo==='CAPITALIZE') $value = strtocapitalize($value); $onkeypress = G::replaceDataField($this->onkeypress, $owner->values); if ($this->replaceTags == 1) { $value = G::replaceDataField($value, $owner->values); } $html = ''; if ($this->renderMode == 'edit') { //EDIT MODE $readOnlyText = ($this->readOnly == 1 || $this->readOnly == '1') ? 'readOnly="readOnly"' : ''; $html .= 'name . ']" '; $html .= 'name="form[' . $this->name . ']" '; $html .= 'type="text" size="' . $this->size . '" maxlength="' . $this->maxLength . '" '; $html .= 'autocomplete="' . $this->autocomplete . '" '; $html .= 'value="' . $this->htmlentities($value, ENT_QUOTES, 'utf-8') . '" '; $html .= 'style="' . $this->htmlentities($this->style, ENT_COMPAT, 'utf-8') . '" '; $html .= 'onkeypress="' . $this->htmlentities($onkeypress, ENT_COMPAT, 'utf-8') . '" '; $html .= $this->NSDefaultValue() . ' '; $html .= $this->NSRequiredValue() . ' '; $html .= $this->NSFieldType() . ' '; $html .= 'pm:decimal_separator="' . $this->comma_separator . '" '; $html .= '/>'; } else { //VIEW MODE $html .= $this->htmlentities($value, ENT_QUOTES, 'utf-8'); $html .= 'name . ']" '; $html .= 'name="form[' . $this->name . ']" '; $html .= $this->NSFieldType() . ' '; $this->enableHtml = false; $html .= 'type="hidden" value="' . $this->htmlentities($value, ENT_QUOTES, 'utf-8') . '" />'; } $html .= $this->renderHint(); if (($this->readOnly == 1) && ($this->renderMode == 'edit')) { $html = str_replace("class=\"module_app_input___gray\"", "class=\"module_app_input___gray_readOnly\"", $html); } return $html; } /** * Function renderGrid * * @access public * @param string values * @param string owner * @return string */ public function renderGrid($values = array(), $owner = null, $paramDummy3 = null, $paramDummy4 = null) { $result = $aux = []; $r = 1; if ($owner->mode != 'view') { $this->renderMode = $this->modeForGrid; } foreach ($values as $v) { $this->executeSQL($owner, $r); $firstElement = key($this->sqlOption); if (isset($firstElement)) { $v = $firstElement; } if ($this->replaceTags == 1) { $v = G::replaceDataField($v, $owner->values); } $aux[$r] = $v; $html = ''; if ($this->renderMode == 'edit') { //EDIT MODE $readOnlyText = ($this->readOnly == 1 || $this->readOnly == '1') ? 'readOnly="readOnly"' : ''; $html .= 'name . '][' . $r . '][' . $this->name . ']" '; $html .= 'name="form[' . $owner->name . '][' . $r . '][' . $this->name . ']" '; $html .= 'type="text" size="' . $this->size . '" maxlength="' . $this->maxLength . '" '; $html .= 'value="' . $this->htmlentities($v, ENT_QUOTES, 'utf-8') . '" '; $html .= 'style="' . $this->htmlentities($this->style, ENT_COMPAT, 'utf-8') . '" '; $html .= $this->NSDefaultValue() . ' '; $html .= $this->NSRequiredValue() . ' '; $html .= $this->NSGridLabel() . ' '; $html .= $this->NSGridType() . ' '; $html .= $this->NSDependentFields() . ' '; $html .= '/>'; } else { //VIEW MODE $html .= $this->htmlentities($v, ENT_QUOTES, 'utf-8'); $html .= 'name . '][' . $r . '][' . $this->name . ']" '; $html .= 'name="form[' . $owner->name . '][' . $r . '][' . $this->name . ']" '; $html .= $this->NSDefaultValue() . ' '; $html .= $this->NSGridType() . ' '; $html .= 'type="hidden" value="' . $this->htmlentities($v, ENT_QUOTES, 'utf-8') . '" />'; } $result[] = $html; $r++; } $this->options = $aux; return $result; } public function renderTable($values = "", $owner = null, $paramDummy3 = null) { $result = $this->htmlentities($values, ENT_COMPAT, 'utf-8'); return $result; } } /** * Class XmlFormFieldSuggest * * @package gulliver.system * @access public */ class XmlFormFieldSuggest extends XmlFormFieldSimpleText { public $size = 15; public $maxLength = 64; public $validate = 'Any'; public $mask = ''; public $defaultValue = ''; public $required = false; public $dependentFields = ''; public $linkField = ''; //Possible values:(-|UPPER|LOWER|CAPITALIZE) public $strTo = ''; public $readOnly = false; public $sqlConnection = 0; public $sql = ''; public $sqlOption = []; public $searchType = "*searchtext*"; //Atributes only for grids public $gridFieldType = 'suggest'; public $formula = ''; public $function = ''; public $replaceTags = 0; public $ajaxServer = '../gulliver/genericAjax'; public $maxresults = '6'; public $savelabel = 1; public $shownoresults; public $callback = ''; public $store_new_entry = ''; public $table = ''; public $table_data = ''; public $primary_key = ''; public $primary_key_data = ''; public $primary_key_type = ''; public $primary_key_type_data = ''; public $field = ''; /** * Function render * * @author Erik A. Ortiz. * @param $value * @param $owner * @return */ public function render($value = null, $owner = null) { if (!$this->sqlConnection) { $this->sqlConnection = 'workflow'; } //NOTE: string functions must be in G class if ($this->strTo === 'UPPER') { $value = strtoupper($value); } if ($this->strTo === 'LOWER') { $value = strtolower($value); } //if ($this->strTo==='CAPITALIZE') $value = strtocapitalize($value); $onkeypress = G::replaceDataField($this->onkeypress, $owner->values); if ($this->replaceTags == 1) { $value = G::replaceDataField($value, $owner->values); } $aProperties = array('value' => '""', 'size' => '"' . $this->size . '"'); $storeEntry = null; $storeEntryData = ", storeEntryData: [0]"; if ($this->store_new_entry) { $storeEntry = ' title="' . G::LoadTranslation("ID_FIELD_DYNAFORM_SUGGEST_INPUT_TITLE") . '"'; $storeEntryData = ", storeEntryData: [1, \"form[" . $this->name . "_label]\", \"" . $this->sqlConnection . "\", \"" . $this->table . "\", \"" . $this->primary_key . "\", \"" . $this->primary_key_type . "\", \"" . $this->field . "\"]"; } $formVariableValue = ''; $formVariableKeyValue = ''; $oApp = new Cases(); if (isset($_SESSION['APPLICATION']) && ($_SESSION['APPLICATION'] != null && $oApp->loadCase($_SESSION['APPLICATION']) != null)) { $aFields = $oApp->loadCase($_SESSION['APPLICATION']); if (isset($aFields['APP_DATA'][$this->name . '_label'])) { $formVariableValue = $aFields['APP_DATA'][$this->name . '_label']; $formVariableKeyValue = $aFields['APP_DATA'][$this->name]; } } if ($this->mode === 'edit') { if ($this->readOnly) { return 'htmlentities($value, ENT_COMPAT, 'utf-8') . '\' ' . $this->NSFieldType() . ' readOnly="readOnly" style="' . htmlentities($this->style, ENT_COMPAT, 'utf-8') . '" onkeypress="' . htmlentities($onkeypress, ENT_COMPAT, 'utf-8') . '"/>'; } else { // $str = ''; if (strlen(trim($formVariableValue)) > 0) { $value = $formVariableValue; } $name = "'" . $this->name . "'"; $str = 'NSDependentFields(true) . ' '; $str .= '/>'; $str .= 'name . ']" '; $str .= 'name="form[' . $this->name . ']" '; $str .= $this->NSFieldType() . ' '; $str .= 'value="' . $this->htmlentities($formVariableKeyValue, ENT_COMPAT, 'utf-8') . '" '; $str .= 'type="hidden" />'; $str .= $this->renderHint(); if (trim($this->callback) != '') { $sCallBack = 'try{' . $this->callback . '}catch(e){alert("Suggest Widget call back error: "+e)}'; } else { $sCallBack = ''; } $sSQL = $this->sql; $nCount = preg_match_all('/\@(?:([\@\%\#\!Qq])([a-zA-Z\_]\w*)|([a-zA-Z\_][\w\-\>\:]*)\(((?:[^\\\\\)]*?)*)\))/', $sSQL, $match, PREG_PATTERN_ORDER | PREG_OFFSET_CAPTURE); $aResult = []; if ($nCount) { for ($i = 0; $i < $nCount; $i++) { if (isset($match[0][$i][0]) && isset($match[2][$i][0])) { $aResult[$match[0][$i][0]] = $match[2][$i][0]; } } } $depValues = ''; $i = 1; if (isset($aResult) && $aResult) { $sResult = '"' . implode('","', $aResult) . '"'; $aResultKeys = array_keys($aResult); $sResultKeys = str_rot13(base64_encode(implode('|', $aResultKeys))); foreach ($aResult as $key => $field) { $depValues .= 'getField(\'' . $field . '\').value'; if ($i++ < count($aResult)) { $depValues .= '+"|"+'; } } $depValues = '+' . $depValues . '+'; } else { $sResult = ''; $sResultKeys = ''; $depValues = '+'; } $aDepFields = []; $count = 0; if ($this->dependentFields !== '') { $dependentFields = explode(",", $this->dependentFields); foreach ($dependentFields as $keyDependent => $valueDependent) { $sqlDepField = $owner->fields[$valueDependent]->sql; $count = preg_match_all('/\@(?:([\@\%\#\=\!Qq])([a-zA-Z\_]\w*)|([a-zA-Z\_][\w\-\>\:]*)\(((?:[^\\\\\)]*?)*)\))/', $sqlDepField, $match, PREG_PATTERN_ORDER | PREG_OFFSET_CAPTURE); for ($cnt = 0; $cnt < $count; $cnt++) { $aDepFields[$cnt] = $match[2][$cnt][0]; } } } $sOptions = 'script: function (input) { '; $sOptions .= ' var inputValue = base64_encode(getField(\'' . $this->name . '_label\').value); '; $sOptions .= ' return "' . $this->ajaxServer . '?request=suggest&type=form&form=' . $owner->id . '&variable=' . $this->name . '&json=true&limit=' . $this->maxresults; $sOptions .= '&dependentFieldsKeys=' . $sResultKeys . '&dependentFieldsValue="'; $sOptions .= $depValues . '"&input="+inputValue+"&inputEnconde64=enable&searchType=' . $this->searchType . '";'; $sOptions .= '},'; $sOptions .= 'json: true,'; $sOptions .= 'limit: ' . $this->maxresults . ','; $sOptions .= 'shownoresults: ' . ($this->shownoresults ? 'true' : 'false') . ','; $sOptions .= 'maxresults: ' . $this->maxresults . ','; $sOptions .= 'chache: true,'; $setValue = ($this->savelabel == '1') ? 'obj.value' : 'obj.id'; $sOptions .= 'callback: function (obj) { '; $sOptions .= 'if (typeof obj != "undefined") { '; $sOptions .= ' var jField = { };'; $sOptions .= ' var sField = "[]"; '; if ($count > 0) { for ($cnt = 0; $cnt < $count; $cnt++) { if ($this->name == $aDepFields[$cnt]) { $sOptions .= ' jField[\'' . $aDepFields[$cnt] . '\'] = obj.id;'; } else { $sOptions .= ' jField[\'' . $aDepFields[$cnt] . '\'] = getField(\'' . $aDepFields[$cnt] . '\').value; '; } } } $sOptions .= ' var sField = "["+ encodeURIComponent(jField.toJSONString()) + "]"; '; $sOptions .= $sCallBack . '; getField("' . $this->name . '").value = obj.id;'; $sOptions .= 'var response = ajax_function("../gulliver/defaultAjaxDynaform", "reloadField", '; $sOptions .= ' "form=' . $owner->id . '&fields=" + sField, "POST"); '; $sOptions .= 'if (response.substr(0,1) === \'[\') { '; $sOptions .= ' var newcont; '; $sOptions .= ' eval(\'newcont=\' + response + \';\'); '; $sOptions .= ' for(var i = 0; iname . '_label]\', {' . $sOptions . $storeEntryData . '}, "' . $this->searchType . '");'; $str .= ''; return $str; } } else { $html = 'NSFieldType() . ' >'; $html .= $this->htmlentities($formVariableValue, ENT_COMPAT, 'utf-8'); $html .= ''; return $html; } } /** * render Field Grid * * @param type $value * @param type $owner * @param type $rowId * @param type $ownerName Grid Name * @param type $index Index on the grid * @return string */ public function renderFieldGrid($value = null, $owner = null, $rowId = '', $ownerName = '', $index = 0) { $rowIdField = substr($rowId, 1); if (!$this->sqlConnection) { $this->sqlConnection = 'workflow'; } if ($this->strTo === 'UPPER') { $value = strtoupper($value); } if ($this->strTo === 'LOWER') { $value = strtolower($value); } $onkeypress = G::replaceDataField($this->onkeypress, $owner->values); if ($this->replaceTags == 1) { $value = G::replaceDataField($value, $owner->values); } $storeEntry = null; $storeEntryData = ", storeEntryData: [0]"; if ($this->store_new_entry) { $storeEntry = ' title="' . G::LoadTranslation("ID_FIELD_DYNAFORM_SUGGEST_INPUT_TITLE") . '"'; $storeEntryData = ", storeEntryData: [1, \"form" . $rowId . "[" . $this->name . "_label]\", \"" . $this->sqlConnection . "\", \"" . $this->table . "\", \"" . $this->primary_key . "\", \"" . $this->primary_key_type . "\", \"" . $this->field . "\"]"; } $formVariableValue = ''; $formVariableKeyValue = ''; $oApp = new Cases(); if (isset($_SESSION['APPLICATION']) && ($_SESSION['APPLICATION'] != null && $oApp->loadCase($_SESSION['APPLICATION']) != null)) { $aFields = $oApp->loadCase($_SESSION['APPLICATION']); if (isset($aFields['APP_DATA'][$ownerName][$index][$this->name . '_label'])) { $formVariableValue = $aFields['APP_DATA'][$ownerName][$index][$this->name . '_label']; $formVariableKeyValue = $aFields['APP_DATA'][$ownerName][$index][$this->name]; } } if ($this->mode === 'edit') { if ($this->readOnly) { return 'htmlentities($value, ENT_COMPAT, 'utf-8') . '\' ' . $this->NSGridType() . ' readOnly="readOnly" style="' . htmlentities($this->style, ENT_COMPAT, 'utf-8') . '" onkeypress="' . htmlentities($onkeypress, ENT_COMPAT, 'utf-8') . '"/>'; } else { if (strlen(trim($formVariableValue)) > 0) { $value = $formVariableValue; } $str = 'NSDependentFields(true) . ' '; $str .= $this->NSRequiredValue() . ' '; $str .= $this->NSGridLabel() . ' '; $str .= '/>'; $str .= 'name . ']" '; $str .= 'name="form' . $rowId . '[' . $this->name . ']" '; $str .= $this->NSGridType() . ' '; $str .= 'value="' . $this->htmlentities($formVariableKeyValue, ENT_COMPAT, 'utf-8') . '" '; $str .= 'type="hidden" />'; //$str .= $this->renderHint(); if (trim($this->callback) != '') { $sCallBack = 'try{' . $this->callback . '}catch(e){alert("Suggest Widget call back error: "+e)}'; } else { $sCallBack = ''; } $sSQL = $this->sql; $nCount = preg_match_all('/\@(?:([\@\%\#\!Qq])([a-zA-Z\_]\w*)|([a-zA-Z\_][\w\-\>\:]*)\(((?:[^\\\\\)]*?)*)\))/', $sSQL, $match, PREG_PATTERN_ORDER | PREG_OFFSET_CAPTURE); $aResult = []; if ($nCount) { for ($i = 0; $i < $nCount; $i++) { if (isset($match[0][$i][0]) && isset($match[2][$i][0])) { $aResult[$match[0][$i][0]] = $match[2][$i][0]; } } } $depValues = ''; $depFieldsLast = ''; $i = 1; if (isset($aResult) && $aResult) { $sResult = '"' . implode('","', $aResult) . '"'; $aResultKeys = array_keys($aResult); $sResultKeys = str_rot13(base64_encode(implode('|', $aResultKeys))); foreach ($aResult as $key => $field) { $depValues .= 'getField(\'' . $rowIdField . '[' . $field . '\').value'; if ($i++ < count($aResult)) { $depValues .= '+"|"+'; } } $depFieldsLast = 'getField(\'' . $rowIdField . '[' . $field . '\').value'; $depValues = '+' . $depValues . '+'; } else { $sResult = ''; $sResultKeys = ''; $depValues = '+'; } $sOptions = 'script: function (input) { '; $sOptions .= ' var inputValue = base64_encode(getField(\'' . $rowIdField . '[' . $this->name . '_label\').value); '; $sOptions .= ' return "' . $this->ajaxServer . '?request=suggest&type=grid&form=' . $owner->id . '&grid=' . $owner->name . '&variable=' . $this->name . '&json=true&limit=' . $this->maxresults; $sOptions .= '&dependentFieldsKeys=' . $sResultKeys . '&dependentFieldsValue="'; $sOptions .= $depValues . '"&input="+inputValue+"&inputEnconde64=enable&searchType=' . $this->searchType . '";'; $sOptions .= '},'; $sOptions .= 'json: true,'; $sOptions .= 'limit: ' . $this->maxresults . ','; $sOptions .= 'shownoresults: ' . ($this->shownoresults ? 'true' : 'false') . ','; $sOptions .= 'maxresults: ' . $this->maxresults . ','; $sOptions .= 'chache: true,'; $sOptions .= 'callback: function (obj) { '; $sOptions .= 'if (typeof obj != "undefined") { '; $sOptions .= ' var aFieldCurrent = {};'; $sOptions .= ' aFieldCurrent[\'' . $this->name . '\'] = obj.id;'; $sOptions .= ' var sFieldCurrent = "["+ encodeURIComponent(aFieldCurrent.toJSONString()) + "]"; '; $sOptions .= $sCallBack . '; getField("' . $rowIdField . '[' . $this->name . '").value = obj.id;'; $sOwnerId = (isset($owner->owner->id)) ? $owner->owner->id : $owner->id; $sOptions .= 'var indexField = "' . $rowIdField . '[' . $this->name . '";'; $sOptions .= 'indexField = indexField.match(/\[[0-9]+\]/g); '; $sOptions .= 'indexFieldVal = indexField[0].replace(/\[|\]/g,""); '; $sOptions .= 'var gridField = gridGetAllFieldAndValue("' . $ownerName . '][" + indexFieldVal + "][' . $this->name . '", 0); '; //Not get current field $sOptions .= 'var response = ajax_function("../gulliver/defaultAjaxDynaform", "reloadField", "form=' . $sOwnerId . '&fields=" + sFieldCurrent + "&grid=' . $ownerName . '" + ((gridField != "")? "&gridField=" + encodeURIComponent("{" + gridField + "}") : "") + "&row=" + indexFieldVal, "POST"); '; $sOptions .= ''; $sOptions .= 'if (response.substr(0,1) === \'[\') { '; $sOptions .= ' var newcont; '; $sOptions .= ' eval(\'newcont=\' + response + \';\'); '; $sOptions .= ''; $sOptions .= ' for(var i = 0; iname . '_label]\', {' . $sOptions . $storeEntryData . '}, "' . $this->searchType . '"); '; $str .= ''; return $str; } } else { $str = $this->htmlentities($formVariableValue, ENT_COMPAT, 'utf-8'); $str .= 'NSDependentFields(true) . ' '; $str .= $this->NSRequiredValue() . ' '; $str .= $this->NSGridLabel() . ' '; $str .= '/>'; $str .= 'NSGridType() . ' '; $str .= '/>'; return $str; } } /** * Function renderGrid * * @access public * @param string values * @param string owner * @return string */ public function renderGrid($values = array(), $owner = null, $paramDummy3 = null, $paramDummy4 = null) { $aResult = []; $r = 1; foreach ($values as $v) { $aResult[] = $this->renderFieldGrid($v, $owner, '[' . $owner->name . '][' . $r . ']', $owner->name, $r); $r++; } return $aResult; } /** * render in a table * * @param $values * @param $owner * @return $result */ public function renderTable($values = "", $owner = null, $paramDummy3 = null) { $result = $this->htmlentities($values, ENT_COMPAT, 'utf-8'); return $result; } } /** * prepare the field for printing * * @package gulliver.system */ class XmlFormFieldPrint extends XmlFormFieldSimpleText //by neyek { //Instead of public --> link public $link = ''; public $value = ''; public $target = ''; public $colClassName = 'RowLink'; //properties public $width; public $height; public $top; public $left; public $resizable; /** * Function render * * @param string value * @return string */ //750, 450, 10, 32, 1 public function render($value = null, $owner = null) { $onclick = G::replaceDataField($this->onclick, $owner->values); $link = G::replaceDataField($this->link, $owner->values); $target = G::replaceDataField($this->target, $owner->values); $value = G::replaceDataField($this->value, $owner->values); $label = G::replaceDataField($this->label, $owner->values); $html = ' '; return $html; } } /*DEPRECATED*/ /** * caption field for dynaforms * * @package gulliver.system */ class XmlFormFieldCaption extends XmlFormField { public $defaultValue = ''; public $required = false; public $dependentFields = ''; public $readonly = false; public $option = []; public $sqlConnection = 0; public $sql = ''; public $sqlOption = []; public $saveLabel = 0; //public $hint; /** * * @param $value * @param $owner * @return true */ public function validateValue($value) { return true; } /** * Function render * * @access public * @param string value * @return string modified */ public function render($value = null, $owner = null, $rowId = '', $onlyValue = false, $row = -1, $therow = -1) { if (($this->pmconnection != '') && ($this->pmfield != '') && $value == null) { $value = $this->getPMTableValue($owner); } if ($therow == -1) { //print_r($this->executeSQL ( $owner, $row ));print"
"; $this->executeSQL($owner, $row); } else { if ($row == $therow) { $this->executeSQL($owner, $row); } } $html = ''; if (!$onlyValue) { foreach ($this->option as $optionName => $option) { if ($optionName == $value) { $value = $option; } } foreach ($this->sqlOption as $optionName => $option) { if ($optionName == $value) { $value = $option; } } } else { foreach ($this->option as $optionName => $option) { if ($optionName == $value) { $$value = $option; } } foreach ($this->sqlOption as $optionName => $option) { if ($optionName == $value) { $value = $option; } } } $pID = "form[$this->name]"; $htm = $this->htmlentities($value, ENT_COMPAT, 'utf-8'); $htm .= ''; return $htm; } } /** * Class XmlFormFieldPassword * * @package gulliver.system * @access public */ class XmlFormFieldPassword extends XmlFormField { public $size = 15; public $maxLength = 15; public $required = false; public $readOnly = false; public $autocomplete = "on"; /** * Function render * * @access public * @param string value * @return string */ public function render($value = null, $paramDummy2 = null) { if ($this->autocomplete === '1') { $this->autocomplete = "on"; } else { if ($this->autocomplete === '0') { $this->autocomplete = "off"; } } if ($this->mode === 'edit') { if ($this->readOnly) { return 'htmlentities($value, ENT_COMPAT, 'utf-8') . '\' ' . $this->NSFieldType() . ' readOnly="readOnly"/>'; } else { $html = 'htmlentities($value, ENT_COMPAT, 'utf-8') . '\' ' . $this->NSFieldType() . '/>'; $html .= $this->renderHint(); return $html; } } elseif ($this->mode === 'view') { $html = 'htmlentities($value, ENT_COMPAT, 'utf-8') . '\' ' . $this->NSFieldType() . ' readOnly="readOnly"/>'; $html .= $this->htmlentities(str_repeat('*', 10), ENT_COMPAT, 'utf-8'); return $html; } else { return $this->htmlentities(str_repeat('*', 10), ENT_COMPAT, 'utf-8'); } } } /** * Class XmlFormFieldTextarea * * @package gulliver.system * @access public */ class XmlFormFieldTextarea extends XmlFormField { public $rows = 12; public $cols = 40; public $required = false; public $readOnly = false; public $resizable = false; public $wrap = 'OFF'; public $className; public $renderMode = ''; /** * Function render * * @access public * @param string value * @return string */ public function render($value = null, $owner = null) { if (($this->pmconnection != '') && ($this->pmfield != '') && $value == null) { $value = $this->getPMTableValue($owner); } else { $this->executeSQL($owner); if (isset($this->sqlOption)) { $firstElement = key($this->sqlOption); } if (isset($firstElement)) { $value = $firstElement; } } $className = isset($this->className) ? $this->className : 'module_app_input___gray'; if ($this->renderMode == '') { $this->renderMode = $this->mode; } $resizable = ($this->resizable == 1 || $this->resizable == '1') ? 'resize:both;' : 'resize:none;'; $html = ''; $scrollStyle = $this->style . "overflow:scroll;overflow-y:scroll;overflow-x:hidden;overflow:-moz-scrollbars-vertical;" . $resizable; if ($this->renderMode == 'edit') { //EDIT MODE $readOnlyText = ($this->readOnly == 1 || $this->readOnly == '1') ? 'readOnly="readOnly"' : ''; $html .= ''; } else { //VIEW MODE $html .= ''; } $html .= $this->renderHint(); return $html; } /** * Function renderGrid * * @access public * @param string value * @param string owner * @return string */ public function renderGrid($values = array(), $owner = null, $paramDummy3 = null, $paramDummy4 = null) { $this->gridFieldType = 'textarea'; if ($owner->mode != 'view') { $this->renderMode = $this->modeForGrid; } $result = []; $arrayOptions = []; $r = 1; foreach ($values as $v) { $this->executeSQL($owner, $r); if (isset($this->sqlOption)) { $firstElement = key($this->sqlOption); } if (isset($firstElement)) { $v = $firstElement; } $arrayOptions[$r] = $v; $resizable = ($this->resizable == 1 || $this->resizable == '1') ? 'resize:both;' : 'resize:none;'; $scrollStyle = $this->style . "overflow:scroll;overflow-y:scroll;overflow-x:hidden;overflow:-moz-scrollbars-vertical;" . $resizable; $html = ''; if ($this->renderMode == 'edit') { //EDIT MODE $readOnlyText = ($this->readOnly == 1 || $this->readOnly == '1') ? 'readOnly="readOnly"' : ''; $html .= ''; } else { //VIEW MODE $html .= ''; } $result[] = $html; $r++; } $this->options = $arrayOptions; return $result; } } /** * Class XmlFormFieldCurrency * * @package gulliver.system * @access public */ class XmlFormFieldCurrency extends XmlFormFieldSimpleText { public $group = 0; public $size = 15; public $required = false; public $linkField = ''; public $readOnly = false; public $maxLength = 15; public $mask = '_###,###,###,###;###,###,###,###.## $'; public $currency = '$'; //Atributes only for grids public $formula = ''; public $function = ''; public $gridFieldType = 'currency'; public $comma_separator = '.'; public $sqlOption = []; /** * render the field in a dynaform * * @param $value * @param $owner * @return */ public function render($value = null, $owner = null) { if (($this->pmconnection != '') && ($this->pmfield != '') && $value == null) { $value = $this->getPMTableValue($owner); } else { $this->executeSQL($owner); if (isset($this->sqlOption)) { $firstElement = key($this->sqlOption); } if (isset($firstElement)) { $value = $firstElement; } } if ($this->renderMode == '') { $this->renderMode = $this->mode; } $onkeypress = G::replaceDataField($this->onkeypress, $owner->values); $html = ''; $currency = preg_replace('/([_;#,.])/', '', $this->mask); if (!$value) { $value = $currency; } if ($this->renderMode == 'edit') { //EDIT MODE $readOnlyText = ($this->readOnly == 1 || $this->readOnly == '1') ? 'readOnly="readOnly"' : ''; $html .= 'name . ']" '; $html .= 'name="form[' . $this->name . ']" '; $html .= 'type="text" size="' . $this->size . '" maxlength="' . $this->maxLength . '" '; $html .= 'value="' . $this->htmlentities($value, ENT_QUOTES, 'utf-8') . '" '; $html .= 'style="' . $this->htmlentities($this->style, ENT_COMPAT, 'utf-8') . '" '; $html .= 'onkeypress="' . $this->htmlentities($onkeypress, ENT_COMPAT, 'utf-8') . '" '; $html .= $this->NSDefaultValue() . ' '; $html .= $this->NSRequiredValue() . ' '; $html .= $this->NSFieldType() . ' '; $html .= 'pm:decimal_separator="' . $this->comma_separator . '" '; $html .= '/>'; } else { //VIEW MODE $html .= $this->htmlentities($value, ENT_COMPAT, 'utf-8'); $html .= 'name . ']" '; $html .= 'name="form[' . $this->name . ']" '; $html .= $this->NSFieldType() . ' '; $html .= 'type="hidden" value="' . $this->htmlentities($value, ENT_COMPAT, 'utf-8') . '" />'; } if (($this->readOnly == 1) && ($this->renderMode == 'edit')) { $html = str_replace("class=\"module_app_input___gray\"", "class=\"module_app_input___gray_readOnly\"", $html); } $html .= $this->renderHint(); return $html; } /** * Function renderGrid * * @author alvaro campos sanchez * @access public * @param string values * @param string owner * @return string */ public function renderGrid($values = array(), $owner = null, $paramDummy3 = null, $paramDummy4 = null) { $result = []; $r = 1; if ($owner->mode != 'view') { $this->renderMode = $this->modeForGrid; } foreach ($values as $v) { $this->executeSQL($owner, $r); $firstElement = key($this->sqlOption); if (isset($firstElement)) { $v = $firstElement; } $html = ''; $currency = preg_replace('/([_;#,.])/', '', $this->mask); if (!$v) { $v = $currency; } if ($this->renderMode === 'edit') { //EDIT MODE $readOnlyText = ($this->readOnly == 1 || $this->readOnly == '1') ? 'readOnly="readOnly"' : ''; $html .= 'name . '][' . $r . '][' . $this->name . ']" '; $html .= 'name="form[' . $owner->name . '][' . $r . '][' . $this->name . ']" '; $html .= 'type="text" size="' . $this->size . '" maxlength="' . $this->maxLength . '" '; $html .= 'value="' . $this->htmlentities($v, ENT_QUOTES, 'utf-8') . '" '; $html .= 'style="' . $this->htmlentities($this->style, ENT_COMPAT, 'utf-8') . '" '; $html .= $this->NSDefaultValue() . ' '; $html .= $this->NSRequiredValue() . ' '; $html .= $this->NSGridType() . ' '; $html .= $this->NSGridLabel() . ' '; $html .= '/>'; } else { //VIEW MODE $html .= $this->htmlentities($v, ENT_QUOTES, 'utf-8'); $html .= 'name . '][' . $r . '][' . $this->name . ']" '; $html .= 'name="form[' . $owner->name . '][' . $r . '][' . $this->name . ']" '; $html .= $this->NSGridType() . ' '; $html .= 'type="hidden" value="' . $this->htmlentities($v, ENT_QUOTES, 'utf-8') . '" />'; } $result[] = $html; $r++; } return $result; } } /*DEPRECATED*/ /** * * @package gulliver.system */ class XmlFormFieldCaptionCurrency extends XmlFormField { /** * Function render * * @access public * @param string value * @return string */ public function render($value = null, $paramDummy2 = null) { return '$ ' . $this->htmlentities($value, ENT_COMPAT, 'utf-8'); } } /** * Class XmlFormFieldPercentage * * @package gulliver.system * @access public */ class XmlFormFieldPercentage extends XmlFormFieldSimpleText { public $size = 15; public $required = false; public $linkField = ''; public $readOnly = false; public $maxLength = 15; public $mask = '###.## %'; //Atributes only for grids public $formula = ''; public $function = ''; public $gridFieldType = 'percentage'; public $comma_separator = '.'; public $sqlOption = []; public function render($value = null, $owner = null) { if (($this->pmconnection != '') && ($this->pmfield != '') && $value == null) { $value = $this->getPMTableValue($owner); } else { $this->executeSQL($owner); if (isset($this->sqlOption)) { $firstElement = key($this->sqlOption); } if (isset($firstElement)) { $value = $firstElement; } } if ($this->renderMode == '') { $this->renderMode = $this->mode; } $onkeypress = G::replaceDataField($this->onkeypress, $owner->values); $html = ''; if ($this->renderMode == 'edit') { //EDIT MODE $readOnlyText = ($this->readOnly == 1 || $this->readOnly == '1') ? 'readOnly="readOnly"' : ''; $html .= 'name . ']" '; $html .= 'name="form[' . $this->name . ']" '; $html .= 'type="text" size="' . $this->size . '" maxlength="' . $this->maxLength . '" '; $html .= 'value="' . $this->htmlentities($value, ENT_QUOTES, 'utf-8') . '" '; $html .= 'style="' . $this->htmlentities($this->style, ENT_COMPAT, 'utf-8') . '" '; $html .= 'onkeypress="' . $this->htmlentities($onkeypress, ENT_COMPAT, 'utf-8') . '" '; $html .= $this->NSDefaultValue() . ' '; $html .= $this->NSRequiredValue() . ' '; $html .= $this->NSFieldType() . ' '; $html .= 'pm:decimal_separator="' . $this->comma_separator . '" '; $html .= '/>'; } else { //VIEW MODE $html .= $this->htmlentities($value, ENT_COMPAT, 'utf-8'); $html .= 'name . ']" '; $html .= 'name="form[' . $this->name . ']" '; $html .= $this->NSFieldType() . ' '; $html .= 'type="hidden" value="' . $this->htmlentities($value, ENT_COMPAT, 'utf-8') . '" />'; } if (($this->readOnly == 1) && ($this->renderMode == 'edit')) { $html = str_replace("class=\"module_app_input___gray\"", "class=\"module_app_input___gray_readOnly\"", $html); } $html .= $this->renderHint(); return $html; } public function renderGrid($values = array(), $owner = null, $paramDummy3 = null, $paramDummy4 = null) { $result = []; $r = 1; if ($owner->mode != 'view') { $this->renderMode = $this->modeForGrid; } foreach ($values as $v) { $this->executeSQL($owner, $r); $firstElement = key($this->sqlOption); if (isset($firstElement)) { $v = $firstElement; } $html = ''; $percentage = preg_replace('/([_;#,.])/', '', $this->mask); if (!$v) { $v = $percentage; } if ($this->renderMode === 'edit') { //EDIT MODE $readOnlyText = ($this->readOnly == 1 || $this->readOnly == '1') ? 'readOnly="readOnly"' : ''; $html .= 'name . '][' . $r . '][' . $this->name . ']" '; $html .= 'name="form[' . $owner->name . '][' . $r . '][' . $this->name . ']" '; $html .= 'type="text" size="' . $this->size . '" maxlength="' . $this->maxLength . '" '; $html .= 'value="' . $this->htmlentities($v, ENT_QUOTES, 'utf-8') . '" '; $html .= 'style="' . $this->htmlentities($this->style, ENT_COMPAT, 'utf-8') . '" '; $html .= $this->NSDefaultValue() . ' '; $html .= $this->NSRequiredValue() . ' '; $html .= $this->NSGridType() . ' '; $html .= $this->NSGridLabel() . ' '; $html .= '/>'; } else { //VIEW MODE $html .= $this->htmlentities($v, ENT_QUOTES, 'utf-8'); $html .= 'name . '][' . $r . '][' . $this->name . ']" '; $html .= 'name="form[' . $owner->name . '][' . $r . '][' . $this->name . ']" '; $html .= $this->NSGridType() . ' '; $html .= 'type="hidden" value="' . $this->htmlentities($v, ENT_QUOTES, 'utf-8') . '" />'; } $result[] = $html; $r++; } return $result; } } /*DEPRECATED*/ /** * * @package gulliver.system */ class XmlFormFieldCaptionPercentage extends XmlFormField { public function render($value = null, $paramDummy2 = null) { return $this->htmlentities($value, ENT_COMPAT, 'utf-8'); } } /** * Class XmlFormFieldDate * * @package gulliver.system * @access public */ class XmlFormFieldDate2 extends XmlFormFieldSimpleText { //Instead of size --> startDate public $startDate = ''; //Instead of maxLength --> endDate public $endDate = ''; //for dinamically dates, beforeDate << currentDate << afterDate // beforeDate='1y' means one year before, beforeDate='3m' means 3 months before // afterDate='5y' means five year after, afterDate='15d' means 15 days after // startDate and endDate have priority over beforeDate and AfterDate. public $afterDate = ''; public $beforeDate = ''; public $defaultValue = null; public $format = 'Y-m-d'; public $required = false; public $readOnly = false; public $mask = 'yyyy-mm-dd'; public $dependentFields = ''; /** * Verify the date format * * @param $date * @return Boolean true/false */ public function verifyDateFormat($date) { $aux = explode('-', $date); if (count($aux) != 3) { return false; } if (!(is_numeric($aux[0]) && is_numeric($aux[1]) && is_numeric($aux[2]))) { return false; } if ($aux[0] < 1900 || $aux[0] > 2100) { return false; } return true; } /** * checks if a date has he correct format * * @param $date * @return */ public function isvalidBeforeFormat($date) { $part1 = substr($date, 0, strlen($date) - 1); $part2 = substr($date, strlen($date) - 1); if ($part2 != 'd' && $part2 != 'm' && $part2 != 'y') { return false; } if (!is_numeric($part1)) { return false; } return true; } /** * Calculate the date before the format * * @param $date * @param $sign * @return $res date based on the data insert */ public function calculateBeforeFormat($date, $sign) { $part1 = $sign * substr($date, 0, strlen($date) - 1); $part2 = substr($date, strlen($date) - 1); switch ($part2) { case 'd': $res = date('Y-m-d', mktime(0, 0, 0, date('m'), date('d') + $part1, date('Y'))); break; case 'm': $res = date('Y-m-d', mktime(0, 0, 0, date('m') + $part1, date('d'), date('Y'))); break; case 'y': $res = date('Y-m-d', mktime(0, 0, 0, date('m'), date('d'), date('Y') + $part1)); break; } return $res; } /** * render the field in a dynaform * * @param $value * @param $owner * @return */ public function render($value = null, $owner = null) { $value = G::replaceDataField($value, $owner->values); $startDate = G::replaceDataField($this->startDate, $owner->values); $endDate = G::replaceDataField($this->endDate, $owner->values); $beforeDate = G::replaceDataField($this->beforeDate, $owner->values); $afterDate = G::replaceDataField($this->afterDate, $owner->values); //for backward compatibility size and maxlength if ($startDate != '') { if (!$this->verifyDateFormat($startDate)) { $startDate = ''; } } if (isset($beforeDate) && $beforeDate != '') { if ($this->isvalidBeforeFormat($beforeDate)) { $startDate = $this->calculateBeforeFormat($beforeDate, -1); } } if ($startDate == '' && isset($this->size) && is_numeric($this->size) && $this->size >= 1900 && $this->size <= 2100) { $startDate = $this->size . '-01-01'; } if ($startDate == '') { $startDate = date('Y-m-d'); // the default is the current date } //for backward compatibility maxlength //if ( $this->endDate == '') $this->finalYear = date('Y') + 8; //for backward compatibility size and maxlength if ($endDate != '') { if (!$this->verifyDateFormat($endDate)) { $endDate = ''; } } if (isset($afterDate) && $afterDate != '') { if ($this->isvalidBeforeFormat($afterDate)) { $endDate = $this->calculateBeforeFormat($afterDate, +1); } if ($endDate) { $sign = '1'; $date = $afterDate; $part1 = $sign * substr($date, 0, strlen($date) - 1); $part2 = substr($date, strlen($date) - 1); switch ($part2) { case 'd': $res = date('Y-m-d', mktime(0, 0, 0, date('m'), date('d') + $part1, date('Y'))); break; case 'm': $res = date('Y-m-d', mktime(0, 0, 0, date('m') + $part1, date('d') - 1, date('Y'))); break; case 'y': $res = (intVal(date('Y')) + $part1) . '-' . date('m') . '-' . date('d'); break; } $endDate = $res; } } if (isset($this->maxlength) && is_numeric($this->maxlength) && $this->maxlength >= 1900 && $this->maxlength <= 2100) { $endDate = $this->maxlength . '-01-01'; } if ($endDate == '') { //$this->endDate = mktime ( 0,0,0,date('m'),date('d'),date('y') ); // the default is the current date + 2 years $endDate = date('Y-m-d', mktime(0, 0, 0, date('m'), date('d'), date('Y') + 2)); // the default is the current date + 2 years } if ($value == '') { $value = date('Y-m-d'); } $html = ""; $html .= "" . $value . " "; if ($this->mode == 'edit') { $html .= "id . "', '" . $this->name . "', '" . $value . "', '" . $startDate . "', '" . $endDate . "'); return false;\" >"; } return $html; } /** * render the field in a grid * * @param $values * @param $owner * @param $onlyValue * @return */ public function renderGrid($values = null, $owner = null, $onlyValue = false, $paramDummy4 = null) { $result = []; $r = 1; foreach ($values as $v) { $v = G::replaceDataField($v, $owner->values); $startDate = G::replaceDataField($this->startDate, $owner->values); $endDate = G::replaceDataField($this->endDate, $owner->values); $beforeDate = G::replaceDataField($this->beforeDate, $owner->values); $afterDate = G::replaceDataField($this->afterDate, $owner->values); //for backward compatibility size and maxlength if ($startDate != '') { if (!$this->verifyDateFormat($startDate)) { $startDate = ''; } } if ($startDate == '' && isset($beforeDate) && $beforeDate != '') { if ($this->isvalidBeforeFormat($beforeDate)) { $startDate = $this->calculateBeforeFormat($beforeDate, -1); } } if ($startDate == '' && isset($this->size) && is_numeric($this->size) && $this->size >= 1900 && $this->size <= 2100) { $startDate = $this->size . '-01-01'; } if ($startDate == '') { $startDate = date('Y-m-d'); // the default is the current date } //for backward compatibility maxlength //if ( $this->endDate == '') $this->finalYear = date('Y') + 8; //for backward compatibility size and maxlength if ($endDate != '') { if (!$this->verifyDateFormat($endDate)) { $endDate = ''; } } if ($endDate == '' && isset($afterDate) && $afterDate != '') { if ($this->isvalidBeforeFormat($afterDate)) { $endDate = $this->calculateBeforeFormat($afterDate, +1); } } if ($endDate == '' && isset($this->maxlength) && is_numeric($this->maxlength) && $this->maxlength >= 1900 && $this->maxlength <= 2100) { $endDate = $this->maxlength . '-01-01'; } if ($endDate == '') { //$this->endDate = mktime ( 0,0,0,date('m'),date('d'),date('y') ); // the default is the current date + 2 years $endDate = date('Y-m-d', mktime(0, 0, 0, date('m'), date('d'), date('Y') + 2)); // the default is the current date + 2 years } if ($v == '') { $v = date('Y-m-d'); } if (!$onlyValue) { $html = "name . "]' name='form[" . $owner->name . '][' . $r . '][' . $this->name . "]' value='" . $v . "'>"; if (isset($owner->owner->id)) { $html .= "name . "]' name='span[" . $owner->owner->id . "][" . $owner->name . '][' . $r . '][' . $this->name . "]' style='border:1;border-color:#000;width:100px;'>" . $v . " "; } else { $html .= "name . "]' name='span[" . $owner->id . "][" . $owner->name . '][' . $r . '][' . $this->name . "]' style='border:1;border-color:#000;width:100px;'>" . $v . " "; } if ($this->mode == 'edit') { $html .= "owner) ? $owner->owner->id : $owner->id) . "', '" . $owner->name . '][' . $r . '][' . $this->name . "', '" . $v . "', '" . $startDate . "', '" . $endDate . "'); return false;\" >"; } } else { $html = $v; } $result[] = $html; $r++; } return $result; } } /*DEPRECATED*/ /** * * @package gulliver.system */ class XmlFormFieldDateView extends XmlFormField { public function render($value = null, $paramDummy2 = null) { return $this->htmlentities($value, ENT_COMPAT, 'utf-8'); } } /** * Class XmlFormFieldYesNo * * @package gulliver.system * @access public */ class XmlFormFieldYesNo extends XmlFormField { public $required = false; public $readonly = false; public $renderMode = ''; /** * Function render * * @access public * @param string value * @return string */ public function render($value = null, $owner = null) { if (($this->pmconnection != '') && ($this->pmfield != '') && $value == null) { $value = $this->getPMTableValue($owner); } if ($value == '') { $value = '0'; } if ($this->renderMode == '') { $this->renderMode = $this->mode; } $html = ''; if ($this->renderMode == 'edit') { //EDIT MODE $readOnlyText = ($this->readonly == 1 || $this->readonly == '1') ? 'disabled' : ''; $html .= ''; if ($readOnlyText != '') { $html .= 'name . ']" '; $html .= 'name="form[' . $this->name . ']" '; $html .= $this->NSFieldType() . ' '; $html .= 'type="hidden" value="' . (($value === '0') ? '0' : '1') . '" />'; } } else { //VIEW MODE $html .= ''; $html .= ($value === '0') ? G::LoadTranslation('ID_NO_VALUE') : G::LoadTranslation('ID_YES_VALUE'); $html .= 'name . ']" '; $html .= 'name="form[' . $this->name . ']" '; $html .= $this->NSFieldType() . ' '; $html .= 'type="hidden" value="' . (($value === '0') ? '0' : '1') . '" />'; } $html .= $this->renderHint(); return $html; } /** * render the field in a grid * * @param $values * @param $owner * @return */ public function renderGrid($values = array(), $owner = null, $paramDummy3 = null, $paramDummy4 = null) { $this->gridFieldType = 'yesno'; $result = []; $r = 1; if ($owner->mode != 'view') { $this->renderMode = $this->modeForGrid; } foreach ($values as $v) { $html = ''; if ($v == '') { $v = '0'; } if ($this->renderMode == 'edit') { //EDIT MODE $readOnlyText = ($this->readonly == 1 || $this->readonly == '1') ? 'disabled' : ''; $html .= ''; if ($readOnlyText != '') { $html .= 'name . '][' . $r . '][' . $this->name . ']" '; $html .= 'name="form[' . $owner->name . '][' . $r . '][' . $this->name . ']" '; $html .= $this->NSGridType() . ' '; $html .= 'type="hidden" value="' . (($v === '0') ? '0' : '1') . '" />'; } } else { //VIEW MODE $html .= ($v === '0') ? G::LoadTranslation('ID_NO_VALUE') : G::LoadTranslation('ID_YES_VALUE'); $html .= 'name . '][' . $r . '][' . $this->name . ']" '; $html .= 'name="form[' . $owner->name . '][' . $r . '][' . $this->name . ']" '; $html .= $this->NSGridType() . ' '; $html .= 'type="hidden" value="' . (($v === '0') ? '0' : '1') . '" />'; } $result[] = $html; $r++; } return $result; } } /** * Class XmlFormFieldLink * * @package gulliver.system * @access public */ class XmlFormFieldLink extends XmlFormField { //Instead of var --> link public $link = ''; public $value = ''; public $target = ''; public $style = ''; public $colClassName = 'RowLink'; public $gridFieldType = 'link'; /** * Function render * * @access public * @param string value * @return string */ public function render($value = null, $label = null, $owner = null, $row = -1) { $id = null; $v = null; switch ($owner->type) { case "grid": $id = $owner->name . "][" . $row . "][" . $this->name; $v = (isset($owner->values[$owner->name][$row])) ? $owner->values[$owner->name][$row] : []; //g::pr($this->NSGridType().'gyygygy');die; $pmtype = $this->NSGridType(); break; default: $id = $this->name; $v = $owner->values; $pmtype = $this->NSFieldType(); break; } $link = ""; if ($this->link != "") { $link = G::replaceDataField($this->link, $v); } else { $link = !empty($value) ? $value : ""; } $labelAux1 = (!empty($label)) ? $label : G::replaceDataField($this->label, $v); $labelAux2 = (!empty($label)) ? $label : G::replaceDataField($this->value, $v); $onclick = G::replaceDataField($this->onclick, $v); $target = G::replaceDataField($this->target, $v); $html = "htmlentities($link, ENT_QUOTES, "utf-8") . "\""; $html = $html . " id=\"form[$id]\" name=\"form[$id]\" pm:field=\"pm:field\" "; if ((strrpos($_SERVER['HTTP_USER_AGENT'], "Chrome") === false ? false : true) && trim($this->htmlentities($link, ENT_QUOTES, "utf-8")) === "#") { $html = $html . (($this->onclick) ? " onclick=\"" . htmlentities($onclick, ENT_QUOTES, "utf-8") . " return false;\"" : " onclick=\" return false;\""); } else { $html = $html . (($this->onclick) ? " onclick=\"" . htmlentities($onclick, ENT_QUOTES, "utf-8") . "\"" : null); } $html = $html . (($this->target) ? " target=\"" . htmlentities($target, ENT_QUOTES, "utf-8") . "\"" : null); switch ($owner->type) { case "grid": if ($this->mode == "view") { $html = $html . " style=\"color: #006699; text-decoration: none; font-weight: normal;\""; } break; default: $html = $html . " style=\"" . htmlentities($this->style, ENT_QUOTES, "utf-8") . "\""; break; } $html = $html . ">" . $this->htmlentities(($this->value == "") ? $labelAux1 : $labelAux2, ENT_QUOTES, "utf-8") . ""; switch ($owner->type) { case "grid": break; default: $html = $html . $this->renderHint(); break; } return $html; } /** * render the field in a grid * * @param $values * @param $owner * @return */ public function renderGrid($value = array(), $label = array(), $owner = null, $paramDummy4 = null) { $arrayResult = []; $row = 1; foreach ($value as $index => $v) { $arrayResult[] = $this->render( (isset($value[$index])) ? $value[$index] : null, (isset($label[$index])) ? $label[$index] : null, $owner, $row ); $row = $row + 1; } return $arrayResult; } /** * render the field in a table * * @param $values * @param $owner * @return */ public function renderTable($value = null, $owner = null, $paramDummy3 = null) { $onclick = $this->htmlentities(G::replaceDataField($this->onclick, $owner->values), ENT_QUOTES, 'utf-8'); $link = $this->htmlentities(G::replaceDataField($this->link, $owner->values), ENT_QUOTES, 'utf-8'); $target = G::replaceDataField($this->target, $owner->values); $value = G::replaceDataField($this->value, $owner->values); $label = G::replaceDataField($this->label, $owner->values); $aLabel = $this->htmlentities($this->value === '' ? $label : $value, ENT_QUOTES, 'utf-8'); if (isset($aLabel) && strlen($aLabel) > 0) { return 'onclick) ? ' onclick="' . $onclick . '"' : '') . (($this->target) ? ' target="' . htmlentities($target, ENT_QUOTES, 'utf-8') . '"' : '') . '>' . $aLabel . ''; } else { return ''; } } } /** * Class XmlFormFieldFile * * @package gulliver.system * @access public */ class XmlFormFieldFile extends XmlFormField { public $required = false; public $input = null; public $gridFieldType = 'file'; /** * Function render * * @access public * @param string value * @return string */ public function render($value = null, $owner = null, $rowId = null, $row = -1, $therow = -1) { $permission = false; $url = null; switch ($owner->type) { case "xmlform": $pmtype = $this->NSFieldType(); break; case "grid": $pmtype = $this->NSGridType(); break; } if (isset($_SESSION["APPLICATION"]) && isset($_SESSION["USER_LOGGED"]) && isset($_SESSION["TASK"]) && isset($this->input) && $this->input != null && $this->mode == "view") { require_once("classes/model/AppDocument.php"); $case = new Cases(); $arrayField = $case->loadCase($_SESSION["APPLICATION"]); $arrayPermission = $case->getAllObjects($arrayField["PRO_UID"], $_SESSION["APPLICATION"], $_SESSION["TASK"], $_SESSION["USER_LOGGED"]); $criteria = new Criteria(); $criteria->add(AppDocumentPeer::APP_DOC_UID, $arrayPermission["INPUT_DOCUMENTS"], Criteria::IN); switch ($owner->type) { case "xmlform": break; case "grid": $criteria->add(AppDocumentPeer::APP_DOC_FIELDNAME, $owner->name . "_" . $row . "_" . $this->name); break; } $criteria->addDescendingOrderByColumn(AppDocumentPeer::APP_DOC_CREATE_DATE); $rsCriteria = AppDocumentPeer::doSelectRS($criteria); $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC); $sw = 0; while (($rsCriteria->next()) && $sw == 0) { $row = $rsCriteria->getRow(); if ($row["DOC_UID"] == $this->input) { $permission = true; $url = System::getServerProtocolHost() . dirname($_SERVER["REQUEST_URI"]) . "/cases_ShowDocument?a=" . $row["APP_DOC_UID"] . "&v=" . $row["DOC_VERSION"]; $sw = 1; } } } $html1 = null; $html2 = null; $mode = ($this->mode == "view") ? " disabled=\"disabled\"" : null; $styleDisplay = null; if ($this->mode == "view") { if ($permission) { $html1 = "type == "grid") ? " class=\"tableOption\" style=\"color: #006699; text-decoration: none; font-weight: normal;\"" : null) . ">"; $html2 = ""; } $html1 = $html1 . $value; $styleDisplay = "display: none;"; } $arrayInputDocumentData = []; $inpDocMaxFilesize = ""; if (isset($this->input) && $this->input != null) { try { $inputDocument = new InputDocument(); $arrayInputDocumentData = $inputDocument->load($this->input); } catch (Exception $e) { //Then the input document doesn"t exits, id referencial broken } } if (count($arrayInputDocumentData) > 0) { $inpDocMaxFilesize = $arrayInputDocumentData["INP_DOC_MAX_FILESIZE"] * (($arrayInputDocumentData["INP_DOC_MAX_FILESIZE_UNIT"] == "MB") ? 1024 * 1024 : 1024); //Bytes } $pmInputDocument = "pmindocmaxfilesize=\"" . $inpDocMaxFilesize . "\""; //Bytes $html = $html1 . "name . "]\" name=\"form" . $rowId . "[" . $this->name . "]\" value=\"" . $value . "\" class=\"module_app_input___gray_file\" style=\"" . $styleDisplay . "\"" . $mode . " " . $this->NSRequiredValue() . " />" . $html2; if (isset($this->input) && $this->input != null) { if (count($arrayInputDocumentData) > 0) { $maxUploadFilesizeLabel = ($arrayInputDocumentData["INP_DOC_MAX_FILESIZE"] . "" != "0" && $arrayInputDocumentData["INP_DOC_MAX_FILESIZE"] != "") ? G::LoadTranslation("ID_MAX_FILE_SIZE") . " [" . $arrayInputDocumentData["INP_DOC_MAX_FILESIZE"] . " " . $arrayInputDocumentData["INP_DOC_MAX_FILESIZE_UNIT"] . "]" : ""; $arrayInputDocumentData["INP_DOC_TITLE"] = (isset($arrayInputDocumentData["INP_DOC_TITLE"])) ? $arrayInputDocumentData["INP_DOC_TITLE"] : null; $html = $html . "
"; } else { $html = $html . " \"\"(" . G::loadTranslation("ID_INPUT_DOC_DOESNT_EXIST") . ")"; } } $html = $html . $this->renderHint(); return $html; } public function renderGrid($value = array(), $owner = null, $therow = -1, $paramDummy4 = null) { $arrayResult = []; $r = 1; foreach ($value as $v) { $arrayResult[] = $this->render($v, $owner, "[" . $owner->name . "][" . $r . "]", $r, $therow); $r = $r + 1; } return $arrayResult; } } /** * Class XmlFormFieldDropdownpt * hook, dropdown field for Propel table * * @package gulliver.system * @access public */ class XmlFormFieldDropdownpt extends XmlFormField { public $value; public function render($value = null, $owner = null) { $this->value = $value; $id = $this->value->id; $value = isset($this->value->value) ? $this->value->value : ''; $items = $this->value->items; $res = '"; return $res; } /* Used in Form::validatePost */ public function maskValue($value, &$owner) { return ($value === $this->value) ? $value : $this->falseValue; } } /** * Class XmlFormFieldCheckboxpt * checkbox field for Propel table * * @package gulliver.system * @access public */ class XmlFormFieldCheckboxpt extends XmlFormField { public $required = false; public $value = 'on'; public $falseValue = 'off'; public $labelOnRight = true; /** * Render the field in a dynaform * * @param $value * @param $owner * @return <> */ public function render($value = null, $owner = null) { if (($this->pmconnection != '') && ($this->pmfield != '') && $value == null) { $value = $this->getPMTableValue($owner); } $checked = (isset($value) && ($value == $this->value)) ? 'checked' : ''; $res = ""; return $res; } /** * Render the field in a grid * * @param $value * @param $owner * @return result */ public function renderGrid($values = array(), $owner = null, $paramDummy3 = null, $paramDummy4 = null) { $result = []; $r = 1; foreach ($values as $v) { $checked = (($v == $this->value) ? 'checked="checked"' : ''); $disabled = (($this->value == 'view') ? 'disabled="disabled"' : ''); $html = $res = ""; $result[] = $html; $r++; } return $result; } /** * Used in Form::validatePost * * @param $value * @param &$owner * @return either the value or falseValue attributes */ public function maskValue($value, &$owner) { return ($value === $this->value) ? $value : $this->falseValue; } } /** * Class XmlFormFieldCheckbox * * @package gulliver.system * @access public */ class XmlFormFieldCheckbox extends XmlFormField { public $required = false; public $value = 'on'; public $falseValue = 'off'; public $labelOnRight = false; public $readOnly = false; /** * Function render * * @access public * @param string value * @return string */ public function render($value = null, $owner = null) { if (($this->pmconnection != '') && ($this->pmfield != '') && $value == null) { $value = $this->getPMTableValue($owner); } $disabled = ''; if ($this->readOnly === 'readonly' or $this->readOnly === '1') { $readOnly = 'readonly="readonly" onclick="javascript: return false;"'; //$disabled = "disabled"; } else { $readOnly = ''; } $checked = (isset($value) && ($value == $this->value)) ? 'checked' : ''; if ($this->mode === 'edit') { //$readOnly = isset ( $this->readOnly ) && $this->readOnly ? 'disabled' : ''; if ($this->labelOnRight) { $res = "NSFieldType() . " name='form[" . $this->name . "]' type='checkbox' $checked $readOnly $disabled>" . $this->label . ''; } else { $res = "NSFieldType() . " name='form[" . $this->name . "]' type='checkbox' $checked $readOnly $disabled/>"; } $res .= $this->renderHint(); // $res = "" . $this->label ; return $res; } elseif ($this->mode === 'view') { $checked = (isset($value) && ($value == $this->value)) ? 'checked' : ''; if ($this->labelOnRight) { $html = " " . $this->label . ''; } else { $html = ""; } $html .= "NSFieldType() . " value='{$value}' />"; return $html; } } /** * Render the field in a grid * * @param $value * @param $owner * @return result */ public function renderGrid($values = array(), $owner = null, $paramDummy3 = null, $paramDummy4 = null) { $this->gridFieldType = 'checkbox'; $result = []; $r = 1; foreach ($values as $v) { $checked = (($v == $this->value) ? 'checked="checked"' : ''); if ($this->readOnly === 'readonly' or $this->readOnly === '1') { $disabled = "disabled"; } else { $disabled = ''; } if ($this->mode === 'edit') { $html = $res = "NSDefaultValue() . " " . $this->NSGridType() . "/>"; $result[] = $html; $r++; } else { //$disabled = (($this->value == 'view') ? 'disabled="disabled"' : ''); $html = $res = "NSDefaultValue() . " " . $this->NSGridType() . "/>"; $result[] = $html; $r++; } } return $result; } /** * Used in Form::validatePost * * @param $value * @param $owner * @return either the value or falseValue */ public function maskValue($value, &$owner) { return ($value === $this->value) ? $value : $this->falseValue; } } /*DEPRECATED*/ /** * * @package gulliver.system */ class XmlFormFieldCheckbox2 extends XmlFormField { public $required = false; public function render($value = null, $paramDummy2 = null) { return '' . $this->label . ''; } } /** * Class XmlFormFieldButton * * @package gulliver.system * @access public */ class XmlFormFieldButton extends XmlFormField { public $onclick = ''; public $align = 'center'; public $style; /** * Function render * * @access public * @param string value * @return string */ public function render($value = null, $owner = null) { $onclick = G::replaceDataField($this->onclick, $owner->values); $label = G::replaceDataField($this->label, $owner->values); if ($this->mode === 'edit') { $re = "style}\" class='module_app_button___gray {$this->className}' id=\"form[{$this->name}]\" " . $this->NSFieldType() . " name=\"form[{$this->name}]\" type='button' value=\"{$label}\" " . (($this->onclick) ? 'onclick="' . htmlentities($onclick, ENT_COMPAT, 'utf-8') . '"' : '') . " />"; return $re; } elseif ($this->mode === 'view') { return "style};display:none\" disabled='disabled' class='module_app_button___gray module_app_buttonDisabled___gray {$this->className}' id=\"form[{$this->name}]\" " . $this->NSFieldType() . " name=\"form[{$this->name}]\" type='button' value=\"{$label}\" " . (($this->onclick) ? 'onclick="' . htmlentities($onclick, ENT_COMPAT, 'utf-8') . '"' : '') . " />"; } else { return $this->htmlentities($value, ENT_COMPAT, 'utf-8'); } } } /** * Class XmlFormFieldReset * * @package gulliver.system * @access public */ class XmlFormFieldReset extends XmlFormField { /** * Function render * * @access public * @param string value * @return string */ public function render($value = null, $owner = null) { $onclick = G::replaceDataField($this->onclick, $owner->values); $mode = ($this->mode == 'view') ? ' disabled="disabled"' : ''; //return ''; // return "style}\" $mode class='module_app_button___gray {$this->className}' id=\"form[{$this->name}]\" name=\"form[{$this->name}]\" type='reset' value=\"{$this->label}\" " . (($this->onclick) ? 'onclick="' . htmlentities ( $onclick, ENT_COMPAT, 'utf-8' ) . '"' : '') . " />"; if ($this->mode === 'edit') { return "style}\" $mode class='module_app_button___gray {$this->className}' id=\"form[{$this->name}]\" " . $this->NSFieldType() . " name=\"form[{$this->name}]\" type='reset' value=\"{$this->label}\" " . (($this->onclick) ? 'onclick="' . htmlentities($onclick, ENT_COMPAT, 'utf-8') . '"' : '') . " />"; } elseif ($this->mode === 'view') { return "style};display:none\" $mode class='module_app_button___gray {$this->className}' id=\"form[{$this->name}]\" " . $this->NSFieldType() . " name=\"form[{$this->name}]\" type='reset' value=\"{$this->label}\" " . (($this->onclick) ? 'onclick="' . htmlentities($onclick, ENT_COMPAT, 'utf-8') . '"' : '') . " />"; } else { return $this->htmlentities($value, ENT_COMPAT, 'utf-8'); } } } /** * Class XmlFormFieldSubmit * * @package gulliver.system * @access public */ class XmlFormFieldSubmit extends XmlFormField { public $onclick = ''; /** * Function render * * @access public * @param string value * @return string */ public function render($value = null, $owner = null) { $onclick = G::replaceDataField($this->onclick, $owner->values); if ($this->mode === 'edit') { // if ($this->readOnly) // return 'label .'\' disabled/>'; return "style}\" class='module_app_button___gray {$this->className}' id=\"form[{$this->name}]\" " . $this->NSFieldType() . " name=\"form[{$this->name}]\" type='submit' value=\"{$this->label}\" " . (($this->onclick) ? 'onclick="' . htmlentities($onclick, ENT_COMPAT, 'utf-8') . '"' : '') . " />"; } elseif ($this->mode === 'view') { //return "style};display:none\" disabled='disabled' class='module_app_button___gray module_app_buttonDisabled___gray {$this->className}' id=\"form[{$this->name}]\" name=\"form[{$this->name}]\" type='submit' value=\"{$this->label}\" " . (($this->onclick) ? 'onclick="' . htmlentities ( $onclick, ENT_COMPAT, 'utf-8' ) . '"' : '') . " />"; //$sLinkNextStep = 'window.open("' . $owner->fields['__DYNAFORM_OPTIONS']->xmlMenu->values['NEXT_STEP'] . '", "_self");'; $html = ''; if (isset($_SESSION['CURRENT_DYN_UID'])) { $sLinkNextStep = 'window.location=("casesSaveDataView?UID=' . $_SESSION['CURRENT_DYN_UID'] . '");'; $html = 'NSFieldType() . ' name="form[' . $this->name . ']" type="button" value="' . G::LoadTranslation('ID_CONTINUE') . '" onclick="' . htmlentities($sLinkNextStep, ENT_COMPAT, 'utf-8') . '" />'; } return $html; } else { return $this->htmlentities($value, ENT_COMPAT, 'utf-8'); } } } /** * Class XmlFormFieldHidden * * @package gulliver.system * @access public */ class XmlFormFieldHidden extends XmlFormField { public $sqlConnection = 0; public $sql = ''; public $sqlOption = []; public $dependentFields = ''; public $gridFieldType = 'hidden'; /** * Function render * * @access public * @param string value * @param string owner * @return string */ public function render($value = null, $owner = null) { if (($this->pmconnection != '') && ($this->pmfield != '') && $value == null) { $value = $this->getPMTableValue($owner); } else { $this->executeSQL($owner); if (isset($this->sqlOption)) { reset($this->sqlOption); $firstElement = key($this->sqlOption); if (isset($firstElement)) { $value = $firstElement; } } } //$html .= 'value="' . $this->htmlentities( $value, ENT_QUOTES, 'utf-8' ) . '" '; if ($this->mode === 'edit') { return 'NSFieldType() . ' name="form[' . $this->name . ']" type=\'hidden\' value=\'' . $this->htmlentities($value, ENT_QUOTES, 'utf-8') . '\'/>'; } elseif ($this->mode === 'view') { //a button? who wants a hidden field be showed like a button?? very strange. return 'NSFieldType() . ' name="form[' . $this->name . ']" type=\'text\' value=\'' . $this->htmlentities($value, ENT_QUOTES, 'utf-8') . '\' style="display:none"/>'; } else { return $this->htmlentities($value, ENT_COMPAT, 'utf-8'); } } /** * Render the field in a grid * * @param $value * @param $owner * @return result */ public function renderGrid($values = null, $owner = null, $paramDummy3 = null, $paramDummy4 = null) { $result = []; $r = 1; foreach ($values as $v) { $result[] = 'NSGridType() . ' value="' . $this->htmlentities($v, ENT_COMPAT, 'utf-8') . '" id="form[' . $owner->name . '][' . $r . '][' . $this->name . ']" name="form[' . $owner->name . '][' . $r . '][' . $this->name . ']" />'; $r++; } return $result; } /** * Render the field in a table * * @param $value * @param $owner * @return result */ public function renderTable($value = "", $owner = null, $paramDummy3 = null) { return ''; } } /** * Class XmlFormFieldDropdown * * @package gulliver.system * @access public */ class XmlFormFieldDropdown extends XmlFormField { public $defaultValue = ''; public $required = false; public $dependentFields = ''; public $readonly = false; public $optgroup = 0; public $option = []; public $sqlConnection = 0; public $sql = ''; public $sqlOption = []; public $saveLabel = 0; public $modeGridDrop = ''; public $renderMode = ''; public $selectedValue = ''; public function validateValue($value) { return true; } /** * Function render * * @access public * @param string value * @param string owner * @return string */ public function render($value = null, $owner = null, $rowId = '', $onlyValue = false, $row = -1, $therow = -1) { $displayStyle = ''; //Returns value from a PMTable when it is exists. if (($this->pmconnection != '') && ($this->pmfield != '') && $value == null) { $value = $this->getPMTableValue($owner); } //Recalculate SQL options if $therow is not defined or the row id equal if ($therow == -1) { //echo 'Entro:'.$this->dependentFields; $this->executeSQL($owner, $row); } else { if ($row == $therow) { $this->executeSQL($owner, $row); } } $html = ''; $displayLabel = ''; if ($this->renderMode == '') { $this->renderMode = $this->mode; } if (!$onlyValue) { //Render Field if not defined onlyValue if ($this->renderMode != 'edit') { //EDIT MODE $displayStyle = 'display:none;'; } $readOnlyField = ($this->readonly == 1 || $this->readonly == '1') ? 'disabled' : ''; $html = ''; if ($readOnlyField != '') { $html .= 'name . ']" '; $html .= 'name="form' . $rowId . '[' . $this->name . ']" '; $html .= 'value="' . (($findValue != '') ? $findValue : $firstValue) . '" />'; } $this->selectedValue = ($findValue != "") ? $findValue : ($count == 0) ? $firstValue : ""; } else { //Render Field showing only value; foreach ($this->option as $optValue => $optName) { if ($optValue == $value) { $html = $optName; } } foreach ($this->sqlOption as $optValue => $optName) { if ($optValue == $value) { $html = $optName; } } } if ($this->gridFieldType == '') { $html .= $this->renderHint(); } if ($displayStyle != '') { if ($value === $findValue) { $html = $displayLabel . $html; } else { $html = $value . $html; } } return $html; } /** * Function renderGrid * * @access public * @param string values * @return string */ public function renderGrid($values = array(), $owner = null, $onlyValue = false, $therow = -1) { $this->gridFieldType = 'dropdown'; $result = []; $r = 1; if ($owner->mode != 'view') { $this->renderMode = $this->modeForGrid; } foreach ($values as $v) { $result[] = $this->render($v, $owner, '[' . $owner->name . '][' . $r . ']', $onlyValue, $r, $therow); $r++; } return $result; } } /** * Class XmlFormFieldListbox * * @package gulliver.system * @access public */ class XmlFormFieldListbox extends XmlFormField { public $defaultValue = ''; public $required = false; public $option = []; public $sqlConnection = 0; public $size = 4; public $width = ''; public $sql = ''; public $sqlOption = []; /** * Function render * * @access public * @param string value * @param string owner * @return string */ public function render($value = null, $owner = null) { if (($this->pmconnection != '') && ($this->pmfield != '') && $value == null) { $value = $this->getPMTableValue($owner); } $this->executeSQL($owner); if (!is_array($value)) { $value = explode('|', $value); } $arrayAux = []; foreach ($value as $index2 => $value2) { if (!is_array($value2)) { $arrayAux[] = $value2 . ""; } else { $arrayAux[] = ""; } } $value = $arrayAux; if ($this->mode === 'edit') { $itemWidth = ''; if ($this->width != '') { $itemWidth = 'style="width:' . $this->width . '"'; } $html = ''; $html .= $this->renderHint(); return $html; } elseif ($this->mode === 'view') { $valuesFound = array('__NULL__'); $html = ''; foreach ($this->option as $optionName => $option) { $html .= "name . "][" . $optionName . "]\" name=\"form[" . $this->name . "][]\" " . $this->NSFieldType() . " value=\"" . ((in_array($optionName . "", $value)) ? $optionName : "__NULL__") . "\">"; } foreach ($this->sqlOption as $optionName => $option) { $html .= "name . "][" . $optionName . "]\" name=\"form[" . $this->name . "][]\" " . $this->NSFieldType() . " value=\"" . ((in_array($optionName . "", $value)) ? $optionName : "__NULL__") . "\">"; } if (count($valuesFound) - 1 < count($value)) { $valuesNotFound = array_diff($value, $valuesFound); foreach ($valuesNotFound as $option) { $html .= "name . "][" . $option . "]\" name=\"form[" . $this->name . "][]\" " . $this->NSFieldType() . " value=\"" . $option . "\">"; } } return $html; } else { return $this->htmlentities($value, ENT_COMPAT, 'utf-8'); } } /** * Render the field in a grid * * @param $value * @param $owner * @return result */ public function renderGrid($value = null, $owner = null, $paramDummy3 = null, $paramDummy4 = null) { return $this->render($value, $owner); } } /** * Class XmlFormFieldRadioGroup * * @package gulliver.system * @access public */ class XmlFormFieldRadioGroup extends XmlFormField { public $defaultValue = ''; public $required = false; public $option = []; public $sqlConnection = 0; public $sql = ''; public $sqlOption = []; public $viewAlign = 'vertical'; public $linkType; /** * Function render * * @access public * @param string value * @param string owner * @return string */ public function render($value = null, $owner = null) { if (($this->pmconnection != '') && ($this->pmfield != '') && $value == null) { $value = $this->getPMTableValue($owner); } $this->executeSQL($owner); if ($this->mode === 'edit') { $html = ''; $i = 0; foreach ($this->options as $optionName => $option) { if (isset($this->linkType) && ($this->linkType == 1 || $this->linkType == "1")) { $html .= 'NSFieldType() . ' name="form[' . $this->name . ']" type="radio" value="' . $optionName . '" ' . (($optionName == $value) ? ' checked' : '') . '>' . $option . ''; } else { $html .= 'NSFieldType() . ' name="form[' . $this->name . ']" type="radio" value="' . $optionName . '" ' . (($optionName == $value) ? ' checked' : '') . '>'; } if (++$i == count($this->options)) { $html .= '      ' . $this->renderHint(); } if ($this->viewAlign == 'horizontal') { $html .= ' '; } else { $html .= '
'; } } return $html; } elseif ($this->mode === 'view') { $html = ''; $existsValue = false; foreach ($this->options as $optionName => $option) { $html .= 'NSFieldType() . ' name="form[' . $this->name . ']" type=\'radio\' value="' . $optionName . '" ' . (($optionName == $value) ? 'checked' : '') . ' disabled>
'; if ($optionName == $value) { $existsValue = true; $html .= ''; } } if (!$existsValue && $value !== '') { $html .= 'NSFieldType() . ' name="form[' . $this->name . ']" type=\'radio\' value="' . $value . '" checked disabled>
'; $html .= ''; } return $html; } else { return $this->htmlentities($value, ENT_COMPAT, 'utf-8'); } } } /*DEPRECATED*/ /** * * @package gulliver.system * */ class XmlFormFieldRadioGroupView extends XmlFormField { public $defaultValue = ''; public $required = false; public $option = []; public $sqlConnection = 0; public $sql = ''; public $sqlOption = []; /** * Function render * * @access public * @param string value * @param string owner * @return string */ public function render($value = null, $owner = null) { $this->executeSQL($owner); $html = ''; foreach ($this->option as $optionName => $option) { $html .= '' . $option . '
'; } return $html; } } /** * Class XmlFormFieldCheckGroup * * @package gulliver.system * @access public */ class XmlFormFieldCheckGroup extends XmlFormField { public $required = false; public $option = []; public $sqlConnection = 0; public $sql = ''; public $sqlOption = []; /*function validateValue( $value , $owner ) { $this->executeSQL( $owner ); return isset($value) && ( array_key_exists( $value , $this->options ) ); }*/ /** * Function render * * @access public * @param string value * @param string owner * @return string */ public function render($value = null, $owner = null) { if (($this->pmconnection != '') && ($this->pmfield != '') && $value == null) { $value = $this->getPMTableValue($owner); } $this->executeSQL($owner); if (!is_array($value)) { $value = explode('|', $value); } $arrayAux = []; foreach ($value as $index2 => $value2) { $arrayAux[] = $value2 . ""; } $value = $arrayAux; if ($this->mode === 'edit') { $i = 0; $html = ''; foreach ($this->options as $optionName => $option) { $html .= "name . "][" . $optionName . "]\" " . $this->NSFieldType() . " name=\"form[" . $this->name . "][]\" value=\"" . $optionName . "\"" . (in_array($optionName . "", $value) ? "checked = \"checked\" " : "") . ">"; if (++$i == count($this->options)) { $html .= '      ' . $this->renderHint(); } $html .= '
'; } //fin for return $html; } elseif ($this->mode === 'view') { $valuesFound = array('__NULL__'); $html = ''; foreach ($this->options as $optionName => $option) { if (in_array($optionName . "", $value)) { $valuesFound[] = $optionName . ""; } $html .= "NSFieldType() . "class=\"FormCheck\" type=\"checkbox\" id=\"form[" . $this->name . "][" . $optionName . "]\" value=\"" . $optionName . "\"" . (in_array($optionName . "", $value) ? " checked=\"checked\" " : "") . " disabled=\"disabled\">
"; $html .= "name . "][]\" value=\"" . ((in_array($optionName . "", $value)) ? $optionName : "__NULL__") . "\">"; } if (count($valuesFound) - 1 < count($value)) { $valuesNotFound = array_diff($value, $valuesFound); foreach ($valuesNotFound as $option) { $html .= "NSFieldType() . "class=\"FormCheck\" type=\"checkbox\" id=\"form[" . $this->name . "][" . $option . "]\" value=\"" . $option . "\" checked=\"checked\" disabled=\"disabled\">
"; $html .= "name . "][]\" value=\"" . $option . "\">"; } } return $html; } else { return $this->htmlentities($value, ENT_COMPAT, 'utf-8'); } } /** * Renderring the checkgroup inner grid for Staff Eval Plugin * @see class.form.php#validate[]; * @author Edauto * @since 2012-07-20 */ public function renderGrid($values = null, $owner = null, $onlyValue = false, $therow = -1) { $this->executeSQL($owner); $disable = ($owner->mode === 'view') ? 'disabled="disabled" ' : ' '; $r = 1; $result = []; foreach ($values as $v) { // foreach the grid row with selection $i = 1; $html = ''; if (!is_array($v)) { $aV = explode('|', str_replace(" ", "", $v)); } else { $aV = $v; } foreach ($this->options as $optionName => $option) { // foreach the options of checkbox group $bChecked = in_array($i, $aV, true) || in_array($optionName, $aV, true); $html .= 'name . '][' . $r . '][' . $this->name . '][]" '; $html .= 'type="checkbox" value="' . $optionName . '" ' . ($bChecked ? 'checked ' : ' '); $html .= $disable . '>' . $option . ''; if (++$i == count($this->options)) { $html .= ' ' . $this->renderHint(); } $html .= '
'; } $result[] = $html; $r++; } return $result; } } /* TODO: DEPRECATED */ /** * * @package gulliver.system * */ class XmlFormFieldCheckGroupView extends XmlFormField { public $option = []; public $sqlConnection = 0; public $sql = ''; public $sqlOption = []; /** * Function render * * @access public * @param string value * @return string */ public function render($value = null, $paramDummy2 = null) { $html = ''; foreach ($this->option as $optionName => $option) { $html .= '' . $option . '
'; } return $html; } } /** * Class XmlFormFieldGrid * * @package gulliver.system * @access public */ class XmlFormFieldGrid extends XmlFormField { public $xmlGrid = ''; public $initRows = 1; public $group = 0; public $addRow = "1"; public $deleteRow = "1"; public $editRow = "0"; public $sql = ''; //TODO: 0=doesn't excecute the query, 1=Only the first time, 2=Allways public $fillType = 0; public $fields = []; public $scriptURL; public $id = ''; /** * Function XmlFormFieldGrid * * @access public * @param string xmlnode * @param string language * @param string home * @return string */ public function __construct($xmlnode, $language, $home) { parent::__construct($xmlnode, $language); $this->parseFile($home, $language); } /** * Function parseFile * * @access public * @param string home * @param string language * @return string */ public function parseFile($home, $language) { if (file_exists($home . $this->xmlGrid . '.xml')) { $this->xmlform = new XmlForm(); $this->xmlform->home = $home; $this->xmlform->parseFile($this->xmlGrid . '.xml', $language, false); $this->fields = $this->xmlform->fields; $this->scriptURL = $this->xmlform->scriptURL; $this->id = $this->xmlform->id; $this->modeGrid = $this->xmlform->mode; unset($this->xmlform); } } /** * Render the field in a dynaform * * @param $value * @param $owner * @return