public function executeIndex(sfWebRequest $request)
 {
     $auth_key = $this->getUser()->getApiAuthKey();
     $sent_data = Api::getInstance()->setUser($auth_key)->get('message?sender_id=' . $this->getUser()->getApiUserId(), true);
     $this->sent_messages = ApiDoctrine::createQuickObjectArray($sent_data['body']);
     $received_data = Api::getInstance()->setUser($auth_key)->get('message?recipient_id=' . $this->getUser()->getApiUserId(), true);
     $this->received_messages = ApiDoctrine::createQuickObjectArray($received_data['body']);
     // Grab users
     $users = array();
     foreach ($this->sent_messages as $message) {
         if (!in_array($message->getRecipientId(), $users)) {
             $users[] = $message->getRecipientId();
         }
     }
     foreach ($this->received_messages as $message) {
         if (!in_array($message->getSenderId(), $users)) {
             $users[] = $message->getSenderId();
         }
     }
     $user_data = Api::getInstance()->setUser($auth_key)->get('user?id=' . implode(',', $users), true);
     $users = ApiDoctrine::createQuickObjectArray($user_data['body']);
     $this->users = array();
     foreach ($users as $user) {
         $this->users[$user->getIncremented()] = $user;
     }
     $user_data = Api::getInstance()->setUser($auth_key)->get('user/' . $this->getUser()->getApiUserId(), true);
     $this->user = ApiDoctrine::createQuickObject($user_data['body']);
 }
 protected function getIndexEpisodes()
 {
     $subreddit_ids = array();
     $subreddit_data = Api::getInstance()->get('subreddit/defaultfeed', true);
     $subreddits = ApiDoctrine::createQuickObjectArray($subreddit_data['body']);
     foreach ($subreddits as $subreddit) {
         if (!in_array($subreddit->getIncremented(), $subreddit_ids)) {
             $subreddit_ids[] = $subreddit->getIncremented();
         }
     }
     $episodes = array();
     if (count($subreddit_ids)) {
         $episode_data = Api::getInstance()->get('episode/released?nwfw=&subreddit_id=' . implode(',', $subreddit_ids), true);
         $episodes = ApiDoctrine::createObjectArray('Episode', $episode_data['body']);
     }
     return $episodes;
 }
 public function executeUpdate(sfWebRequest $request)
 {
     // Clear pluploader session variables
     $this->getUser()->getAttributeHolder()->remove('valid_episode');
     $this->getUser()->getAttributeHolder()->remove('valid_episode_id');
     $this->getUser()->getAttributeHolder()->remove('valid_episode_user_id');
     $this->getUser()->getAttributeHolder()->remove('valid_episode_audio_file_hash');
     $this->getUser()->getAttributeHolder()->remove('valid_episode_image_file_hash');
     $this->getUser()->getAttributeHolder()->remove('valid_episode_user_id');
     $this->forward404Unless($request->isMethod(sfRequest::POST) || $request->isMethod(sfRequest::PUT));
     $auth_key = $this->getUser()->getApiAuthKey();
     $episode_data = Api::getInstance()->setUser($auth_key)->get('episode/' . $request->getParameter('id'), true);
     $episode = ApiDoctrine::createObject('Episode', $episode_data['body']);
     $quick_episode = ApiDoctrine::createQuickObject($episode_data['body']);
     $this->forward404Unless($episode && $episode->getId());
     $permission = $this->verifyPermissionsForCurrentUser($quick_episode->getSubredditId(), array('admin'));
     $assignment_data = Api::getInstance()->setUser($auth_key)->get('episodeassignment/' . $quick_episode->getEpisodeAssignmentId(), true);
     $assignment = ApiDoctrine::createQuickObject($assignment_data['body']);
     $this->forward404Unless($permission || $assignment && $assignment->getSfGuardUserId() == $this->getUser()->getApiUserId());
     $episode->setIsNsfw($quick_episode->getIsNsfw());
     $phone_data = Api::getInstance()->setUser($auth_key)->get('subreddittropo?subreddit_id=' . $episode->getSubredditId(), true);
     $this->phone_numbers = ApiDoctrine::createQuickObjectArray($phone_data['body']);
     $this->form = new EpisodeForm($episode);
     $this->form->setDefault('is_nsfw', $quick_episode->getIsNsfw());
     unset($this->form['sf_guard_user_id']);
     unset($this->form['file_is_remote']);
     unset($this->form['remote_url']);
     unset($this->form['approved_at']);
     unset($this->form['nice_filename']);
     if (!$permission && $this->form->getObject()->getApprovedAt()) {
         unset($this->form['title'], $this->form['description']);
     }
     if (!$permission && !$this->form->getObject()->getApprovedAt()) {
         unset($this->form['reddit_post_url']);
     }
     $this->processForm($request, $this->form);
     $this->setTemplate('edit');
 }
 public function executeEpisodes(sfWebRequest $request)
 {
     $user_id = $this->getUser()->getApiUserId();
     $this->forward404Unless($user_id);
     $user_data = Api::getInstance()->get('user/' . $user_id);
     $this->user = ApiDoctrine::createQuickObject($user_data['body']);
     $page = $this->page = (int) $request->getParameter('page', 1);
     $this->forward404Unless(is_integer($page));
     $page = $page == 1 || $page == 0 ? '' : '&page=' . $page;
     $subreddit_ids = array();
     $released_data = Api::getInstance()->get('episodeassignment/released?sf_guard_user_id=' . $user_id . $page);
     $this->released = ApiDoctrine::createObjectArray('EpisodeAssignment', $released_data['body']);
     $future_data = Api::getInstance()->get('episodeassignment/future?sf_guard_user_id=' . $user_id);
     $this->future = ApiDoctrine::createObjectArray('EpisodeAssignment', $future_data['body']);
     $current_data = Api::getInstance()->get('episodeassignment/current?sf_guard_user_id=' . $user_id);
     $this->current = ApiDoctrine::createObjectArray('EpisodeAssignment', $current_data['body']);
     foreach ($this->future as $assignment) {
         if (!in_array($assignment->getEpisode()->getSubredditId(), $subreddit_ids)) {
             $subreddit_ids[] = $assignment->getEpisode()->getSubredditId();
         }
     }
     foreach ($this->current as $assignment) {
         if (!in_array($assignment->getEpisode()->getSubredditId(), $subreddit_ids)) {
             $subreddit_ids[] = $assignment->getEpisode()->getSubredditId();
         }
     }
     foreach ($this->released as $assignment) {
         if (!in_array($assignment->getEpisode()->getSubredditId(), $subreddit_ids)) {
             $subreddit_ids[] = $assignment->getEpisode()->getSubredditId();
         }
     }
     $memberships = array();
     $moderator_data = Api::getInstance()->get('membershiptype?type=moderator', true);
     $membership_objects = ApiDoctrine::createQuickObjectArray($moderator_data['body']);
     foreach ($membership_objects as $membershiptype) {
         $memberships[] = $membershiptype->getIncremented();
     }
     $admin_data = Api::getInstance()->get('membershiptype?type=admin', true);
     $membership_objects = ApiDoctrine::createQuickObjectArray($admin_data['body']);
     foreach ($membership_objects as $membershiptype) {
         $memberships[] = $membershiptype->getIncremented();
     }
     $approval_data = Api::getInstance()->get('subredditmembership?sf_guard_user_id=' . $this->getUser()->getApiUserId() . '&membership_id=' . implode(',', $memberships), true);
     $approval_memberships = ApiDoctrine::createQuickObjectArray($approval_data['body']);
     $this->approvals = array();
     if (count($approval_memberships)) {
         $approval_subreddits = array();
         foreach ($approval_memberships as $membership) {
             $approval_subreddits[] = $membership->getSubredditId();
             if (!in_array($membership->getSubredditId(), $subreddit_ids)) {
                 $subreddit_ids[] = $membership->getSubredditId();
             }
         }
         $approval_episode_data = Api::getInstance()->get('episode/future?is_submitted=1&is_approved=0&subreddit_id=' . implode(',', $approval_subreddits));
         $this->approvals = ApiDoctrine::createQuickObjectArray($approval_episode_data['body']);
     }
     $subreddit_data = Api::getInstance()->get('subreddit?id=' . implode(',', $subreddit_ids), true);
     $subreddits = ApiDoctrine::createQuickObjectArray($subreddit_data['body']);
     $this->subreddits = array();
     foreach ($subreddits as $subreddit) {
         $this->subreddits[$subreddit->getId()] = $subreddit;
     }
     $deadline_data = Api::getInstance()->get('subredditdeadline?subreddit_id=' . implode(',', $subreddit_ids), true);
     $deadlines = ApiDoctrine::createQuickObjectArray($deadline_data['body']);
     $this->deadlines = array();
     foreach ($deadlines as $deadline) {
         if (!array_key_exists($deadline->getSubredditId(), $this->deadlines)) {
             $this->deadlines[$deadline->getSubredditId()] = array();
         }
         $this->deadlines[$deadline->getSubredditId()][$deadline->getAuthorTypeId()] = $deadline->getSeconds();
     }
 }
 protected function getIndexEpisodes()
 {
     $subreddit_ids = array();
     $subreddit_data = Api::getInstance()->get('subreddit/defaultfeed', true);
     $subreddits = ApiDoctrine::createQuickObjectArray($subreddit_data['body']);
     foreach ($subreddits as $subreddit) {
         if (!in_array($subreddit->getIncremented(), $subreddit_ids)) {
             $subreddit_ids[] = $subreddit->getIncremented();
         }
     }
     $episodes = array();
     if (count($subreddit_ids)) {
         $episode_data = Api::getInstance()->get($this->_episode_location . '?subreddit_id=' . implode(',', $subreddit_ids), true);
         $episodes = ApiDoctrine::createQuickObjectArray($episode_data['body']);
     }
     $assignment_ids = array();
     foreach ($episodes as $episode) {
         if (!in_array($episode->getEpisodeAssignmentId(), $assignment_ids)) {
             $assignment_ids[] = $episode->getEpisodeAssignmentId();
         }
     }
     $assignment_data = Api::getInstance()->get('episodeassignment?id=' . implode(',', $assignment_ids), true);
     $assignments = ApiDoctrine::createQuickObjectArray($assignment_data['body']);
     $user_ids = array();
     $this->_assignments = array();
     foreach ($assignments as $assignment) {
         $this->_assignments[$assignment->getIncremented()] = $assignment;
         if (!in_array($assignment->getSfGuardUserId(), $user_ids)) {
             $user_ids[] = $assignment->getSfGuardUserId();
         }
     }
     $user_data = Api::getInstance()->get('user?id=' . implode(',', $user_ids), true);
     $users = ApiDoctrine::createQuickObjectArray($user_data['body']);
     $this->_users = array();
     foreach ($users as $user) {
         $this->_users[$user->getIncremented()] = $user;
     }
     return $episodes;
 }
 public function executeShow(sfWebRequest $request)
 {
     $auth_key = $this->getUser()->getApiAuthKey();
     $page = $this->page = (int) $request->getParameter('page', 1);
     $this->forward404Unless(is_integer($page));
     $page = $page == 1 || $page == 0 ? '' : '&page=' . $page;
     $this->getSubredditId($request);
     $episodes_data = Api::getInstance()->setUser($auth_key)->get('episode/released?subreddit_id=' . $this->subreddit_id . $page, true);
     $this->episodes = ApiDoctrine::createQuickObjectArray($episodes_data['body']);
     $membership_data = Api::getInstance()->setUser($auth_key)->get('subredditmembership?sf_guard_user_id=' . $this->getUser()->getApiUserId() . '&subreddit_id=' . $this->subreddit_id, true);
     $this->membership = array_key_exists(0, $membership_data['body']) ? ApiDoctrine::createQuickObject($membership_data['body'][0]) : null;
 }