/** * Link XLite and CMS profiles * * @param \XLite\Model\Profile $profile XLite profile * @param integer $cmsProfileId CMS profile id * * @return void */ public function linkProfiles(\XLite\Model\Profile $profile, $cmsProfileId) { $profile->setCMSProfileId($cmsProfileId); $profile->setCMSName(\XLite\Module\CDev\DrupalConnector\Handler::getInstance()->getCMSName()); $this->defineUnlinkProfilesQuery($cmsProfileId)->execute(); $this->defineLinkProfilesQuery($profile->getProfileId(), $cmsProfileId)->execute(); }
/** * Define query for findAllOrdersWithEgoods() method * * @param \XLite\Model\Profile $profile Profile OPTIONAL * * @return \XLite\Model\QuieryBuilder\AQueryBuilder */ protected function defineFindAllOrdersWithEgoodsQuery(\XLite\Model\Profile $profile = null) { $qb = $this->createQueryBuilder('o')->innerJoin('o.items', 'item')->innerJoin('item.privateAttachments', 'pa')->leftJoin('o.orig_profile', 'op')->orderBy('o.date', 'desc'); if ($profile) { $qb->andWhere('op.profile_id = :opid')->setParameter('opid', $profile->getProfileId()); } return $qb; }
/** * Check - need set root access or not * * @param \XLite\Model\Profile $profile Profile * * @return boolean */ protected function needSetRootAccess(\XLite\Model\Profile $profile) { $onlyOneRootAdmin = false; if ($profile->getProfileId()) { $cnd = new \XLite\Core\CommonCell(); $cnd->permissions = \XLite\Model\Role\Permission::ROOT_ACCESS; $i = 0; foreach (\XLite\Core\Database::getRepo('XLite\\Model\\Profile')->search($cnd) as $p) { $i++; if ($profile->getProfileId() == $p->getProfileId()) { $onlyOneRootAdmin = true; } } if (1 < $i) { $onlyOneRootAdmin = false; } } return 1 == \XLite\Core\Database::getRepo('XLite\\Model\\Role')->count() || $onlyOneRootAdmin; }
/** * Prepare certain search condition * * @param \Doctrine\ORM\QueryBuilder $queryBuilder Query builder to prepare * @param \XLite\Model\Profile $value Profile * * @return void */ protected function prepareCndProfile(\Doctrine\ORM\QueryBuilder $queryBuilder, \XLite\Model\Profile $value) { if (!empty($value)) { $queryBuilder->andWhere('op.profile_id = :opid')->setParameter('opid', $value->getProfileId()); } }
/** * Set original profile * FIXME: is it really needed? * * @param \XLite\Model\Profile $profile Profile OPTIONAL * * @return void */ public function setOrigProfile(\XLite\Model\Profile $profile = null) { if ($this->getOrigProfile() && $this->getOrigProfile()->getOrder() && (!$profile || $this->getOrigProfile()->getProfileId() != $profile->getProfileId()) && (!$this->getProfile() || $this->getOrigProfile()->getProfileId() != $this->getProfile()->getProfileId())) { $this->getOrigProfile()->setOrder(null); } $this->orig_profile = $profile; }
/** * Bind only profiles with same login * * @param \XLite\Model\Profile $profile Profile * * @return \XLite\Model\QueryBuilder\AQueryBuilder */ public function bindSameLogin(\XLite\Model\Profile $profile) { return $this->andWhere('p.login = :login')->andWhere('p.profile_id != :profileId')->setParameter('login', $profile->getLogin())->setParameter('profileId', $profile->getProfileId() ?: 0); }
/** * {@inheritDoc} */ public function getProfileId() { $this->__initializer__ && $this->__initializer__->__invoke($this, 'getProfileId', array()); return parent::getProfileId(); }
/** * Prepare query for countItemsPurchasedByCustomer() method * * @param integer $productId Product Id * @param \XLite\Model\Profile $profile Customer profile * * @return \Doctrine\ORM\QueryBuilder */ protected function defineCountItemsPurchasedByCustomer($productId, $profile) { $qb = $this->createQueryBuilder('i'); $qb->select('COUNT(i.item_id)')->innerJoin('i.object', 'p')->innerJoin('i.order', 'o')->innerJoin('o.orig_profile', 'profile')->innerJoin('o.paymentStatus', 'ps')->andWhere('p.product_id = :productId')->andWhere('profile.profile_id = :profileId')->andWhere($qb->expr()->in('ps.code', \XLite\Model\Order\Status\Payment::getPaidStatuses()))->setParameter('productId', $productId)->setParameter('profileId', $profile->getProfileId()); return $qb; }
/** * User can access profile only in two cases: * 1) he/she is an admin * 2) its the user's own account * * @param \XLite\Model\Profile $profile Profile to check * * @return boolean */ protected function checkProfileAccessibility(\XLite\Model\Profile $profile) { return $this->isAdmin($this->getProfile()) || $this->getProfile()->getProfileId() == $profile->getProfileId(); }
/** * JS code to redirect back to saved cards page * * @return string */ protected function getRediectCode(\XLite\Model\Profile $profile) { $url = \XLite::getInstance()->getShopUrl(\XLite\Core\Converter::buildUrl('saved_cards', '', array('profile_id' => $profile->getProfileId()), $profile->getPendingZeroAuthInterface())); return '<script type="text/javascript">' . 'window.parent.location = "' . $url . '";' . '</script>'; }
/** * Define query for findUserWithSameLogin() method * * @param \XLite\Model\Profile $profile Profile object * * @return \Doctrine\ORM\QueryBuilder */ protected function defineFindUserWithSameLoginQuery(\XLite\Model\Profile $profile) { $queryBuilder = $this->createQueryBuilder()->andWhere('p.login = :login')->andWhere('p.profile_id != :profileId')->setParameter('login', $profile->getLogin())->setParameter('profileId', $profile->getProfileId() ?: 0)->setMaxResults(1); if ($profile->getOrder()) { $queryBuilder->innerJoin('p.order', 'porder')->andWhere('porder.order_id = :orderId')->setParameter('orderId', $profile->getOrder()->getOrderId()); } else { $queryBuilder->andWhere('p.order is null'); } return $queryBuilder; }