diff --git a/admin_settings.php b/admin_settings.php
index 47d61fef..6e581649 100644
--- a/admin_settings.php
+++ b/admin_settings.php
@@ -149,6 +149,10 @@ elseif($page == 'phpinfo'
eval("\$phpinfoentries .= \"" . getTemplate("settings/phpinfo/phpinfo_1") . "\";");
}
}
+ // first header -> show actual php version
+ if (strtolower($name) == "phpinfo") {
+ $name = "PHP ".PHP_VERSION;
+ }
eval("\$phpinfohtml .= \"" . getTemplate("settings/phpinfo/phpinfo_table") . "\";");
}
$phpinfo = $phpinfohtml;
diff --git a/lib/classes/database/class.db.php b/lib/classes/database/class.db.php
index 2e6193eb..4cbfed0d 100644
--- a/lib/classes/database/class.db.php
+++ b/lib/classes/database/class.db.php
@@ -21,63 +21,54 @@
* Class to manage the connection to the Database
* @package Functions
*/
+class db {
-class db
-{
/**
* Link ID for every connection
* @var int
*/
-
public $link_id = 0;
/**
* Query ID for every query
* @var int
*/
-
private $query_id = 0;
/**
* Errordescription, if an error occures
* @var string
*/
-
public $errdesc = '';
/**
* Errornumber, if an error occures
* @var int
*/
-
public $errno = 0;
/**
* Servername
* @var string
*/
-
private $server = '';
/**
* Username
* @var string
*/
-
private $user = '';
/**
* Password
* @var string
*/
-
private $password = '';
/**
* Database
* @var string
*/
-
private $database = '';
/**
@@ -88,14 +79,11 @@ class db
* @param string Password
* @param string Database
*/
+ public function __construct($server, $user, $password, $database = '') {
- function db($server, $user, $password, $database = '')
- {
// check for mysql extension
-
- if(!extension_loaded('mysql'))
- {
- $this->showerror('You should install the PHP MySQL extension!', false);
+ if (!extension_loaded('mysql')) {
+ $this->_showerror('You should install the PHP MySQL extension!', false);
}
$this->server = $server;
@@ -104,34 +92,25 @@ class db
$this->database = $database;
$this->link_id = @mysql_connect($this->server, $this->user, $this->password, 1);
- if(!$this->link_id)
- {
- //try to connect with no password and change it afterwards. only for root user
+ if (!$this->link_id) {
- if($this->user == 'root')
- {
+ //try to connect with no password and change it afterwards. only for root user
+ if ($this->user == 'root') {
$this->link_id = @mysql_connect($this->server, $this->user, '', 1);
- if($this->link_id)
- {
+ if ($this->link_id) {
$this->query("SET PASSWORD = PASSWORD('" . $this->escape($this->password) . "')");
+ } else {
+ $this->_showerror('Establishing connection failed, exiting');
}
- else
- {
- $this->showerror('Establishing connection failed, exiting');
- }
- }
- else
- {
- $this->showerror('Establishing connection failed, exiting');
+ } else {
+ $this->_showerror('Establishing connection failed, exiting');
}
}
- if($this->database != '')
- {
- if(!@mysql_select_db($this->database, $this->link_id))
- {
- $this->showerror('Trying to use database ' . $this->database . ' failed, exiting');
+ if ($this->database != '') {
+ if (!@mysql_select_db($this->database, $this->link_id)) {
+ $this->_showerror('Trying to use database ' . $this->database . ' failed, exiting');
}
}
@@ -141,14 +120,11 @@ class db
/**
* Closes connection to Databaseserver
*/
-
- function close()
- {
+ public function close() {
return @mysql_close($this->link_id);
}
- function getDbName()
- {
+ public function getDbName() {
return $this->database;
}
@@ -158,19 +134,12 @@ class db
* @param string $input
* @return string escaped string
*/
-
- function escape($input)
- {
- if(is_int($input))
- {
+ public function escape($input) {
+ if (is_int($input)) {
return (int)$input;
- }
- elseif(is_float($input))
- {
+ } elseif(is_float($input)) {
return (float)$input;
- }
- else
- {
+ } else {
return mysql_real_escape_string($input, $this->link_id);
}
}
@@ -182,54 +151,40 @@ class db
* @param bool Unbuffered query?
* @return string RessourceId
*/
-
- function query($query_str, $unbuffered = false, $suppress_error = false)
- {
+ public function query($query_str, $unbuffered = false, $suppress_error = false) {
global $numbqueries, $theme;
- if (!mysql_ping($this->link_id))
- {
+ // check if connection is still alive
+ if (!mysql_ping($this->link_id)) {
$this->link_id = mysql_connect($this->server,$this->user,$this->password);
- if(!$this->database)
- {
+ if (!$this->database) {
return false;
}
mysql_select_db($this->database);
}
- if(!$unbuffered)
- {
- if($suppress_error)
- {
+ if (!$unbuffered) {
+ if ($suppress_error) {
$this->query_id = @mysql_query($query_str, $this->link_id);
} else {
$this->query_id = mysql_query($query_str, $this->link_id);
}
- }
- else
- {
- if($suppress_error)
- {
+ } else {
+ if ($suppress_error) {
$this->query_id = @mysql_unbuffered_query($query_str, $this->link_id);
} else {
$this->query_id = mysql_unbuffered_query($query_str, $this->link_id);
}
}
- if(!$this->query_id && !$suppress_error)
- {
- $this->showerror('Invalid SQL: ' . $query_str);
- }
- elseif(!$this->query_id && $suppress_error)
- {
+ if (!$this->query_id && !$suppress_error) {
+ $this->_showerror('Invalid SQL: ' . $query_str);
+ } elseif(!$this->query_id && $suppress_error) {
return false;
}
$numbqueries++;
-
- //echo $query_str.' '.$numbqueries.'
';
-
return $this->query_id;
}
@@ -240,22 +195,15 @@ class db
* @param string Datatype, num or assoc
* @return array The row
*/
-
- function fetch_array($query_id = - 1, $datatype = 'assoc')
- {
- if($query_id != - 1)
- {
+ public function fetch_array($query_id = - 1, $_datatype = 'assoc') {
+ if ($query_id != - 1) {
$this->query_id = $query_id;
}
- if($datatype == 'num')
- {
+ $datatype = MYSQL_ASSOC;
+ if ($_datatype == 'num') {
$datatype = MYSQL_NUM;
}
- else
- {
- $datatype = MYSQL_ASSOC;
- }
$this->record = mysql_fetch_array($this->query_id, $datatype);
return $this->record;
@@ -268,9 +216,7 @@ class db
* @param string Datatype, num or assoc
* @return array The first row
*/
-
- function query_first($query_string, $datatype = 'assoc')
- {
+ public function query_first($query_string, $datatype = 'assoc') {
$this->query($query_string);
return $this->fetch_array($this->query_id, $datatype);
}
@@ -281,14 +227,10 @@ class db
* @param string RessourceId
* @return int Number of rows
*/
-
- function num_rows($query_id = - 1)
- {
- if($query_id != - 1)
- {
+ public function num_rows($query_id = - 1) {
+ if ($query_id != - 1) {
$this->query_id = $query_id;
}
-
return mysql_num_rows($this->query_id);
}
@@ -297,9 +239,7 @@ class db
*
* @return int auto_incremental-Value
*/
-
- function insert_id()
- {
+ public function insert_id() {
return mysql_insert_id($this->link_id);
}
@@ -308,9 +248,7 @@ class db
*
* @return int affected rows
*/
-
- function affected_rows()
- {
+ public function affected_rows() {
return mysql_affected_rows($this->link_id);
}
@@ -319,22 +257,15 @@ class db
*
* @return int Errornumber
*/
-
- function geterrdescno()
- {
- if($this->link_id != 0)
- {
+ private function _geterrdescno() {
+ if ($this->link_id != 0) {
$this->errdesc = mysql_error($this->link_id);
$this->errno = mysql_errno($this->link_id);
- }
- else
- {
+ } else {
// Maybe we don't have any linkid so let's try to catch at least anything
-
$this->errdesc = mysql_error();
$this->errno = mysql_errno();
}
-
return $this->errno;
}
@@ -343,24 +274,19 @@ class db
*
* @param string Errormessage
*/
-
- function showerror($errormsg, $mysqlActive = true)
- {
+ private function _showerror($errormsg, $mysqlActive = true) {
global $filename, $theme;
$text = 'MySQL - Error: ' . str_replace("\n", "\t", $errormsg);
- if($mysqlActive)
- {
- $this->geterrdescno();
+
+ if ($mysqlActive) {
+ $this->_geterrdescno();
$text .= "; ErrNo: " . $this->errno . "; Desc: " . $this->errdesc;
}
- if($filename != 'cronscript.php')
- {
+ if ($filename != 'froxlor_master_cronjob.php') {
$text .= "; Script: " . getenv('REQUEST_URI') . "; Ref: " . getenv('HTTP_REFERER');
- }
- else
- {
+ } else {
$text .= "; Script: cronscript";
}
$md5 = md5($text . time());
@@ -384,5 +310,3 @@ class db
die("We are sorry, but a MySQL - error occurred. The administrator may find more information in syslog with the ID ".$md5." or in the sql-error.log in the logs/ directory");
}
}
-
-?>
diff --git a/lib/functions.php b/lib/functions.php
index fc00b1c3..2203a0b0 100644
--- a/lib/functions.php
+++ b/lib/functions.php
@@ -42,39 +42,87 @@ function includeFunctions($dirname)
closedir($dirhandle);
}
-function __autoload($classname)
-{
- global $libdirname, $theme;
- findIncludeClass($libdirname . '/classes/', $classname);
-}
-
-spl_autoload_register('__autoload');
-
-function findIncludeClass($dirname, $classname)
-{
- $dirhandle = opendir($dirname);
- while(false !== ($filename = readdir($dirhandle)))
- {
- if($filename != '.' && $filename != '..' && $filename != '')
- {
- if($filename == 'class.' . $classname . '.php' || $filename == 'abstract.' . $classname . '.php' || $filename == 'interface.' . $classname . '.php')
- {
- include($dirname . $filename);
- return;
- }
-
- if(is_dir($dirname . $filename))
- {
- findIncludeClass($dirname . $filename . '/', $classname);
- }
- }
- }
- closedir($dirhandle);
-}
-
-
function exportDetails($fielddata, $newfieldvalue)
{
print_r($newfieldvalue);
}
+Autoloader::init();
+
+/**
+ * Class Autoloader
+ *
+ * iterates through given directory and includes
+ * the file which matches $classname
+ *
+ * @copyright (c) the authors
+ * @author Froxlor team (2013-)
+ * @license GPLv2 http://files.froxlor.org/misc/COPYING.txt
+ * @package Autoloader
+ * @since 0.9.29.1
+ */
+class Autoloader {
+
+ /**
+ * returns a new AutoLoader-object
+ * @return Autoloader
+ */
+ public static function init() {
+ return new self();
+ }
+
+ /**
+ * class constructor
+ *
+ * @return null
+ */
+ public function __construct() {
+ // register autoload.function
+ spl_autoload_register(array($this, 'doAutoload'));
+ }
+
+ /**
+ * gets the class to load as parameter, searches the library-paths
+ * recursively for this class and includes it
+ *
+ * @param string $class
+ *
+ * @throws Exception
+ * @return boolean
+ */
+ public function doAutoload($class) {
+
+ // define the paths where to look for classes
+ $paths = array(
+ dirname(__FILE__) . '/',
+ dirname(dirname(__FILE__)) . '/scripts/',
+ dirname(dirname(__FILE__)) . '/install/',
+ );
+
+ // now iterate through the paths
+ foreach ($paths as $path) {
+ // valid directory?
+ if (is_dir($path)) {
+ // create RecursiveIteratorIterator
+ $its = new RecursiveIteratorIterator(
+ new RecursiveDirectoryIterator($path)
+ );
+
+ // check every file
+ foreach ($its as $fullFileName => $it ) {
+ // does it match the Filename pattern?
+ if (preg_match("/^(class|module|interface|abstract|)\.?$class\.php$/i", $it->getFilename())) {
+ // include the file and return from the loop
+ include_once $fullFileName;
+ return true;
+ }
+ }
+ } else {
+ // yikes - no valid directory to check
+ throw new Exception("Cannot autoload from directory '".$path."'. No such directory.");
+ }
+ }
+ // yikes - class not found
+ throw new Exception("Could not find class '".$class."'");
+ }
+}
diff --git a/lib/functions/database/function.remove_remarks.php b/lib/functions/database/function.remove_remarks.php
deleted file mode 100644
index f5d09d0a..00000000
--- a/lib/functions/database/function.remove_remarks.php
+++ /dev/null
@@ -1,55 +0,0 @@
- (2003-2009)
- * @author Froxlor team (2010-)
- * @license GPLv2 http://files.froxlor.org/misc/COPYING.txt
- * @package Functions
- *
- */
-
-//
-// remove_remarks will strip the sql comment lines out of an uploaded sql file
-// The whole function has been taken from the phpbb installer, copyright by the phpbb team, phpbb in summer 2004.
-//
-
-function remove_remarks($sql)
-{
- $lines = explode("\n", $sql);
-
- // try to keep mem. use down
-
- $sql = "";
- $linecount = count($lines);
- $output = "";
- for ($i = 0;$i < $linecount;$i++)
- {
- if(($i != ($linecount - 1))
- || (strlen($lines[$i]) > 0))
- {
- if(substr($lines[$i], 0, 1) != "#")
- {
- $output.= $lines[$i] . "\n";
- }
- else
- {
- $output.= "\n";
- }
-
- // Trading a bit of speed for lower mem. use here.
-
- $lines[$i] = "";
- }
- }
-
- return $output;
-}
diff --git a/lib/functions/database/function.split_sql_file.php b/lib/functions/database/function.split_sql_file.php
deleted file mode 100644
index cce97878..00000000
--- a/lib/functions/database/function.split_sql_file.php
+++ /dev/null
@@ -1,140 +0,0 @@
- (2003-2009)
- * @author Froxlor team (2010-)
- * @license GPLv2 http://files.froxlor.org/misc/COPYING.txt
- * @package Functions
- *
- */
-
-//
-// split_sql_file will split an uploaded sql file into single sql statements.
-// Note: expects trim() to have already been run on $sql
-// The whole function has been taken from the phpbb installer, copyright by the phpbb team, phpbb in summer 2004.
-//
-
-function split_sql_file($sql, $delimiter)
-{
- // Split up our string into "possible" SQL statements.
-
- $tokens = explode($delimiter, $sql);
-
- // try to save mem.
-
- $sql = "";
- $output = array();
-
- // we don't actually care about the matches preg gives us.
-
- $matches = array();
-
- // this is faster than calling count($oktens) every time thru the loop.
-
- $token_count = count($tokens);
- for ($i = 0;$i < $token_count;$i++)
- {
- // Don't wanna add an empty string as the last thing in the array.
-
- if(($i != ($token_count - 1))
- || (strlen($tokens[$i] > 0)))
- {
- // This is the total number of single quotes in the token.
-
- $total_quotes = preg_match_all("/'/", $tokens[$i], $matches);
-
- // Counts single quotes that are preceded by an odd number of backslashes,
- // which means they're escaped quotes.
-
- $escaped_quotes = preg_match_all("/(?