/** * Reorder pages * * @role sort */ public function reorder() { $inst = StaticPage::getInstanceById($this->request->get('id'), StaticPage::LOAD_DATA); $f = new ARSelectFilter(); $handle = new ARFieldHandle('StaticPage', 'position'); if ('down' == $this->request->get('order')) { $f->setCondition(new MoreThanCond($handle, $inst->position->get())); $f->setOrder($handle, 'ASC'); } else { $f->setCondition(new LessThanCond($handle, $inst->position->get())); $f->setOrder($handle, 'DESC'); } $f->setLimit(1); $s = ActiveRecordModel::getRecordSet('StaticPage', $f); if ($s->size()) { $pos = $inst->position->get(); $replace = $s->get(0); $inst->position->set($replace->position->get()); $replace->position->set($pos); $inst->save(); $replace->save(); return new JSONResponse(array('id' => $inst->getID(), 'order' => $this->request->get('order')), 'success'); } else { return new JSONResponse(false, 'failure', $this->translate('_could_not_reorder_pages')); } }
/** * 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 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; }
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 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); }
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 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(); $f->setCondition($this->getParentCondition()); $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 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); } }
private function getRatingTypeFilter(Product $product) { $path = $product->getCategory()->getPathNodeArray(Category::INCLUDE_ROOT_NODE); $filter = new ARSelectFilter(); $filter->setOrder(new ARFieldHandle("Category", "lft"), 'ASC'); $filter->setOrder(new ARFieldHandle(__CLASS__, "position"), 'ASC'); $cond = new EqualsCond(new ARFieldHandle(__CLASS__, "categoryID"), $product->getCategory()->getID()); foreach ($path as $node) { $cond->addOR(new EqualsCond(new ARFieldHandle(__CLASS__, "categoryID"), $node['ID'])); } $filter->setCondition($cond); return $filter; }
/** * 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; } }
public function index() { $owner = ActiveRecordModel::getInstanceByID($this->getOwnerClass(), (int) $this->request->get('id')); $filter = new ARSelectFilter(); $filter->setCondition(new EqualsCond(new ARFieldHandle($this->getModelClass(), $this->getForeignKeyName()), $owner->getID())); $filter->setOrder(new ARFieldHandle($this->getModelClass(), 'position')); $imageArray = ActiveRecordModel::getRecordSetArray($this->getModelClass(), $filter); $response = new ActionResponse(); $response->set('form', $this->buildForm($owner->getID())); $response->set('maxSize', ini_get('upload_max_filesize')); $response->set('ownerId', $owner->getID()); $response->set('images', json_encode($imageArray)); return $response; }
/** * Get a list of existing taxes * * @param boolean $includeDisabled Include disabled taxes in this list * @param TaxRate $doNotBelongToRate Don not belong to specified rate * @param boolean $loadReferencedRecords Load referenced records * * @return ARSet */ public static function getTaxes(DeliveryZone $notUsedInThisZone = null, $loadReferencedRecords = false) { $filter = new ARSelectFilter(); $rates = TaxRate::getRecordSetByDeliveryZone($notUsedInThisZone); if ($rates->getTotalRecordCount() > 0) { $zoneRatesIDs = array(); foreach ($rates as $rate) { $taxIDs[] = $rate->tax->get()->getID(); } $notInCond = new NotINCond(new ARFieldHandle(__CLASS__, "ID"), $taxIDs); $filter->setCondition($notInCond); } return self::getRecordSet($filter, $loadReferencedRecords); }
public static function getInstance(Product $product, Currency $currency) { $filter = new ARSelectFilter(); $cond = new EqualsCond(new ARFieldHandle('ProductPrice', 'productID'), $product->getID()); $cond->addAND(new EqualsCond(new ARFieldHandle('ProductPrice', 'currencyID'), $currency->getID())); $filter->setCondition($cond); $set = parent::getRecordSet('ProductPrice', $filter); if ($set->size() > 0) { $instance = $set->get(0); } else { $instance = self::getNewInstance($product, $currency); } return $instance; }
public function setNextPosition() { $className = get_class($this); if (!is_integer(self::$nextPosition)) { $filter = new ARSelectFilter(); $filter->setCondition(new EqualsCond(new ARFieldHandle($className, 'productID'), $this->product->get()->getID())); $filter->setOrder(new ARFieldHandle($className, 'position'), ARSelectFilter::ORDER_DESC); $filter->setLimit(1); self::$nextPosition = 0; foreach (ActiveRecord::getRecordSet($className, $filter) as $relatedProductGroup) { self::$nextPosition = $relatedProductGroup->position->get(); } } $this->position->set(++self::$nextPosition); }
public static function getRecordSetArrayByIDs($recordIDs, $loadRecordData = false) { if (!is_array($recordIDs)) { $recordIDs = array($recordIDs); } $filter = new ARSelectFilter(); $filter->setCondition(new InCond(new ARFieldHandle(__CLASS__, 'ID'), $recordIDs)); // ActiveRecordModel::getRecordSetArray() will not get required setup and period prices! $rs = ActiveRecordModel::getRecordSet(__CLASS__, $filter); $result = array(); foreach ($rs->toArray() as $item) { $result[$item['ID']] = $item; } return $result; }
public function autoComplete() { $f = new ARSelectFilter(); $f->setLimit(20); $resp = array(); $field = $this->request->get('field'); if ('specField_' == substr($field, 0, 10)) { list($foo, $id) = explode('_', $field); $handle = new ARFieldHandle('EavStringValue', 'value'); $locale = $this->locale->getLocaleCode(); $searchHandle = MultilingualObject::getLangSearchHandle($handle, $locale); $f->setCondition(new EqualsCond(new ARFieldHandle('EavStringValue', 'fieldID'), $id)); $f->mergeCondition(new LikeCond($handle, '%:"' . $this->request->get($field) . '%')); $f->mergeCondition(new LikeCond($searchHandle, $this->request->get($field) . '%')); $f->setOrder($searchHandle, 'ASC'); $results = ActiveRecordModel::getRecordSet('EavStringValue', $f); foreach ($results as $value) { $resp[$value->getValueByLang('value', $locale, MultilingualObject::NO_DEFAULT_VALUE)] = true; } $resp = array_keys($resp); } return new AutoCompleteResponse($resp); }
/** * @role login */ public function index() { $this->addAccountBreadcrumb(); // get recent orders $f = new ARSelectFilter(); $f->setLimit($this->config->get('USER_COUNT_RECENT_ORDERS')); $f->setCondition(new IsNullCond(new ARFieldHandle('CustomerOrder', 'parentID'))); $orders = $this->loadOrders($f); $orderArray = $this->getOrderArray($orders); // get last invoice & unpaid count $pendingInvoiceCount = $this->user->countPendingInvoices(); $lastInvoiceArray = array(); if ($pendingInvoiceCount) { $f = new ARSelectFilter(); $f->setLimit(1); $f->setCondition(new AndChainCondition(array(new IsNotNullCond(new ARFieldHandle('CustomerOrder', 'parentID'))))); $lastInvoiceArray = $this->getOrderArray($this->loadOrders($f)); } // get downloadable items $f = new ARSelectFilter(new EqualsCond(new ARFieldHandle('CustomerOrder', 'userID'), $this->user->getID())); $f->setLimit(self::COUNT_RECENT_FILES); $response = new ActionResponse(); $response->set('orders', $orderArray); $response->set('files', $this->loadDownloadableItems(new ARSelectFilter(new EqualsCond(new ARFieldHandle('CustomerOrder', 'userID'), $this->user->getID())))); // get unread messages ClassLoader::import('application.model.order.OrderNote'); $f = new ARSelectFilter(new EqualsCond(new ARFieldHandle('OrderNote', 'userID'), $this->user->getID())); $f->mergeCondition(new EqualsCond(new ARFieldHandle('OrderNote', 'isAdmin'), 1)); $f->mergeCondition(new EqualsCond(new ARFieldHandle('OrderNote', 'isRead'), 0)); $f->setOrder(new ARFieldHandle('OrderNote', 'ID'), 'DESC'); $response->set('notes', ActiveRecordModel::getRecordSetArray('OrderNote', $f, array('User'))); // feedback/confirmation message that was stored in session by some other action $response->set('userConfirm', $this->session->pullValue('userConfirm')); $response->set('pendingInvoiceCount', $pendingInvoiceCount); $response->set('lastInvoiceArray', $lastInvoiceArray); return $response; }
public function __construct(LiveCart $application, ARSelectFilter $filter, $modelClass = false, $columnTypes = array()) { $this->application = $application; $this->modelClass = $modelClass; $this->filter = $filter; $this->columnTypes = $columnTypes; $request = $this->application->getRequest(); // set recordset boundaries (limits) $filter->setLimit($request->get('page_size', 10), $request->get('offset', 0)); // set order if ($request->isValueSet('sort_col')) { $handle = $this->getFieldHandle($request->get('sort_col'), self::SORT_HANDLE); if ($handle) { $filter->setOrder($handle, $request->get('sort_dir')); } } // apply filters $filters = $request->get('filters'); if (!is_array($filters)) { $filters = (array) json_decode($request->get('filters')); } $conds = array(); if ($filter->getCondition()) { $conds[] = $filter->getCondition(); } foreach ($filters as $field => $value) { if (!strlen($value)) { continue; } $value = urldecode($value); $handle = $this->getFieldHandle($field, self::FILTER_HANDLE); if ($handle instanceof EavFieldCommon) { continue; } else { if (!is_array($handle) && !is_null($handle) && !$handle instanceof ARExpressionHandle) { $fieldInst = $this->getFieldInstance($field); if ($fieldInst && ($fieldInst->getDataType() instanceof ARNumeric || $handle->getField()->getDataType() instanceof ARNumeric)) { $value = preg_replace('/[ ]{2,}/', ' ', $value); $constraints = $fieldInst->getDataType() instanceof ARNumeric ? explode(' ', $value) : array($value); foreach ($constraints as $c) { list($operator, $value) = $this->parseOperatorAndValue($c); if (!is_numeric($value) && $fieldInst->getDataType() instanceof ARNumeric) { continue; } $conds[] = new OperatorCond($handle, $value, $operator); } } else { if ($fieldInst && $fieldInst->getDataType() instanceof ARPeriod) { if (substr($value, 0, 10) == 'daterange ') { $value = str_replace('daterange ', '', $value); list($from, $to) = explode('|', $value); $from = trim($from); $to = trim($to); // convert // 2010-9-1 to 2010-09-01 ( +first or last minute of day) // unset dates to 'inf' (meaning ingnore condition) if ($from == '') { $from = 'inf'; } else { list($y, $m, $d) = explode('-', $from); $from = $y . '-' . str_pad($m, 2, '0', STR_PAD_LEFT) . '-' . str_pad($d, 2, '0', STR_PAD_LEFT) . ' 00:00:00'; } if ($to == '') { $to = 'inf'; } else { list($y, $m, $d) = explode('-', $to); $to = $y . '-' . str_pad($m, 2, '0', STR_PAD_LEFT) . '-' . str_pad($d, 2, '0', STR_PAD_LEFT) . ' 23:59:59'; } } else { list($from, $to) = explode(' | ', $value); } $cond = null; // from condition if ('inf' != $from) { $cond = new EqualsOrMoreCond($handle, getDateFromString($from)); } // to condition if ('now' != $to && 'inf' != $to) { $condTo = new EqualsOrLessCond($handle, getDateFromString($to)); if ($cond) { $cond->addAnd($condTo); } else { $cond = $condTo; } } if ($cond) { $conds[] = $cond; } } else { $conds[] = new LikeCond($handle, '%' . $value . '%'); } } } else { if (is_array($handle)) { $cond = null; foreach ($handle as $h) { $c = new LikeCond($h, '%' . $value . '%'); if (!$cond) { $cond = $c; } else { $cond->addOR($c); } } $conds[] = $cond; } else { if (array_key_exists($field, $this->columnTypes)) { $type = $this->columnTypes[$field]['type']; } else { $type = null; } $value = preg_replace('/[ ]{2,}/', ' ', $value); switch ($type) { case 'numeric': $constraints = explode(' ', $value); foreach ($constraints as $c) { list($operator, $value) = $this->parseOperatorAndValue($c); if (!is_numeric($value)) { continue; } $having[] = new OperatorCond($handle, $value, $operator); } break; default: $having[] = eq(new ARExpressionHandle($field), $value); } } } } } // apply IDs to filter if ($request->get('selectedIDs') || $request->get('isInverse')) { $selectedIDs = json_decode($request->get('selectedIDs')); if ($selectedIDs) { if ((bool) $request->get('isInverse')) { $idcond = new NotINCond(new ARFieldHandle($modelClass, 'ID'), $selectedIDs); } else { $idcond = new INCond(new ARFieldHandle($modelClass, 'ID'), $selectedIDs); } $conds[] = $idcond; } else { if (!(bool) $request->get('isInverse')) { $idcond = new EqualsCond(new ARExpressionHandle(1), 2); $conds[] = $idcond; } } } if ($conds) { $filter->setCondition(new AndChainCondition($conds)); } if (!empty($having)) { $filter->setHavingCondition(new AndChainCondition($having)); } }
/** * Load service rates from known service * * @param ShippingService $service * @param bool $loadReferencedRecords * * @return ARSet */ public static function getRecordSetByService(ShippingService $service, $loadReferencedRecords = false) { $filter = new ARSelectFilter(); $filter->setCondition(new EqualsCond(new ARFieldHandle(__CLASS__, "shippingServiceID"), $service->getID())); return self::getRecordSet($filter, $loadReferencedRecords); }
private function getBillingAddressFilter($defaultFirst = true) { $f = new ARSelectFilter(); $f->setCondition(new EqualsCond(new ARFieldHandle('BillingAddress', 'userID'), $this->getID())); if (!$defaultFirst) { $f->setOrder(new ARExpressionHandle('ID = ' . $this->defaultBillingAddress->get()->getID())); } return $f; }
private static function getARSelectFilterByOrderedItem(OrderedItem $item) { $filter = new ARSelectFilter(); $filter->setCondition(new EqualsCond(new ARFieldHandle(__CLASS__, 'orderedItemID'), $item->getID())); return $filter; }
public function getRecurringProductPeriodById($recurringID, $returnDefaultIfNotFound = false) { $filter = new ARSelectFilter(); $filter->setCondition(new EqualsCond(new ARFieldHandle('RecurringProductPeriod', 'ID'), $recurringID)); $rs = RecurringProductPeriod::getRecordSetByProduct($this, $filter); if ($rs->size() == 0) { return $returnDefaultIfNotFound ? $this->getDefaultRecurringProductPeriod() : null; } return $rs->shift(); }
private static function getFilesByProductFilter(Product $product) { $filter = new ARSelectFilter(); $filter->joinTable('ProductFileGroup', 'ProductFile', 'ID', 'productFileGroupID'); $filter->setOrder(new ARFieldHandle("ProductFileGroup", "position"), ARSelectFilter::ORDER_ASC); $filter->setCondition(new EqualsCond(new ARFieldHandle(__CLASS__, 'productID'), $product->getID())); $filter->setOrder(new ARFieldHandle(__CLASS__, 'position'), ARSelectFilter::ORDER_ASC); return $filter; }
private function getSelectFilter($class) { if ('Product' == $class) { $cat = Category::getRootNode(); $f = $cat->getProductFilter(new ARSelectFilter()); $f->mergeCondition($cat->getProductCondition(true)); $f->joinTable('Category', 'Product', 'ID', 'categoryID'); return $f; } $f = new ARSelectFilter(); $f->setOrder(new ARFieldHandle($class, 'ID')); if ('StaticPage' != $class) { $f->setCondition(new EqualsCond(new ARFieldHandle($class, 'isEnabled'), true)); } if ('Category' == $class) { $f->mergeCondition(new NotEqualsCond(new ARFieldHandle($class, 'ID'), Category::ROOT_ID)); } return $f; }
private function getFilesFilter() { $filter = new ARSelectFilter(); $filter->setCondition(new EqualsCond(new ARFieldHandle('ProductFile', "productFileGroupID"), $this->getID())); return $filter; }
/** * @role mass */ public function processMass() { ClassLoader::import('application.helper.massAction.UserMassActionProcessor'); $filter = new ARSelectFilter(); $id = (int) $this->request->get('id'); if ($id > 0) { $filter->setCondition(new EqualsCond(new ARFieldHandle('User', 'userGroupID'), $id)); } else { if ($id == -1) { $filter->setCondition(new IsNullCond(new ARFieldHandle('User', 'userGroupID'))); } else { if ($id != -2) { return; } } } $mass = new UserMassActionProcessor(new ActiveGrid($this->application, $filter, 'User')); $mass->setCompletionMessage($this->translate('_mass_action_succeed')); return $mass->process(User::LOAD_REFERENCES); }
/** * Load delivery services record by Delivery zone * * @param DeliveryZone $deliveryZone * @param bool $loadReferencedRecords * * @return ARSet */ public static function getByDeliveryZone(DeliveryZone $deliveryZone = null, $loadReferencedRecords = false) { $filter = new ARSelectFilter(); $filter->setOrder(new ARFieldHandle(__CLASS__, "position"), 'ASC'); if (!$deliveryZone) { $deliveryZone = DeliveryZone::getDefaultZoneInstance(); } if ($deliveryZone->isDefault()) { $filter->setCondition(new IsNullCond(new ARFieldHandle(__CLASS__, "deliveryZoneID"))); } else { $filter->setCondition(new EqualsCond(new ARFieldHandle(__CLASS__, "deliveryZoneID"), $deliveryZone->getID())); } $services = self::getRecordSet($filter, $loadReferencedRecords); if ($deliveryZone->isDefault()) { foreach ($services as $service) { $service->deliveryZone->set($deliveryZone); } } return $services; }
/** * @param DeliveryZone $zone * * @return ARSet */ public static function getRecordSetByZone(DeliveryZone $zone, $loadReferencedRecords = false) { $filter = new ARSelectFilter(); $filter->setCondition(new EqualsCond(new ARFieldHandle(__CLASS__, 'deliveryZoneID'), $zone->getID())); return self::getRecordSet(__CLASS__, $filter, $loadReferencedRecords); }