/** * Processes the stream actions * * @since 1.2 * @access public * @param string * @return */ private function processActions(SocialStreamItem &$item, $privacy) { $group = $item->cluster_id ? $item->cluster_type : SOCIAL_APPS_GROUP_USER; // Whether the item is shared or uploaded via the photo albums, we need to bind the repost here $repost = Foundry::get('Repost', $item->uid, SOCIAL_TYPE_STREAM, $group); $item->repost = $repost; // For photo items that are shared on the stream if ($item->verb == 'share') { // By default, we'll use the stream id as the object id $objectId = $item->uid; $objectType = SOCIAL_TYPE_STREAM; $commentUrl = FRoute::stream(array('layout' => 'item', 'id' => $item->uid)); // When there is only 1 photo that is shared on the stream, we need to link to the photo item // We will only alter the id if (count($item->contextIds) == 1) { $photo = Foundry::table('Photo'); $photo->load($item->contextIds[0]); $objectId = $photo->id; $objectType = SOCIAL_TYPE_PHOTO; $commentUrl = $photo->getPermalink(); } // Append the likes action on the stream $likes = Foundry::likes(); $likes->get($objectId, $objectType, 'upload', $group, $item->uid); $item->likes = $likes; // Append the comment action on the stream $comments = Foundry::comments($objectId, $objectType, 'upload', $group, array('url' => $commentUrl), $item->uid); $item->comments = $comments; return; } // If there is more than 1 photo uploaded, we need to link the likes and comments on the album if (count($item->contextIds) > 1) { $photo = false; $photos = $this->getPhotoFromParams($item, $privacy); if ($photos instanceof SocialTablePhoto) { $photo = $photos; } if (is_array($photos)) { $photo = $photos[0]; } // If we can't get anything, skip this if (!$photo) { return; } // If we can't get anything, skip this if (!$photo) { return; } $element = SOCIAL_TYPE_ALBUM; $uid = $photo->album_id; // Get the album object $album = Foundry::table('Album'); $album->load($photo->album_id); // Format the likes for the stream $likes = Foundry::likes(); $likes->get($photo->album_id, 'albums', 'create', $group); $item->likes = $likes; // Apply comments on the stream $commentParams = array('url' => $album->getPermalink()); $comments = Foundry::comments($photo->album_id, 'albums', 'create', $group, $commentParams); $item->comments = $comments; return; } // Here onwards we are assuming that the likes and comment should be applied on the single photo. // Since the stream library already handles this nicely, we leave it to the stream to handle. // $likes = Foundry::likes(); // $likes->get($item->contextId , $item->context, $item->verb , SOCIAL_APPS_GROUP_USER ); // $item->likes = $likes; // // Apply comments on the stream // $comments = Foundry::comments( $item->contextId , $item->context , $item->verb, SOCIAL_APPS_GROUP_USER , array( 'url' => FRoute::photos( array( 'layout' => 'item', 'id' => $item->contextId ) ) ) ); // $item->comments = $comments; }
public function prepareCreatedTaskStream(SocialStreamItem $streamItem, $includePrivacy = true) { $params = FD::registry($streamItem->params); // Get the tasks available from the cached data $items = $params->get('tasks'); $tasks = array(); $taskId = ''; foreach ($items as $item) { $task = FD::table('Task'); $task->load($item->id); $tasks[] = $task; $taskId = $task->id; } // Get the milestone $milestone = FD::table('Milestone'); $milestone->bind($params->get('milestone')); // Get the group data FD::load('group'); $group = new SocialGroup(); $group->bind($params->get('group')); // We need to get the task app for the group $app = Foundry::table('App'); $app->load(array('element' => 'tasks', 'group' => 'group')); $permalink = FRoute::apps(array('layout' => 'canvas', 'customView' => 'item', 'uid' => $group->getAlias(), 'type' => SOCIAL_TYPE_GROUP, 'id' => $app->getAlias(), 'milestoneId' => $milestone->id)); $this->set('permalink', $permalink); $this->set('stream', $streamItem); $this->set('milestone', $milestone); $this->set('total', count($tasks)); $this->set('actor', $streamItem->actor); $this->set('group', $group); $this->set('tasks', $tasks); $streamItem->title = parent::display('streams/tasks/create.task.title'); $streamItem->content = parent::display('streams/tasks/create.task.content'); // Append the likes action on the stream if (!$streamItem->contextIds[0]) { $likes = Foundry::likes(); $likes->get($taskId, $streamItem->context, $streamItem->verb, SOCIAL_TYPE_GROUP, $streamItem->uid); $streamItem->likes = $likes; // Append the comment action on the stream $comments = Foundry::comments($taskId, $streamItem->context, $streamItem->verb, SOCIAL_TYPE_GROUP, array('url' => FRoute::stream(array('layout' => 'item', 'id' => $streamItem->uid))), $streamItem->uid); $streamItem->comments = $comments; } }
private function prepareNewCommentStream(&$item) { $comment = EB::table('Comment'); $comment->load($item->contextId); // Format the likes for the stream $likes = Foundry::likes(); $likes->get($comment->id, 'blog', 'comments'); $item->likes = $likes; $url = EBR::_('index.php?option=com_easyblog&view=entry&id=' . $comment->post_id, true, null, false, true); // Apply comments on the stream $item->comments = Foundry::comments($item->contextId, 'blog', 'comments', SOCIAL_APPS_GROUP_USER, array('url' => $url)); $post = EB::post($comment->post_id); $date = EB::date($post->created); // Parse the bbcode from EasyBlog $comment->comment = EB::comment()->parseBBCode($comment->comment); $this->set('comment', $comment); $this->set('date', $date); $this->set('permalink', $url); $this->set('blog', $post); $this->set('actor', $item->actor); $item->title = parent::display('streams/' . $item->verb . '.title'); $item->content = parent::display('streams/' . $item->verb . '.content'); $item->opengraph->addDescription($comment->comment); }