function alter_reason_page_type($page_type)
 {
     parent::alter_reason_page_type($page_type);
     if ($regions = $page_type->module_regions(array('navigation', 'navigation_top'))) {
         foreach ($regions as $region) {
             if (!isset($module['module_params']['wrapper_element'])) {
                 $page_type->set_region_parameter($region, 'wrapper_element', 'nav');
             }
         }
     }
     if ($regions = $page_type->module_regions('children')) {
         foreach ($regions as $region) {
             if (!isset($module['module_params']['html5'])) {
                 $page_type->set_region_parameter($region, 'html5', true);
             }
         }
     }
     // Anything with publications?
     $ms = reason_get_module_sets();
     if ($regions = $page_type->module_regions($ms->get('publication_item_display'))) {
         foreach ($regions as $region) {
             $module = $page_type->get_region($region);
             if (isset($module['module_params']['markup_generator_info'])) {
                 $markup_generators = $module['module_params']['markup_generator_info'];
             } else {
                 $markup_generators = array();
             }
             if (empty($module['module_params']['related_mode'])) {
                 if (empty($markup_generators['item'])) {
                     $markup_generators['item'] = array('classname' => 'ResponsiveItemMarkupGenerator', 'filename' => 'minisite_templates/modules/publication/item_markup_generators/responsive.php');
                 }
             }
         }
         $page_type->set_region_parameter($region, 'markup_generator_info', $markup_generators);
     }
     // Need to create markup generator framework for publication chrome
     if ($regions = $page_type->module_regions($ms->get('event_display'))) {
         foreach ($regions as $region) {
             $module = $page_type->get_region($region);
             // If uses archive list chrome
             if (isset($module['module_params']['list_chrome_markup']) && 'minisite_templates/modules/events_markup/archive/archive_events_list_chrome.php' == $module['module_params']['list_chrome_markup'] || 'events_archive' == $module['module_name']) {
                 $page_type->set_region_parameter($region, 'list_chrome_markup', 'minisite_templates/modules/events_markup/responsive/responsive_archive_list_chrome.php');
             } elseif (isset($module['module_params']['list_chrome_markup']) && 'minisite_templates/modules/events_markup/hybrid/hybrid_events_list_chrome.php' == $module['module_params']['list_chrome_markup'] || 'events_hybrid' == $module['module_name']) {
                 $page_type->set_region_parameter($region, 'list_chrome_markup', 'minisite_templates/modules/events_markup/responsive/responsive_hybrid_list_chrome.php');
             } elseif (!isset($module['module_params']['list_chrome_markup']) || 'minisite_templates/modules/events_markup/default/events_list_chrome.php' == $module['module_params']['list_chrome_markup']) {
                 $page_type->set_region_parameter($region, 'list_chrome_markup', 'minisite_templates/modules/events_markup/responsive/responsive_list_chrome.php');
             }
         }
     }
 }
Example #2
0
 function init_page_types()
 {
     if (!empty($this->module_sets)) {
         $ms =& reason_get_module_sets();
         foreach ($this->module_sets as $module_set) {
             $modules = $ms->get($module_set);
             if (!empty($modules)) {
                 $this->modules = array_merge($this->modules, $modules);
             }
         }
     }
     if (!empty($this->modules)) {
         $rpts =& get_reason_page_types();
         $page_types = $rpts->get_page_type_names_that_use_module($this->modules);
         foreach ($page_types as $pt) {
             if (!in_array($pt, $this->page_types)) {
                 $this->page_types[] = $pt;
             }
         }
     }
 }
 function &_get_site_pages_with_valid_publications()
 {
     $rpts =& get_reason_page_types();
     $ms =& reason_get_module_sets();
     $publication_modules = $ms->get('publication_item_display');
     $page_types = $rpts->get_page_type_names_that_use_module($publication_modules);
     // this logic to exclude publication page types with related mode set to true is a bit silly.
     // perhaps we should have in the page types class something that lets us filter a set of page types according to parameter values or something
     foreach ($page_types as $page_type_name) {
         $pt = $rpts->get_page_type($page_type_name);
         $pt_props = $pt->get_properties();
         foreach ($pt_props as $region => $region_info) {
             if (in_array($region_info['module_name'], $publication_modules) && !(isset($region_info['module_params']['related_mode']) && ($region_info['module_params']['related_mode'] == "true" || $region_info['module_params']['related_mode'] == true))) {
                 $valid_page_types[] = $page_type_name;
             }
         }
     }
     if (isset($valid_page_types)) {
         // check each page type to make sure publication is NOT in related mode
         foreach (array_keys($valid_page_types) as $k) {
             quote_walk($valid_page_types[$k], NULL);
         }
         $es = new entity_selector($this->site->id());
         $es->add_type(id_of('minisite_page'));
         $es->limit_tables(array('page_node'));
         $es->limit_fields(array('custom_page'));
         $es->add_left_relationship_field('page_to_publication', 'entity', 'id', 'pub_id');
         $es->add_relation('page_node.custom_page IN (' . implode(",", $valid_page_types) . ')');
         $result = $es->run_one();
     } else {
         $result = false;
     }
     return $result;
 }
 function get_events_modules()
 {
     reason_include_once('classes/module_sets.php');
     $ms =& reason_get_module_sets();
     return array_unique(array_merge($ms->get('event_display'), $this->events_modules));
 }
Example #5
0
 /**
  * @todo find events page
  */
 public function get_url()
 {
     if (!isset($this->_url)) {
         if ($this->_event->get_value('url')) {
             return $this->_event->get_value('url');
         } elseif ($owner = $this->_event->get_owner()) {
             static $cache = array();
             if (!isset($cache[$owner->id()])) {
                 reason_include_once('classes/module_sets.php');
                 $ms =& reason_get_module_sets();
                 $modules = $ms->get('event_display');
                 if (!empty($modules)) {
                     $page_types = page_types_that_use_module($modules);
                     if (!empty($page_types)) {
                         array_walk($page_types, 'db_prep_walk');
                         $es = new entity_selector($owner->id());
                         $es->add_type(id_of('minisite_page'));
                         $es->add_relation('`custom_page` IN (' . implode(',', $page_types) . ')');
                         $es->set_num(1);
                         $pages = $es->run_one();
                         if (!empty($pages)) {
                             $page = current($pages);
                             $cache[$owner->id()] = build_URL_from_entity($page);
                         }
                     }
                 }
             }
             if (empty($cache[$owner->id()])) {
                 $cache[$owner->id()] = false;
                 $this->_url = '';
             } else {
                 $this->_url = $cache[$owner->id()] . '?event_id=' . $this->_event->id();
             }
         } else {
             $this->_url = '';
         }
     }
     return $this->_url;
 }
Example #6
0
		function get_events_page_url()
		{
			if(!$this->queried_for_events_page_url)
			{
				reason_include_once('classes/module_sets.php');
				$ms =& reason_get_module_sets();
				$modules = $ms->get('event_display');
				$rpts =& get_reason_page_types();
				$events_page_types = $rpts->get_page_type_names_that_use_module($modules);
				$ps = new entity_selector($this->site_id );
				$ps->add_type( id_of('minisite_page') );
				$ps->set_num(1);
				$rels = array();
				foreach($events_page_types as $page_type)
				{
					$rels[] = 'page_node.custom_page = "'.$page_type.'"';
				}
				$ps->add_relation('( '.implode(' OR ', $rels).' )');
				$page_array = $ps->run_one();
				if (!empty($page_array))
				{
					$events_page = current($page_array);
					$this->events_page_url = reason_get_page_url($events_page->id());
				}
			}
			return $this->events_page_url;
		}
Example #7
0
function get_blog_page_link($site, $tree, $page_types, $blog)
{
    $relations = array();
    $es = new entity_selector($site->id());
    $es->add_type(id_of('minisite_page'));
    $rpts =& get_reason_page_types();
    $ms =& reason_get_module_sets();
    $publication_modules = $ms->get('publication_item_display');
    foreach ($page_types as $page_type_name) {
        $pt = $rpts->get_page_type($page_type_name);
        $pt_props = $pt->get_properties();
        foreach ($pt_props as $region => $region_info) {
            if (in_array($region_info['module_name'], $publication_modules) && !(isset($region_info['module_params']['related_mode']) && ($region_info['module_params']['related_mode'] == "true" || $region_info['module_params']['related_mode'] == true))) {
                $valid_page_types[] = $page_type_name;
            }
        }
    }
    foreach ($valid_page_types as $page_type) {
        $relations[] = 'page_node.custom_page = "' . $page_type . '"';
    }
    $es->add_relation('(' . implode(' or ', $relations) . ')');
    $es->add_left_relationship($blog->id(), relationship_id_of('page_to_publication'));
    $es->set_num(1);
    $pages = $es->run_one();
    if (!empty($pages)) {
        $page = current($pages);
        return $tree->get_full_url($page->id(), true);
    } else {
        return false;
    }
}
Example #8
0
		/**
		 * A nice handler for missing av things. Attempts to point the user to another
		 * place to access the item, even if that place is on another site.
		 * 
		 * Takes the ID of a missing item and looks for it on pages that use a page 
		 * type which uses a module defined in the module set 'av_module_derivatives'.
		 * Requires reason_page_types and reason_module_sets.
		 * 
		 * @param $id int The entity ID of the missing item
		 * @return null;
		 * 
		 */
		function handle_missing_item($id)
		{
			// Get the list of modules
			reason_include_once('classes/module_sets.php');
			$ms =& reason_get_module_sets();
			$av_module_derivatives = $ms->get("av_module_derivatives");
			
			// Get the page types that use these modules.
			$rpts =& get_reason_page_types();
			$allowed_page_types = array();
			foreach ($av_module_derivatives as $mod){
				$allowed_page_types = array_merge($allowed_page_types, array_diff($rpts->get_page_type_names_that_use_module($mod), $allowed_page_types));
			}
			
			// Turn this list into a string.
			$serialized = "'" . implode("','", $allowed_page_types) . "'";
			
			// Build the ES
			$es = new entity_selector();
			$es->add_type(id_of('minisite_page'));
			$es->add_left_relationship($id, relationship_id_of('minisite_page_to_av'));
			$es->add_right_relationship_field('owns', 'entity', 'name', 'site_name');
			$es->add_relation("page_node.custom_page IN ($serialized)");
			$result = $es->run_one();

			echo '<div class="notice itemNotAvailable"><h3>Sorry -- this item is not available</h3>';
			// If there are suitable replacements found, display them...
			if (!empty($result))
			{
				$url = parse_url(get_current_url());
				
				if (count($result) == 1)
				{
					$new_page_link = reason_get_page_url(current($result)->id()) . '?' . $url['query'];
					header( 'Location: ' . $new_page_link, true, 301 );
					exit;
				}
				echo "<p>However, you might be able to find it at the following location" . ((count($result)-1) ? "s" : "" ) . ":</p>\n<ul>\n";
				foreach ($result as $key => $entity)
				{
					// Don't forget to pass a nice query string that includes the item of the av as well as the av_file_id if it's in the request.
					echo '<li><a href="' . reason_get_page_url($key) . "?" . $url['query'] . "\">{$entity->get_value("site_name")}: {$entity->get_value("name")}</a></li>";
				}
				echo "</ul>";
			} else {
			// Else just echo the normal 404. 
				echo '<p>This might be because...</p><ul><li>the page you are coming from has a bad link</li><li>there is a typo in the web address</li><li>the item you are requesting has been removed</li></ul>';
			}
			echo "</div>";
		}
Example #9
0
 function alter_reason_page_type($page_type)
 {
     // Make sure we do everything the default template does.
     MinisiteTemplate::alter_reason_page_type($page_type);
     // GLOBAL MODULE SETTINGS
     // Here we set custom paramaters without having to set them for each page type.
     // Any parameters in the page type file will take precedent.
     // Children
     if ($regions = $page_type->module_regions('children')) {
         foreach ($regions as $region) {
             if (!isset($module['module_params']['thumbnail_width'])) {
                 $page_type->set_region_parameter($region, 'thumbnail_width', 600);
             }
             if (!isset($module['module_params']['thumbnail_height'])) {
                 $page_type->set_region_parameter($region, 'thumbnail_height', 400);
             }
             if (!isset($module['module_params']['thumbnail_crop'])) {
                 $page_type->set_region_parameter($region, 'thumbnail_crop', 'fill');
             }
             //if(!isset($module['module_params']['provide_images']))
             //	$page_type->set_region_parameter($region, 'provide_images', true);
             if (!isset($module['module_params']['description_part_of_link'])) {
                 $page_type->set_region_parameter($region, 'description_part_of_link', true);
             }
             if (!isset($module['module_params']['html5'])) {
                 $page_type->set_region_parameter($region, 'html5', true);
             }
         }
     }
     // Image Sidebar
     // Find additional parameters for image_sidebar in minisite_templates/modules/image_sidebar.php
     if ($regions = $page_type->module_regions('image_sidebar')) {
         foreach ($regions as $region) {
             if (!isset($module['module_params']['thumbnail_width'])) {
                 $page_type->set_region_parameter($region, 'thumbnail_width', 400);
             }
         }
     }
     // Features
     if ($regions = $page_type->module_regions('feature/feature')) {
         foreach ($regions as $region) {
             // if(!isset($module['module_params']['width']))
             // 	$page_type->set_region_parameter($region, 'width', 700);
             // if(!isset($module['module_params']['width']))
             // 	$page_type->set_region_parameter($region, 'height', 460);
             // if(!isset($module['module_params']['autoplay_timer']))
             // 	$page_type->set_region_parameter($region, 'autoplay_timer', 4);
             // if(!isset($module['module_params']['view']))
             // 	$page_type->set_region_parameter($region, 'view', 'view_name');
         }
     }
     // Events Mini
     if ($regions = $page_type->module_regions('events_mini')) {
         foreach ($regions as $region) {
             // if(!isset($module['module_params']['default_list_markup']))
             // 	$page_type->set_region_parameter($region, 'default_list_markup', 'minisite_templates/modules/events_markup/mini/cloak_mini_events_list.php');
             // if(!isset($module['module_params']['ideal_count']))
             // 	$page_type->set_region_parameter($region, 'ideal_count', 2);
         }
     }
     // Navigation
     if ($regions = $page_type->module_regions(array('navigation', 'navigation_top'))) {
         foreach ($regions as $region) {
             if (!isset($module['module_params']['wrapper_element'])) {
                 $page_type->set_region_parameter($region, 'wrapper_element', 'nav');
             }
         }
     }
     // Publications
     if ($regions = $page_type->module_regions('publication')) {
         foreach ($regions as $region) {
             if (!isset($module['module_params']['css'])) {
                 $page_type->set_region_parameter($region, 'css', false);
             }
         }
     }
     $ms = reason_get_module_sets();
     if ($regions = $page_type->module_regions($ms->get('publication_item_display'))) {
         foreach ($regions as $region) {
             $module = $page_type->get_region($region);
             if (isset($module['module_params']['markup_generator_info'])) {
                 $markup_generators = $module['module_params']['markup_generator_info'];
             } else {
                 $markup_generators = array();
             }
             if (empty($module['module_params']['related_mode'])) {
                 if (empty($markup_generators['item'])) {
                     $markup_generators['item'] = array('classname' => 'CloakItemMarkupGenerator', 'filename' => 'minisite_templates/modules/publication/item_markup_generators/cloak.php');
                 }
             }
         }
         $page_type->set_region_parameter($region, 'markup_generator_info', $markup_generators);
     }
     // Copied directly from html5_responsive.php
     // Need to create markup generator framework for publication chrome
     if ($regions = $page_type->module_regions($ms->get('event_display'))) {
         foreach ($regions as $region) {
             $module = $page_type->get_region($region);
             // If uses archive list chrome
             if (isset($module['module_params']['list_chrome_markup']) && 'minisite_templates/modules/events_markup/archive/archive_events_list_chrome.php' == $module['module_params']['list_chrome_markup'] || 'events_archive' == $module['module_name']) {
                 $page_type->set_region_parameter($region, 'list_chrome_markup', 'minisite_templates/modules/events_markup/responsive/responsive_archive_list_chrome.php');
             } elseif (isset($module['module_params']['list_chrome_markup']) && 'minisite_templates/modules/events_markup/hybrid/hybrid_events_list_chrome.php' == $module['module_params']['list_chrome_markup'] || 'events_hybrid' == $module['module_name']) {
                 $page_type->set_region_parameter($region, 'list_chrome_markup', 'minisite_templates/modules/events_markup/responsive/responsive_hybrid_list_chrome.php');
             } elseif (!isset($module['module_params']['list_chrome_markup']) || 'minisite_templates/modules/events_markup/default/events_list_chrome.php' == $module['module_params']['list_chrome_markup']) {
                 $page_type->set_region_parameter($region, 'list_chrome_markup', 'minisite_templates/modules/events_markup/responsive/responsive_list_chrome.php');
             }
         }
     }
 }
Example #10
0
	function get_owner_site_info($e)
	{
		$owner_site = $e->get_owner();
		if($owner_site->id() != $this->parent->site_info->id())
		{
			reason_include_once( 'classes/module_sets.php' );
			$ms =& reason_get_module_sets();
			$modules = $ms->get('event_display');
			$rpts =& get_reason_page_types();
			$page_types = $rpts->get_page_type_names_that_use_module($modules);
			if (!empty($page_types))
			{
				$tree = NULL;
				$owner_site->set_value('_link', get_page_link($owner_site, $tree, $page_types, true));
			}
			else
			{
				$owner_site->set_value('_link', $owner_site->get_value('base_url'));
			}
			return $owner_site;
		}
		return false;
	}
Example #11
0
<?php

/**
 * Set up the module sets singleton object
 *
 * This procedural file adds the core module sets to the module sets object.
 *
 * @package reason
 * @subpackage minisite_templates
 */
$ms =& reason_get_module_sets();
$ms->add(array('events', 'event_registration', 'event_signup', 'event_slot_registration', 'events_archive', 'events_hybrid', 'events_instancewide', 'events_schedule', 'events_verbose'), 'event_display');
/**
 * Create a set publication_item_display which holds module names that display publication items
 */
$ms->add('publication', 'publication_item_display');
$ms->add(array('gallery', 'gallery2', 'images', 'image_slideshow', 'gallery_vote', 'gallery_single_page'), 'image_display');
$ms->add(array('av', 'av_filejump', 'av_with_filters'), 'media_display');
$ms->add(array('av', 'av_with_filters'), 'av_module_derivatives');
if (reason_file_exists('config/module_sets/setup_local.php')) {
    reason_include_once('config/module_sets/setup_local.php');
}
Example #12
0
 function _update_blog_feeds()
 {
     $this->debug('updating blog feeds');
     fputs($this->_fp, "\n# blog feed rewrites\n\n") or trigger_error('Unable to write to htaccess', HIGH);
     // get all assets for this site
     $ms =& reason_get_module_sets();
     $modules = $ms->get('publication_item_display');
     $page_types = array();
     foreach ($modules as $module) {
         $pts = page_types_that_use_module($module);
         if (!empty($pts)) {
             $page_types = array_merge($page_types, $pts);
         }
     }
     array_unique($page_types);
     array_walk($page_types, 'db_prep_walk');
     if (empty($page_types)) {
         return;
     }
     // there are no publication page types in this instance of Reason
     $es = new entity_selector($this->site_id);
     $es->add_type(id_of('minisite_page'));
     $es->add_left_relationship_field('page_to_publication', 'entity', 'id', 'publication_id');
     $es->add_relation('`entity`.`state` = "Live"');
     $es->add_relation('`custom_page` IN (' . implode(',', $page_types) . ')');
     $es->set_sharing('owns');
     $blog_pages = $es->run_one();
     $blog_type_entity = new entity(id_of('publication_type'));
     $news_type_entity = new entity(id_of('news'));
     foreach ($blog_pages as $blog_page) {
         $blog = new entity($blog_page->get_value('publication_id'));
         fputs($this->_fp, 'RewriteRule ^' . MINISITE_FEED_DIRECTORY_NAME . '/' . $blog_type_entity->get_value('feed_url_string') . '/' . $blog->get_value('blog_feed_string') . '$ ' . FEED_GENERATOR_STUB_PATH . '?type_id=' . $news_type_entity->id() . '&site_id=' . $this->site->id() . '&blog_id=' . $blog->id() . '&feed=blog_posts' . "\n") or trigger_error('Unable to write to htaccess file', HIGH);
     }
 }