diff options
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/Controller.class.php | 7 | ||||
-rw-r--r-- | src/lib/DB.class.php | 16 | ||||
-rw-r--r-- | src/lib/Database.class.php | 20 | ||||
-rw-r--r-- | src/lib/Hasher.class.php | 18 | ||||
-rw-r--r-- | src/lib/Login.class.php | 9 | ||||
-rw-r--r-- | src/lib/MessageManager.class.php | 85 | ||||
-rw-r--r-- | src/lib/Model.class.php | 9 | ||||
-rw-r--r-- | src/lib/PluginManager.class.php | 10 | ||||
-rw-r--r-- | src/lib/Singleton.class.php | 12 | ||||
-rw-r--r-- | src/lib/Site.class.php | 32 | ||||
-rw-r--r-- | src/lib/View.class.php | 5 |
11 files changed, 107 insertions, 116 deletions
diff --git a/src/lib/Controller.class.php b/src/lib/Controller.class.php index f9ed59d..05736ee 100644 --- a/src/lib/Controller.class.php +++ b/src/lib/Controller.class.php @@ -1,18 +1,13 @@ <?php -require_once('View.class.php'); - class Controller { /** * Show a $view, in the most appropriate format (according to file * extension and HTTP Accept header). Pass the array $vars to the view. */ protected function showView($view, $vars=null) { - global $mm; - if ($vars===null) { $vars = array(); } - $vars['template'] = $mm->template(); - + $obj = new View($view); $obj->show($vars); } diff --git a/src/lib/DB.class.php b/src/lib/DB.class.php index 5954726..ac8dafe 100644 --- a/src/lib/DB.class.php +++ b/src/lib/DB.class.php @@ -1,7 +1,7 @@ <?php - require_once('Auth.class.php'); require_once('Login.class.php'); +require_once('Database.class.php'); class DB { public static function set($table, $unit, $key, $value, $orig_value) { @@ -65,8 +65,8 @@ class DB { } private static function user_get($uid, $key) { - $user = Auth::getObj($uid); - $logged_in_user = Auth::getObj(Login::isLoggedIn()); + $user = Auth::getInstance($uid); + $logged_in_user = Auth::getInstance(Login::isLoggedIn()); $post_key = $key."[$uid]"; @$value = $_POST[$post_key]; @@ -103,7 +103,7 @@ class DB { 'editable'=>$editable); } private static function user_set($uid, $key, $value) { - $user = Auth::getObj($uid); + $user = Auth::getInstance($uid); switch ($key) { case 'auth_uid': @@ -127,8 +127,8 @@ class DB { } private static function admin_get($plugin, $key) { - global $mm; $db = $mm->database(); - $user = Auth::getObj(Login::isLoggedIn()); + $db = Database::getInstance(); + $user = Auth::getInstance(Login::isLoggedIn()); if ($user->isAdmin()) { $editable = true; switch ($plugin) { @@ -149,8 +149,8 @@ class DB { 'editable'=>$editable); } private static function admin_set($plugin, $key, $value) { - global $mm; $db = $mm->database(); - $user = Auth::getObj(Login::isLoggedIn()); + $db = Database::getInstance(); + $user = Auth::getInstance(Login::isLoggedIn()); if (!$user->isAdmin()) { return false; } diff --git a/src/lib/Database.class.php b/src/lib/Database.class.php index 13d9559..a76d891 100644 --- a/src/lib/Database.class.php +++ b/src/lib/Database.class.php @@ -1,12 +1,19 @@ <?php +require_once('Singleton.class.php'); +require_once('Hasher.class.php'); -class Database { +class Database extends Singleton { + private static $me = null; private $conf; private $mysql; private $db_prefix; public function __construct($conf_file) { $this->conf = $conf_file; + self::$me = $this; + } + public static function getInstance() { + return self::$me; } // Low-Level SQL functions ///////////////////////////////////////////// @@ -114,9 +121,8 @@ class Database { if (!is_int($uid)) return false; $table = $this->mysql_table('auth'); - global $mm; - $hasher = $mm->hasher(); - @$hash = $hasher->HashPassword($password); + $hasher = Hasher::getInstance(); + @$hash = $hasher->hash($password); $query = "UPDATE $table \n". "SET hash='$hash' \n". @@ -130,12 +136,10 @@ class Database { return false; } - global $mm; - $table = $this->mysql_table('auth'); $user = $this->mysql_escape($username); - $hasher = $mm->hasher(); - @$hash = $hasher->HashPassword($password); + $hasher = Hasher::getInstance(); + @$hash = $hasher->hash($password); $status = 0; $query = "INSERT INTO $table ( name, hash , status) \n". diff --git a/src/lib/Hasher.class.php b/src/lib/Hasher.class.php new file mode 100644 index 0000000..dc16d68 --- /dev/null +++ b/src/lib/Hasher.class.php @@ -0,0 +1,18 @@ +<?php +require_once('Singleton.class.php'); +require_once('PasswordHash.class.php'); + +class Hasher extends Singleton { + private $pw_hash; + + function __construct() { + $this->pw_hash = new PasswordHash(8, false); + } + + public function hash($password) { + return $this->pw_hash->HashPassword($password); + } + public function check($password, $hash) { + return $this->pw_hash->CheckPassword($password, $hash); + } +} diff --git a/src/lib/Login.class.php b/src/lib/Login.class.php index 870774a..bb21928 100644 --- a/src/lib/Login.class.php +++ b/src/lib/Login.class.php @@ -1,4 +1,6 @@ <?php +require_once('Database.class.php'); +require_once('Hasher.class.php'); class Login { /** Decalare an empty __construct() so that the login function doesn't @@ -6,9 +8,8 @@ class Login { public function __construct() {} public static function login($username, $password) { - global $mm; - $db = $mm->database(); - $hasher = $mm->hasher(); + $db = Database::getInstance(); + $hasher = Hasher::getInstance(); $uid = $db->getUID($username); if ($uid!==false && $db->getStatus($uid)>=3) @@ -18,7 +19,7 @@ class Login { return 2; } $hash = $db->getPasswordHash($uid); - if ($hasher->CheckPassword($password, $hash)) { + if ($hasher->check($password, $hash)) { // success $_SESSION['uid'] = $uid; return 0; diff --git a/src/lib/MessageManager.class.php b/src/lib/MessageManager.class.php deleted file mode 100644 index d327eb7..0000000 --- a/src/lib/MessageManager.class.php +++ /dev/null @@ -1,85 +0,0 @@ -<?php - -class MessageManager { - private $conf; - private $base; - - private $users = array(); - - private $database; - private $pw_hasher; - private $template; - private $pluginManager; - - public function __construct($conf_file) { - $this->conf = $conf_file; - if (!file_exists($this->conf)) { - $this->base = $_SERVER['REQUEST_URI']; - $t = $this->template(); - $t->header('Message Manager'); - $t->paragraph( - 'Awe shiz, dude, conf.php doesn\'t exist, you '. - 'need to go through the '. - '<a href="installer">installer</a>.'); - $t->footer(); - exit(); - } - session_start(); - } - - // Load Things - - public function database() { - if (!isset($this->database)) { - require_once('Database.class.php'); - $this->database = new Database($this->conf); - } - return $this->database; - } - - public function hasher() { - if (!isset($this->pw_hasher)) { - require_once('PasswordHash.class.php'); - $this->pw_hasher = new PasswordHash(8, false); - } - return $this->pw_hasher; - } - - public function template() { - if (!isset($this->template)) { - require_once(VIEWPATH.'/Template.class.php'); - $this->template = new Template($this->baseUrl(), $this); - } - return $this->template; - } - - public function pluginManager() { - if (!isset($this->pluginManager)) { - require_once('PluginManager.class.php'); - $this->pluginManager = new PluginManager(); - } - return $this->pluginManager; - } - - // Utility functions - - public function shortUrl($longUrl) { - $ch = curl_init('http://ur1.ca'); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - curl_setopt($ch, CURLOPT_POST, true); - curl_setopt($ch, CURLOPT_POSTFILEDS, - 'longurl='.urlencode($longUrl)); - $html = curl_exec(); - preg_match('/Your ur1 is: <a href="([^"]*)">/',$html,$matches); - $shortUrl = $matches[1]; - curl_close($ch); - return $shortUrl; - } - - public function baseUrl() { - if (!isset($this->base)) { - $this->base = $this->database()->getSysConf('baseurl'); - } - return $this->base; - } -} diff --git a/src/lib/Model.class.php b/src/lib/Model.class.php new file mode 100644 index 0000000..0cce525 --- /dev/null +++ b/src/lib/Model.class.php @@ -0,0 +1,9 @@ +<?php +require_once('Database.class.php'); + +abstract class Model { + protected $db; + public function __construct() { + $this->db = Database::getInstance(); + } +} diff --git a/src/lib/PluginManager.class.php b/src/lib/PluginManager.class.php index 2e3dd2b..ce5a3ef 100644 --- a/src/lib/PluginManager.class.php +++ b/src/lib/PluginManager.class.php @@ -1,6 +1,8 @@ <?php +require_once('Singleton.class.php'); +require_once('Database.class.php'); -class PluginManager { +class PluginManager extends Singleton { public $plugins = array(); private $loaded = false; @@ -8,7 +10,7 @@ class PluginManager { * Return an instance of the plugin with $plugin_name */ public function loadPlugin($plugin_name) { - global $mm; $db = $mm->database(); + $db = Database::getInstance(); require_once("$plugin_name.class.php"); $obj = new $plugin_name; @@ -53,7 +55,7 @@ class PluginManager { * Return an array of enabled plugin names. */ public function getActivePlugins() { - global $mm; $db = $mm->database(); + $db = Database::getInstance(); $string = $db->getSysConf('plugins'); return $db->valueToArray($string); } @@ -62,7 +64,7 @@ class PluginManager { * Set the enabled plugins. */ public function setActivePlugins($plugins) { - global $mm; $db = $mm->database(); + $db = Database::getInstance(); $string = $db->arrayToValue($plugins); return $db->setSysConf('plugins', $string); } diff --git a/src/lib/Singleton.class.php b/src/lib/Singleton.class.php new file mode 100644 index 0000000..2f8c74f --- /dev/null +++ b/src/lib/Singleton.class.php @@ -0,0 +1,12 @@ +<?php + +abstract class Singleton { + private static $instances = array(); + public static function getInstance() { + $class = get_called_class(); + if (!isset(self::$instances[$class])) { + self::$instances[$class] = new $class; + } + return self::$instances[$class]; + } +} diff --git a/src/lib/Site.class.php b/src/lib/Site.class.php new file mode 100644 index 0000000..1204089 --- /dev/null +++ b/src/lib/Site.class.php @@ -0,0 +1,32 @@ +<?php +require_once('Singleton.class.php'); +require_once('Database.class.php'); + +class Site extends Singleton { + public function shortUrl($longUrl) { + $ch = curl_init('http://ur1.ca'); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_POST, true); + curl_setopt($ch, CURLOPT_POSTFILEDS, + 'longurl='.urlencode($longUrl)); + $html = curl_exec(); + preg_match('/Your ur1 is: <a href="([^"]*)">/',$html,$matches); + $shortUrl = $matches[1]; + curl_close($ch); + return $shortUrl; + } + + public function baseUrl() { + $base = $_SERVER['REQUEST_URI']; + + $db = Database::getInstance(); + if ($db !== null) { + $b = $db->getSysConf('baseurl'); + if ($b != false) { + $base = $b; + } + } + + return $base; + } +} diff --git a/src/lib/View.class.php b/src/lib/View.class.php index 33a9c4e..d7a21d3 100644 --- a/src/lib/View.class.php +++ b/src/lib/View.class.php @@ -123,7 +123,10 @@ class View { $mimes = Mime::ext2mime($this->ext); header('Content-type: '.$mimes[0]); - + + require_once(VIEWPATH.'/Template.class.php'); + $vars['template'] = new Template(); + global $VARS; $VARS = $vars; include($file); |