public static function createSubscriptions($dbSubscriptions) { if (!is_array($dbSubscriptions)) { $dbSubscriptions = array($dbSubscriptions); } $result = array(); foreach ($dbSubscriptions as $dbSubscription) { $attributes = $dbSubscription->getAttributes(); unset($attributes['id']); unset($attributes['queue_id']); unset($attributes['is_deleted']); $subscription = new NfySubscription(); $subscription->setAttributes($attributes); foreach ($dbSubscription->categories as $category) { if ($category->is_exception) { $subscription->categories[] = $category->category; } else { $subscription->exceptions[] = $category->category; } } $result[] = $subscription; } return $result; }
/** * @inheritdoc */ public function subscribe($subscriber_id, $label = null, $categories = null, $exceptions = null) { if ($this->blocking) { if ($exceptions !== null) { throw new CException('Not supported. Redis queues does not support pattern exceptions in blocking (pubsub) mode.'); } foreach ($categories as $category) { if (($c = rtrim($category, '*')) !== $category) { $this->redis->psubscribe($category); } else { $this->redis->subscribe($category); } } return; } $now = new DateTime('now', new DateTimezone('UTC')); $subscription = new NfySubscription(); $subscription->setAttributes(array('subscriber_id' => $subscriber_id, 'label' => $label, 'categories' => $categories, 'exceptions' => $exceptions !== null ? $exceptions : array(), 'created_on' => $now->format('Y-m-d H:i:s'))); $this->redis->hset($this->id . self::SUBSCRIPTIONS_HASH, $subscriber_id, serialize($subscription)); }