custom_record_type = $custom_record_type; $this->_fetchFields(); $this->_fetchCustomRecordTypes(); switch($this->custom_record_type){ case "TaskCustomFields": $this->table_name = "tasks"; $this->field_name = "task_custom"; $this->id_field_name = "task_id"; break; case "CompanyCustomFields": $this->table_name = "companies"; $this->field_name = "company_custom"; $this->id_field_name = "company_id"; break; default: $AppUI->setMsg("Invalid custom field record type: $custom_record_type"); break; } $this->row_id = $row_id; if($this->row_id != 0){ $this->_fetchPreviousData(); } } function _fetchFields(){ $this->fields_array = dPgetSysVal($this->custom_record_type); } function _fetchCustomRecordTypes(){ switch($this->custom_record_type){ case "TaskCustomFields": $field_types = "TaskType"; break; case "CompanyCustomFields": $field_types = "CompanyType"; break; } $this->custom_record_types = dPgetSysVal($field_types); } function _fetchPreviousData(){ $q = new DBQuery; $q->addTable($this->table_name); $q->addQuery($this->field_name); $q->addWhere("{$this->id_field_name} = {$this->row_id}"); $previous_data = $q->loadResult(); if($previous_data != ""){ $previous_data = unserialize($previous_data); $previous_data = !is_array($previous_data) ? array() : $previous_data; } else { $previous_data = array(); } $this->previous_data = $previous_data; } function _getLabelHTML($field_config){ if($field_config["type"] == "label"){ $separador = ""; $colspan = "colspan='2'"; $field_config["name"] = "".$field_config["name"].""; } else { $separador = ":"; $colspan = ""; } return "".$field_config["name"]." $separador"; } function parseEditField($key){ $field_config = unserialize($this->fields_array[$key]); $parsed = ""; $parsed .= $this->_getLabelHTML($field_config); switch($field_config["type"]){ case "text": $parsed .= ""; break; case "href": $parsed .= ""; break; case "select": $parsed .= "". arraySelect(explode(",",$field_config["selects"]), "custom_$key", 'size="1" class="text" ' . $field_config["options"] ,( isset($this->previous_data[$key]) ? $this->previous_data[$key] : "")) . ""; break; case "textarea": $parsed .= ""; break; case "checkbox": $options_array = explode(",",$field_config["selects"]); $parsed .= ""; foreach ( $options_array as $option ) { $checked = ""; if ( isset($this->previous_data[$key]) && array_key_exists( $option, array_flip($this->previous_data[$key]) ) ) { $checked = "checked"; } $parsed .= "$option
"; $checked = ""; } $parsed .= ""; break; } $parsed .= ""; return $parsed; } function parseViewField($key){ $field_config = unserialize($this->fields_array[$key]); $parsed = ""; $parsed .= $this->_getLabelHTML($field_config); switch ( $field_config["type"]){ case "text": $parsed .= "" . dPformSafe(( isset($this->previous_data[$key]) ? $this->previous_data[$key] : "")) . ""; break; case "href": $parsed .= '' . dPformSafe(( isset($this->previous_data[$key]) ? $this->previous_data[$key] : "")) . ''; break; case "select": $optionarray = explode(",",$field_config["selects"]); $parsed .= "". dPformSafe(( isset($this->previous_data[$key]) ? $optionarray[$this->previous_data[$key]] : "")) . ""; break; case "textarea": $parsed .= "" . dPformSafe(( isset($this->previous_data[$key]) ? $this->previous_data[$key] : "")) . ""; break; case "checkbox": $optionarray = explode(",",$field_config["selects"]); $parsed .= ""; foreach ( $optionarray as $option ) { $checked = ""; if ( isset($this->previous_data[$key]) && array_key_exists( $option, array_flip($this->previous_data[$key]) ) ) { $checked = "checked"; } $parsed .= "$option
"; } $parsed .= ""; break; } $parsed .= ""; return $parsed; } function parseTableForm($edit = false, $record_type = null){ $parsed = ""; $visible_keys = array(); if(!is_null($record_type)){ $visible_keys = $this->_getVisibleKeysForType($record_type); } foreach($this->fields_array as $key => $field){ $field_config = unserialize($field); if($edit){ $fnc_name = "parseEditField"; } else { $fnc_name = "parseViewField"; } if(in_array($key, $visible_keys)){ $parsed .= $this->$fnc_name($key); } else if (is_null($record_type)){ $parsed .= $this->$fnc_name($key); } } $parsed .= "
"; return $parsed; } function _getVisibleKeysForType($record_type){ if(!isset($this->visible_keys)){ $this->visible_keys = array(); } if(isset($this->visible_keys[$record_type])){ return $this->visible_keys[$record_type]; } else { $this->visible_keys[$record_type] = array(); } foreach($this->fields_array as $key => $field){ $field_config = unserialize($field); if($field_config["record_type"] == $record_type || $field_config["record_type"] == ""){ $this->visible_keys[$record_type][] = $key; } } return $this->visible_keys[$record_type]; } function _parseShowFunction($key){ $parsed = ""; $record_type = $this->custom_record_types[$key]; $record_type = str_replace(" ", "_", $record_type); $parsed .= "function show$record_type(){\n"; foreach($this->_getVisibleKeysForType($record_type) as $visible_key){ $parsed .= "document.getElementById('custom_tr_$visible_key').style.display='';\n"; } $parsed .= "}\n"; return $parsed; } function parseShowFunctions(){ $parsed = ""; foreach($this->custom_record_types as $key => $record_type){ $parsed .= $this->_parseShowFunction($key); } return $parsed; } function showHideAllRowsFunction(){ $parsed = "function hideAllRows(){\n"; foreach($this->fields_array as $key => $field_config){ $field_config = unserialize($field_config); if($field_config["record_type"] != ""){ $parsed .= "document.getElementById('custom_tr_$key').style.display='none';\n"; } } $parsed .= "}\n"; return $parsed; } } ?>