plugins/Decir.php
changeset 0 902822492a68
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/plugins/Decir.php	Wed Jun 13 16:03:00 2007 -0400
@@ -0,0 +1,92 @@
+<?php
+/*
+Plugin Name: Decir
+Plugin URI: javascript: // No URL yet, stay tuned!
+Description: Decir is an advanced bulletin board system (forum) for Enano. 
+Author: Dan Fuhry
+Version: 0.1
+Author URI: http://www.enanocms.org/
+*/
+
+/*
+ * Decir
+ * Version 0.1
+ * Copyright (C) 2007 Dan Fuhry
+ *
+ * This program is Free Software; you can redistribute and/or modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for details.
+ */
+
+define('ENANO_DECIR_VERSION', '0.1');
+define('DECIR_ROOT', ENANO_ROOT . '/decir');
+ 
+$plugins->attachHook('acl_rule_init', 'decir_early_init($this, $session);');
+$plugins->attachHook('base_classes_initted', '
+    $paths->add_page(Array(
+      \'name\'=>\'Forum\',
+      \'urlname\'=>\'Forum\',
+      \'namespace\'=>\'Special\',
+      \'special\'=>0,\'visible\'=>0,\'comments_on\'=>0,\'protected\'=>1,\'delvotes\'=>0,\'delvote_ips\'=>\'\',
+      ));
+  ');
+
+function decir_early_init(&$paths, &$session)
+{
+  $paths->addAdminNode('Decir forum configuration', 'General settings', 'DecirGeneral');
+  $paths->nslist['DecirForum']  = $paths->nslist['Special'] . 'Forum/ViewForum/';
+  $paths->nslist['DecirPost']   = $paths->nslist['Special'] . 'Forum/Post/';
+  $paths->nslist['DecirTopic']  = $paths->nslist['Special'] . 'Forum/Topic/';
+  
+  $session->register_acl_type('decir_see_forum',  AUTH_ALLOW, 'See forum in index', Array('read'),             'DecirForum');
+  $session->register_acl_type('decir_view_forum', AUTH_ALLOW, 'View forum',         Array('decir_see_forum'),  'DecirForum');
+  $session->register_acl_type('decir_post',       AUTH_ALLOW, 'Post new topics',    Array('decir_view_forum'), 'DecirForum');
+  $session->register_acl_type('decir_reply',      AUTH_ALLOW, 'Reply to topics',    Array('decir_post'),       'DecirTopic');
+}
+
+function page_Special_Forum()
+{
+  global $db, $session, $paths, $template, $plugins; // Common objects
+  
+  if ( getConfig('decir_version') != ENANO_DECIR_VERSION || isset($_POST['do_install_finish']) )
+  {
+    require(DECIR_ROOT . '/install.php');
+  }
+  
+  $act = strtolower( ( $n = $paths->getParam(0) ) ? $n : 'Index' );
+  
+  $curdir = getcwd();
+  chdir(DECIR_ROOT);
+  
+  switch($act)
+  {
+    case 'index':
+    default:
+      require('forum_index.php');
+      break;
+    case 'viewforum':
+      require('viewforum.php');
+      break;
+    case 'topic':
+    case 'post':
+    case 'viewtopic':
+      require('viewtopic.php');
+      break;
+    case 'new':
+      require('posting.php');
+      break;
+  }
+  
+  chdir($curdir);
+  
+}
+
+function page_Admin_DecirGeneral()
+{
+  global $db, $session, $paths, $template, $plugins; if($session->auth_level < USER_LEVEL_ADMIN || $session->user_level < USER_LEVEL_ADMIN) { header('Location: '.makeUrl($paths->nslist['Special'].'Administration'.urlSeparator.'noheaders')); die('Hacking attempt'); }
+  echo 'Hello world!';
+}
+
+?>