public function products() { $this->setLayout('empty'); set_time_limit(0); $response = new XMLResponse(); $filter = new ARSelectFilter(); $filter->setOrder(f('Product.dateCreated'), ARSelectFilter::ORDER_DESC); $categoryId = $this->getRequest()->get('id'); if (preg_match('/^\\d+$/', $categoryId)) { $this->shouldBeEnabledFeed('CATEGORY_PRODUCTS'); $category = Category::getInstanceById($categoryId, Category::LOAD_DATA); $filter = new ProductFilter($category, $filter); } else { $this->shouldBeEnabledFeed('ALL_PRODUCTS'); $category = Category::getRootNode(true); $filter = new ProductFilter($category, $filter); $filter->includeSubCategories(); } $feed = new ProductFeed($filter); $feed->setFlush(); $feed->setLimit($this->config->get('NUMBER_OF_PRODUCTS_TO_INCLUDE')); $response->set('feed', $feed); $response->set('category', $category->toArray()); return $response; }
public function getSelectFilter($searchTerm) { $c = new ARExpressionHandle($this->getWeighedSearchCondition($this->getOption('BACKEND_QUICK_SEARCH') ? array('title' => 1) : array('title' => 4, 'text' => 2, 'moreText' => 1), $searchTerm)); $f = new ARSelectFilter(new MoreThanCond($c, 0)); $f->setOrder($c, 'DESC'); return $f; }
public function add_to_cart() { $request = $this->application->getRequest(); $productID = $request->get('productID'); $customerOrderID = $request->get('customerOrderID'); $count = $request->get('count'); if (!isset($customerOrderID) && intval($customerOrderID == 0)) { throw new Exception('Order ID is required'); } $order = CustomerOrder::getInstanceById($customerOrderID); $order->load(true); $order->loadAll(); //throw new Exception('order : ' . $order->getTotal(true)); $product = Product::getInstanceByID($productID, true, true); $product->load(true); //$variations = !$product->parent->get() ? $product->getVariationData($this->application) : array('1','2'); //throw new Exception('variation ' . json_encode($variations) . ' parent : ' . $product->getID() . ' productID ' . $productID); if (!$product->isAvailable()) { throw new Exception('Product ' . $productID . ' is not Available '); } else { if ($count < $product->getMinimumQuantity()) { $count = $product->getMinimumQuantity(); } ActiveRecordModel::beginTransaction(); $item = $order->addProduct($product, $count); if ($item instanceof OrderedItem) { if ($order->isMultiAddress->get()) { $item->save(); } } if ($product->parent->get()) { $order->mergeItems(); } else { $item->save(); } //$order->mergeItems(); $order->getTotal(true); $order->totalAmount->set($order->getTotal(true)); $order->getTaxAmount(); $order->save(true); ActiveRecordModel::commit(); } $response = new LiveCartSimpleXMLElement('<response datetime="' . date('c') . '"></response>'); if ($item->getID() > 0) { $parser = $this->getParser(); $apiFieldNames = $parser->getApiFieldNames(); $selFilter = new ARSelectFilter(); $selFilter->mergeCondition(new EqualsCond(new ARFieldHandle('OrderedItem', 'ID'), $item->getID())); $orderedItem = OrderedItem::getRecordSetArray('OrderedItem', $selFilter); while ($item = array_shift($orderedItem)) { $orderedItemXml = $response->addChild('ordered_item'); foreach ($item as $k => $v) { if (in_array($k, $apiFieldNames)) { $orderedItemXml->addChild($k, htmlentities($v)); } } } } return new SimpleXMLResponse($response); }
public function filter($emptyListIsException = false) { $request = $this->application->getRequest(); $parser = $this->getParser(); $apiFieldNames = $parser->getApiFieldNames(); $parser->loadDataInRequest($request); $f = new ARSelectFilter(); $id = $request->get('ID'); if (!empty($id)) { $f->mergeCondition(new EqualsCond(new ARFieldHandle('ProductVariation', 'ID'), $id)); } else { throw new Exception('Product variation ID is required'); } $product_variations = ActiveRecordModel::getRecordSetArray('ProductVariation', $f); $response = new LiveCartSimpleXMLElement('<response datetime="' . date('c') . '"></response>'); if ($emptyListIsException && count($product_variations) == 0) { throw new Exception('Product variation not found'); } while ($variation = array_shift($product_variations)) { $xml = $response->addChild('product_variation'); foreach ($variation as $k => $v) { if (in_array($k, $apiFieldNames)) { $xml->addChild($k, $v); } } } return new SimpleXMLResponse($response); }
public function getSelectFilter($searchTerm) { $c = new ARExpressionHandle($this->getWeighedSearchCondition(array('name' => 1), $searchTerm)); $f = new ARSelectFilter(new MoreThanCond($c, 0)); $f->setOrder($c, 'DESC'); return $f; }
/** * Main settings page */ public function index() { $f = new ARSelectFilter(); $f->setOrder(new ARFieldHandle('StaticPage', 'position')); $f->setOrder(new ARFieldHandle('StaticPage', 'parentID')); $s = ActiveRecordModel::getRecordSetArray('StaticPage', $f); $pages = array(); foreach ($s as $page) { $pointers[$page['ID']] = array('title' => $page['title_lang'], 'id' => $page['ID'], 'parentID' => $page['parentID']); } foreach ($pointers as $page) { if ($page['parentID'] && !empty($pointers[$page['parentID']])) { $root =& $pointers[$page['parentID']]; } else { $root =& $pages; } $root['children'][] =& $pointers[$page['id']]; } $response = new ActionResponse(); $response->set('pages', json_encode($pages)); $form = $this->getForm(); $page = StaticPage::getNewInstance(); $page->getSpecification()->setFormResponse($response, $form); $response->set('form', $form); $response->set('page', $page->toArray()); return $response; }
public function index() { $this->addIndexBreadCrumb(); $f = new ARSelectFilter(new EqualsCond(new ARFieldHandle('NewsPost', 'isEnabled'), true)); $f->setOrder(new ARFieldHandle('NewsPost', 'position'), 'DESC'); return new ActionResponse('news', ActiveRecordModel::getRecordSetArray('NewsPost', $f)); }
public function index() { // get filter to select manufacturers of active products only $rootCat = Category::getRootNode(); $f = new ARSelectFilter(); $productFilter = new ProductFilter($rootCat, $f); $ids = $counts = array(); foreach (ActiveRecordModel::getDataBySQL('SELECT DISTINCT(manufacturerID), COUNT(*) AS cnt FROM Product ' . $f->createString() . ' GROUP BY manufacturerID') as $row) { $ids[] = $row['manufacturerID']; $counts[$row['manufacturerID']] = $row['cnt']; } $f = new ARSelectFilter(new InCond(new ARFieldHandle('Manufacturer', 'ID'), $ids)); $f->mergeCondition(new NotEqualsCond(new ARFieldHandle('Manufacturer', 'name'), '')); $f->setOrder(new ARFieldHandle('Manufacturer', 'name')); $manufacturers = ActiveRecordModel::getRecordSetArray('Manufacturer', $f); foreach ($manufacturers as &$manufacturer) { $manufacturer['url'] = $this->getManufacturerFilterUrl($manufacturer); } $this->addBreadCrumb($this->translate('_manufacturers'), ''); $response = new ActionResponse(); $response->setReference('manufacturers', $manufacturers); $response->set('counts', $counts); $response->set('rootCat', $rootCat->toArray()); return $response; }
public function filter($emptyListIsException = false) { $request = $this->application->getRequest(); $parser = $this->getParser(); $apiFieldNames = $parser->getApiFieldNames(); $parser->loadDataInRequest($request); $f = new ARSelectFilter(); $orderID = $request->get('orderID'); if (intval($orderID) > 0) { $f->mergeCondition(new EqualsCond(new ARFieldHandle('Shipment', 'orderID'), $orderID)); } else { throw new Exception("Order ID is required"); } $shipment = ActiveRecordModel::getRecordSetArray('Shipment', $f); $response = new LiveCartSimpleXMLElement('<response datetime="' . date('c') . '"></response>'); if ($emptyListIsException && count($shipment) == 0) { throw new Exception('Shipment not found'); } while ($ser = array_shift($shipment)) { $xmlShipment = $response->addChild('shipment'); foreach ($ser as $k => $v) { if (in_array($k, $apiFieldNames)) { $xmlShipment->addChild($k, $v); } } } return new SimpleXMLResponse($response); }
public function filter($emptyListIsException = false) { $request = $this->application->getRequest(); $parser = $this->getParser(); $apiFieldNames = $parser->getApiFieldNames(); $parser->loadDataInRequest($request); $f = new ARSelectFilter(); $ID = $request->get('ID'); if (!empty($countryID)) { $f->mergeCondition(new EqualsCond(new ARFieldHandle('DeliveryZoneCountry', 'ID'), $ID)); } $countryZones = ActiveRecordModel::getRecordSetArray('DeliveryZoneCountry', $f); $response = new LiveCartSimpleXMLElement('<response datetime="' . date('c') . '"></response>'); if ($emptyListIsException && count($countryZones) == 0) { throw new Exception('DeliveryZoneCountry not found'); } while ($country_zone = array_shift($countryZones)) { $xmlCountryZone = $response->addChild('delivery_zone_country'); foreach ($country_zone as $k => $v) { if (in_array($k, $apiFieldNames)) { $xmlCountryZone->addChild($k, $v); } } } return new SimpleXMLResponse($response); }
public function filter($emptyListIsException = false) { $request = $this->application->getRequest(); $parser = $this->getParser(); $apiFieldNames = $parser->getApiFieldNames(); $parser->loadDataInRequest($request); $f = new ARSelectFilter(); $id = $request->get('ID'); if (intval($id) > 0) { $f->mergeCondition(new EqualsCond(new ARFieldHandle('NewsPost', 'ID'), $id)); } $f->setOrder(new ARExpressionHandle('NewsPost.ID'), 'DESC'); $newspost = ActiveRecordModel::getRecordSetArray('NewsPost', $f); $response = new LiveCartSimpleXMLElement('<response datetime="' . date('c') . '"></response>'); if ($emptyListIsException && count($newspost) == 0) { throw new Exception('News post not found'); } while ($category = array_shift($newspost)) { $xmlNewsPost = $response->addChild('newspost'); foreach ($category as $k => $v) { if (in_array($k, $apiFieldNames)) { $xmlNewsPost->addChild($k, htmlentities($v)); } } } return new SimpleXMLResponse($response); }
public function filter($emptyListIsException = false) { $request = $this->application->getRequest(); $parser = $this->getParser(); $apiFieldNames = $parser->getApiFieldNames(); $parser->loadDataInRequest($request); $f = new ARSelectFilter(); $id = $request->get('ID'); $parentNodeID = $request->get('parentNodeID'); if (intval($id) > 0) { $f->mergeCondition(new EqualsCond(new ARFieldHandle('Category', 'ID'), $id)); } if (intval($parentNodeID) > 0) { $f->mergeCondition(new EqualsCond(new ARFieldHandle('Category', 'parentNodeID'), $parentNodeID)); } $f->setOrder(MultiLingualObject::getLangOrderHandle(new ARFieldHandle('Category', 'name'))); $categories = ActiveRecordModel::getRecordSetArray('Category', $f); $response = new LiveCartSimpleXMLElement('<response datetime="' . date('c') . '"></response>'); if ($emptyListIsException && count($categories) == 0) { throw new Exception('Category not found'); } while ($category = array_shift($categories)) { $xmlCategory = $response->addChild('category'); foreach ($category as $k => $v) { if (in_array($k, $apiFieldNames)) { $xmlCategory->addChild($k, htmlentities($v)); } } } return new SimpleXMLResponse($response); }
public function index() { $f = new ARSelectFilter(); $f->setOrder(new ARFieldHandle('NewsPost', 'position'), 'DESC'); $response = new ActionResponse('newsList', ActiveRecordModel::getRecordSetArray('NewsPost', $f)); $response->set('form', $this->buildForm()); return $response; }
public static function getRecordCount($locale = null) { $filter = new ARSelectFilter(); if ($locale) { $filter->mergeCondition(eq(f(__CLASS__ . '.locale'), $locale)); } return ActiveRecordModel::getRecordCount(__CLASS__, $filter); }
private static function getProductGroupsFilter(Product $product, $type) { $filter = new ARSelectFilter(); $filter->setOrder(new ARFieldHandle("ProductRelationshipGroup", "position"), 'ASC'); $filter->setCondition(new EqualsCond(new ARFieldHandle("ProductRelationshipGroup", "productID"), $product->getID())); $filter->mergeCondition(new EqualsCond(new ARFieldHandle("ProductRelationshipGroup", "type"), $type)); return $filter; }
public function isValid($value) { ClassLoader::import('application.model.user.User'); $filter = new ARSelectFilter(); $cond = new EqualsCond(new ARFieldHandle('User', 'email'), $value); $filter->setCondition($cond); return ActiveRecordModel::getRecordCount('User', $filter) == 0; }
/** * Creates a select filter for fields groups * @return ARSelectFilter */ private function getGroupFilter() { $filter = new ARSelectFilter(new EqualsCond(new ARFieldHandle('EavFieldGroup', 'classID'), $this->classID)); if ($this->stringIdentifier) { $filter->mergeCondition(new EqualsCond(new ARFieldHandle('EavFieldGroup', 'stringIdentifier'), $this->stringIdentifier)); } $filter->setOrder(new ARFieldHandle('EavFieldGroup', 'position')); return $filter; }
public static function getRecordSetByOrder(CustomerOrder $order, ARSelectFilter $filter = null, $loadReferencedRecords = false) { if (!$filter) { $filter = new ARSelectFilter(); } $filter->mergeCondition(new EqualsCond(new ARFieldHandle(__CLASS__, 'orderID'), $order->getID())); $filter->setOrder(new ARFieldHandle(__CLASS__, 'time'), ARSelectFilter::ORDER_DESC); return self::getRecordSet($filter, $loadReferencedRecords); }
public function getUseCount() { $cond = $this->discountCondition->get(); $f = new ARSelectFilter(new EqualsCond(new ARFieldHandle('CustomerOrder', 'isFinalized'), true)); if ($cond->couponLimitType->get() == DiscountCondition::COUPON_LIMIT_USER && $this->order->get()->user->get()) { $f->mergeCondition(new EqualsCond(new ARFieldHandle('CustomerOrder', 'userID'), $this->order->get()->user->get()->getID())); } return $cond->getRelatedRecordCount(__CLASS__, $f, array('CustomerOrder')); }
public function getSpecificationFieldSet($loadReferencedRecords = false) { $f = new ARSelectFilter(new EqualsCond(new ARFieldHandle($this->getFieldClass(), 'classID'), EavField::getClassID($this->owner))); if ($this->owner->getStringIdentifier()) { $f->mergeCondition(new EqualsCond(new ARFieldHandle('EavField', 'stringIdentifier'), $this->owner->getStringIdentifier())); } $f->setOrder(new ARFieldHandle($this->getFieldClass(), 'position')); return ActiveRecordModel::getRecordSet($this->getFieldClass(), $f, $loadReferencedRecords); }
public function loadItems() { if (empty($this->items) && $this->isExistingRecord()) { $filter = new ARSelectFilter(); $filter->setCondition(new EqualsCond(new ARFieldHandle('OrderedItem', 'shipmentID'), $this->getID())); foreach (OrderedItem::getRecordSet('OrderedItem', $filter, array('Product', 'Category', 'DefaultImage' => 'ProductImage')) as $item) { $this->items[] = $item; } } }
public static function getInstanceByDateTime($date, $time) { $f = new ARSelectFilter(); $f->setCondition(new AndChainCondition(array(eq(f('EyeExamSchedule.date'), $date), eq(f('EyeExamSchedule.time'), $time), isnull(f('EyeExamSchedule.eyeExamRequestID'))))); $s = self::getRecordSet('EyeExamSchedule', $f); if (!$s->size()) { return null; } return $s->get(0); }
/** * Load rates from known delivery zone * * @param DeliveryZone $deliveryZone * @param bool $loadReferencedRecords * * @return ARSet */ public static function getRecordSetByDeliveryZone(DeliveryZone $deliveryZone = null, $loadReferencedRecords = array('Tax')) { $filter = new ARSelectFilter(); if (!$deliveryZone || $deliveryZone->isDefault()) { $filter->setCondition(new IsNullCond(new ARFieldHandle(__CLASS__, "deliveryZoneID"))); } else { $filter->setCondition(new EqualsCond(new ARFieldHandle(__CLASS__, "deliveryZoneID"), $deliveryZone->getID())); } return self::getRecordSet($filter, $loadReferencedRecords); }
public static function getInstanceByToken($token) { $filter = new ARSelectFilter(); $filter->setCondition(new EqualsCond(new ARFieldHandle(__CLASS__, 'token'), $token)); $recordSet = ActiveRecordModel::getRecordSet(__CLASS__, $filter); if (!$recordSet->size()) { return null; } else { return $recordSet->get(0); } }
protected function insert() { // get max position $f = new ARSelectFilter(new EqualsCond(new ARFieldHandle(__CLASS__, 'categoryID'), $this->getCategory()->getID())); $f->setOrder(new ARFieldHandle(get_class($this), 'position'), 'DESC'); $f->setLimit(1); $rec = ActiveRecord::getRecordSetArray(get_class($this), $f); $position = is_array($rec) && count($rec) > 0 ? $rec[0]['position'] + 1 : 1; $this->position->set($position); return parent::insert(); }
public static function getUserAddress($className, $addressID, User $user) { $f = new ARSelectFilter(); $f->setCondition(new EqualsCond(new ARFieldHandle($className, 'ID'), $addressID)); $f->mergeCondition(new EqualsCond(new ARFieldHandle($className, 'userID'), $user->getID())); $s = ActiveRecordModel::getRecordSet($className, $f, array('UserAddress')); if (!$s->size()) { throw new ARNotFoundException($className, $addressID); } return $s->get(0); }
public static function getInstanceByName($name) { $filter = new ARSelectFilter(); $filter->setCondition(new EqualsCond(new ARFieldHandle('Manufacturer', 'name'), $name)); $filter->setLimit(1); $set = ActiveRecordModel::getRecordSet('Manufacturer', $filter); if ($set->size() > 0) { return $set->get(0); } else { return self::getNewInstance($name); } }
protected function insert() { $f = new ARSelectFilter(new EqualsCond(new ARFieldHandle('SearchLog', 'keywords'), $this->keywords->get())); $f->mergeCondition(new EqualsCond(new ARFieldHandle('SearchLog', 'ip'), $this->ip->get())); if (!ActiveRecordModel::getRecordCount(__CLASS__, $f)) { parent::insert(); $update = new ARUpdateFilter(); $update->addModifier('time', new ARExpressionHandle('NOW()')); $update->setCondition(new EqualsCond(new ARFieldHandle(__CLASS__, 'ID'), $this->getID())); ActiveRecordModel::updateRecordSet(__CLASS__, $update); } }
/** * Get CustomerOrder instance from session * * @return CustomerOrder */ public static function getOrder() { if (self::$instance) { return self::$instance; } $session = new Session(); $id = $session->get('CustomerOrder'); if ($id) { try { $instance = CustomerOrder::getInstanceById($id, true); if (!$instance->getOrderedItems()) { $instance->loadItems(); } $instance->isSyncedToSession = true; } catch (ARNotFoundException $e) { unset($instance); } } if (!isset($instance)) { $userId = SessionUser::getUser()->getID(); // get the last unfinalized order by this user if ($userId > 0) { $f = new ARSelectFilter(new EqualsCond(new ARFieldHandle('CustomerOrder', 'userID'), $userId)); $f->mergeCondition(new NotEqualsCond(new ARFieldHandle('CustomerOrder', 'isFinalized'), true)); $f->setOrder(new ARFieldHandle('CustomerOrder', 'ID'), 'DESC'); $f->setLimit(1); $orders = ActiveRecordModel::getRecordSet('CustomerOrder', $f); if ($orders->size()) { $instance = $orders->get(0); } } } if (!isset($instance)) { $instance = CustomerOrder::getNewInstance(User::getNewInstance(0)); $instance->user->set(NULL); } if (!$instance->user->get() && SessionUser::getUser()->getID() > 0) { $instance->setUser(SessionUser::getUser()); $instance->save(); } if ($instance->isFinalized->get()) { $session->unsetValue('CustomerOrder'); return self::getOrder(); } // fixes issue when trying to add OrderedItem to unsaved(without ID) CustomerOrder. // ~ but i don't know if returning unsaved CustomerOrder is expected behaviour. if ($instance->isExistingRecord() == false) { $instance->save(true); } self::setOrder($instance); return $instance; }
/** * Provides an additional verification that state belongs to the particular country * * @return ActiveRecord */ public static function getStateByIDAndCountry($stateID, $countryID) { $f = new ARSelectFilter(); $f->setCondition(new EqualsCond(new ARFieldHandle('State', 'ID'), $stateID)); $f->mergeCondition(new EqualsCond(new ARFieldHandle('State', 'countryID'), $countryID)); $f->setLimit(1); $states = ActiveRecordModel::getRecordSet('State', $f); if ($states) { return $states->get(0); } else { return null; } }