diff options
Diffstat (limited to 'mod/sitepages/sitepages_functions.php')
| -rw-r--r-- | mod/sitepages/sitepages_functions.php | 448 | 
1 files changed, 224 insertions, 224 deletions
| diff --git a/mod/sitepages/sitepages_functions.php b/mod/sitepages/sitepages_functions.php index 20e7cb0b6..bc14d1a54 100644 --- a/mod/sitepages/sitepages_functions.php +++ b/mod/sitepages/sitepages_functions.php @@ -1,225 +1,225 @@ -<?php
 -/**
 - * Helper functions for Site Pages.
 - *
 - * @package SitePages
 - * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
 - * @author Curverider Ltd
 - * @copyright Curverider Ltd 2008-2010
 - * @link http://elgg.org/
 - */
 -
 -
 -/**
 - * Returns a single object that holds information about
 - * customizations for the $section site page.  The object guid
 - * is stored as private data on the site entity.  This allows the pages
 - * to still be searchable as standard entities.
 - *
 - * @param $type
 - * @return mixed ElggSitePage on success, FALSE on fail
 - */
 -function sitepages_get_sitepage_object($page_type) {
 -	global $CONFIG;
 -
 -	$page_guid = get_private_setting($CONFIG->site->getGUID(), "sitepages:$page_type");
 -	$sitepage = get_entity($page_guid);
 -
 -	if ($sitepage instanceof ElggSitePage || $sitepage->page_type == $page_type) {
 -		return $sitepage;
 -	}
 -
 -	return FALSE;
 -}
 -
 -/**
 - * Creates a site page object.
 - *
 - * @param str $page_type
 - * @return mixed ElggSitePage on success, FALSE on fail.
 - */
 -function sitepages_create_sitepage_object($page_type) {
 -	global $CONFIG;
 -
 -	$sitepage = new ElggSitePage();
 -	$sitepage->page_type = $page_type;
 -	$sitepage->access_id = ACCESS_PUBLIC;
 -	$sitepage->save();
 -
 -	if ($sitepage->save() && set_private_setting($CONFIG->site->getGUID(), "sitepages:$page_type", $sitepage->getGUID())) {
 -		return $sitepage;
 -	}
 -
 -	return FALSE;
 -}
 -
 -/**
 - * Assembles html for edit sections of site pages.
 - *
 - * @param str $section
 - * @return str html
 - */
 -function sitepages_get_edit_section_content($page_type) {
 -	set_context('admin');
 -
 -	$keywords = '';
 -
 -	$title = elgg_view_title(elgg_echo('sitepages'));
 -	$menu = elgg_view('sitepages/menu', array('page_type' => $page_type));
 -
 -	switch ($page_type) {
 -		case 'front':
 -			$view = 'sitepages/forms/editfront';
 -			$keywords = elgg_view('sitepages/keywords');
 -			break;
 -
 -		case 'seo':
 -			$view = 'sitepages/forms/editmeta';
 -			break;
 -
 -		default:
 -			$view = 'sitepages/forms/edit';
 -			break;
 -
 -	}
 -
 -	$form .= elgg_view($view, array('page_type' => $page_type));
 -	$body = $title .  $menu . $form;
 -
 -	$content = elgg_view_layout('one_column_with_sidebar', $body, $keywords);
 -	return $content;
 -}
 -
 -/**
 - * Assembles html for displaying site pages
 - *
 - * @param string $page_type
 - * @return string Formatted html
 - */
 -function sitepages_get_page_content($page_type) {
 -	$body = elgg_view_title(elgg_echo("sitepages:". strtolower($page_type)));
 -
 -	$sitepage = sitepages_get_sitepage_object($page_type);
 -
 -	if ($sitepage) {
 -		$body .= elgg_view('page_elements/elgg_content', array('body' => $sitepage->description));
 -	} else {
 -		$body .= elgg_view('page_elements/elgg_content', array('body' => elgg_echo('sitepages:notset')));
 -	}
 -
 -	$content = elgg_view_layout('one_column_with_sidebar', $body);
 -	return $content;
 -}
 -
 -
 -/**
 - * Used to determine how to handle special non-static keywords.
 - *
 - * @param unknown_type $matches
 - * @return html
 - */
 -function sitepages_parse_view_match($matches) {
 -	$keyword = $matches[0];
 -	$type = trim($matches[1]);
 -	$params_string = trim($matches[2]);
 -
 -	switch ($type) {
 -		case 'entity':
 -			$options = sitepages_keywords_parse_entity_params($params_string);
 -			// must use this lower-level function because I missed refactoring
 -			// the list entity functions for relationships.
 -			// (which, since you're here, is the only function that runs through all
 -			// possible options for elgg_get_entities*() functions...)
 -			$entities = elgg_get_entities_from_relationship($options);
 -			$content = elgg_view_entity_list($entities, count($entities), $options['offset'],
 -				$options['limit'], $options['full_view'], $options['view_type_toggle'], $options['pagination']);
 -			break;
 -
 -		case 'view':
 -			// parses this into an acceptable array for $vars.
 -			$info = sitepages_keywords_parse_view_params($params_string);
 -			$content = elgg_view($info['view'], $info['vars']);
 -
 -			break;
 -
 -	}
 -
 -	return $content;
 -}
 -
 -/**
 - * Creates an array from a "name=value, name1=value2" string.
 - *
 - * @param $string
 - * @return array
 - */
 -function sitepages_keywords_tokenize_params($string) {
 -	$pairs = array_map('trim', explode(',', $string));
 -
 -	$params = array();
 -
 -	foreach ($pairs as $pair) {
 -		list($name, $value) = explode('=', $pair);
 -
 -		$name = trim($name);
 -		$value = trim($value);
 -		$params[$name] = $value;
 -	}
 -
 -	return $params;
 -}
 -
 -/**
 - *
 - * @param $string
 - * @return unknown_type
 - */
 -function sitepages_keywords_parse_view_params($string) {
 -	$vars = sitepages_keywords_tokenize_params($string);
 -
 -	// the first element key is the view
 -	$var_keys = array_keys($vars);
 -	$view = $var_keys[0];
 -
 -	$info = array(
 -		'view' => $view,
 -		'vars' => $vars
 -	);
 -
 -	return $info;
 -
 -}
 -
 -/**
 - * Returns an options array suitable for using in elgg_get_entities()
 - *
 - * @param string $string "name=value, name2=value2"
 - * @return array
 - */
 -function sitepages_keywords_parse_entity_params($string) {
 -	$params = sitepages_keywords_tokenize_params($string);
 -
 -	// handle some special cases
 -	if (isset($params['owner'])) {
 -		if ($user = get_user_by_username($params['owner'])) {
 -			$params['owner_guid'] = $user->getGUID();
 -		}
 -	}
 -
 -	// @todo probably need to add more for
 -	// group -> container_guid, etc
 -	return $params;
 -}
 -
 -
 -
 -/**
 - * Utility object to store site page information.
 - */
 -class ElggSitePage extends ElggObject {
 -	public function initialise_attributes() {
 -		parent::initialise_attributes();
 -
 -		$this->attributes['subtype'] = 'sitepages_page';
 -	}
 +<?php +/** + * Helper functions for Site Pages. + * + * @package SitePages + * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 + * @author Curverider Ltd + * @copyright Curverider Ltd 2008-2010 + * @link http://elgg.org/ + */ + + +/** + * Returns a single object that holds information about + * customizations for the $section site page.  The object guid + * is stored as private data on the site entity.  This allows the pages + * to still be searchable as standard entities. + * + * @param $type + * @return mixed ElggSitePage on success, FALSE on fail + */ +function sitepages_get_sitepage_object($page_type) { +	global $CONFIG; + +	$page_guid = get_private_setting($CONFIG->site->getGUID(), "sitepages:$page_type"); +	$sitepage = get_entity($page_guid); + +	if ($sitepage instanceof ElggSitePage || $sitepage->page_type == $page_type) { +		return $sitepage; +	} + +	return FALSE; +} + +/** + * Creates a site page object. + * + * @param str $page_type + * @return mixed ElggSitePage on success, FALSE on fail. + */ +function sitepages_create_sitepage_object($page_type) { +	global $CONFIG; + +	$sitepage = new ElggSitePage(); +	$sitepage->page_type = $page_type; +	$sitepage->access_id = ACCESS_PUBLIC; +	$sitepage->save(); + +	if ($sitepage->save() && set_private_setting($CONFIG->site->getGUID(), "sitepages:$page_type", $sitepage->getGUID())) { +		return $sitepage; +	} + +	return FALSE; +} + +/** + * Assembles html for edit sections of site pages. + * + * @param str $section + * @return str html + */ +function sitepages_get_edit_section_content($page_type) { +	set_context('admin'); + +	$keywords = ''; + +	$title = elgg_view_title(elgg_echo('sitepages')); +	$menu = elgg_view('sitepages/menu', array('page_type' => $page_type)); + +	switch ($page_type) { +		case 'front': +			$view = 'sitepages/forms/editfront'; +			$keywords = elgg_view('sitepages/keywords'); +			break; + +		case 'seo': +			$view = 'sitepages/forms/editmeta'; +			break; + +		default: +			$view = 'sitepages/forms/edit'; +			break; + +	} + +	$form .= elgg_view($view, array('page_type' => $page_type)); +	$body = $title .  $menu . $form; + +	$content = elgg_view_layout('one_column_with_sidebar', $body, $keywords); +	return $content; +} + +/** + * Assembles html for displaying site pages + * + * @param string $page_type + * @return string Formatted html + */ +function sitepages_get_page_content($page_type) { +	$body = elgg_view_title(elgg_echo("sitepages:". strtolower($page_type))); + +	$sitepage = sitepages_get_sitepage_object($page_type); + +	if ($sitepage) { +		$body .= elgg_view('page_elements/elgg_content', array('body' => $sitepage->description)); +	} else { +		$body .= elgg_view('page_elements/elgg_content', array('body' => elgg_echo('sitepages:notset'))); +	} + +	$content = elgg_view_layout('one_column_with_sidebar', $body); +	return $content; +} + + +/** + * Used to determine how to handle special non-static keywords. + * + * @param unknown_type $matches + * @return html + */ +function sitepages_parse_view_match($matches) { +	$keyword = $matches[0]; +	$type = trim($matches[1]); +	$params_string = trim($matches[2]); + +	switch ($type) { +		case 'entity': +			$options = sitepages_keywords_parse_entity_params($params_string); +			// must use this lower-level function because I missed refactoring +			// the list entity functions for relationships. +			// (which, since you're here, is the only function that runs through all +			// possible options for elgg_get_entities*() functions...) +			$entities = elgg_get_entities_from_relationship($options); +			$content = elgg_view_entity_list($entities, count($entities), $options['offset'], +				$options['limit'], $options['full_view'], $options['view_type_toggle'], $options['pagination']); +			break; + +		case 'view': +			// parses this into an acceptable array for $vars. +			$info = sitepages_keywords_parse_view_params($params_string); +			$content = elgg_view($info['view'], $info['vars']); + +			break; + +	} + +	return $content; +} + +/** + * Creates an array from a "name=value, name1=value2" string. + * + * @param $string + * @return array + */ +function sitepages_keywords_tokenize_params($string) { +	$pairs = array_map('trim', explode(',', $string)); + +	$params = array(); + +	foreach ($pairs as $pair) { +		list($name, $value) = explode('=', $pair); + +		$name = trim($name); +		$value = trim($value); +		$params[$name] = $value; +	} + +	return $params; +} + +/** + * + * @param $string + * @return unknown_type + */ +function sitepages_keywords_parse_view_params($string) { +	$vars = sitepages_keywords_tokenize_params($string); + +	// the first element key is the view +	$var_keys = array_keys($vars); +	$view = $var_keys[0]; + +	$info = array( +		'view' => $view, +		'vars' => $vars +	); + +	return $info; + +} + +/** + * Returns an options array suitable for using in elgg_get_entities() + * + * @param string $string "name=value, name2=value2" + * @return array + */ +function sitepages_keywords_parse_entity_params($string) { +	$params = sitepages_keywords_tokenize_params($string); + +	// handle some special cases +	if (isset($params['owner'])) { +		if ($user = get_user_by_username($params['owner'])) { +			$params['owner_guid'] = $user->getGUID(); +		} +	} + +	// @todo probably need to add more for +	// group -> container_guid, etc +	return $params; +} + + + +/** + * Utility object to store site page information. + */ +class ElggSitePage extends ElggObject { +	public function initialise_attributes() { +		parent::initialise_attributes(); + +		$this->attributes['subtype'] = 'sitepages_page'; +	}  }
\ No newline at end of file | 
