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)); }
/** * 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; }