public function __construct() { $controllers = clearbase_get_controllers(); $select_options = array(); foreach ($controllers as $key => $controller) { $select_options[$key] = $controller->Title(); } asort($select_options); $select_options = array('-1' => __('No controller specified', 'clearbase')) + $select_options; parent::__construct(array(array('id' => 'controller', 'type' => 'sectionstart'), array('id' => 'postmeta.clearbase_controller', 'class' => 'clearbase-controller-switcher', 'title' => __("Controller", 'clearbase'), 'desc' => __("Specifies a controller for this folder", 'clearbase'), 'type' => 'select', 'options' => $select_options), array('id' => 'controller', 'type' => 'sectionend'))); }
/** * Gets a Clearbase controller * * @param string $selector * @return mixed|Clearbase_View_Controller|null */ function clearbase_get_controller($selector = '', $traverse = true) { $controllers = clearbase_get_controllers(); if (empty($selector) || is_numeric($selector) || $selector instanceof WP_Post) { //attempt to load a controller from a folder; $folder = clearbase_load_folder($selector); $controller_id = clearbase_get_value('postmeta.clearbase_controller', '', $folder); while ($traverse && empty($id) && !is_wp_error($folder) && 0 != $folder->post_parent) { $folder = clearbase_load_folder($folder->post_parent); $controller_id = clearbase_get_value('postmeta.clearbase_controller', '', $folder); } $selector = $controller_id; } $controller = $controllers[$selector]; return apply_filters('clearbase_get_controller', $controller, $selector); }