protected function fetchConditions() { parent::fetchConditions(); $filter_abandoned = $this->getState('filter.abandoned', 0); if ($filter_abandoned) { // abandoned carts are only valid when they have items in them $this->setCondition('items', array('$not' => array('$size' => 0))); // only users $this->setCondition('user_id', array('$nin' => array('', null))); $settings = \Shop\Models\Settings::fetch(); $abandoned_time = $settings->get('abandoned_cart_time') * 60; // set starting date and time for abandoned carts? $filter_abandoned_datetime = $this->getState('filter.abandoned.datetime'); if (!empty($filter_abandoned_datetime)) { $abandoned_time = $filter_abandoned_datetime - $abandoned_time; } else { // or use current timestamp $abandoned_time = time() - $abandoned_time; } $this->setCondition('metadata.last_modified.time', array('$lt' => $abandoned_time)); // only newly abandoned carts $filter_only_new = $this->getState('filter.abandoned_only_new', 0); if ($filter_only_new) { // TODO OR NULL $this->setCondition('abandoned_notifications', array('$size' => 0)); } } }