Life

Silly WordPress Errors (Thank God For DB Access)

So I posted a script, and my stupid little syntax highlighter plugin decided that it was a good idea to bug out on one line of code and insert some HTML into my script that printed out instead of what was supposed to be there. Yay me. I tried editing the script from the html only editor mode, to no avail. What ended up fixing the problem was manually finding the post in the database, and stripping the bad syntax from the post. Thankfully, this should no longer be an issue, as I plan to NEVER edit that post again. At least not through the WP interface.

Life

Silly WordPress Errors ( Thank God For DB Access )

So I posted a script, and my stupid little syntax highlighter plugin decided that it was a good idea to bug out on one line of code and insert some HTML into my script that printed out instead of what was supposed to be there. Yay me. I tried editing the script from the html only editor mode, to no avail. What ended up fixing the problem was manually finding the post in the database, and stripping the bad syntax from the post. Thankfully, this should no longer be an issue, as I plan to NEVER edit that post again. At least not through the WP interface.

General

Config Class

Simple class to manage configuration settings in a PHP application

<?php

/**
 * 	Config Class
 *
 *	Simple class to manage configuration data stored in scripts or in a
 *	database.
 *
 *	Requires CONFIG constant to be set to path where static
 *	configurations are to be stored.
 *
 *	Database settings must be stored as an array in a config file as
 *	$config['database'], which must be loaded from autoload.php.
 *
 *	autoload.php must be in the config directory.
 *
 *	all static configurations must be loaded from the $autoload array
 *	which should contain the name of the config file, minus the .php file
 *	extension. the script will append the php file extension to the filename
 *	by itself.
 *
 *	I've not included the sql, but the valuse will be stored in a database
 *	table named config, and the required fields are item and value. format them
 *	in any manner that you wish. just make sure that item is set to unique or
 *	primary key.
 *
 *	Disclaimer of Warranty:
 *
 *	THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 *	AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 *	IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 *	ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
 *	LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 *	CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 *	SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
 *	BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 *	WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 *	OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
 *	ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 *	You may redistribute this script without modifications.  You may also
 *	distribute a modified version of this script, provided you notate that the
 *	script has been modified, provide a record of all changes that have been
 *	made, and provide a link to the original script. If you redistribute, you
 *	may not charge a fee for this script. You may charge a fee to support this
 *	script.
 *
 *	@author		Mark A. LaDoux
 *	@link		http://markladoux.com/
 *	@copyright	2012 Mark LaDoux
 *	@version	1.0.1
 *
 *  CHANGE LOG:
 *
 *  [2012.01.02] CREATED SCRIPT
 *  [2012.01.03] EDITED FUNCTION NOT TO RELY ON INTERNAL FUNCTION FROM MY PROJECT
 */

class Config {

	/**************************************************************************
		Class Configuration

		This section contains configuration data and initialization for the
		class.
	/**************************************************************************/

	/**
	 *	@param	array	$s_items	static configuration items
	 *	@param	array	$d_items	dynamic configuration items
	 */

	private static $s_items	= null;
	private static $d_items	= null;
	private static $con		= null;

	/**
	 *	__construct
	 *
	 *	initializes the class for use
	 *
	 *	@access	public
	 *	@return	null	function does not return a result
	 */

	public function __construct() {

		// load static configs if necessary
		if(self::$s_items === null) self::get_static_items();

		// check database connection
		if(self::$con === null) self::$con = self::get_db();

		// load dynamic configs if necessary
		if( self::$d_items === null ) self::get_db_items();
	}

	/**************************************************************************
		Class Actions

		This section contains useable actions for the class
	/**************************************************************************/

	/**
	 *	item
	 *
	 *	retrieves an item from configuration arrays and returns the result.
	 *
	 *	@access	public
	 *	@param	string	$name	name of the key to retrieve the value of.
	 *	@return	mixed			returns a result based on the key requested.
	 */

	public static function item($name) {

		// load from statics first to prevent overriding of hard coded
		// values.
		if(isset(self::$s_items[$name]))
			return self::$s_items[$name];

		// try to load from dynamics next
		if(isset(self::$d_items[$name]))
			return self::$d_items[$name];

		// if not found, return false to prevent errors.
		return false;
	}

	/**
	 *	set_item
	 *
	 *	sets a configuration item in the database.
	 *
	 *	@access	public
	 *	@param	string	$key	config item to set
	 *	@param	mixed	$value	string or array of item to set to key
	 *	@return	bool			return true if successful, false if not.
	 */

	public static function set_item($key, $value) {

		// make sure the item is not a statically configured item.
		if(isset(self::$s_items[$key])) {
			$_SESSION['ERROR']	=
				"Can't change statically configured value for {$key}";
			return false;
		}

		// check database configuration
		if(self::$con === false) {
			$_SESSION['ERROR']	= 'Database not configured';
			return false;
		}
		$con	= self::$con;

		// prepare data for entry in the database
		if(is_array($value)) {
			$value	= json_encode($value);
		}
		$value	= mysqli_real_escape_string($con, $value);
		$key	= mysqli_real_escape_string($con, $key);

		// perform database check
		$check	= $con->query("SELECT * FROM config WHERE `item`=`{$key}` LIMIT 1");
		if($check->num_rows > 0) {
			$check->close();
			self::update_value($key, $value);
		} else {
			$check->close();
			self::insert_value($key, $value);
		}

		// update $d_items
		self::get_db_items();

		return true;
	}

	/**
	 *	delete_item
	 *
	 *	removes a configuration item from database
	 *
	 *	@access	public
	 *	@param	string	$key	name of the item to remove.
	 *	@return	bool			return true on success, false on failure.
	 */

	public static function delete_item($key) {
		if(isset(self::$s_items['$key'])) {
			$_SESSION['ERROR'] = 'Cannot remove static configuration data';
			return false;
		}
		if(self::$con === false) {
			$_SESSION['ERROR'] = 'Database not configured!';
			return false;
		}
		$con	= self::$con;
		$key	= mysqli_real_escape_string($con, $key);
		$con->query("DELETE FROM config WHERE item='{$key}'");
		self::get_db_items();
		return true;
	}

	/**************************************************************************
		Class Utilities

		This section contains internal functions used by the class to perform
		varios actions
	/**************************************************************************/

	/**
	 *	insert_value
	 *
	 *	Creates a new configuration item in database
	 *
	 *	@access	private
	 *	@param	string	$key	name of the item to insert
	 *	@param	string	$value	value of the item to insert
	 *	@return	null			does not return a result
	 */

	private static function insert_value($key, $value) {
		$con	= self::$con;
		$con->query("INSERT INTO config (item, value)
			VALUES('{$key}','{$value}')");
	}

	/**
	 *	update_value
	 *
	 *	Updates existing value in database
	 *
	 *	@access	private
	 *	@param	string	$key	name of the item to update
	 *	@param	string	$value	new alue of the item to update
	 *	@return	null			does not return a result
	 */

	private static function update_value($key, $value) {
		$con	= self::$con;
		$con->query("UPDATE config SET value = '{$value}'
			WHERE item = '{$key}'");
	}

		private static function get_db() {
		if(isset(self::$s_items['database'])) {
			$db_host	= $s_items['database']['hostname'];
			$db_user	= $s_items['database']['username'];
			$db_pass	= $s_items['database']['password'];
			$db_name	= $s_items['database']['name'];
			$db_port	= $s_items['database']['port'];

			self::$con	= new mysqli($db_host,$db_user,$db_pass,$db_name,$db_port);
		} else {
			self::$con	= false;
		}
	}

	/**
	 *	get_static_items
	 *
	 *	Gets static configuration data from config files and associates them
	 *	to the $s_items configuration array.
	 *
	 *	@access	private
	 *	@return	null	does not return a result
	 */

	private static function get_static_items() {
		// load configuration
		if(! file_exists(CONFIG.'autoload.php'))
			die('Configuration autoload not present!');
		include CONFIG.'autoload.php';
		if(! isset($autoload) || ! is_array($autoload))
			die('Configuration autoload not properly formatted!');

		// load configuration files
		self::$s_items = array();
		foreach($autoload as $load) {
			if(! file_exists(CONFIG.$load.'.php'))
				die('ERROR: '.$load.' configuration file missing!');
			if(! isset($config) &amp;&amp; ! is_array($config))
				die('ERROR: '.$load.' configuration not properly formatted.');
			self::$s_items = $config;
		}
	}

	/**
	 *	get_db_items
	 *
	 *	Gets dynamic configuration data from a database and associates them
	 *	to the $d_items configuration array.
	 *
	 *	@access	private
	 *	@return	null	does not return a result
	 */

	private static function get_db_items() {
		// initialize the array
		self::$d_items	= array();

		// get items from the database
		if(self::$con !== false) {
			$con	= self::$con;
			$query	= $con->query('SELECT * FROM config');
			if($query->num_rows > 0) {
				while($row = $query::fetch_assoc()) {
					$item	= $row['item'];
					$value	= $row['value'];

					// filter value a bit
					if(strtolower($value) == '{{false}}')	$value = false;
					if(strtolower($value) == '{{true}}')	$value = true;
					if(strtolower($value) == '{{null}}')	$value = null;
					if(strtolower($value) == '{{empty}}')	$value = '';

					// check for json
					$is_json = (is_array(json_decode($value))) ? true : false;
					if($is_json) $value = json_decode($value);

					// save item to array
					self::$d_items[$name]	= $value;
				}
			}

			// clean up memory
			$query->free();
		}
	}
}
Life

Config Class

Simple class to manage configuration settings in a PHP application

query("SELECT * FROM config WHERE `item`=`{$key}` LIMIT 1");
		if($check->num_rows > 0) {
			$check->close();
			self::update_value($key, $value);
		} else {
			$check->close();
			self::insert_value($key, $value);
		}

		// update $d_items
		self::get_db_items();

		return true;
	}

	/**
	 *	delete_item
	 *
	 *	removes a configuration item from database
	 *
	 *	@access	public
	 *	@param	string	$key	name of the item to remove.
	 *	@return	bool			return true on success, false on failure.
	 */

	public static function delete_item($key) {
		if(isset(self::$s_items['$key'])) {
			$_SESSION['ERROR'] = 'Cannot remove static configuration data';
			return false;
		}
		if(self::$con === false) {
			$_SESSION['ERROR'] = 'Database not configured!';
			return false;
		}
		$con	= self::$con;
		$key	= mysqli_real_escape_string($con, $key);
		$con->query("DELETE FROM config WHERE item='{$key}'");
		self::get_db_items();
		return true;
	}

	/**************************************************************************
		Class Utilities

		This section contains internal functions used by the class to perform
		varios actions
	/**************************************************************************/

	/**
	 *	insert_value
	 *
	 *	Creates a new configuration item in database
	 *
	 *	@access	private
	 *	@param	string	$key	name of the item to insert
	 *	@param	string	$value	value of the item to insert
	 *	@return	null			does not return a result
	 */

	private static function insert_value($key, $value) {
		$con	= self::$con;
		$con->query("INSERT INTO config (item, value) 
			VALUES('{$key}','{$value}')");
	}

	/**
	 *	update_value
	 *
	 *	Updates existing value in database
	 *
	 *	@access	private
	 *	@param	string	$key	name of the item to update
	 *	@param	string	$value	new alue of the item to update
	 *	@return	null			does not return a result
	 */

	private static function update_value($key, $value) {
		$con	= self::$con;
		$con->query("UPDATE config SET value = '{$value}' 
			WHERE item = '{$key}'");
	}

		private static function get_db() {
		if(isset(self::$s_items['database'])) {
			$db_host	= $s_items['database']['hostname'];
			$db_user	= $s_items['database']['username'];
			$db_pass	= $s_items['database']['password'];
			$db_name	= $s_items['database']['name'];
			$db_port	= $s_items['database']['port'];

			self::$con	= new mysqli($db_host,$db_user,$db_pass,$db_name,$db_port);
		} else {
			self::$con	= false;
		}
	}

	/**
	 *	get_static_items
	 *
	 *	Gets static configuration data from config files and associates them
	 *	to the $s_items configuration array.
	 *
	 *	@access	private
	 *	@return	null	does not return a result
	 */

	private static function get_static_items() {
		// load configuration
		if(! file_exists(CONFIG.'autoload.php')) 
			die('Configuration autoload not present!');
		include CONFIG.'autoload.php';
		if(! isset($autoload) || ! is_array($autoload))
			die('Configuration autoload not properly formatted!');
		
		// load configuration files
		self::$s_items = array();
		foreach($autoload as $load) {
			if(! file_exists(CONFIG.$load.'.php'))
				die('ERROR: '.$load.' configuration file missing!');
			if(! isset($config) && ! is_array($config))
				die('ERROR: '.$load.' configuration not properly formatted.');
			self::$s_items = $config;
		}
	}

	/**
	 *	get_db_items
	 *
	 *	Gets dynamic configuration data from a database and associates them
	 *	to the $d_items configuration array.
	 *
	 *	@access	private
	 *	@return	null	does not return a result
	 */

	private static function get_db_items() {
		// initialize the array
		self::$d_items	= array();

		// get items from the database
		if(self::$con !== false) {
			$con	= self::$con;
			$query	= $con->query('SELECT * FROM config');
			if($query->num_rows > 0) {
				while($row = $query::fetch_assoc()) {
					$item	= $row['item'];
					$value	= $row['value'];

					// filter value a bit
					if(strtolower($value) == '{{false}}')	$value = false;
					if(strtolower($value) == '{{true}}')	$value = true;
					if(strtolower($value) == '{{null}}')	$value = null;
					if(strtolower($value) == '{{empty}}')	$value = '';

					// check for json
					$is_json = (is_array(json_decode($value))) ? true : false;
					if($is_json) $value = json_decode($value);

					// save item to array
					self::$d_items[$name]	= $value;
				}
			}

			// clean up memory
			$query->free();
		}
	}
}
Life

Config Class

Simple class to manage configuration settings in a PHP application

<?php

/**
 * 	Config Class
 *
 *	Simple class to manage configuration data stored in scripts or in a
 *	database. 
 *	
 *	Requires CONFIG constant to be set to path where static
 *	configurations are to be stored. 
 *
 *	Database settings must be stored as an array in a config file as 
 *	$config['database'], which must be loaded from autoload.php.
 *
 *	autoload.php must be in the config directory.
 *
 *	all static configurations must be loaded from the $autoload array
 *	which should contain the name of the config file, minus the .php file
 *	extension. the script will append the php file extension to the filename
 *	by itself.
 *
 *	I've not included the sql, but the valuse will be stored in a database
 *	table named config, and the required fields are item and value. format them
 *	in any manner that you wish. just make sure that item is set to unique or
 *	primary key.
 *
 *	Disclaimer of Warranty:
 *
 *	THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 *	AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 *	IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 *	ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
 *	LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
 *	CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 *	SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
 *	BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
 *	WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 *	OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
 *	ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 *	You may redistribute this script without modifications.  You may also
 *	distribute a modified version of this script, provided you notate that the
 *	script has been modified, provide a record of all changes that have been
 *	made, and provide a link to the original script. If you redistribute, you
 *	may not charge a fee for this script. You may charge a fee to support this
 *	script.
 *
 *	@author		Mark A. LaDoux
 *	@link		http://markladoux.com/
 *	@copyright	2012 Mark LaDoux
 *	@version	1.0.1
 *
 *  CHANGE LOG:
 *
 *  [2012.01.02] CREATED SCRIPT
 *  [2012.01.03] EDITED FUNCTION NOT TO RELY ON INTERNAL FUNCTION FROM MY PROJECT
 */

class Config {

	/**************************************************************************
		Class Configuration

		This section contains configuration data and initialization for the
		class.
	/**************************************************************************/

	/**
	 *	@param	array	$s_items	static configuration items
	 *	@param	array	$d_items	dynamic configuration items
	 */

	private static $s_items	= null;
	private static $d_items	= null;
	private static $con		= null;
	
	/**
	 *	__construct
	 *
	 *	initializes the class for use
	 *
	 *	@access	public
	 *	@return	null	function does not return a result
	 */

	public function __construct() {

		// load static configs if necessary
		if(self::$s_items === null) self::get_static_items();

		// check database connection
		if(self::$con === null) self::$con = self::get_db();

		// load dynamic configs if necessary
		if( self::$d_items === null ) self::get_db_items();
	}

	/**************************************************************************
		Class Actions

		This section contains useable actions for the class
	/**************************************************************************/

	/**
	 *	item
	 *
	 *	retrieves an item from configuration arrays and returns the result.
	 *
	 *	@access	public
	 *	@param	string	$name	name of the key to retrieve the value of.
	 *	@return	mixed			returns a result based on the key requested.
	 */

	public static function item($name) {

		// load from statics first to prevent overriding of hard coded
		// values.
		if(isset(self::$s_items[$name]))
			return self::$s_items[$name];

		// try to load from dynamics next
		if(isset(self::$d_items[$name]))
			return self::$d_items[$name];

		// if not found, return false to prevent errors.
		return false;
	}

	/**
	 *	set_item
	 *
	 *	sets a configuration item in the database.
	 *
	 *	@access	public
	 *	@param	string	$key	config item to set
	 *	@param	mixed	$value	string or array of item to set to key
	 *	@return	bool			return true if successful, false if not.
	 */

	public static function set_item($key, $value) {

		// make sure the item is not a statically configured item.
		if(isset(self::$s_items[$key])) {
			$_SESSION['ERROR']	= 
				"Can't change statically configured value for {$key}";
			return false;
		}

		// check database configuration
		if(self::$con === false) {
			$_SESSION['ERROR']	= 'Database not configured';
			return false;
		}
		$con	= self::$con;

		// prepare data for entry in the database
		if(is_array($value)) {
			$value	= json_encode($value);
		}
		$value	= mysqli_real_escape_string($con, $value);
		$key	= mysqli_real_escape_string($con, $key);

		// perform database check
		$check	= $con->query("SELECT * FROM config WHERE `item`=`{$key}` LIMIT 1");
		if($check->num_rows > 0) {
			$check->close();
			self::update_value($key, $value);
		} else {
			$check->close();
			self::insert_value($key, $value);
		}

		// update $d_items
		self::get_db_items();

		return true;
	}

	/**
	 *	delete_item
	 *
	 *	removes a configuration item from database
	 *
	 *	@access	public
	 *	@param	string	$key	name of the item to remove.
	 *	@return	bool			return true on success, false on failure.
	 */

	public static function delete_item($key) {
		if(isset(self::$s_items['$key'])) {
			$_SESSION['ERROR'] = 'Cannot remove static configuration data';
			return false;
		}
		if(self::$con === false) {
			$_SESSION['ERROR'] = 'Database not configured!';
			return false;
		}
		$con	= self::$con;
		$key	= mysqli_real_escape_string($con, $key);
		$con->query("DELETE FROM config WHERE item='{$key}'");
		self::get_db_items();
		return true;
	}

	/**************************************************************************
		Class Utilities

		This section contains internal functions used by the class to perform
		varios actions
	/**************************************************************************/

	/**
	 *	insert_value
	 *
	 *	Creates a new configuration item in database
	 *
	 *	@access	private
	 *	@param	string	$key	name of the item to insert
	 *	@param	string	$value	value of the item to insert
	 *	@return	null			does not return a result
	 */

	private static function insert_value($key, $value) {
		$con	= self::$con;
		$con->query("INSERT INTO config (item, value) 
			VALUES('{$key}','{$value}')");
	}

	/**
	 *	update_value
	 *
	 *	Updates existing value in database
	 *
	 *	@access	private
	 *	@param	string	$key	name of the item to update
	 *	@param	string	$value	new alue of the item to update
	 *	@return	null			does not return a result
	 */

	private static function update_value($key, $value) {
		$con	= self::$con;
		$con->query("UPDATE config SET value = '{$value}' 
			WHERE item = '{$key}'");
	}

		private static function get_db() {
		if(isset(self::$s_items['database'])) {
			$db_host	= $s_items['database']['hostname'];
			$db_user	= $s_items['database']['username'];
			$db_pass	= $s_items['database']['password'];
			$db_name	= $s_items['database']['name'];
			$db_port	= $s_items['database']['port'];

			self::$con	= new mysqli($db_host,$db_user,$db_pass,$db_name,$db_port);
		} else {
			self::$con	= false;
		}
	}

	/**
	 *	get_static_items
	 *
	 *	Gets static configuration data from config files and associates them
	 *	to the $s_items configuration array.
	 *
	 *	@access	private
	 *	@return	null	does not return a result
	 */

	private static function get_static_items() {
		// load configuration
		if(! file_exists(CONFIG.'autoload.php')) 
			die('Configuration autoload not present!');
		include CONFIG.'autoload.php';
		if(! isset($autoload) || ! is_array($autoload))
			die('Configuration autoload not properly formatted!');
		
		// load configuration files
		self::$s_items = array();
		foreach($autoload as $load) {
			if(! file_exists(CONFIG.$load.'.php'))
				die('ERROR: '.$load.' configuration file missing!');
			if(! isset($config) &amp;&amp; ! is_array($config))
				die('ERROR: '.$load.' configuration not properly formatted.');
			self::$s_items = $config;
		}
	}

	/**
	 *	get_db_items
	 *
	 *	Gets dynamic configuration data from a database and associates them
	 *	to the $d_items configuration array.
	 *
	 *	@access	private
	 *	@return	null	does not return a result
	 */

	private static function get_db_items() {
		// initialize the array
		self::$d_items	= array();

		// get items from the database
		if(self::$con !== false) {
			$con	= self::$con;
			$query	= $con->query('SELECT * FROM config');
			if($query->num_rows > 0) {
				while($row = $query::fetch_assoc()) {
					$item	= $row['item'];
					$value	= $row['value'];

					// filter value a bit
					if(strtolower($value) == '{{false}}')	$value = false;
					if(strtolower($value) == '{{true}}')	$value = true;
					if(strtolower($value) == '{{null}}')	$value = null;
					if(strtolower($value) == '{{empty}}')	$value = '';

					// check for json
					$is_json = (is_array(json_decode($value))) ? true : false;
					if($is_json) $value = json_decode($value);

					// save item to array
					self::$d_items[$name]	= $value;
				}
			}

			// clean up memory
			$query->free();
		}
	}
}