Example #1
0
 /**
  * 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'];
     }
 }
Example #2
0
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;
}