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'); } } } }
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)); }
/** * @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; }
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; }
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; } }
/** * 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>"; }
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'); } } } }
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; }
<?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'); }
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); } }