Example #1
0
 function init($args = array())
 {
     parent::init($args);
     $pt = new ReasonPageType();
     $formats = $pt->get_export_formats();
     foreach ($formats as $format => $formatInfo) {
         // !TODO: Should I add a check here to make it only show types that make sense?
         if ($formatInfo['printable'] == true) {
             $formatNames[$format] = $formatInfo['name'];
         }
     }
     $this->add_element('Format', 'radio', array("options" => $formatNames));
 }
Example #2
0
 /** 
  * Returns a ReasonPageType object of the given $page_type_name.
  *
  * If no $page_type_name is given, returns the 'default' page type.
  *
  * If given no argument, returns the default page type - uses caching.
  * <code>
  * $rpts =& get_reason_page_types();
  * $pt = $rpts->get_page_type();
  * </code>
  *
  * If only given a name, looks it up as usual in page_types.php array - uses caching.
  * <code>
  * $rpts =& get_reason_page_types();
  * $pt = $rpts->get_page_type('blurb');
  * </code>
  * 
  * If given a name and an array, make a new page type with name and use the array as definition. Caching is not available.  
  * <code>
  * $pageTypeArray = array(
  * 	'main_post' => 'publication',
  * 	'main_head' => array( 
  * 		'module'=>'basic_tabs', 
  * 		'mode'=>'parent'
  * 	)
  * );
  * $rpts =& get_reason_page_types();
  * $pt = $rpts->get_page_type('monkey_page_type', $pageTypeArray);
  * </code>
  *
  * If asked for a named page type that does not exist, will return false
  *
  * @param string $page_type_name The name of the page type you want to get from the global.
  * @param array $dynamic_page_type_array An array containing a region to section mapping. 
  * @return mixed ReasonPageType object or false if the page type requested does not exist
  * @todo add a caching scheme
  */
 function get_page_type($page_type_name = null, $dynamic_page_type_array = null, $use_cache = null)
 {
     //lets do some validation and setup defaults
     static $page_type_definitions;
     if ($page_type_name !== null && (!is_string($page_type_name) || is_string($page_type_name) && empty($page_type_name))) {
         trigger_error('The page_type_name parameter cannot be used. When provided, it must be a non empty string - ');
         $page_type_name = null;
     }
     if ($dynamic_page_type_array !== null && (!is_array($dynamic_page_type_array) || is_array($dynamic_page_type_array) && array_values($dynamic_page_type_array) === $dynamic_page_type_array)) {
         trigger_error('The dynamic_page_type_array parameter cannot be used. When provided, it must be a non empty associative array.');
         $dynamic_page_type_array = null;
     }
     if ($use_cache !== null && !is_bool($use_cache)) {
         trigger_error('The use_cache parameter cannot be used. When provided, must be a boolean.');
         $use_cache = null;
     } elseif ($use_cache === true && is_array($dynamic_page_type_array)) {
         trigger_error('The use_cache parameter is set to true, but will be ignored - virtual page types cannot be cached.');
     }
     $page_type_name = $page_type_name !== null ? $page_type_name : 'default';
     $dynamic_page_type_array = $dynamic_page_type_array !== null ? $dynamic_page_type_array : false;
     // if a cache default provided, use it as long as we haven't also specified a virtual page type.
     $use_cache = $use_cache !== null && !$dynamic_page_type_array ? $use_cache : !is_array($dynamic_page_type_array);
     // we always save to cache unless this is dynamic.
     $save_to_cache = !$dynamic_page_type_array ? true : false;
     if ($use_cache && isset($page_type_definitions[$page_type_name])) {
         $pt = $page_type_definitions[$page_type_name];
     } else {
         $pt = new ReasonPageType();
         $pt->set_name($page_type_name);
         $page_type_array = !$dynamic_page_type_array ? $this->_get_page_type_array($page_type_name) : $dynamic_page_type_array;
         if ($page_type_array) {
             foreach ($page_type_array as $region_name => $module) {
                 if ('_meta' == $region_name) {
                     foreach ($module as $k => $v) {
                         $pt->meta($k, $v);
                     }
                 } elseif (!is_array($module)) {
                     if (empty($module)) {
                         $module_name = NULL;
                         $module_filename = '';
                     } else {
                         $module_name = $module;
                         $module_filename = $this->resolve_filename($module);
                     }
                     $pt->set_region($region_name, $module_name, $module_filename, null);
                 } elseif (is_array($module)) {
                     $module_name = $module['module'];
                     $module_filename = $this->resolve_filename($module['module']);
                     unset($module['module']);
                     $module_params = $module;
                     $pt->set_region($region_name, $module_name, $module_filename, $module_params);
                 }
                 if ($module_name && !$dynamic_page_type_array && $this->_is_module_deprecated($module_name)) {
                     $pt->set_deprecated(true);
                 }
             }
             if (!$dynamic_page_type_array && ($location = $this->_get_page_type_location($page_type_name))) {
                 $pt->set_location($location);
             }
         } else {
             $pt = false;
         }
         // if there is no array dynamic or lookup up we set $pt to false;
         if ($save_to_cache) {
             $page_type_definitions[$page_type_name] = $pt;
         }
     }
     return $pt;
 }