Code Search for Developers
 
 
  

storage.php from ECP (EliteCore Project) at Krugle


Show storage.php syntax highlighted

<?php
class StorageException extends Exception {
};

class Storage {
	const VERSION = 1;

	const SERVER = 1;
	const USER = 2;
	const SESSION = 3;

	const HALFHOUR = "1800";
	const HOUR = "3600";
	const DAY = "86400";
	const WEEK = "604800";
	const MONTH = "2419200";

	private static $loaded = false;
	private static $sessionLoaded = false;

	private static $serverVars = array ();
	private static $sessionVars = array ();

	private static $userVars = array ();
	private static $serverTable = "ecp_engine_config";
	private static $userTable = "ecp_user";

	private static $saveUSER = array ();
	private static $saveSERVER = array ();
	private static $saveSESSION = array ();

	private static $deleteUSER = array ();
	private static $deleteSERVER = array ();
	private static $deleteSESSION = array ();

	public static function Init($table = false) {
		if ($table !== false) {
			self :: $serverTable = $table;
		}
		$expires = array (
			Storage :: HALFHOUR,
			Storage :: HOUR,
			Storage :: DAY,
			Storage :: WEEK,
			Storage :: MONTH
		);
		foreach ($expires as $expire) {
			if (isset ($_COOKIE[self :: $userTable . "_" . $expire])) {
				self :: $userVars[$expire] = @ unserialize(Engine :: $encryption->decrypt($_COOKIE[self :: $userTable . "_" . $expire]));
				//print_r(self :: $userVars[$expire]);
				if (self :: $userVars[$expire] === false || self :: $userVars[$expire]['__version'] != Storage :: VERSION) {
					self :: $userVars[$expire] = array ();
					Debug :: addReport("Cookies read - old version detected - cookies have expired!", 1);
				} else {
					Debug :: addReport("Cookies read - expires: " . $expire, 1);
				}
			}
		}
	}

	private static function loadServerVars() {
		if (!self :: $loaded) {
			$TA = new TA();
			$TA->addQuery(TA :: SELECT, self :: $serverTable);
			$TA->Execute();
			while ($object = $TA->Result()->FetchObject()) {
				self :: $serverVars[$object->name] = $object->value;
			}
			$TA->End();
			self :: $loaded = true;
		}
	}
	private static function loadSessionVars() {
		if (!self :: $sessionLoaded && User :: hasSession()) {
			self :: $sessionVars = User :: getSessionData();
			self :: $sessionLoaded = true;
		}
	}
	public static function Save($name, $value, $mode = Storage :: SESSION, $expires = Storage :: DAY) {
		switch ($mode) {
			case Storage :: USER :
				self :: $saveUSER[$expires][$name] = $value;
				break;
			default :
				self :: $saveSESSION[$name] = $value;
		}
		return true;
	}
	public static function Delete($name, $mode = Storage :: SESSION) {
		switch ($mode) {
			case Storage :: USER :
				self :: $deleteUSER[$name] = true;
				break;
			default :
				self :: $deleteSESSION[$name] = true;
		}
		return true;
	}
	public static function Load($name, $mode = Storage :: SESSION, $expires = Storage :: DAY) {
		switch ($mode) {
			case Storage :: USER :
				if (isset (self :: $saveUSER[$expires][$name]))
					return self :: $saveUSER[$expires][$name];
				else
					if (isset (self :: $userVars[$expires][$name]))
						return self :: $userVars[$expires][$name];
					else
						throw new StorageException;
			default :
				if (!self :: $sessionLoaded)
					self :: loadSessionVars();
				if (!self :: $loaded)
					self :: loadServerVars();
				if (isset (self :: $saveSESSION[$name]))
					return self :: $saveSESSION[$name];
				else
					if (isset (self :: $sessionVars[$name]))
						return self :: $sessionVars[$name];
					else
						if (isset (self :: $serverVars[$name]))
							return self :: $serverVars[$name];
						else
							return false;
		}
	}
	public static function Write() {
		self :: UpdateSession();
		self :: WriteCookies();
		self :: WriteToServer();
		Debug :: addReport("Server and client variables saved", 0);
	}
	private static function WriteToServer() {
		if (sizeof(self :: $saveSERVER)) {
			if (!self :: $loaded)
				self :: loadServerVars();
			$TA = new TA();
			foreach (self :: $saveSERVER as $name => $value) {
				if (array_key_exists($name, self :: $serverVars)) {
					$TA->addQuery(TA :: UPDATE, self :: $serverTable);
					$TA->LIMIT(1);
				} else {
					$TA->addQuery(TA :: INSERT, self :: $serverTable);
				}
				$TA->addParam($name, TA :: STRING, $value);
				$TA->Execute();
				$TA->removeQuery();
			}
			$TA->End();
		}
	}
	public static function UpdateSession() {
		if (!self :: $sessionLoaded && !User :: hasSession())
			return false;

		// merge sessionVars (existing variables) with saveSESSION (new variables)
		if (isset (self :: $sessionVars) && self :: $sessionVars !== false && sizeof(self :: $sessionVars)) {
			foreach (self :: $sessionVars as $name => $value) {
				if (!isset (self :: $saveSESSION[$name]))
					self :: $saveSESSION[$name] = $value;
			}
		}
		if (isset (self :: $deleteSESSION) && self :: $deleteSESSION !== false && sizeof(self :: $deleteSESSION)) {
			foreach (self :: $saveSESSION as $name => $value) {
				// unset variables marked for deletion
				if (isset (self :: $deleteSESSION[$name])) {
					unset (self :: $saveSESSION[$name]);
				}
			}
		}

		if (isset (self :: $saveSESSION) && self :: $saveSESSION !== false && sizeof(self :: $saveSESSION)) {
			$sessionData = serialize(self :: $saveSESSION);
		}

		if (User :: hasSessionData()) {
			if (isset ($sessionData)) {
				$TA = new TA();
				$TA->addQuery(TA :: UPDATE, 'ecp_engine_sessions');
				$TA->WHERE("`id`='" . User :: getSID() . "'");
				$TA->LIMIT(1);
				$TA->addParam('data', TA :: STRING, String :: Escape($sessionData));
				$TA->Execute();
			}
		} else
			if (!isset ($_POST['logout']) && !isset ($_GET['logout'])) {
				$TA = new TA();
				$TA->addQuery(TA :: INSERT, 'ecp_engine_sessions');
				$TA->addParam('id', TA :: STRING, String :: Escape(User :: getSID()));
				$TA->addParam('user', TA :: STRING, User :: $profile->nick);
				$TA->addParam('location', TA :: STRING, '/');
				if (isset ($sessionData))
					$TA->addParam('data', TA :: STRING, String :: Escape($sessionData));
				$TA->Execute();
			}
	}
	private static function WriteCookies() {
		// merge userVars (existing cookies) with saveUSER (new variables)
		foreach (self :: $userVars as $expires => $variables) {
			foreach ($variables as $name => $value) {
				self :: $saveUSER[$expires][$name] = $value;
			}
		}

		foreach (self :: $saveUSER as $expires => $variables) {
			// test expiration time

			foreach ($variables as $name => $value) {

				// unset variables marked for deletion
				if (isset (self :: $deleteUSER[$name])) {
					unset ($variables[$name]);
				}
			}

			if (sizeof($variables)) {
				// include version number
				$variables['__version'] = Storage :: VERSION;
				// serialize and encrypt array
				$serialized_cookies = Engine :: $encryption->crypt(serialize($variables));
				// save cookies
				setcookie(self :: $userTable . "_" . $expires, $serialized_cookies, time() + (int) $expires, '/');
			} else {
				// clear cookies
				setcookie(self :: $userTable . "_" . $expires, "", 0);
			}
		}

	}
}
?>



See more files for this project here

ECP (EliteCore Project)

EliteCore Project is a PHP5.1/Javascript/AJAX/XHTML/CSS framework for creating WEB 2.0 applications and services.The basic open-source instalation can be also used as an interactive personal page or BLOG.This project uses the latest features available.

Project homepage: http://sourceforge.net/projects/elitecore
Programming language(s): JavaScript,PHP,XML
License: cpl

  debug/
    content.php
  exceptions/
    ajaxflush.php
    nomodule.php
    undefineddata.php
  interface/
    encryption.php
    form.php
    module_class.php
    session_interface.php
  renderers/
    default.php
  sql/
    mysql.php
    mysqli.php
  themes/
    ECP/
      accept.png
      add.png
      alt_star.gif
      anchor.png
      arrow_refresh.png
      asterisk_orange.png
      asterisk_yellow.png
      attach.png
      back.png
      cog_error.png
      cog_go.png
      comment.png
      comment_add.png
      comment_delete.png
      comment_edit.png
      comments.png
      comments_add.png
      comments_delete.png
      control_play_blue.png
      drive.png
      gnome-fs-directory.png
      gnome-mime-audio.png
      layers.png
      layout.png
      layout_add.png
      layout_content.png
      layout_delete.png
      layout_edit.png
      layout_error.png
      layout_header.png
      layout_link.png
      layout_sidebar.png
      lightbulb.png
      lightbulb_add.png
      lightbulb_delete.png
      lightbulb_off.png
      lightning.png
      lightning_add.png
      lightning_delete.png
      lightning_go.png
      link.png
      link_add.png
      link_break.png
      link_delete.png
      link_edit.png
      link_error.png
      link_go.png
      lock.png
      lock_add.png
      lock_break.png
      lock_delete.png
      lock_edit.png
      lock_go.png
      lock_open.png
      newspaper.png
      newspaper_add.png
      newspaper_delete.png
      newspaper_go.png
      newspaper_link.png
      note.gif
      note.png
      note_add.png
      note_delete.gif
      note_delete.png
      note_edit.png
      note_error.png
      note_go.png
      note_new.gif
      overlays.png
      package.png
      package_add.png
      package_delete.png
      package_go.png
      package_green.png
      package_link.png
      page.gif
      page.png
      page_add.png
      page_attach.png
      page_code.png
      page_copy.png
      page_delete.png
      page_edit.png
      page_error.png
      page_excel.png
      page_find.png
      page_gear.png
      page_go.png
      page_green.png
      page_key.png
      page_lightning.png
      page_link.png
      page_paintbrush.png
      page_paste.png
      page_red.png
      page_refresh.png
      page_save.png
      page_white.png
      pencil.png
      pencil_add.png
      pencil_delete.png
      pencil_go.png
      photo.png
      photo_add.png
      photo_delete.png
      photo_link.png
      photos.png
      picture.png
      picture_add.png
      picture_delete.png
      picture_edit.png
      picture_empty.png
      picture_error.png
      picture_go.png
      picture_key.png
      picture_link.png
      picture_save.png
      pictures.png
      plugin.png
      plugin_add.png
      plugin_delete.png
      plugin_disabled.png
      plugin_edit.png
      plugin_error.png
      plugin_go.png
      plugin_link.png
      report.png
      report_add.png
      report_delete.png
      report_disk.png
      report_edit.png
      report_go.png
      report_key.png
      report_link.png
      report_magnify.png
      report_picture.png
      report_user.png
      report_word.png
      script.png
      script_add.png
      script_code.png
      script_code_red.png
      script_delete.png
      script_edit.png
      script_error.png
      script_gear.png
      script_go.png
      script_key.png
      script_lightning.png
      script_link.png
      script_palette.png
      script_save.png
      star.png
      star_rating.gif
      stop.png
      style.png
      text_align_center.png
      text_align_justify.png
      text_align_left.png
      text_align_right.png
      text_allcaps.png
      text_bold.png
      text_columns.png
      text_dropcaps.png
      text_heading_1.png
      text_heading_2.png
      text_heading_3.png
      text_heading_4.png
      text_heading_5.png
      text_heading_6.png
      text_horizontalrule.png
      text_indent.png
      text_indent_remove.png
      text_italic.png
      text_kerning.png
      text_letter_omega.png
      text_letterspacing.png
      text_linespacing.png
      text_list_bullets.png
      text_list_numbers.png
      text_lowercase.png
      text_padding_bottom.png
      text_padding_left.png
      text_padding_right.png
      text_padding_top.png
      text_replace.png
      text_signature.png
      text_smallcaps.png
      text_strikethrough.png
      text_subscript.png
      text_superscript.png
      text_underline.png
      text_uppercase.png
      textfield.png
      textfield_add.png
      textfield_delete.png
      textfield_key.png
      textfield_rename.png
      tux.png
      vert_star.gif
    ECP.xml
  Icon.php
  Location.php
  Module.php
  ModulesManager.php
  MusicTags.php
  Page.php
  XHTMLParser.php
  XMLForms.php
  ajax.php
  author.html
  cache.php
  config.php
  date.php
  db.php
  debug.php
  ecp-full.php
  ecp-mini.php
  engine.php
  events.php
  filesystem.php
  footer.html
  i18n.php
  mailer.php
  main.css
  mcrypt.php
  mime.php
  mod_rewrite.php
  perspective.php
  rc4.php
  reflection.php
  session_passport.php
  storage.php
  string.php
  template.php
  texy.php
  user.php
  user_cache.php
  wysiwyg_texy.php
  xhtml_form.php
  xtea.php