summaryrefslogtreecommitdiff
path: root/includes/list_boards_inc.php
diff options
context:
space:
mode:
Diffstat (limited to 'includes/list_boards_inc.php')
-rw-r--r--includes/list_boards_inc.php131
1 files changed, 131 insertions, 0 deletions
diff --git a/includes/list_boards_inc.php b/includes/list_boards_inc.php
new file mode 100644
index 0000000..cce8a67
--- /dev/null
+++ b/includes/list_boards_inc.php
@@ -0,0 +1,131 @@
+<?php
+/**
+ * $Header$
+ * Copyright (c) 2004 bitweaver Messageboards
+ * All Rights Reserved. See below for details and a complete list of authors.
+ * Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See http://www.gnu.org/copyleft/lesser.html for details.
+ * @package boards
+ * @subpackage functions
+ */
+
+/**
+ * required setup
+ */
+require_once("../kernel/setup_inc.php");
+require_once( BOARDS_PKG_CLASS_PATH.'BitBoardTopic.php' );
+require_once( BOARDS_PKG_CLASS_PATH.'BitBoardPost.php' );
+require_once( BOARDS_PKG_CLASS_PATH.'BitBoard.php' );
+
+// Is package installed and enabled
+$gBitSystem->verifyPackage( 'boards' );
+
+// Now check permissions to access this page
+$gBitSystem->verifyPermission( 'p_boards_read' );
+
+// Get a list of boards
+$ns = array();
+$board_all_cids =array();
+
+// @TODO move pigeonholes to its own file library or something
+if($gBitSystem->isPackageActive('pigeonholes')) {
+ require_once(PIGEONHOLES_PKG_PATH.'Pigeonholes.php');
+
+ $p = new Pigeonholes();
+ $s = new LibertyStructure();
+
+ $listHash = array('load_only_root'=> TRUE);
+ $l = $p->getList($listHash);
+ foreach ($l as $e) {
+ $d = $s->getSubTree( $e['structure_id'] );
+ $d_o = array();
+ foreach ($d as $c) {
+ $pos_var = &$d_o;
+ if($c['level']!=0) {
+ $pos = explode(".",$c['pos']);
+ $pos_var = &$d_o;
+ foreach ($pos as $pos_v) {
+ if (!isset($pos_var['children'])) {
+ $pos_var['children']=array();
+ }
+ if (!isset($pos_var['children'][$pos_v-1])) {
+ $pos_var['children'][$pos_v-1]=array();
+ }
+ $pos_var = &$pos_var['children'][$pos_v-1];
+ }
+ }
+ if (empty($pos_var['data'])) {
+ $pos_var['children']=array();
+ $pos_var['data']=$c;
+ $mlHash=array();
+ $mlHash['content_id']=$c['content_id'];
+ $mlHash['content_type_guid']=BITBOARD_CONTENT_TYPE_GUID;
+ $pos_var['members']=$p->getMemberList($mlHash);
+ $board_cids =array();
+ foreach ($pos_var['members'] as $boardKey) {
+ $board_cids[] = $boardKey['content_id'];
+ }
+ if (count($board_cids)>0) {
+ $listHash = array('boards'=>$board_cids,'paginationOff'=>'y');
+ $board = new BitBoard();
+ $pos_var['members'] = $board->getList($listHash);
+ $pos_var['pagination']=$listHash['listInfo'];
+ $board_all_cids = array_merge($board_all_cids,$board_cids);
+ }
+ }
+ }
+ $ns[]=$d_o;
+ }
+
+}
+
+// get our boards list
+$ret =array();
+if($gBitSystem->isPackageActive('pigeonholes')) {
+// $ret['data']['title']="Uncategorised Boards";
+} else {
+// $ret['data']['title']="Board List";
+}
+$ret['children']=array();
+$listHash = array('nboards'=>$board_all_cids,'paginationOff'=>'y');
+$board = new BitBoard();
+$ret['members'] = $board->getList($listHash);
+if (count($ret['members']) == 1) {
+ $_REQUEST['b'] = $ret['members'][0]['board_id'];
+ require( BOARDS_PKG_INCLUDE_PATH.'view_board_inc.php' );
+ die;
+} elseif (count($ret['members']) > 0) {
+ $ns[] = $ret;
+}
+
+$gBitSmarty->assignByRef('ns',$ns);
+
+// this might be for getting a count of nested boards - not entirely sure, if you figure it out please clarify this comment.
+function countBoards(&$a) {
+ $s = count($a['members']);
+ foreach ($a['children'] as $k=>$c) {
+ $n = countBoards($a['children'][$k]);
+ if ($n == 0) {
+ unset($a['children'][$k]);
+ }
+ else {
+ $a['children'][$k]['sub_count'] = $n;
+ $s += $n;
+ }
+ }
+ return $s;
+}
+
+foreach ($ns as $k=> $a) {
+ $n = countBoards($ns[$k]);
+ if ($n == 0) {
+ unset($ns[$k]);
+ }
+ else {
+ $ns[$k]['sub_count'] = $n;
+ }
+}
+
+//$gBitSmarty->display( 'bitpackage:boards/cat_display.tpl');
+$gBitSystem->display( 'bitpackage:boards/list_boards.tpl', tra( 'Boards' ) , array( 'display_mode' => 'display' ));
+
+?>