protected function _load_data_from_record($rec, $overwrite = false, $field_map = null, $from_db = false, array $extradatafields = array()) { parent::_load_data_from_record($rec, $overwrite, $field_map, $from_db, $extradatafields); $data = (array) $rec; foreach ($data as $key => $value) { if (strncmp($key, 'param_', 6) === 0) { $this->{$key} = $value; } } }
protected function _load_data_from_record($rec, $overwrite = false, $field_map = null, $from_db = false, array $extradatafields = array()) { parent::_load_data_from_record($rec, $overwrite, $field_map, $from_db, $extradatafields); $this->_load_fields(); $contextlevel = $this->get_field_context_level(); foreach (self::$_fields[$contextlevel] as $name => $field) { // figure out the name of the field to copy from $rec_name = self::CUSTOM_FIELD_PREFIX . $name; if (is_string($field_map)) { // just a simple prefix $rec_name = $field_map . $rec_name; } else { if (is_array($field_map)) { if (!isset($field_map[$rec_name])) { // field isn't mapped -- skip it continue; } $rec_name = $field_map[$rec_name]; } } // set the field from the record if: // - we don't have a value already set, or if we want to // overwrite; and // - the value is set in the source record if ((isset($this->_field_data[$name]) || $overwrite) && isset($rec->{$rec_name})) { $this->_field_data[$name] = $rec->{$rec_name}; if (!$from_db) { $this->_field_changed[$name] = true; } } } // TODO: causes problems with custom fields // if ($from_db) { // $this->_fields_loaded = true; // } }