/** * Define cache cells * * @return array */ protected function defineCacheCells() { $list = parent::defineCacheCells(); $list['all'] = array(); $list['status'] = array(self::ATTRS_CACHE_CELL => array('status')); return $list; }
/** * Find one by record * * @param array $data Record * @param \XLite\Model\AEntity $parent Parent model OPTIONAL * * @return \XLite\Model\AEntity|void */ public function findOneByRecord(array $data, \XLite\Model\AEntity $parent = null) { $entity = parent::findOneByRecord($data, $parent); if (!$entity && isset($data['name']) && $data['name'] && isset($data['group']) && $data['group'] && isset($data['sku']) && $data['sku']) { $entity = $this->defineOneBySkuAndNameQuery($data['sku'], $data['group'], $data['name'])->getSingleResult(); } return $entity; }
/** * Find one by record * * @param array $data Record * @param \XLite\Model\AEntity $parent Parent model OPTIONAL * * @return \XLite\Model\AEntity|void */ public function findOneByRecord(array $data, \XLite\Model\AEntity $parent = null) { $model = parent::findOneByRecord($data, $parent); if (!$model && !empty($data['translations'])) { foreach ($data['translations'] as $translation) { $model = $this->findOneByName($translation['name']); if ($model) { break; } } } return $model; }
/** * Update entity * * @param \XLite\Model\AEntity $entity Entity to update * @param array $data New values for entity properties * @param boolean $flush Flag OPTIONAL * * @return void */ public function update(\XLite\Model\AEntity $entity, array $data = array(), $flush = self::FLUSH_BY_DEFAULT) { $name = null; foreach ($entity->getTranslations() as $translation) { if ($translation->getName()) { $name = $translation->getName(); break; } } if ($name) { foreach ($entity->getTranslations() as $translation) { if (!$translation->getName()) { $translation->setName($name); } } } parent::update($entity, $data, $flush); }
/** * Update single entity * * @param \XLite\Model\AEntity $entity Entity to use * @param array $data Data to save OPTIONAL * * @return void */ protected function performUpdate(\XLite\Model\AEntity $entity, array $data = array()) { parent::performUpdate($entity, $data); if (!$this->getBlockQuickDataFlag()) { $entity->updateQuickData(); } }
/** * Define specific query builder * * @return \XLite\Model\QueryBuilder\AQueryBuilder */ protected function defineFindAllSortedQueryBuilder() { return parent::createQueryBuilder('c')->addOrderBy('c.category_id'); }
/** * Get identifiers list for specified query builder object * * @param \Doctrine\ORM\QueryBuilder $qb Query builder * @param string $name Name * @param mixed $value Value * * @return void */ protected function addImportCondition(\Doctrine\ORM\QueryBuilder $qb, $name, $value) { if ('productClass' == $name && is_string($value)) { $alias = $qb->getMainAlias(); $qb->linkInner($alias . '.productClass')->linkInner('productClass.translations', 'productClassTranslations')->andWhere('productClassTranslations.name = :productClass')->setParameter('productClass', $value); } else { $result = parent::addImportCondition($qb, $name, $value); } }
/** * Get detailed foreign keys * * @return array */ protected function getDetailedForeignKeys() { $list = parent::getDetailedForeignKeys(); $list[] = array('fields' => array('parent_id'), 'referenceRepo' => 'XLite\\Model\\Category', 'referenceFields' => array('category_id'), 'delete' => 'SET NULL'); return $list; }
/** * Define cache cells * * @return array */ protected function defineCacheCells() { $list = parent::defineCacheCells(); $list['all_by_code'] = array(); return $list; }
/** * Insert single entity * * @param \XLite\Model\AEntity|array $entity Data to insert OPTIONAL * * @return void */ protected function performInsert($entity = null) { $entity = parent::performInsert($entity); if ($entity && !\XLite\Core\Database::getRepo('XLite\\Model\\Product')->getBlockQuickDataFlag()) { \XLite\Core\QuickData::getInstance()->updateMembershipData($entity); } return $entity; }
/** * Delete single entity * * @param \XLite\Model\AEntity $entity Entity to detach * * @return void */ protected function performDelete(\XLite\Model\AEntity $entity) { $carts = (array) \XLite\Core\Database::getRepo('XLite\\Model\\Cart')->findAll(); $items = array(); foreach ($carts as $cart) { foreach ((array) $cart->getItemsByProductId($entity->getProductId()) as $item) { $cart->getItems()->removeElement($item); $items[] = $item; } } \XLite\Core\Database::getRepo('XLite\\Model\\OrderItem')->deleteInBatch($items); \XLite\Core\Database::getRepo('XLite\\Model\\Cart')->updateInBatch($carts); parent::performDelete($entity); }
/** * Find one by record * * @param array $data Record * @param \XLite\Model\AEntity $parent Parent model OPTIONAL * * @return \XLite\Model\AEntity */ public function findOneByRecord(array $data, \XLite\Model\AEntity $parent = null) { if (isset($data['serviceName'])) { $result = $this->findOneByServiceName($data['serviceName']); } else { $result = parent::findOneByRecord($data, $parent); } return $result; }
/** * Define export iterator query builder * * @param integer $position Position * * @return \XLite\Model\QueryBuilder\AQueryBuilder */ protected function defineExportIteratorQueryBuilder($position) { $queryBuilder = parent::defineExportIteratorQueryBuilder($position); $this->addSubTreeCondition($queryBuilder, $this->getRootCategoryId()); return $queryBuilder; }