| 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;
 
- }
 
 
  |