getCallerClassName(); // child class name if (isset($caller_class_name::$definition)) { $this->tables = array($caller_class_name::$definition['table']); $this->table = $caller_class_name::$definition['table']; $this->identifier = $caller_class_name::$definition['primary']; foreach ($caller_class_name::$definition['fields'] as $field_name => $field) { if (!in_array($field_name, array('id_shop', 'date_upd', 'date_add'))) { $validate_rule = (isset($field['validate'])) ? $field['validate'] : 'isAnything'; $this->fieldsValidate[$field_name] = $validate_rule; if (isset($field['required'])) array_push($this->fieldsRequired, $field_name); if (isset($field['size'])) $this->fieldsSize[$field_name] = $field['size']; } } } } return parent::__construct($id); } /** * Returns class name from which functions are called * * @return string Caller class name */ private function getCallerClassName() { return get_class($this); } /** * Collects object fields data * * @return array Object fields data */ public function getFields() { if (version_compare(_PS_VERSION_, '1.5', '<')) { parent::validateFields(); $caller_class_name = $this->getCallerClassName(); // child class name $fields = array(); if (isset($caller_class_name::$definition)) { foreach ($caller_class_name::$definition['fields'] as $field_name => $field) { if ($field_name == $this->identifier && isset($this->$field_name)) $fields[$field_name] = $this->$field_name; else { switch ($field['type']) { case 1: $fields[$field_name] = (int)$this->$field_name; break; case 2: $fields[$field_name] = (bool)$this->$field_name; break; case 3: case 5: case 6: $fields[$field_name] = $this->$field_name; break; case 4: $fields[$field_name] = (float)$this->$field_name; break; case 7: $fields[$field_name] = $this->$field_name; break; } } } } return $fields; } else return parent::getFields(); } }