123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355 |
- <?php
- /**
- * Blog helper functions
- *
- * @package Blog
- */
- /**
- * Get page components to view a blog post.
- *
- * @param int $guid GUID of a blog entity.
- * @return array
- */
- function blog_get_page_content_read($guid = NULL) {
- $return = array();
- elgg_entity_gatekeeper($guid, 'object', 'blog');
- $blog = get_entity($guid);
- // no header or tabs for viewing an individual blog
- $return['filter'] = '';
- elgg_set_page_owner_guid($blog->container_guid);
- elgg_group_gatekeeper();
- $return['title'] = $blog->title;
- $container = $blog->getContainerEntity();
- $crumbs_title = $container->name;
- if (elgg_instanceof($container, 'group')) {
- elgg_push_breadcrumb($crumbs_title, "blog/group/$container->guid/all");
- } else {
- elgg_push_breadcrumb($crumbs_title, "blog/owner/$container->username");
- }
- elgg_push_breadcrumb($blog->title);
- $return['content'] = elgg_view_entity($blog, array('full_view' => true));
- // check to see if we should allow comments
- if ($blog->comments_on != 'Off' && $blog->status == 'published') {
- $return['content'] .= elgg_view_comments($blog);
- }
- return $return;
- }
- /**
- * Get page components to list a user's or all blogs.
- *
- * @param int $container_guid The GUID of the page owner or NULL for all blogs
- * @return array
- */
- function blog_get_page_content_list($container_guid = NULL) {
- $return = array();
- $return['filter_context'] = $container_guid ? 'mine' : 'all';
- $options = array(
- 'type' => 'object',
- 'subtype' => 'blog',
- 'full_view' => false,
- 'no_results' => elgg_echo('blog:none'),
- 'preload_owners' => true,
- 'distinct' => false,
- );
- $current_user = elgg_get_logged_in_user_entity();
- if ($container_guid) {
- // access check for closed groups
- elgg_group_gatekeeper();
- $options['container_guid'] = $container_guid;
- $container = get_entity($container_guid);
- if (!$container) {
- }
- $return['title'] = elgg_echo('blog:title:user_blogs', array($container->name));
- $crumbs_title = $container->name;
- elgg_push_breadcrumb($crumbs_title);
- if ($current_user && ($container_guid == $current_user->guid)) {
- $return['filter_context'] = 'mine';
- } else if (elgg_instanceof($container, 'group')) {
- $return['filter'] = false;
- } else {
- // do not show button or select a tab when viewing someone else's posts
- $return['filter_context'] = 'none';
- }
- } else {
- $options['preload_containers'] = true;
- $return['filter_context'] = 'all';
- $return['title'] = elgg_echo('blog:title:all_blogs');
- elgg_pop_breadcrumb();
- elgg_push_breadcrumb(elgg_echo('blog:blogs'));
- }
- elgg_register_title_button();
- $return['content'] = elgg_list_entities($options);
- return $return;
- }
- /**
- * Get page components to list of the user's friends' posts.
- *
- * @param int $user_guid
- * @return array
- */
- function blog_get_page_content_friends($user_guid) {
- $user = get_user($user_guid);
- if (!$user) {
- forward('blog/all');
- }
- $return = array();
- $return['filter_context'] = 'friends';
- $return['title'] = elgg_echo('blog:title:friends');
- $crumbs_title = $user->name;
- elgg_push_breadcrumb($crumbs_title, "blog/owner/{$user->username}");
- elgg_push_breadcrumb(elgg_echo('friends'));
- elgg_register_title_button();
- $options = array(
- 'type' => 'object',
- 'subtype' => 'blog',
- 'full_view' => false,
- 'relationship' => 'friend',
- 'relationship_guid' => $user_guid,
- 'relationship_join_on' => 'container_guid',
- 'no_results' => elgg_echo('blog:none'),
- 'preload_owners' => true,
- 'preload_containers' => true,
- );
- $return['content'] = elgg_list_entities_from_relationship($options);
- return $return;
- }
- /**
- * Get page components to show blogs with publish dates between $lower and $upper
- *
- * @param int $owner_guid The GUID of the owner of this page
- * @param int $lower Unix timestamp
- * @param int $upper Unix timestamp
- * @return array
- */
- function blog_get_page_content_archive($owner_guid, $lower = 0, $upper = 0) {
- $owner = get_entity($owner_guid);
- elgg_set_page_owner_guid($owner_guid);
- $crumbs_title = $owner->name;
- if (elgg_instanceof($owner, 'user')) {
- $url = "blog/owner/{$owner->username}";
- } else {
- $url = "blog/group/$owner->guid/all";
- }
- elgg_push_breadcrumb($crumbs_title, $url);
- elgg_push_breadcrumb(elgg_echo('blog:archives'));
- if ($lower) {
- $lower = (int)$lower;
- }
- if ($upper) {
- $upper = (int)$upper;
- }
- $options = array(
- 'type' => 'object',
- 'subtype' => 'blog',
- 'full_view' => false,
- 'no_results' => elgg_echo('blog:none'),
- 'preload_owners' => true,
- 'distinct' => false,
- );
- if ($owner_guid) {
- $options['container_guid'] = $owner_guid;
- }
- if ($lower) {
- $options['created_time_lower'] = $lower;
- }
- if ($upper) {
- $options['created_time_upper'] = $upper;
- }
- $content = elgg_list_entities($options);
- $title = elgg_echo('date:month:' . date('m', $lower), array(date('Y', $lower)));
- return array(
- 'content' => $content,
- 'title' => $title,
- 'filter' => '',
- );
- }
- /**
- * Get page components to edit/create a blog post.
- *
- * @param string $page 'edit' or 'new'
- * @param int $guid GUID of blog post or container
- * @param int $revision Annotation id for revision to edit (optional)
- * @return array
- */
- function blog_get_page_content_edit($page, $guid = 0, $revision = NULL) {
- elgg_require_js('elgg/blog/save_draft');
- $return = array(
- 'filter' => '',
- );
- $vars = array();
- $vars['id'] = 'blog-post-edit';
- $vars['class'] = 'elgg-form-alt';
- $sidebar = '';
- if ($page == 'edit') {
- $blog = get_entity((int)$guid);
- $title = elgg_echo('blog:edit');
- if (elgg_instanceof($blog, 'object', 'blog') && $blog->canEdit()) {
- $vars['entity'] = $blog;
- $title .= ": \"$blog->title\"";
- if ($revision) {
- $revision = elgg_get_annotation_from_id((int)$revision);
- $vars['revision'] = $revision;
- $title .= ' ' . elgg_echo('blog:edit_revision_notice');
- if (!$revision || !($revision->entity_guid == $guid)) {
- $content = elgg_echo('blog:error:revision_not_found');
- $return['content'] = $content;
- $return['title'] = $title;
- return $return;
- }
- }
- $body_vars = blog_prepare_form_vars($blog, $revision);
- elgg_push_breadcrumb($blog->title, $blog->getURL());
- elgg_push_breadcrumb(elgg_echo('edit'));
-
- elgg_require_js('elgg/blog/save_draft');
- $content = elgg_view_form('blog/save', $vars, $body_vars);
- $sidebar = elgg_view('blog/sidebar/revisions', $vars);
- } else {
- $content = elgg_echo('blog:error:cannot_edit_post');
- }
- } else {
- elgg_push_breadcrumb(elgg_echo('blog:add'));
- $body_vars = blog_prepare_form_vars(null);
- $title = elgg_echo('blog:add');
- $content = elgg_view_form('blog/save', $vars, $body_vars);
- }
- $return['title'] = $title;
- $return['content'] = $content;
- $return['sidebar'] = $sidebar;
- return $return;
- }
- /**
- * Pull together blog variables for the save form
- *
- * @param ElggBlog $post
- * @param ElggAnnotation $revision
- * @return array
- */
- function blog_prepare_form_vars($post = NULL, $revision = NULL) {
- // input names => defaults
- $values = array(
- 'title' => NULL,
- 'description' => NULL,
- 'status' => 'published',
- 'access_id' => ACCESS_DEFAULT,
- 'comments_on' => 'On',
- 'excerpt' => NULL,
- 'tags' => NULL,
- 'container_guid' => NULL,
- 'guid' => NULL,
- 'draft_warning' => '',
- );
- if ($post) {
- foreach (array_keys($values) as $field) {
- if (isset($post->$field)) {
- $values[$field] = $post->$field;
- }
- }
- if ($post->status == 'draft') {
- $values['access_id'] = $post->future_access;
- }
- }
- if (elgg_is_sticky_form('blog')) {
- $sticky_values = elgg_get_sticky_values('blog');
- foreach ($sticky_values as $key => $value) {
- $values[$key] = $value;
- }
- }
-
- elgg_clear_sticky_form('blog');
- if (!$post) {
- return $values;
- }
- // load the revision annotation if requested
- if ($revision instanceof ElggAnnotation && $revision->entity_guid == $post->getGUID()) {
- $values['revision'] = $revision;
- $values['description'] = $revision->value;
- }
- // display a notice if there's an autosaved annotation
- // and we're not editing it.
- $auto_save_annotations = $post->getAnnotations(array(
- 'annotation_name' => 'blog_auto_save',
- 'limit' => 1,
- ));
- if ($auto_save_annotations) {
- $auto_save = $auto_save_annotations[0];
- } else {
- $auto_save = false;
- }
- if ($auto_save && $auto_save->id != $revision->id) {
- $values['draft_warning'] = elgg_echo('blog:messages:warning:draft');
- }
- return $values;
- }
|