private function getSubscriptionStatusImpl($forceRecheck) { if ($this->isRecurring->get() == false) { return false; // not even a recurring order. } $rebillsLeft = $this->rebillsLeft->get(); if ($rebillsLeft == -1 || $rebillsLeft > 0) { return self::ACTIVE_SUBSCRIPTION; } // if order is invoice $filter = new ARSelectFilter(); $filter->setCondition(new EqualsCond(new ARFieldHandle(__CLASS__, 'parentID'), $this->getID())); $filter->addField('(SELECT SUM(IF(CustomerOrder.rebillsLeft >= 0, CustomerOrder.rebillsLeft, 0 )))', '', 'rebillsLeft'); $filter->addField('(SELECT SUM(IF(CustomerOrder.rebillsLeft = -1, 1, 0 )))', '', 'isInfinite'); $filter->setGrouping(new ARFieldHandle(__CLASS__, 'parentID')); $data = ActiveRecordModel::getRecordSetArray(__CLASS__, $filter); if (count($data) == 1 && ($data[0]['isInfinite'] > 0 || $data[0]['rebillsLeft'] > 0)) { return self::ACTIVE_SUBSCRIPTION; } return false; }
private function getOrderArray(ARSet $orders) { $orderArray = $orders->toArray(); $ids = array(); foreach ($orderArray as $key => $order) { $ids[$order['ID']] = $key; } ClassLoader::import('application.model.order.OrderNote'); $f = new ARSelectFilter(new INCond(new ARFieldHandle('OrderNote', 'orderID'), empty($ids) ? array(-1) : array_keys($ids))); $f->mergeCondition(new EqualsCond(new ARFieldHandle('OrderNote', 'isAdmin'), 1)); $f->mergeCondition(new EqualsCond(new ARFieldHandle('OrderNote', 'isRead'), 0)); $f->setGrouping(new ARFieldHandle('OrderNote', 'orderID')); $query = new ARSelectQueryBuilder(); $query->setFilter($f); $query->includeTable('OrderNote'); $query->removeFieldList(); $query->addField('COUNT(*)', null, 'cnt'); $query->addField('orderID'); foreach (ActiveRecordModel::getDataBySQL($query->getPreparedStatement(ActiveRecord::getDBConnection())) as $res) { $orderArray[$ids[$res['orderID']]]['unreadMessageCount'] = $res['cnt']; } return $orderArray; }
private function getActiveDates() { $date = date("Y-m-d"); $f = new ARSelectFilter(); $f->setCondition(new AndChainCondition(array(gte(f('EyeExamSchedule.date'), $date), isnull(f('EyeExamSchedule.eyeExamRequestID'))))); $f->setGrouping(f('EyeExamSchedule.date')); $f->setLimit(self::ACTIVE_DATES_LIMIT); $timeList = ActiveRecordModel::getRecordSetFields('EyeExamSchedule', $f, array('date')); // as result is an array of arrays with single value $activeTimes = array(); foreach ($timeList as $id) { $activeTimes[] = $id['date']; } return $activeTimes; }