本文整理汇总了PHP中ObjectModel::getDefinition方法的典型用法代码示例。如果您正苦于以下问题:PHP ObjectModel::getDefinition方法的具体用法?PHP ObjectModel::getDefinition怎么用?PHP ObjectModel::getDefinition使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ObjectModel
的用法示例。
在下文中一共展示了ObjectModel::getDefinition方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: __construct
public function __construct($id = NULL, $id_lang = NULL)
{
$this->def = ObjectModel::getDefinition($this);
// Check if the id configuration is set in the configuration_lang table.
// Otherwise configuration is not set as translated configuration.
if ($id !== null) {
$id_translated = Db::getInstance()->executeS(' SELECT `' . bqSQL($this->def['primary']) . '`
FROM `' . bqSQL(_DB_PREFIX_ . $this->def['table']) . '_lang`
WHERE `' . bqSQL($this->def['primary']) . '`=' . (int) $id . ' LIMIT 0,1
');
if (empty($id_translated)) {
$id = null;
}
}
parent::__construct($id, $id_lang);
}
示例2: getFilteredObjectDetails
public function getFilteredObjectDetails()
{
$objects = array();
if (!isset($this->urlFragments['display'])) {
$this->fieldsToDisplay = 'full';
}
//get entity details
$object = new $this->resourceConfiguration['retrieveData']['className']((int) $this->urlSegment[1]);
if ($object->id) {
$objects[] = $object;
// Check if Object is accessible for this/those id_shop
$assoc = Shop::getAssoTable($this->resourceConfiguration['retrieveData']['table']);
if ($assoc !== false) {
$check_shop_group = false;
$sql = 'SELECT 1
FROM `' . bqSQL(_DB_PREFIX_ . $this->resourceConfiguration['retrieveData']['table']);
if ($assoc['type'] != 'fk_shop') {
$sql .= '_' . $assoc['type'];
} else {
$def = ObjectModel::getDefinition($this->resourceConfiguration['retrieveData']['className']);
if (isset($def['fields']) && isset($def['fields']['id_shop_group'])) {
$check_shop_group = true;
}
}
$sql .= '`';
foreach (self::$shopIDs as $id_shop) {
$OR[] = ' (id_shop = ' . (int) $id_shop . ($check_shop_group ? ' OR (id_shop = 0 AND id_shop_group=' . (int) Shop::getGroupFromShop((int) $id_shop) . ')' : '') . ') ';
}
$check = ' WHERE (' . implode('OR', $OR) . ') AND `' . bqSQL($this->resourceConfiguration['fields']['id']['sqlId']) . '` = ' . (int) $this->urlSegment[1];
if (!Db::getInstance()->getValue($sql . $check)) {
$this->setError(404, 'This ' . $this->resourceConfiguration['retrieveData']['className'] . ' (' . (int) $this->urlSegment[1] . ') does not exists on this shop', 131);
}
}
return $objects;
}
if (!count($this->errors)) {
$this->objOutput->setStatus(404);
$this->_outputEnabled = false;
return false;
}
}
示例3: validateRules
/**
* Manage page display (form, list...)
*
* @param string $className Allow to validate a different class than the current one
*/
public function validateRules($class_name = false)
{
if (!$class_name) {
$class_name = $this->className;
}
$object = new $class_name();
if (method_exists($this, 'getValidationRules')) {
$definition = $this->getValidationRules();
} else {
$definition = ObjectModel::getDefinition($class_name);
}
$default_language = new Language((int) Configuration::get('PS_LANG_DEFAULT'));
foreach ($definition['fields'] as $field => $def) {
$skip = array();
if (in_array($field, array('passwd', 'no-picture'))) {
$skip = array('required');
}
if (isset($def['lang']) && $def['lang']) {
if (isset($def['required']) && $def['required']) {
$value = Tools::getValue($field . '_' . $default_language->id);
if (empty($value)) {
$this->errors[$field . '_' . $default_language->id] = sprintf(Tools::displayError('The field %1$s is required at least in %2$s.'), $object->displayFieldName($field, $class_name), $default_language->name);
}
}
foreach (Language::getLanguages(false) as $language) {
$value = Tools::getValue($field . '_' . $language['id_lang']);
if (!empty($value)) {
if (($error = $object->validateField($field, $value, $language['id_lang'], $skip, true)) !== true) {
$this->errors[$field . '_' . $language['id_lang']] = $error;
}
}
}
} else {
if (($error = $object->validateField($field, Tools::getValue($field), null, $skip, true)) !== true) {
$this->errors[$field] = $error;
}
}
}
/* Overload this method for custom checking */
$this->_childValidation();
/* Checking for multilingual fields validity */
if (isset($rules['validateLang']) && is_array($rules['validateLang'])) {
foreach ($rules['validateLang'] as $field_lang => $function) {
foreach ($languages as $language) {
if (($value = Tools::getValue($field_lang . '_' . $language['id_lang'])) !== false && !empty($value)) {
if (Tools::strtolower($function) == 'iscleanhtml' && Configuration::get('PS_ALLOW_HTML_IFRAME')) {
$res = Validate::$function($value, true);
} else {
$res = Validate::$function($value);
}
if (!$res) {
$this->errors[$field_lang . '_' . $language['id_lang']] = sprintf(Tools::displayError('The %1$s field (%2$s) is invalid.'), call_user_func(array($class_name, 'displayFieldName'), $field_lang, $class_name), $language['name']);
}
}
}
}
}
}
示例4: renderForm
/**
* renderForm contains all necessary initialization needed for all tabs
*
* @return void
*/
public function renderForm()
{
// This nice code (irony) is here to store the product name, because the row after will erase product name in multishop context
$this->product_name = $this->object->name[$this->context->language->id];
if (!method_exists($this, 'initForm' . $this->tab_display)) {
return;
}
$product = $this->object;
// Product for multishop
$this->context->smarty->assign('bullet_common_field', '');
if (Shop::isFeatureActive() && $this->display == 'edit') {
if (Shop::getContext() != Shop::CONTEXT_SHOP) {
$this->context->smarty->assign(array('display_multishop_checkboxes' => true, 'multishop_check' => Tools::getValue('multishop_check')));
}
if (Shop::getContext() != Shop::CONTEXT_ALL) {
$this->context->smarty->assign('bullet_common_field', '<img src="themes/' . $this->context->employee->bo_theme . '/img/bullet_orange.png" style="vertical-align: bottom" />');
$this->context->smarty->assign('display_common_field', true);
}
}
$this->tpl_form_vars['tabs_preloaded'] = $this->available_tabs;
$this->tpl_form_vars['product_type'] = (int) Tools::getValue('type_product', $product->getType());
$this->getLanguages();
$this->tpl_form_vars['id_lang_default'] = Configuration::get('PS_LANG_DEFAULT');
$this->tpl_form_vars['currentIndex'] = self::$currentIndex;
$this->tpl_form_vars['display_multishop_checkboxes'] = Shop::isFeatureActive() && Shop::getContext() != Shop::CONTEXT_SHOP && $this->display == 'edit';
$this->fields_form = array('');
$this->tpl_form_vars['token'] = $this->token;
$this->tpl_form_vars['combinationImagesJs'] = $this->getCombinationImagesJs();
$this->tpl_form_vars['PS_ALLOW_ACCENTED_CHARS_URL'] = (int) Configuration::get('PS_ALLOW_ACCENTED_CHARS_URL');
$this->tpl_form_vars['post_data'] = Tools::jsonEncode($_POST);
$this->tpl_form_vars['save_error'] = !empty($this->errors);
// autoload rich text editor (tiny mce)
$this->tpl_form_vars['tinymce'] = true;
$iso = $this->context->language->iso_code;
$this->tpl_form_vars['iso'] = file_exists(_PS_ROOT_DIR_ . '/js/tiny_mce/langs/' . $iso . '.js') ? $iso : 'en';
$this->tpl_form_vars['ad'] = dirname($_SERVER['PHP_SELF']);
if (Validate::isLoadedObject($this->object)) {
$id_product = (int) $this->object->id;
} else {
$id_product = (int) Tools::getvalue('id_product');
}
$this->tpl_form_vars['form_action'] = $this->context->link->getAdminLink('AdminProducts') . '&' . ($id_product ? 'id_product=' . (int) $id_product : 'addproduct');
$this->tpl_form_vars['id_product'] = $id_product;
// Transform configuration option 'upload_max_filesize' in octets
$upload_max_filesize = Tools::getOctets(ini_get('upload_max_filesize'));
// Transform configuration option 'upload_max_filesize' in MegaOctets
$upload_max_filesize = $upload_max_filesize / 1024 / 1024;
$this->tpl_form_vars['upload_max_filesize'] = $upload_max_filesize;
$this->tpl_form_vars['country_display_tax_label'] = $this->context->country->display_tax_label;
$this->tpl_form_vars['has_combinations'] = $this->object->hasAttributes();
$this->product_exists_in_shop = true;
if ($this->display == 'edit' && Validate::isLoadedObject($product) && Shop::isFeatureActive() && Shop::getContext() == Shop::CONTEXT_SHOP && !$product->isAssociatedToShop($this->context->shop->id)) {
$this->product_exists_in_shop = false;
if ($this->tab_display == 'Informations') {
$this->displayWarning($this->l('Warning: The product does not exist in this shop.'));
}
$default_product = new Product();
$definition = ObjectModel::getDefinition($product);
foreach ($definition['fields'] as $field_name => $field) {
if (isset($field['shop']) && $field['shop']) {
$product->{$field_name} = ObjectModel::formatValue($default_product->{$field_name}, $field['type']);
}
}
}
// let's calculate this once for all
if (!Validate::isLoadedObject($this->object) && Tools::getValue('id_product')) {
$this->errors[] = 'Unable to load object';
} else {
$this->_displayDraftWarning($this->object->active);
// if there was an error while saving, we don't want to lose posted data
if (!empty($this->errors)) {
$this->copyFromPost($this->object, $this->table);
}
$this->initPack($this->object);
$this->{'initForm' . $this->tab_display}($this->object);
$this->tpl_form_vars['product'] = $this->object;
if ($this->ajax) {
if (!isset($this->tpl_form_vars['custom_form'])) {
throw new PrestaShopException('custom_form empty for action ' . $this->tab_display);
} else {
return $this->tpl_form_vars['custom_form'];
}
}
}
$parent = parent::renderForm();
$this->addJqueryPlugin(array('autocomplete', 'fancybox', 'typewatch'));
return $parent;
}
示例5: renderForm
public function renderForm()
{
$this->product_name = $this->object->name[$this->context->language->id];
if (!method_exists($this, 'initForm' . $this->tab_display)) {
return;
}
$product = $this->object;
$this->context->smarty->assign('bullet_common_field', '');
if (Shop::isFeatureActive() && $this->display == 'edit') {
if (Shop::getContext() != Shop::CONTEXT_SHOP) {
$this->context->smarty->assign(array('display_multishop_checkboxes' => true, 'multishop_check' => Tools::getValue('multishop_check')));
}
if (Shop::getContext() != Shop::CONTEXT_ALL) {
$this->context->smarty->assign('bullet_common_field', '<i class="icon-circle text-orange"></i>');
$this->context->smarty->assign('display_common_field', true);
}
}
$this->tpl_form_vars['tabs_preloaded'] = $this->available_tabs;
$this->tpl_form_vars['product_type'] = (int) Tools::getValue('type_product', $product->getType());
$this->getLanguages();
$this->tpl_form_vars['id_lang_default'] = Configuration::get('PS_LANG_DEFAULT');
$this->tpl_form_vars['currentIndex'] = self::$currentIndex;
$this->tpl_form_vars['display_multishop_checkboxes'] = Shop::isFeatureActive() && Shop::getContext() != Shop::CONTEXT_SHOP && $this->display == 'edit';
$this->fields_form = array('');
$this->tpl_form_vars['token'] = $this->token;
$this->tpl_form_vars['combinationImagesJs'] = $this->getCombinationImagesJs();
$this->tpl_form_vars['PS_ALLOW_ACCENTED_CHARS_URL'] = (int) Configuration::get('PS_ALLOW_ACCENTED_CHARS_URL');
$this->tpl_form_vars['post_data'] = json_encode($_POST);
$this->tpl_form_vars['save_error'] = !empty($this->errors);
$this->tpl_form_vars['mod_evasive'] = Tools::apacheModExists('evasive');
$this->tpl_form_vars['mod_security'] = Tools::apacheModExists('security');
$this->tpl_form_vars['ps_force_friendly_product'] = Configuration::get('PS_FORCE_FRIENDLY_PRODUCT');
$this->tpl_form_vars['tinymce'] = true;
$iso = $this->context->language->iso_code;
$this->tpl_form_vars['iso'] = file_exists(_PS_CORE_DIR_ . '/js/tiny_mce/langs/' . $iso . '.js') ? $iso : 'en';
$this->tpl_form_vars['path_css'] = _THEME_CSS_DIR_;
$this->tpl_form_vars['ad'] = __PS_BASE_URI__ . basename(_PS_ADMIN_DIR_);
if (Validate::isLoadedObject($this->object)) {
$id_product = (int) $this->object->id;
} else {
$id_product = (int) Tools::getvalue('id_product');
}
$this->tpl_form_vars['form_action'] = $this->context->link->getAdminLink('AdminProducts') . '&' . ($id_product ? 'id_product=' . (int) $id_product : 'addproduct');
$this->tpl_form_vars['id_product'] = $id_product;
$upload_max_filesize = Tools::getOctets(ini_get('upload_max_filesize'));
$upload_max_filesize = $upload_max_filesize / 1024 / 1024;
$this->tpl_form_vars['upload_max_filesize'] = $upload_max_filesize;
$this->tpl_form_vars['country_display_tax_label'] = $this->context->country->display_tax_label;
$this->tpl_form_vars['has_combinations'] = $this->object->hasAttributes();
$this->product_exists_in_shop = true;
if ($this->display == 'edit' && Validate::isLoadedObject($product) && Shop::isFeatureActive() && Shop::getContext() == Shop::CONTEXT_SHOP && !$product->isAssociatedToShop($this->context->shop->id)) {
$this->product_exists_in_shop = false;
if ($this->tab_display == 'Informations') {
$this->displayWarning($this->l('Warning: The product does not exist in this shop'));
}
$default_product = new Product();
$definition = ObjectModel::getDefinition($product);
foreach ($definition['fields'] as $field_name => $field) {
if (isset($field['shop']) && $field['shop']) {
$product->{$field_name} = ObjectModel::formatValue($default_product->{$field_name}, $field['type']);
}
}
}
if (!Validate::isLoadedObject($this->object) && Tools::getValue('id_product')) {
$this->errors[] = 'Unable to load object';
} else {
$this->_displayDraftWarning($this->object->active);
if (!empty($this->errors)) {
$this->copyFromPost($this->object, $this->table);
}
$this->initPack($this->object);
$this->{'initForm' . $this->tab_display}($this->object);
$this->tpl_form_vars['product'] = $this->object;
if ($this->ajax) {
if (!isset($this->tpl_form_vars['custom_form'])) {
throw new PrestaShopException('custom_form empty for action ' . $this->tab_display);
} else {
return $this->tpl_form_vars['custom_form'];
}
}
}
$parent = parent::renderForm();
$this->addJqueryPlugin(array('autocomplete', 'fancybox', 'typewatch'));
return $parent;
}
示例6: getFieldByLang
/**
* Return the field value for the specified language if the field is multilang,
* else the field value.
*
* @since 1.5.0.1
* @param string $field_name
* @param int|null $id_lang
*
* @return mixed
* @throws PrestaShopException
*/
public function getFieldByLang($field_name, $id_lang = null)
{
$definition = ObjectModel::getDefinition($this);
// Is field in definition?
if ($definition && isset($definition['fields'][$field_name])) {
$field = $definition['fields'][$field_name];
// Is field multilang?
if (isset($field['lang']) && $field['lang']) {
if (is_array($this->{$field_name})) {
return $this->{$field_name}[$id_lang ? $id_lang : Context::getContext()->language->id];
}
}
return $this->{$field_name};
} else {
throw new PrestaShopException('Could not load field from definition.');
}
}
示例7: getValidationRules
public function getValidationRules()
{
$step_number = (int) Tools::getValue('step_number');
if (!$step_number) {
return;
}
if ($step_number == 4 && !Shop::isFeatureActive() || $step_number == 5 && Shop::isFeatureActive()) {
return array('fields' => array());
}
$step_fields = array(1 => array('name', 'delay', 'grade', 'url'), 2 => array('is_free', 'id_tax_rules_group', 'shipping_handling', 'shipping_method', 'range_behavior'), 3 => array('range_behavior', 'max_height', 'max_width', 'max_depth', 'max_weight'), 4 => array());
if (Shop::isFeatureActive()) {
$tmp = $step_fields;
$step_fields = array_slice($tmp, 0, 1, true) + array(2 => array('shop'));
$step_fields[3] = $tmp[2];
$step_fields[4] = $tmp[3];
}
$definition = ObjectModel::getDefinition('Carrier');
foreach ($definition['fields'] as $field => $def) {
if (is_array($step_fields[$step_number]) && !in_array($field, $step_fields[$step_number])) {
unset($definition['fields'][$field]);
}
}
return $definition;
}
示例8: chooseOptimalImageType
/**
* Chooses the "optimal" image type to use for product image urls.
*
* The type is chosen based on which image type has a width closest to `self::OPTIMAL_PRODUCT_IMAGE_WIDTH`.
*
* @return string|false the image type name or false if not found.
*/
protected function chooseOptimalImageType()
{
$definition = _PS_VERSION_ >= '1.5' ? ObjectModel::getDefinition('ImageType') : array();
$table_name = isset($definition['table']) ? $definition['table'] : 'image_type';
$available_image_types = Db::getInstance()->executeS('
SELECT * FROM `' . _DB_PREFIX_ . pSQL($table_name) . '`
WHERE `products` = 1
ORDER BY `width` ASC
');
$optimal = self::OPTIMAL_PRODUCT_IMAGE_WIDTH;
$found = array();
foreach ($available_image_types as $available) {
if (empty($found) || abs($optimal - (int) $found['width']) > abs((int) $available['width'] - $optimal)) {
$found = $available;
}
}
return isset($found['name']) ? $found['name'] : false;
}
示例9: hydrateCollection
/**
* Fill (hydrate) a list of objects in order to get a collection of these objects
*
* @param string $class Class of objects to hydrate
* @param array $datas List of data (multi-dimensional array)
* @param int $id_lang
* @return array
* @throws Exception
*/
public static function hydrateCollection($class, array $datas, $id_lang = null)
{
if (!class_exists($class)) {
throw new Exception("Class '{$class}' not found");
}
$collection = array();
$rows = array();
if ($datas) {
$definition = ObjectModel::getDefinition($class);
if (!array_key_exists($definition['primary'], $datas[0])) {
throw new Exception("Identifier '{$definition['primary']}' not found for class '{$class}'");
}
foreach ($datas as $row) {
// Get object common properties
$id = $row[$definition['primary']];
if (!isset($rows[$id])) {
$rows[$id] = $row;
}
}
}
// Hydrate objects
foreach ($rows as $row) {
$obj = new $class();
$obj->hydrate($row);
$collection[] = $obj;
}
return $collection;
}
示例10: loadObject
protected function loadObject($opt = false)
{
$result = parent::loadObject($opt);
if ($result && Validate::isLoadedObject($this->object)) {
if (Shop::getContext() == Shop::CONTEXT_SHOP && Shop::isFeatureActive() && !$this->object->isAssociatedToShop()) {
$default_offer = new AphOffer((int) $this->object->id, false, null, (int) $this->object->id_shop_default);
$def = ObjectModel::getDefinition($this->object);
foreach ($def['fields'] as $field_name => $row) {
if (is_array($default_offer->{$field_name})) {
foreach ($default_offer->{$field_name} as $key => $value) {
$this->object->{$field_name}[$key] = $value;
}
} else {
$this->object->{$field_name} = $default_offer->{$field_name};
}
}
}
}
return $result;
}
示例11: getDefinition
/**
* Get definition of an association
*
* @param string $association
* @return array
*/
protected function getDefinition($association)
{
if (!$association) {
return $this->definition;
}
if (!isset($this->association_definition[$association])) {
$definition = $this->definition;
$split = explode('.', $association);
$is_lang = false;
for ($i = 0, $total_association = count($split); $i < $total_association; $i++) {
$asso = $split[$i];
// Check is current association exists in current definition
if (!isset($definition['associations'][$asso])) {
throw new PrestaShopException('Association ' . $asso . ' not found for class ' . $this->definition['classname']);
}
$current_def = $definition['associations'][$asso];
// Special case for lang alias
if ($asso == self::LANG_ALIAS) {
$is_lang = true;
break;
}
$classname = isset($current_def['object']) ? $current_def['object'] : Tools::toCamelCase($asso, true);
$definition = ObjectModel::getDefinition($classname);
}
// Get definition of associated entity and add information on current association
$current_def['name'] = $asso;
if (!isset($current_def['object'])) {
$current_def['object'] = Tools::toCamelCase($asso, true);
}
if (!isset($current_def['field'])) {
$current_def['field'] = 'id_' . $asso;
}
if (!isset($current_def['foreign_field'])) {
$current_def['foreign_field'] = 'id_' . $asso;
}
if ($total_association > 1) {
unset($split[$total_association - 1]);
$current_def['complete_field'] = implode('.', $split) . '.' . $current_def['field'];
} else {
$current_def['complete_field'] = $current_def['field'];
}
$current_def['complete_foreign_field'] = $association . '.' . $current_def['field'];
$definition['is_lang'] = $is_lang;
$definition['asso'] = $current_def;
$this->association_definition[$association] = $definition;
} else {
$definition = $this->association_definition[$association];
}
return $definition;
}
示例12: customerExists
/**
* Check if user is already registered in database
*
* @param string $id_user user id
* @param $return_id boolean
* @return Customer ID if found, false otherwise
*/
public static function customerExists($id_user, $return_id = false)
{
$definition = ObjectModel::getDefinition($this);
$result = Db::getInstance()->getValue('
SELECT id_customer
FROM `' . _DB_PREFIX_ . bqSQL($definition['table']) . '`
WHERE `id_user` = \'' . pSQL($id_user) . '\'');
return $return_id ? (int) $result : (bool) $result;
}