. * * For more information, contact Colosa Inc, 2566 Le Jeune Rd., * Coral Gables, FL, 33134, USA, or email info@colosa.com. * */ /** * Class XmlForm_Field * * @author David S. Callizaya S. * @package gulliver.system * @access public */ class XmlForm_Field { public $name = ''; public $type = 'field'; public $label = ''; public $pmLabel = ''; public $owner; public $language; public $group = 0; public $mode = ''; public $defaultValue = null; public $gridFieldType = ''; public $gridLabel = ''; /* Hint value generic declaration */ public $hint = ''; /*to change the presentation*/ public $enableHtml = false; public $style = ''; public $withoutLabel = false; public $className = ''; /*attributes for paged table*/ public $colWidth = 140; public $colAlign = 'left'; public $colClassName = ''; public $titleAlign = ''; public $align = ''; public $showInTable = ''; /*Events*/ public $onclick = ''; /*attributes for data filtering*/ /*dataCompareField = field to be compared with*/ public $dataCompareField = ''; /* $dataCompareType : '=' ,'<>' , '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 XmlForm_Field * * @author David S. Callizaya S. * @access public * @param string xmlNode * @param string lang * @param string home * @return string */ public function XmlForm_Field ($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 : array (); //Sql Options : cause warning because values are not setted yet. //if ($this->sql!=='') $this->executeSQL(); 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 = array (); 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] = array (); } else { $owner->values[$this->name] = ''; } } if (! is_array( $owner->values[$this->name] )) { //echo '1'; $query = G::replaceDataField( $this->sql, $owner->values ); } else { $aAux = array (); 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 = array (); 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. 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. return $result; } } $rs->next(); $row = $rs->getRow(); while (is_array( $row )) { $result[] = $row; $rs->next(); $row = $rs->getRow(); } return $result; } /** * Function executeSQL * * @author David S. Callizaya S. * @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 (! $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 = array (); $this->options = array (); 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 * * @author David S. Callizaya S. * @access public * @param string value * @return string */ public function render ($value = null) { //this is an unknown field type. return $this->htmlentities( $value != '' ? $value : $this->name, ENT_COMPAT, 'utf-8' ); } /** * Function renderGrid * * @author David S. Callizaya S. * @access public * @param string values * @return string */ public function renderGrid ($values = array(), $owner = null, $onlyValue = false, $therow = -1) { $result = array (); $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 * * @author David S. Callizaya S. * @access public * @return array */ public function dependentOf () { $fields = array (); 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 * * @author David S. Callizaya S. * @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 * * @author David S. Callizaya S. * @access public * @return string */ public function getAttributes () { $attributes = array (); 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 * * @author David S. Callizaya S. * @access public * @return string */ public function getEvents () { $events = array (); 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 * * @author David S. Callizaya S. * @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. * * @author David S. Callizaya S. * @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. * * @author David S. Callizaya S. * @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 = array (); 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). * * @author David S. Callizaya S. * @access public * @param boolean includeDefaultValues Includes attributes * with default values. * @return Xml_Node */ public function getXmlAttributes ($includeDefaultValues = false) { $attributesList = array (); $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' )) { require_once 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 = array (); $aValues = explode( '|', $oOwner->fields[$this->pmconnection]->keys ); $i = 0; 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'] )) { G::LoadClass( 'case' ); $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 = array (); } 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 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 = 'pm:gridtype="' . $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 XmlForm_Field_Title * * @author David S. Callizaya S. * @package gulliver.system * @access public */ class XmlForm_Field_Title extends XmlForm_Field { /** * Function render * * @author David S. Callizaya S. * @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->htmlentities( $this->label ) . ''; } /** * A title node has no value * * @param $value * @return false */ public function validateValue ($value) { return false; } } /** * Class XmlForm_Field_Subtitle * * @author David S. Callizaya S. * @package gulliver.system * @access public */ class XmlForm_Field_Subtitle extends XmlForm_Field { /** * Function render * * @author David S. Callizaya S. * @access public * @param string value * @return string */ public function render ($value = null) { return 'name . ']\' name=\'form[' . $this->name . ']\' >' . $this->htmlentities( $this->label ) . ''; } /** * A subtitle node has no value * * @param $value * @return false */ public function validateValue ($value) { return false; } } /** * Class XmlForm_Field_SimpleText * * @author David S. Callizaya S. * @package gulliver.system * @access public */ class XmlForm_Field_SimpleText extends XmlForm_Field { public $size = 15; public $maxLength = ''; public $validate = 'Any'; public $mask = ''; /* Additional events */ public $onkeypress = ''; public $renderMode = ''; /** * Function render * * @author David S. Callizaya S. * @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() . ' 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() . ' 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() . ' 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 * * @author David S. Callizaya S. * @access public * @param string values * @param string owner * @return string */ public function renderGrid ($values = array(), $owner = null) { $result = array (); $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 XmlForm_Field_Text * * @author David S. Callizaya S. * @package gulliver.system * @access public */ class XmlForm_Field_Text extends XmlForm_Field_SimpleText { 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 = array (); //Attributes only for grids public $formula = ''; public $function = ''; public $replaceTags = 0; public $renderMode = ''; public $comma_separator = '.'; /** * Function render * * @author David S. Callizaya S. * @access public * @param string value * @param string owner * @return string */ public function render ($value = null, $owner = null) { 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==='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 .= '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 .= '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 .= '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 * * @author David S. Callizaya S. * @access public * @param string values * @param string owner * @return string */ public function renderGrid ($values = array(), $owner = null) { $result = $aux = array (); $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 .= 'type="hidden" value="' . $this->htmlentities( $v, ENT_QUOTES, 'utf-8' ) . '" />'; } $result[] = $html; $r ++; } $this->options = $aux; return $result; } public function renderTable ($values = '', $owner = null) { $result = $this->htmlentities( $values, ENT_COMPAT, 'utf-8' ); return $result; } } /** * Class XmlForm_Field_Suggest * * @author Erik Amaru Ortiz * @package gulliver.system * @access public */ class XmlForm_Field_Suggest extends XmlForm_Field_SimpleText //by neyek { 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 = array (); //Atributes only for grids 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 = ''; G::LoadClass( 'case' ); $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' ) . '\' 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 .= '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 = ''; } $hash = str_rot13( base64_encode( $this->sql . '@|' . $this->sqlConnection ) ); $sSQL = $this->sql; $nCount = preg_match_all( '/\@(?:([\@\%\#\!Qq])([a-zA-Z\_]\w*)|([a-zA-Z\_][\w\-\>\:]*)\(((?:[^\\\\\)]*?)*)\))/', $sSQL, $match, PREG_PATTERN_ORDER | PREG_OFFSET_CAPTURE ); $sResult = array (); 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 = array (); $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&json=true&limit=' . $this->maxresults; $sOptions .= '&hash=' . $hash . '&dependentFieldsKeys=' . $sResultKeys . '&dependentFieldsValue="'; $sOptions .= $depValues . '"&input="+inputValue+"&inputEnconde64=enable"; '; $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 . '});'; $str .= ''; return $str; } } else { return $this->htmlentities( $formVariableValue, ENT_COMPAT, 'utf-8' ); } } /** * 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 = ''; G::LoadClass( 'case' ); $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' ) . '\' 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; } $name = "'" . $this->name . "'"; $str = 'NSDependentFields( true ) . ' '; $str .= '/>'; $str .= 'name . ']" '; $str .= 'name="form' . $rowId . '[' . $this->name . ']" '; $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 = ''; } $hash = str_rot13( base64_encode( $this->sql . '@|' . $this->sqlConnection ) ); $sSQL = $this->sql; $nCount = preg_match_all( '/\@(?:([\@\%\#\!Qq])([a-zA-Z\_]\w*)|([a-zA-Z\_][\w\-\>\:]*)\(((?:[^\\\\\)]*?)*)\))/', $sSQL, $match, PREG_PATTERN_ORDER | PREG_OFFSET_CAPTURE ); $sResult = array (); 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(\''. $rowIdField . '[' . $field . '\').value'; if ($i ++ < count( $aResult )) { $depValues .= '+"|"+'; } } $depValues = '+' . $depValues . '+'; } else { $sResult = ''; $sResultKeys = ''; $depValues = '+'; } $aDepFields = array (); $count = 0; if ($this->dependentFields !== '') { $dependentFields = explode( ",", $this->dependentFields ); foreach ($dependentFields as $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(\'' . $rowIdField . '[' . $this->name . '_label\').value); '; $sOptions .= ' return "' . $this->ajaxServer . '?request=suggest&json=true&limit=' . $this->maxresults; $sOptions .= '&hash=' . $hash . '&dependentFieldsKeys=' . $sResultKeys . '&dependentFieldsValue="'; $sOptions .= $depValues . '"&input="+inputValue+"&inputEnconde64=enable"; '; $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 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(\'' . $rowIdField . '[' . $aDepFields[$cnt] . '\').value; '; } } } $sOptions .= ' var sField = "["+ encodeURIComponent(jField.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 response = ajax_function("../gulliver/defaultAjaxDynaform", "reloadField", '; $sOptions .= ' "form=' . $sOwnerId . '&fields=" + sField + "&grid=' . $ownerName . '&row=" + indexFieldVal, "POST" ); '; $sOptions .= 'if (response.substr(0,1) === \'[\') { '; $sOptions .= ' var newcont; '; $sOptions .= ' eval(\'newcont=\' + response + \';\'); '; $sOptions .= ' for(var i = 0; iname . '_label]\', {' . $sOptions . $storeEntryData . '}); '; $str .= ''; return $str; } } else { return $this->htmlentities( $formVariableValue, ENT_COMPAT, 'utf-8' ); } } /** * Function renderGrid * * @author David S. Callizaya S. * @access public * @param string values * @param string owner * @return string */ public function renderGrid ($values = array(), $owner = null) { $aResult = array(); $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) { $result = $this->htmlentities( $values, ENT_COMPAT, 'utf-8' ); return $result; } } /** * prepare the field for printing * * @package gulliver.system */ class XmlForm_Field_Print extends XmlForm_Field_SimpleText //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 XmlForm_Field_Caption extends XmlForm_Field { public $defaultValue = ''; public $required = false; public $dependentFields = ''; public $readonly = false; public $option = array (); public $sqlConnection = 0; public $sql = ''; public $sqlOption = array (); public $saveLabel = 0; //public $hint; /** * * @param $value * @param $owner * @return true */ public function validateValue ($value, &$owner) { /*$this->executeSQL( $owner ); return isset($value) && ( array_key_exists( $value , $this->options ) );*/ return true; } /** * Function render * * @author David S. Callizaya S. * @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 XmlForm_Field_Password * * @author David S. Callizaya S. * @package gulliver.system * @access public */ class XmlForm_Field_Password extends XmlForm_Field { public $size = 15; public $maxLength = 15; public $required = false; public $readOnly = false; public $autocomplete = "on"; /** * Function render * * @author David S. Callizaya S. * @access public * @param string value * @return string */ public function render ($value = 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' ) . '\' readOnly="readOnly"/>'; } else { $html = 'htmlentities( $value, ENT_COMPAT, 'utf-8' ) . '\'/>'; $html .= $this->renderHint(); return $html; } } elseif ($this->mode === 'view') { $html = 'htmlentities( $value, ENT_COMPAT, 'utf-8' ) . '\' 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 XmlForm_Field_Textarea * * @author David S. Callizaya S. * @package gulliver.system * @access public */ class XmlForm_Field_Textarea extends XmlForm_Field { public $rows = 12; public $cols = 40; public $required = false; public $readOnly = false; public $wrap = 'OFF'; public $className; public $renderMode = ''; /** * Function render * * @author David S. Callizaya S. * @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; } $html = ''; $scrollStyle = $this->style . "overflow:scroll;overflow-y:scroll;overflow-x:hidden;overflow:-moz-scrollbars-vertical;"; 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 * * @author David S. Callizaya S. * @access public * @param string value * @param string owner * @return string */ public function renderGrid ($values = null, $owner = null) { $this->gridFieldType = 'textarea'; if ($owner->mode != 'view') { $this->renderMode = $this->modeForGrid; } $result = array (); $r = 1; foreach ($values as $v) { $scrollStyle = $this->style . "overflow:scroll;overflow-y:scroll;overflow-x:hidden;overflow:-moz-scrollbars-vertical;"; $html = ''; if ($this->renderMode == 'edit') { //EDIT MODE $readOnlyText = ($this->readOnly == 1 || $this->readOnly == '1') ? 'readOnly="readOnly"' : ''; $html .= ''; } else { //VIEW MODE $html .= ''; } $result[] = $html; $r ++; } return $result; } } /** * Class XmlForm_Field_Currency * * @author David S. Callizaya S. * @package gulliver.system * @access public */ class XmlForm_Field_Currency extends XmlForm_Field_SimpleText { 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 = '.'; /** * render the field in a dynaform * * @param $value * @param $owner * @return */ public function render ($value = null, $owner = null) { 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->NSGridType() . ' '; $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 .= '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) { $result = array (); $r = 1; if ($owner->mode != 'view') { $this->renderMode = $this->modeForGrid; } foreach ($values as $v) { $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 .= 'type="hidden" value="' . $this->htmlentities( $v, ENT_QUOTES, 'utf-8' ) . '" />'; } $result[] = $html; $r ++; } return $result; } } /*DEPRECATED*/ /** * * @package gulliver.system */ class XmlForm_Field_CaptionCurrency extends XmlForm_Field { /** * Function render * * @author David S. Callizaya S. * @access public * @param string value * @return string */ public function render ($value = null) { return '$ ' . $this->htmlentities( $value, ENT_COMPAT, 'utf-8' ); } } /** * Class XmlForm_Field_Percentage * * @author David S. Callizaya S. * @package gulliver.system * @access public */ class XmlForm_Field_Percentage extends XmlForm_Field_SimpleText { 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 function render ($value = null, $owner = null) { 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 .= '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 .= '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; // $onkeypress = G::replaceDataField ( $this->onkeypress, $owner->values ); // if ($this->mode === 'edit') { // if ($this->readOnly) // return 'htmlentities ( $value, ENT_QUOTES, 'utf-8' ) . '\' readOnly="readOnly" style="' . htmlentities ( $this->style, ENT_COMPAT, 'utf-8' ) . '" onkeypress="' . htmlentities ( $onkeypress, ENT_COMPAT, 'utf-8' ) . '"/>'; // else { // // $html = 'htmlentities ( $value, ENT_QUOTES, 'utf-8' ) . '\' style="' . htmlentities ( $this->style, ENT_COMPAT, 'utf-8' ) . '" onkeypress="' . htmlentities ( $onkeypress, ENT_COMPAT, 'utf-8' ) . '"/>'; // // if($this->hint){ // $html .= ' // // '; // } // // return $html; // } // } elseif ($this->mode === 'view') { // return 'htmlentities ( $value, ENT_QUOTES, 'utf-8' ) . '\' style="display:none;' . htmlentities ( $this->style, ENT_COMPAT, 'utf-8' ) . '" onkeypress="' . htmlentities ( $onkeypress, ENT_COMPAT, 'utf-8' ) . '"/>' . $this->htmlentities ( $value, ENT_COMPAT, 'utf-8' ); // } else { // return $this->htmlentities ( $value, ENT_QUOTES, 'utf-8' ); // } } } /*DEPRECATED*/ /** * * @package gulliver.system */ class XmlForm_Field_CaptionPercentage extends XmlForm_Field { public function render ($value = null) { return $this->htmlentities( $value, ENT_COMPAT, 'utf-8' ); } } /** * Class XmlForm_Field_Date * * @author David S. Callizaya S. * @package gulliver.system * @access public */ class XmlForm_Field_Date2 extends XmlForm_Field_SimpleText { //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) { $result = array (); $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 XmlForm_Field_DateView extends XmlForm_Field { public function render ($value = null) { return $this->htmlentities( $value, ENT_COMPAT, 'utf-8' ); } } /** * Class XmlForm_Field_YesNo * * @author David S. Callizaya S. * @package gulliver.system * @access public */ class XmlForm_Field_YesNo extends XmlForm_Field { public $required = false; public $readonly = false; public $renderMode = ''; /** * Function render * * @author David S. Callizaya S. * @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 .= '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 .= '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) { $this->gridFieldType = 'yesno'; $result = array (); $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 .= '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 XmlForm_Field_Link * * @author David S. Callizaya S. * @package gulliver.system * @access public */ class XmlForm_Field_Link extends XmlForm_Field { //Instead of var --> link public $link = ''; public $value = ''; public $target = ''; public $style = ''; public $colClassName = 'RowLink'; /** * Function render * * @author David S. Callizaya S. * @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] : array(); break; default: $id = $this->name; $v = $owner->values; break; } $link = (!empty($value))? $value : G::replaceDataField($this->link, $v); $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\""; $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) { $arrayResult = array(); $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) { $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 XmlForm_Field_File * * @author David S. Callizaya S. * @package gulliver.system * @access public */ class XmlForm_Field_File extends XmlForm_Field { public $required = false; public $input = null; /** * Function render * * @author David S. Callizaya S. * @access public * @param string value * @return string */ public function render ($value = null, $owner = null, $rowId = null, $row = -1, $therow = -1) { $permission = false; $url = null; 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"); G::LoadClass( "case" ); $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 = ((G::is_https()) ? "https://" : "http://") . $_SERVER["HTTP_HOST"] . 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;"; } $html = $html1 . "name . "]\" name=\"form" . $rowId . "[" . $this->name . "]\" value=\"" . $value . "\" class=\"module_app_input___gray_file\" style=\"" . $styleDisplay . "\"" . $mode . " />" . $html2; if (isset( $this->input ) && $this->input != null) { require_once ("classes/model/InputDocument.php"); try { $indoc = new InputDocument(); $aDoc = $indoc->load( $this->input ); $aDoc["INP_DOC_TITLE"] = (isset( $aDoc["INP_DOC_TITLE"] )) ? $aDoc["INP_DOC_TITLE"] : null; $html = $html . ""; } catch (Exception $e) { //Then the input document doesn"t exits, id referencial broken $html = $html . " \"\"(" . G::loadTranslation( "ID_INPUT_DOC_DOESNT_EXIST" ) . ")"; } } $html = $html . $this->renderHint(); return $html; } public function renderGrid ($value = array(), $owner = null, $therow = -1) { $arrayResult = array (); $r = 1; foreach ($value as $v) { $arrayResult[] = $this->render( $v, $owner, "[" . $owner->name . "][" . $r . "]", $r, $therow ); $r = $r + 1; } return $arrayResult; } } /** * Class XmlForm_Field_Dropdownpt * hook, dropdown field for Propel table * * @author Erik Amaru * @package gulliver.system * @access public */ class XmlForm_Field_Dropdownpt extends XmlForm_Field { 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 XmlForm_Field_Checkboxpt * checkbox field for Propel table * * @author Erik Amaru * @package gulliver.system * @access public */ class XmlForm_Field_Checkboxpt extends XmlForm_Field { 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) { $result = array (); $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 XmlForm_Field_Checkbox * * @author Erik Amaru * @package gulliver.system * @access public */ class XmlForm_Field_Checkbox extends XmlForm_Field { public $required = false; public $value = 'on'; public $falseValue = 'off'; public $labelOnRight = true; public $readOnly = false; /** * Function render * * @author David S. Callizaya S. * @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 = "" . $this->label . ''; } else { $res = ""; } $res .= $this->renderHint(); // $res = "" . $this->label ; return $res; } elseif ($this->mode === 'view') { $checked = (isset( $value ) && ($value == $this->value)) ? 'checked' : ''; if ($this->labelOnRight) { $html = ''; $html = " " . $this->label . ''; } else { $html = ""; } $html .= ""; // if($this->hint){ // $html .= ' // // '; // } return $html; } } /** * Render the field in a grid * * @param $value * @param $owner * @return result */ public function renderGrid ($values = array(), $owner = null) { $this->gridFieldType = 'checkbox'; $result = array (); $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 XmlForm_Field_Checkbox2 extends XmlForm_Field { public $required = false; public function render ($value = null) { return '' . $this->label . ''; } } /** * Class XmlForm_Field_Button * * @author David S. Callizaya S. * @package gulliver.system * @access public */ class XmlForm_Field_Button extends XmlForm_Field { public $onclick = ''; public $align = 'center'; public $style; /** * Function render * * @author David S. Callizaya S. * @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}]\" 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}]\" 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 XmlForm_Field_Reset * * @author David S. Callizaya S. * @package gulliver.system * @access public */ class XmlForm_Field_Reset extends XmlForm_Field { /** * Function render * * @author David S. Callizaya S. * @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}]\" 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}]\" 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 XmlForm_Field_Submit * * @author David S. Callizaya S. * @package gulliver.system * @access public */ class XmlForm_Field_Submit extends XmlForm_Field { public $onclick = ''; /** * Function render * * @author David S. Callizaya S. * @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}]\" 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 = ''; } $html .= 'name . ']" '; $html .= 'name="form[' . $this->name . ']" '; $html .= 'type="hidden" value="' . $this->htmlentities( $this->label, ENT_QUOTES, 'utf-8' ) . '" />'; return $html; } else { return $this->htmlentities( $value, ENT_COMPAT, 'utf-8' ); } } } /** * Class XmlForm_Field_Hidden * * @author David S. Callizaya S. * @package gulliver.system * @access public */ class XmlForm_Field_Hidden extends XmlForm_Field { public $sqlConnection = 0; public $sql = ''; public $sqlOption = array (); public $dependentFields = ''; /** * Function render * * @author David S. Callizaya S. * @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; } } } if ($this->mode === 'edit') { return ''; } elseif ($this->mode === 'view') { //a button? who wants a hidden field be showed like a button?? very strange. return ''; } 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) { $result = array (); $r = 1; foreach ($values as $v) { $result[] = ''; $r ++; } return $result; } /** * Render the field in a table * * @param $value * @param $owner * @return result */ public function renderTable ($value = '', $owner = null) { return ''; } } /** * Class XmlForm_Field_Dropdown * * @author David S. Callizaya S. * @package gulliver.system * @access public */ class XmlForm_Field_Dropdown extends XmlForm_Field { public $defaultValue = ''; public $required = false; public $dependentFields = ''; public $readonly = false; public $option = array (); public $sqlConnection = 0; public $sql = ''; public $sqlOption = array (); public $saveLabel = 0; public $modeGridDrop = ''; public $renderMode = ''; public $selectedValue = ''; public function validateValue ($value, &$owner) { /*$this->executeSQL( $owner ); return isset($value) && ( array_key_exists( $value , $this->options ) );*/ return true; } /** * Function render * * @author David S. Callizaya S. * @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 : ($cont == 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 != '') { $html = $displayLabel . $html; } return $html; } /** * Function renderGrid * * @author David S. Callizaya S. * @access public * @param string values * @return string */ public function renderGrid ($values = array(), $owner = null, $onlyValue = false, $therow = -1) { $this->gridFieldType = 'dropdown'; $result = array (); $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 XmlForm_Field_Listbox * * @author David S. Callizaya S. * @package gulliver.system * @access public */ class XmlForm_Field_Listbox extends XmlForm_Field { public $defaultValue = ''; public $required = false; public $option = array (); public $sqlConnection = 0; public $size = 4; public $width = ''; public $sql = ''; public $sqlOption = array (); public function validateValue ($value, $owner) { $this->executeSQL( $owner ); return true; // isset($value) && ( array_key_exists( $value , $this->options ) ); } /** * Function render * * @author David S. Callizaya S. * @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 ); } if ($this->mode === 'edit') { $itemWidth = ''; if ($this->width != '') { $itemWidth = 'style="width:' . $this->width . '"'; } $html = ''; $html .= $this->renderHint(); return $html; } elseif ($this->mode === 'view') { $html = ''; foreach ($this->option as $optionName => $option) { $html .= ''; } foreach ($this->sqlOption as $optionName => $option) { $html .= ''; } 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) { return $this->render( $value, $owner ); } } /** * Class XmlForm_Field_RadioGroup * * @author David S. Callizaya S. * @package gulliver.system * @access public */ class XmlForm_Field_RadioGroup extends XmlForm_Field { public $defaultValue = ''; public $required = false; public $option = array (); public $sqlConnection = 0; public $sql = ''; public $sqlOption = array (); public $viewAlign = 'vertical'; public $linkType; /** * validate the execution of a query * * @param $value * @param $owner * @return $value */ public function validateValue ($value, $owner) { $this->executeSQL( $owner ); return isset( $value ) && (array_key_exists( $value, $this->options )); } /** * Function render * * @author David S. Callizaya S. * @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 .= '' . $option . ''; } else { $html .= ''; } if (++ $i == count( $this->options )) { $html .= '      ' . $this->renderHint(); } if ($this->viewAlign == 'horizontal') { $html .= ' '; } else { $html .= '
'; } } return $html; } elseif ($this->mode === 'view') { $html = ''; foreach ($this->options as $optionName => $option) { $html .= '
'; if ($optionName == $value) { $html .= ''; } } return $html; } else { return $this->htmlentities( $value, ENT_COMPAT, 'utf-8' ); } } } /*DEPRECATED*/ /** * * @package gulliver.system * */ class XmlForm_Field_RadioGroupView extends XmlForm_Field { public $defaultValue = ''; public $required = false; public $option = array (); public $sqlConnection = 0; public $sql = ''; public $sqlOption = array (); /** * Function render * * @author David S. Callizaya S. * @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 XmlForm_Field_CheckGroup * * @author David S. Callizaya S. * @package gulliver.system * @access public */ class XmlForm_Field_CheckGroup extends XmlForm_Field { public $required = false; public $option = array (); public $sqlConnection = 0; public $sql = ''; public $sqlOption = array (); /*function validateValue( $value , $owner ) { $this->executeSQL( $owner ); return isset($value) && ( array_key_exists( $value , $this->options ) ); }*/ /** * Function render * * @author David S. Callizaya S. * @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 ); } if ($this->mode === 'edit') { $i = 0; $html = ''; foreach ($this->options as $optionName => $option) { $html .= ''; if (++ $i == count( $this->options )) { $html .= '      ' . $this->renderHint(); } $html .= '
'; } //fin for return $html; } elseif ($this->mode === 'view') { $html = ''; foreach ($this->options as $optionName => $option) { $html .= '
'; $html .= ''; } return $html; } else { return $this->htmlentities( $value, ENT_COMPAT, 'utf-8' ); } } } /* TODO: DEPRECATED */ /** * * @package gulliver.system * */ class XmlForm_Field_CheckGroupView extends XmlForm_Field { public $option = array (); public $sqlConnection = 0; public $sql = ''; public $sqlOption = array (); /** * Function render * * @author David S. Callizaya S. * @access public * @param string value * @return string */ public function render ($value = null) { $html = ''; foreach ($this->option as $optionName => $option) { $html .= '' . $option . '
'; } return $html; } } /** * Class XmlForm_Field_Grid * * @author David S. Callizaya S. * @package gulliver.system * @access public */ class XmlForm_Field_Grid extends XmlForm_Field { 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 = array (); public $scriptURL; public $id = ''; /** * Function XmlForm_Field_Grid * * @author David S. Callizaya S. * @access public * @param string xmlnode * @param string language * @param string home * @return string */ public function XmlForm_Field_Grid ($xmlnode, $language, $home) { parent::XmlForm_Field( $xmlnode, $language ); $this->parseFile( $home, $language ); } /** * Function parseFile * * @author David S. Callizaya S. * @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