summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/Controller.class.php7
-rw-r--r--src/lib/DB.class.php16
-rw-r--r--src/lib/Database.class.php20
-rw-r--r--src/lib/Hasher.class.php18
-rw-r--r--src/lib/Login.class.php7
-rw-r--r--src/lib/MessageManager.class.php85
-rw-r--r--src/lib/Model.class.php9
-rw-r--r--src/lib/PluginManager.class.php10
-rw-r--r--src/lib/Singleton.class.php12
-rw-r--r--src/lib/Site.class.php32
-rw-r--r--src/lib/View.class.php5
11 files changed, 106 insertions, 115 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..1e98511 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->hashPassword($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->hashPassword($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..a470176 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)
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..14f59d4
--- /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() {
+ $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..4eb3bb3
--- /dev/null
+++ b/src/lib/Singleton.class.php
@@ -0,0 +1,12 @@
+<?php
+
+abstract class Singleton {
+ private static $obj;
+ public static function getInstance() {
+ if (!isset(self::$obj)) {
+ $class = get_called_class();
+ self::$obj = new $class;
+ }
+ return self::$obj;
+ }
+}
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);