Пример #1
0
 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;
     //        }
 }