コード例 #1
0
ファイル: functions.php プロジェクト: msabino/beth-maria
 function &get_nested_pages($tpl_id, $tpl_name, $tpl_access_level, $orderbyfield = 'weightx', $order = 'asc', $force = 0)
 {
     global $DB;
     if (array_key_exists($tpl_id, $this->cached_nested_pages) && !$force) {
         $tree =& $this->cached_nested_pages[$tpl_id];
         if ($tree->cmp_field != $orderbyfield || $tree->cmp_order != $order) {
             $tree->set_sort($orderbyfield, $order);
             $tree->sort(1);
         }
     } else {
         $tree = new KNestedPage(array('id' => '-1', 'name' => '_root_', 'pid' => '-1'), $tpl_name, new KError());
         $tree->set_sort($orderbyfield, $order);
         $tree->crumbs = null;
         // will be filled, if required, by calling tags e.g. 'nested_pages'.
         $cols = array('p.id, p.page_title as title, p.page_name as name, p.creation_date, p.publish_date, p.access_level, p.comments_count,
                           p.nested_parent_id as pid, p.weight, p.show_in_menu, p.menu_text, p.is_pointer, p.pointer_link, p.pointer_link_detail, p.open_external, p.masquerades, p.strict_matching,
                           count(p2.id) as drafts_count');
         $tables = K_TBL_PAGES . " p left outer join " . K_TBL_PAGES . " p2 on p.id = p2.parent_id";
         $sql = 'p.template_id=' . $DB->sanitize($tpl_id);
         $sql .= " AND p.parent_id=0";
         //skip drafts
         $sql .= ' group by p.id';
         $rows = $DB->select($tables, $cols, $sql);
         $folders = array();
         foreach ($rows as $r) {
             $r['template_id'] = $tpl_id;
             $r['template_name'] = $tpl_name;
             $r['template_access_level'] = $tpl_access_level;
             $f = new KNestedPage($r, $tpl_name, $tree);
             $folders[$f->id] =& $f;
             unset($f);
         }
         foreach ($folders as $f) {
             $folder =& $folders[$f->id];
             if (isset($folders[$f->pid])) {
                 $folders[$f->pid]->add_child($folder);
             } else {
                 $tree->add_child($folder);
             }
         }
         $tree->sort(1);
         $tree->set_children_count();
         $this->cached_nested_pages[$tpl_id] =& $tree;
     }
     return $tree;
 }