All pastes #1230015 Raw Edit

Miscellany

public php v1 · immutable
#1230015 ·published 2008-10-18 07:56 UTC
rendered paste body
<?phpclass Poutinaba_Preferences{	private $db;	private $config;	private $user_id;	private $altered;	private $added;	private $deleted;	private $is_changed;	private $is_loaded;	private $entries;	function __construct($config, $db, $user_id = NULL)	{		$this->db          = $db;		$this->config      = $config;		$this->user_id     = $user_id;		$this->altered     = array();		$this->deleted     = array();		$this->added       = array();		$this->is_changed  = FALSE;		$this->is_loaded   = FALSE;		$this->entries     = array();	}	function save()	{		if ($this->user_id == NULL)			throw new Exception('$this->user_id is NULL');			$user_id = intval($this->user_id);		if ($this->is_changed == FALSE)			return;		// Just an update		foreach($this->altered as $key => $value)		{			$s_key   = pg_escape_string($key);			$s_value = pg_escape_string($value->value);			$query = "				UPDATE 					user_preferences 				SET 					value = '{$s_value}',					date_modified = NOW()				WHERE 					user_id = '{$user_id}' 				AND 					preferences_id = (SELECT id FROM preferences WHERE name_short = '{$s_key}')			";					pg_query($query);		}		// Check for existence, then add		foreach($this->added as $key => $value)		{			$s_key        = pg_escape_string($key);			$s_name       = pg_escape_string(ucwords(str_replace('_', ' ', $key)));			$s_value      = pg_escape_string($value->value);			$query = "				SELECT					id				FROM					preferences				WHERE					name_short = '{$s_key}'			";					$result = pg_query($query);			if (pg_num_rows($result) == 0)			{				$query = "INSERT INTO preferences (date_created, date_modified, name_short, name, is_active) VALUES (NOW(), NOW(), '{$s_key}', '{$s_name}', 't')";				pg_query($query);			}			$query = "				INSERT INTO user_preferences				(					date_created,					date_modified,					user_id,					preferences_id,					value,					is_active				)				VALUES				(					NOW(),					NOW(),					'{$user_id}',					(SELECT id FROM preferences WHERE name_short = '{$s_key}'),					'{$s_value}',					't'				)			";			pg_query($query);		}		// Delete entries		foreach($this->deleted as $key => $value)		{			$s_key = pg_escape_string($key);			$query = "				DELETE FROM 					user_preferences				WHERE					user_id = '{$user_id}'				AND					preferences_id = (SELECT id FROM preferences WHERE name_short = '{$s_key}')			";					pg_query($query);		}		$this->fromDB($user_id);	}	function fromDB($user_id = NULL)	{		if ($user_id == NULL && $this->user_id == NULL)			throw new Exception('$this->user_id and passed $user_id are NULL');		$user_id = (($user_id == NULL) ? intval($this->user_id) : intval($user_id));		$this->user_id = $user_id;		$this->deleted    = array();		$this->is_changed = FALSE;		$this->altered    = array();		$this->added      = array();		$this->is_loaded  = TRUE;		$this->entries = array();		$query = "			SELECT				uprefs.date_created,				uprefs.date_modified,				uprefs.id,				uprefs.user_id,				uprefs.preferences_id,				uprefs.value,				uprefs.is_active,				prefs.name,				prefs.name_short			FROM				user_preferences uprefs			JOIN				preferences prefs ON (prefs.id = uprefs.preferences_id)			WHERE				uprefs.user_id = '{$user_id}'		";		$res = pg_query($query);		if (pg_num_rows($res) == 0)			return FALSE;		while ($row = pg_fetch_object($res))		{			$this->entries[$row->name_short] = $row;		}	}	function __get($name)	{		// If it's deleted, ignore everything else		if (isset($this->deleted[$name]))		{			return NULL;		}		// Then Added		if (isset($this->added[$name]))		{			return $this->added[$name]->value;		}		if (isset($this->altered[$name]))		{			return $this->altered[$name]->value;		}		// Then entries		if (isset($this->entries[$name]))		{			return $this->entries[$name]->value;		}		return NULL;	}	function __unset($name)	{		if (isset($this->entries[$name]))		{			$this->deleted[$name] = $this->entries[$name];			$this->is_changed = TRUE;		}				if (isset($this->added[$name]))			unset($this->added[$name]);		if (isset($this->altered[$name]))			unset($this->altered[$name]);	}	function __set($name, $value)	{		if (isset($this->entries[$name]))		{			$m_array = &$this->altered;			$this->is_changed = TRUE;		}		else		{				$m_array = &$this->added;			$this->is_changed = TRUE;		}		if (!isset($m_array[$name]))			$m_array[$name] = new stdclass();		if (isset($this->deleted[$name]))			unset($this->deleted[$name]);		$m_array[$name]->name_short = $name;		$m_array[$name]->value      = $value;	}}// Test coderequire_once('Poutinaba_User.php');require_once('Poutinaba_Thumb.php');require_once('Poutinaba_Post.php');require_once('Poutinaba_Thread.php');require_once('Poutinaba_Media.php');require_once('Poutinaba_Page.php');require_once('Poutinaba_Channel_Page.php');require_once('Poutinaba_Preferences.php');require_once('../dbconn.php');require_once('../config.php');$prefs = new Poutinaba_Preferences($config, $db);$prefs->fromDB(1);$prefs->items_per_page = 25;//unset($prefs->items_per_page);$prefs->save();echo "<pre>"; print_r($prefs); die();die($prefs->items_per_page);?>