/** * @param $project_id * @param bool $force * * @return Video * @throws Swf2VidError */ public function queueProject($project_id, $force = false) { if ($project = Project::find($project_id)) { if (($credits = $this->getVideoCredits($project->user_id)) || $force) { Video::update_all(['set' => ['vid_status' => 'ignore'], 'conditions' => ['project_id = ? and vid_status = ?', $project_id, 'pending']]); return Video::create_direct(['user_id' => $project->user_id, 'project_id' => $project_id, 'vid_status' => 'pending']); } else { App::getInstance()->dispatch(Swf2VidEvent::VIDEO_NO_CREDITS, new Swf2VidEvent($project->user_id, $project)); throw new Swf2VidError("Out of credits"); } } else { throw new Swf2VidError("Project not found", $project_id); } }