public function executeList(sfWebRequest $request)
 {
     sfContext::getInstance()->getConfiguration()->loadHelpers(array('Helper', 'Date', 'I18N', 'sfImage', 'Url', 'Tag', 'opUtil', 'Escaping', 'opTimeline'));
     $baseUrl = sfConfig::get('op_base_url');
     $ac = array();
     $activityIds = array();
     $activityData = Doctrine_Query::create()->from('ActivityData ad')->where('ad.in_reply_to_activity_id IS NULL')->andWhere('ad.foreign_table IS NULL')->andWhere('ad.foreign_id IS NULL')->andWhere('ad.public_flag = ?', 1)->orderBy('ad.id DESC')->limit(20)->execute();
     foreach ($activityData as $activity) {
         $id = $activity->getId();
         $memberId = $activity->getMemberId();
         $member = Doctrine::getTable('Member')->find($memberId);
         if (!$member->getImageFileName()) {
             $memberImage = $baseUrl . '/images/no_image.gif';
         } else {
             $memberImageFile = $member->getImageFileName();
             $memberImage = sf_image_path($memberImageFile, array('size' => '48x48'));
         }
         $memberName = $member->getName();
         $memberScreenName = $this->getScreenName($memberId) ? $this->getScreenName($memberId) : $memberName;
         $body = sfOutputEscaper::escape(sfConfig::get('sf_escaping_method'), opTimelinePluginUtil::screenNameReplace($activity->getBody(), $baseUrl));
         $body = op_timeline_plugin_body_filter($activity, $body);
         $uri = $activity->getUri();
         $source = $activity->getSource();
         $sourceUri = $activity->getSourceUri();
         $createdAt = $activity->getCreatedAt();
         if ($memberId == $this->getUser()->getMember()->getId()) {
             $deleteLink = 'inline';
         } else {
             $deleteLink = 'none';
         }
         $ac[] = array('id' => $id, 'memberId' => $memberId, 'memberImage' => $memberImage, 'memberScreenName' => $memberScreenName, 'memberName' => $memberName, 'body' => $body, 'deleteLink' => $deleteLink, 'uri' => $uri, 'source' => $source, 'sourceUri' => $sourceUri, 'createdAt' => op_format_activity_time(strtotime($createdAt)), 'baseUrl' => sfConfig::get('op_base_url'));
         $activityIds[] = $id;
     }
     $count = count($ac);
     $i = 0;
     $commentData = Doctrine_Query::create()->from('ActivityData ad')->whereIn('ad.in_reply_to_activity_id', $activityIds)->andWhere('ad.foreign_table IS NULL')->andWhere('ad.foreign_id IS NULL')->andWhere('ad.public_flag = ?', 1)->execute();
     foreach ($commentData as $activity) {
         $inReplyToActivityId = $activity->getInReplyToActivityId();
         for ($j = 0; $j < $count; $j++) {
             if ($ac[$j]['id'] == $inReplyToActivityId) {
                 $member = Doctrine::getTable('Member')->find($activity->getMemberId());
                 $cm = array();
                 $cm['id'] = $activity->getId();
                 $cm['memberId'] = $member->getId();
                 $cm['memberName'] = $member->getName();
                 if (!$member->getImageFileName()) {
                     $cm['memberImage'] = $baseUrl . '/images/no_image.gif';
                 } else {
                     $memberImageFile = $member->getImageFileName();
                     $cm['memberImage'] = sf_image_path($memberImageFile, array('size' => '48x48'));
                 }
                 $cm['memberScreenName'] = $this->getScreenName($cm['memberId']) ? $this->getScreenName($cm['memberId']) : $cm['memberName'];
                 // $cm['body'] = sfOutputEscaper::escape(sfConfig::get('sf_escaping_method'), opTimelinePluginUtil::screenNameReplace($activity->getBody(), $baseUrl));
                 $cm['body'] = opTimelinePluginUtil::screenNameReplace(sfOutputEscaper::escape(sfConfig::get('sf_escaping_method'), $activity->getBody()), $baseUrl);
                 if ($cm['memberId'] == $this->getUser()->getMember()->getId()) {
                     $cm['deleteLink'] = 'inline';
                 } else {
                     $cm['deleteLink'] = 'none';
                 }
                 $cm['uri'] = $activity->getUri();
                 $cm['source'] = $activity->getSource();
                 $cm['sourceUri'] = $activity->getSourceUri();
                 $cm['createdAt'] = op_format_activity_time(strtotime($activity->getCreatedAt()));
                 $cm['baseUrl'] = sfConfig::get('op_base_url');
                 $ac[$j]['reply'][] = $cm;
             }
         }
         $i++;
     }
     $json = array('status' => 'success', 'data' => $ac);
     return $this->renderText(json_encode($json));
 }
 public function executeGet(sfWebRequest $request)
 {
     $this->getResponse()->setContentType('application/json');
     sfContext::getInstance()->getConfiguration()->loadHelpers(array('Helper', 'Date', 'I18N', 'sfImage', 'Url', 'Tag', 'opUtil', 'Escaping', 'opTimeline'));
     $ac = array();
     $activityIds = array();
     $mode = $request->getParameter('mode');
     $list = $request->getParameter('list');
     $memberId = (int) $request->getParameter('memberId');
     $lastId = (int) $request->getParameter('lastId');
     $moreId = (int) $request->getParameter('moreId');
     $limit = (int) $request->getParameter('limit', 20);
     $communityId = (int) $request->getParameter('communityId');
     $activityData = Doctrine_Query::create()->from('ActivityData ad');
     switch ($list) {
         case 'all':
             $activityData = $activityData->where('ad.in_reply_to_activity_id IS NULL');
             break;
         case 'more':
             if (!is_numeric($moreId)) {
                 $this->status = 'error';
                 $this->message = 'Request parameter "moreId" must be numeric.';
                 return sfView::ERROR;
             }
             $activityData = $activityData->where('ad.id < ?', $moreId)->andWhere('ad.in_reply_to_activity_id IS NULL');
             break;
         case 'check':
             if (!is_numeric($lastId)) {
                 $this->status = 'error';
                 $this->message = 'Request parameter "lastId" must be numeric.';
                 return sfView::ERROR;
             }
             $activityData = $activityData->where('ad.in_reply_to_activity_id IS NULL')->andWhere('ad.id > ?', $lastId);
             break;
         default:
             $activityData = $activityData->where('ad.in_reply_to_activity_id IS NULL');
     }
     switch ($mode) {
         case 'member':
             if (!is_numeric($memberId)) {
                 $this->status = 'error';
                 $this->message = 'Request parameter "memberId" must be numeric.';
                 return sfView::ERROR;
             }
             $activityData = $activityData->andWhere('ad.member_id = ?', $memberId)->andWhere('ad.foreign_table IS NULL')->andWhere('ad.foreign_id IS NULL')->andWhere('ad.public_flag = ?', 1)->orderBy('ad.id DESC');
             break;
         case 'community':
             if (!is_numeric($communityId)) {
                 $this->status = 'error';
                 $this->message = 'Request parameter "communityId" must be numeric.';
                 return sfView::ERROR;
             }
             $activityData = $activityData->andWhere('ad.foreign_table = ?', 'community')->andWhere('ad.foreign_id = ?', $communityId)->orderBy('ad.id DESC');
             break;
         default:
             $activityData = $activityData->andWhere('ad.foreign_table IS NULL')->andWhere('ad.foreign_id IS NULL')->andWhere('ad.public_flag = ?', 1);
             $activityData = $activityData->orderBy('ad.id DESC');
     }
     $activityData = $activityData->limit($limit);
     $activityData = $activityData->execute();
     foreach ($activityData as $activity) {
         $id = $activity->getId();
         $memberId = $activity->getMemberId();
         $member = Doctrine::getTable('Member')->find($memberId);
         if (!$member->getImageFileName()) {
             $memberImage = url_for('@homepage') . '/images/no_image.gif';
         } else {
             $memberImageFile = $member->getImageFileName();
             $memberImage = sf_image_path($memberImageFile, array('size' => '48x48'));
         }
         $memberName = $member->getName();
         $memberScreenName = $this->getScreenName($memberId) ? $this->getScreenName($memberId) : $memberName;
         $body = sfOutputEscaper::escape(sfConfig::get('sf_escaping_method'), opTimelinePluginUtil::screenNameReplace($activity->getBody(), url_for('@homepage')));
         $body = op_timeline_plugin_body_filter($activity, $body);
         $uri = $activity->getUri();
         $source = $activity->getSource();
         $sourceUri = $activity->getSourceUri();
         $createdAt = $activity->getCreatedAt();
         if ($memberId == $this->getMember()->getId()) {
             $deleteLink = 'inline';
         } else {
             $deleteLink = 'none';
         }
         $ac[] = array('id' => $id, 'memberId' => $memberId, 'memberImage' => $memberImage, 'memberScreenName' => $memberScreenName, 'memberName' => $memberName, 'body' => $body, 'deleteLink' => $deleteLink, 'uri' => $uri, 'source' => $source, 'sourceUri' => $sourceUri, 'createdAt' => op_format_activity_time(strtotime($createdAt)), 'baseUrl' => sfConfig::get('op_base_url'));
         $activityIds[] = $id;
     }
     $count = count($ac);
     $i = 0;
     $commentData = Doctrine_Query::create()->from('ActivityData ad')->whereIn('ad.in_reply_to_activity_id', $activityIds)->andWhere('ad.foreign_table IS NULL')->andWhere('ad.foreign_id IS NULL')->andWhere('ad.public_flag = ?', 1)->execute();
     foreach ($commentData as $activity) {
         $inReplyToActivityId = $activity->getInReplyToActivityId();
         for ($j = 0; $j < $count; $j++) {
             if ($ac[$j]['id'] == $inReplyToActivityId) {
                 $member = Doctrine::getTable('Member')->find($activity->getMemberId());
                 $cm = array();
                 $cm['id'] = $activity->getId();
                 $cm['memberId'] = $member->getId();
                 $cm['memberName'] = $member->getName();
                 if (!$member->getImageFileName()) {
                     $cm['memberImage'] = $baseUrl . '/images/no_image.gif';
                 } else {
                     $memberImageFile = $member->getImageFileName();
                     $cm['memberImage'] = sf_image_path($memberImageFile, array('size' => '48x48'));
                 }
                 $cm['memberScreenName'] = $this->getScreenName($cm['memberId']) ? $this->getScreenName($cm['memberId']) : $cm['memberName'];
                 $cm['body'] = opTimelinePluginUtil::screenNameReplace(sfOutputEscaper::escape(sfConfig::get('sf_escaping_method'), $activity->getBody()), $baseUrl);
                 if ($cm['memberId'] == $this->getMember()->getId()) {
                     $cm['deleteLink'] = 'inline';
                 } else {
                     $cm['deleteLink'] = 'none';
                 }
                 $cm['uri'] = $activity->getUri();
                 $cm['source'] = $activity->getSource();
                 $cm['sourceUri'] = $activity->getSourceUri();
                 $cm['createdAt'] = op_format_activity_time(strtotime($activity->getCreatedAt()));
                 $cm['baseUrl'] = sfConfig::get('op_base_url');
                 $ac[$j]['reply'][] = $cm;
             }
         }
         $i++;
     }
     $this->status = 'success';
     $this->data = $ac;
     return sfView::SUCCESS;
 }