Пример #1
0
 /**
  * Populate model object properties by the passed data
  *
  * @param array $data Data to set
  *
  * @return void
  */
 protected function setModelProperties(array $data)
 {
     foreach ($data as $name => $value) {
         if (strpos($name, 'parameter_') === 0) {
             $paramName = substr($name, 10);
             $this->getModelObject()->setParameterValue($paramName, $value);
             // Remove already set properties
             unset($data[$name]);
         }
     }
     parent::setModelProperties($data);
 }
Пример #2
0
 /**
  * Populate model object properties by the passed data
  *
  * @param array $data Data to set
  *
  * @return void
  */
 protected function setModelProperties(array $data)
 {
     if (isset($data['country_of_origin'])) {
         $data['country_of_origin'] = \XLite\Core\Database::getRepo('XLite\\Model\\Country')->find($data['country_of_origin']);
     }
     parent::setModelProperties($data);
     /** @var \XLite\Model\Product $model */
     $model = $this->getModelObject();
     $model->update();
     $this->setProduct($model);
 }
Пример #3
0
 /**
  * Populate model object properties by the passed data
  *
  * @param array $data Data to set
  *
  * @return void
  */
 protected function setModelProperties(array $data)
 {
     if (!isset($data['onDemand'])) {
         $data['onDemand'] = array();
     }
     if (!isset($data['carrierAccessorialFees'])) {
         $data['carrierAccessorialFees'] = array();
     }
     parent::setModelProperties($data);
 }
Пример #4
0
 /**
  * Populate model object properties by the passed data
  *
  * @param array $data Data to set
  *
  * @return void
  */
 protected function setModelProperties(array $data)
 {
     $permissions = $data['permissions'];
     unset($data['permissions']);
     if ($this->getModelObject()->isPermanentRole()) {
         $data['enabled'] = 1;
     } else {
         $data['enabled'] = isset($data['enabled']) ? intval($data['enabled']) : 0;
     }
     if (!empty($data['name'])) {
         $data['name'] = strip_tags($data['name']);
     }
     parent::setModelProperties($data);
     $model = $this->getModelObject();
     if (!$model->isPermanentRole()) {
         // Remove old links
         foreach ($model->getPermissions() as $perm) {
             $perm->getRoles()->removeElement($model);
         }
         $model->getPermissions()->clear();
         $permanent = \XLite\Core\Database::getRepo('XLite\\Model\\Role')->getPermanentRole();
         if ($permanent->getId() == $model->getId()) {
             $root = \XLite\Core\Database::getRepo('XLite\\Model\\Role\\Permission')->findOneBy(array('code' => \XLite\Model\Role\Permission::ROOT_ACCESS));
             if ($root && !in_array($root->getId(), $permissions)) {
                 $permissions[] = $root->getId();
             }
         }
         // Add new links
         foreach ($permissions as $pid) {
             $permission = \XLite\Core\Database::getRepo('XLite\\Model\\Role\\Permission')->find($pid);
             if ($permission) {
                 $model->addPermissions($permission);
                 $permission->addRoles($model);
             }
         }
     }
 }
Пример #5
0
 /**
  * Populate model object properties by the passed data
  *
  * @param array $data Data to set
  *
  * @return void
  */
 protected function setModelProperties(array $data)
 {
     if (isset($data['enabled'])) {
         $data['enabled'] = !empty($data['enabled']) ? 1 : 0;
     }
     parent::setModelProperties($data);
 }
Пример #6
0
 /**
  * Populate model object properties by the passed data
  *
  * @param array $data Data to set
  *
  * @return void
  */
 protected function setModelProperties(array $data)
 {
     if ($this->getModelObject()->getProfile()) {
         if (!$this->getModelObject()->getProfile()->getBillingAddress()) {
             $data['is_billing'] = true;
         }
         if (!$this->getModelObject()->getProfile()->getShippingAddress()) {
             $data['is_shipping'] = true;
         }
     }
     parent::setModelProperties($data);
 }
Пример #7
0
 /**
  * Populate model object properties by the passed data
  *
  * @param array $data Data to set
  *
  * @return void
  */
 protected function setModelProperties(array $data)
 {
     $productClasses = isset($data['productClasses']) ? $data['productClasses'] : null;
     $memberships = isset($data['memberships']) ? $data['memberships'] : null;
     $categories = isset($data['categories']) ? $data['categories'] : null;
     unset($data['productClasses'], $data['memberships'], $data['categories']);
     if (!empty($data['dateRangeEnd'])) {
         $data['dateRangeEnd'] = mktime(23, 59, 59, date('n', $data['dateRangeEnd']), date('j', $data['dateRangeEnd']), date('Y', $data['dateRangeEnd']));
     }
     if (empty($data['usesLimitCheck'])) {
         $data['usesLimit'] = 0;
     }
     $data['singleUse'] = empty($data['singleUse']) ? 0 : 1;
     parent::setModelProperties($data);
     $entity = $this->getModelObject();
     // Product classes
     foreach ($entity->getProductClasses() as $class) {
         $class->getCoupons()->removeElement($entity);
     }
     $entity->getProductClasses()->clear();
     if (is_array($productClasses)) {
         foreach ($productClasses as $id) {
             $class = \XLite\Core\Database::getRepo('XLite\\Model\\ProductClass')->find($id);
             if ($class) {
                 $entity->addProductClasses($class);
                 $class->addCoupons($entity);
             }
         }
     }
     // Memberships
     foreach ($entity->getMemberships() as $m) {
         $m->getCoupons()->removeElement($entity);
     }
     $entity->getMemberships()->clear();
     if (is_array($memberships)) {
         foreach ($memberships as $id) {
             $m = \XLite\Core\Database::getRepo('XLite\\Model\\Membership')->find($id);
             if ($m) {
                 $entity->addMemberships($m);
                 $m->addCoupons($entity);
             }
         }
     }
     // Categories
     foreach ($entity->getCategories() as $c) {
         $c->getCoupons()->removeElement($entity);
     }
     $entity->getCategories()->clear();
     if (is_array($categories)) {
         foreach ($categories as $id) {
             $c = \XLite\Core\Database::getRepo('XLite\\Model\\Category')->find($id);
             if ($c) {
                 $entity->addCategories($c);
                 $c->addCoupons($entity);
             }
         }
     }
 }
Пример #8
0
 /**
  * Populate model object properties by the passed data
  *
  * @param array $data Data to set
  *
  * @return void
  */
 protected function setModelProperties(array $data)
 {
     $data['attribute_group'] = \XLite\Core\Database::getRepo('XLite\\Model\\AttributeGroup')->find($data['attribute_group']);
     if (!isset($data['addToNew'])) {
         $data['addToNew'] = array();
     }
     parent::setModelProperties($data);
     $this->getModelObject()->setProductClass($this->getProductClass());
 }
Пример #9
0
 /**
  * Populate model object properties by the passed data
  *
  * @param array $data Data to set
  *
  * @return void
  */
 protected function setModelProperties(array $data)
 {
     parent::setModelProperties($data);
 }
Пример #10
0
 /**
  * Populate model object properties by the passed data
  *
  * @param array $data Data to set
  *
  * @return void
  */
 protected function setModelProperties(array $data)
 {
     if ($this->getPostedData('autogenerateCleanURL')) {
         $data['cleanURL'] = $this->generateCleanURL($data['name']);
     }
     if (!$data['cleanURL']) {
         unset($data['cleanURL']);
     }
     parent::setModelProperties($data);
 }
Пример #11
0
 /**
  * Populate model object properties by the passed data
  *
  * @param array $data Data to set
  *
  * @return void
  */
 protected function setModelProperties(array $data)
 {
     $data['content'] = $data['contentTab'];
     $this->prepareObjectForMapping()->setProduct($this->getProduct());
     $this->getProduct()->addTabs($this->prepareObjectForMapping());
     parent::setModelProperties($data);
 }
Пример #12
0
 /**
  * Populate model object properties by the passed data
  *
  * @param array $data Data to set
  *
  * @return void
  */
 protected function setModelProperties(array $data)
 {
     unset($data['shippingZone']);
     parent::setModelProperties($data);
 }
Пример #13
0
 /**
  * Populate model object properties by the passed data
  *
  * @param array $data Data to set
  *
  * @return void
  */
 protected function setModelProperties(array $data)
 {
     $body = $data['body'];
     unset($data['body']);
     $data['date'] = LC_START_TIME;
     $localPath = '';
     if (\XLite\Core\Request::getInstance()->template) {
         $localPath = \XLite\Core\Request::getInstance()->template;
     } elseif ($this->getModelObject()->getId()) {
         $localPath = $this->getModelObjectValue('template');
     }
     if ($localPath) {
         $fullPath = $this->getFullPathByLocalPath($localPath, 'theme_tweaker/default');
         \Includes\Utils\FileManager::write($fullPath, $body);
         $data['template'] = substr($fullPath, strlen(LC_DIR_SKINS));
         \XLite\Core\FlexyCompiler::getInstance()->remove($fullPath);
     }
     parent::setModelProperties($data);
 }
Пример #14
0
 /**
  * Populate model object properties by the passed data
  *
  * @param array $data Data to set
  *
  * @return void
  */
 protected function setModelProperties(array $data)
 {
     $memberships = !empty($data['memberships']) ? $data['memberships'] : null;
     unset($data['memberships']);
     $parentId = (int) (!empty($data['parent']) ? $data['parent'] : \XLite\Core\Request::getInstance()->parent);
     unset($data['parent']);
     parent::setModelProperties($data);
     $model = $this->getModelObject();
     // Remove old links
     foreach ($model->getMemberships() as $membership) {
         $membership->getCategories()->removeElement($model);
     }
     $model->getMemberships()->clear();
     if ($memberships) {
         // Add new links
         foreach ($memberships as $mid) {
             $membership = \XLite\Core\Database::getRepo('XLite\\Model\\Membership')->find($mid);
             if ($membership) {
                 $model->addMemberships($membership);
                 $membership->addCategory($model);
             }
         }
     }
     $currentParentId = $model->getParent() ? $model->getParent()->getCategoryId() : null;
     $isRootCategory = \XLite\Core\Database::getRepo('XLite\\Model\\Category')->getRootCategoryId() == $model->getCategoryId();
     if (!$isRootCategory && (!$model->isPersistent() || !$currentParentId || $parentId && $currentParentId != $parentId)) {
         // Set parent
         $parent = null;
         if ($parentId) {
             $parent = \XLite\Core\Database::getRepo('XLite\\Model\\Category')->find($parentId);
         }
         if (!$parent) {
             $parent = \XLite\Core\Database::getRepo('XLite\\Model\\Category')->getRootCategory();
         }
         $model->setParent($parent);
         // Update lpos, rpos, depth properties of categories tree
         \XLite\Core\Database::getRepo('XLite\\Model\\Category')->correctCategoriesStructure();
     }
     if (!$model->isPersistent()) {
         // Resort
         $pos = 0;
         $model->setPos($pos);
         foreach ($parent->getChildren() as $child) {
             $pos += 10;
             $child->setPos($pos);
         }
     }
 }
Пример #15
0
 /**
  * Populate model object properties by the passed data.
  * Specific wrapper for setModelProperties method.
  *
  * @param array $data Data to set
  *
  * @return void
  */
 protected function updateModelProperties(array $data)
 {
     $categoryIds = isset($data['categories']) ? array_map('intval', $data['categories']) : array();
     unset($data['categories']);
     $memberships = isset($data['memberships']) ? $data['memberships'] : array();
     unset($data['memberships']);
     // Flag variables
     foreach (array('shippable', 'useSeparateBox') as $value) {
         if (isset($data[$value]) && is_string($data[$value])) {
             $data[$value] = 'Y' === $data[$value];
         }
     }
     if (isset($data['useSeparateBox']) && $data['useSeparateBox']) {
         foreach (array('boxLength', 'boxWidth', 'boxHeight', 'itemsPerBox') as $var) {
             $data[$var] = $this->getPostedData($var);
         }
     }
     $time = \XLite\Core\Converter::time();
     if (isset($data['arrivalDate'])) {
         $data['arrivalDate'] = (int) strtotime($data['arrivalDate']) ?: mktime(0, 0, 0, date('m', $time), date('j', $time), date('Y', $time));
     }
     if (isset($data['productClass'])) {
         $data['productClass'] = \XLite\Core\Database::getRepo('XLite\\Model\\ProductClass')->find($data['productClass']);
     }
     if (isset($data['taxClass'])) {
         $data['taxClass'] = \XLite\Core\Database::getRepo('XLite\\Model\\TaxClass')->find($data['taxClass']);
     }
     if ($this->getModelObject() && !$this->getModelObject()->getInventory()->isPersistent()) {
         $this->getModelObject()->setInventory($this->getModelObject()->getInventory());
     }
     if (isset($data['qty'])) {
         if ($this->getModelObject() && $this->getModelObject()->getInventory()) {
             $this->getModelObject()->getInventory()->setAmount($data['qty']);
         }
         unset($data['qty']);
     }
     parent::setModelProperties($data);
     /** @var \XLite\Model\Product $model */
     $model = $this->getModelObject();
     $isNew = !$model->isPersistent();
     $model->update();
     if ($isNew) {
         \XLite\Core\Database::getRepo('XLite\\Model\\Attribute')->generateAttributeValues($model);
     }
     // Update product categories
     $this->updateProductCategories($model, $categoryIds);
     // Update SKU
     if (null === $model->getSku()) {
         $model->setSku(\XLite\Core\Database::getRepo('XLite\\Model\\Product')->generateSKU($model));
     }
     // Update memberships
     foreach ($model->getMemberships() as $membership) {
         $membership->getProducts()->removeElement($model);
     }
     $model->getMemberships()->clear();
     if (null !== $memberships && $memberships) {
         // Add new links
         foreach ($memberships as $mid) {
             $membership = \XLite\Core\Database::getRepo('XLite\\Model\\Membership')->find($mid);
             if ($membership) {
                 $model->addMemberships($membership);
                 $membership->addProduct($model);
             }
         }
     }
     // Set the controller model product
     $this->setProduct($model);
 }
Пример #16
0
 /**
  * Populate model object properties by the passed data
  *
  * @param array $data Data to set
  *
  * @return void
  */
 protected function setModelProperties(array $data)
 {
     $adminAccessLevel = \XLite\Core\Auth::getInstance()->getAdminAccessLevel();
     if (!empty($data['password'])) {
         // Encrypt password if if is not empty
         $data['password'] = \XLite\Core\Auth::encryptPassword($data['password']);
     } elseif (isset($data['password'])) {
         // Otherwise unset password to avoid passing empty password to the database
         unset($data['password']);
     }
     // Cannot change the status of own profile
     if ($this->isLoggedProfile()) {
         unset($data['status']);
     }
     // Apply the access level only during the profile creation
     if (!$this->isRegisterMode()) {
         unset($data['access_level']);
     }
     if (isset($data['forceChangePassword']) && is_string($data['forceChangePassword'])) {
         $data['forceChangePassword'] = (bool) $data['forceChangePassword'];
     }
     $isRoot = \XLite\Core\Auth::getInstance()->isPermissionAllowed(\XLite\Model\Role\Permission::ROOT_ACCESS);
     if (isset($data['roles']) && (!$isRoot || isset($data['access_level']) && $adminAccessLevel != $data['access_level'])) {
         unset($data['roles']);
     }
     $model = $this->getModelObject();
     // Assign only role for admin
     $isAdmin = isset($data['access_level']) && $adminAccessLevel == $data['access_level'] || $model->getProfileId() && $model->isAdmin();
     if ($isAdmin && $this->needSetRootAccess($this->getModelObject())) {
         $rootRole = \XLite\Core\Database::getRepo('XLite\\Model\\Role')->findOneRoot();
         if ($rootRole) {
             if (!isset($data['roles'])) {
                 $data['roles'] = array();
             }
             $data['roles'][] = $rootRole->getId();
         }
     }
     if (isset($data['roles']) || isset($data['access_level']) && $adminAccessLevel != $data['access_level'] || $model->getProfileId() && !$model->isAdmin()) {
         // Remove old links
         foreach ($model->getRoles() as $role) {
             $role->getProfiles()->removeElement($model);
         }
         $model->getRoles()->clear();
     }
     // Add new links
     if (isset($data['roles']) && is_array($data['roles'])) {
         $data['roles'] = array_unique($data['roles']);
         foreach ($data['roles'] as $rid) {
             $role = \XLite\Core\Database::getRepo('XLite\\Model\\Role')->find($rid);
             if ($role) {
                 $model->addRoles($role);
                 $role->addProfiles($model);
             }
         }
     }
     if (isset($data['roles'])) {
         unset($data['roles']);
     }
     parent::setModelProperties($data);
 }
Пример #17
0
 /**
  * Populate model object properties by the passed data
  *
  * @param array $data Data to set
  *
  * @return void
  */
 protected function setModelProperties(array $data)
 {
     $data['date'] = strtotime($data['date']);
     parent::setModelProperties($data);
 }