/** * Page list * * Creates an unordered list of all pages in the site that haven't been * opted out of appearing in the page_list. * * @access private * @param array * @return string */ function page_list($tag) { $this->addon->load->helper(array('page', 'array')); $this->addon->load->model(array('page_model')); $attributes = array(); // Gather up parameters $allowable_parameters = array('class', 'id'); foreach ($allowable_parameters as $param) { if (isset($tag['parameters'][$param])) { $attributes[$param] = trim($tag['parameters'][$param]); } } $start = isset($tag['parameters']['start']) ? $tag['parameters']['start'] : FALSE; $header = ''; if (isset($tag['parameters']['page'])) { if ($page = $this->addon->page_model->get_page_by_url_title($tag['parameters']['page'])) { $result = parser_page_list(array_find_element_by_key($page->id, $this->site_structure), $attributes); $header = $this->build_header($page->page_title, $page->url_title, $tag); } } else { if ($start == 'current' || $start == 'parent' || $start == 'root') { if ($this->page_id === 0) { if ($page = $this->addon->page_model->get_page_by_url_title($this->addon->mojomotor_parser->url_title)) { $this->page_id = $page->id; $this->parent_page_id = $this->array_find_parent_by_key($this->page_id, $this->site_structure); if (!$this->root_parent_page_id) { $this->root_parent_page_id = $this->page_id; } } else { return ''; } } if ($start == 'current') { $result = parser_page_list(array_find_element_by_key($this->page_id, $this->site_structure), $attributes); if (strtolower($tag['parameters']['header_link']) == 'yes' || isset($tag['parameters']['header'])) { $header = $this->build_header($page->page_title, $page->url_title, $tag); } } if ($start == 'parent' && $this->parent_page_id) { $result = parser_page_list(array_find_element_by_key($this->parent_page_id, $this->site_structure), $attributes); if ((strtolower($tag['parameters']['header_link']) == 'yes' || isset($tag['parameters']['header'])) && ($page = $this->addon->page_model->get_page($this->parent_page_id))) { $header = $this->build_header($page->page_title, $page->url_title, $tag); } } if ($start == 'root' && $this->root_parent_page_id) { $result = parser_page_list(array_find_element_by_key($this->root_parent_page_id, $this->site_structure), $attributes); if ((strtolower($tag['parameters']['header_link']) == 'yes' || isset($tag['parameters']['header'])) && ($page = $this->addon->page_model->get_page($this->root_parent_page_id))) { $header = $this->build_header($page->page_title, $page->url_title, $tag); } } } else { $result = parser_page_list($this->site_structure, $attributes); } } if (!$result || is_numeric($result)) { return ''; } else { return $tag['parameters']['prepend'] . "\n" . $header . "\n" . $result . "\n" . $tag['parameters']['append']; } }
function &array_find_element_by_key($key, &$form) { if (array_key_exists($key, $form)) { $ret =& $form[$key]; return $ret; } foreach ($form as $k => $v) { if (is_array($v)) { $ret =& array_find_element_by_key($key, $form[$k]); if ($ret) { return $ret; } } } return FALSE; }