where('task_id', $data['task_id']) ->findOne(); if(empty($task_subscriber)) $task_subscriber = self::create(); $task_subscriber->task_id = $data['task_id']; $task_subscriber->subscriber_id = $data['subscriber_id']; $task_subscriber->processed = self::STATUS_TO_PROCESS; $task_subscriber->save(); return $task_subscriber; } static function addSubscribers($task_id, array $subscriber_ids) { foreach($subscriber_ids as $subscriber_id) { self::createOrUpdate(array( 'task_id' => $task_id, 'subscriber_id' => $subscriber_id )); } } static function getToProcessCount($task_id) { return self::getCount($task_id, false); } static function getProcessedCount($task_id) { return self::getCount($task_id, true); } static function getTotalCount($task_id) { return self::getCount($task_id); } private static function getCount($task_id, $processed = null) { $orm = self::where('task_id', $task_id); if(!is_null($processed)) { $orm->where( 'processed', ($processed) ? self::STATUS_PROCESSED : self::STATUS_TO_PROCESS ); } return $orm->count(); } }