web/wp-content/plugins/exec-php/includes/option.php
branchwordpress
changeset 123 561aa6d282f6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/wp-content/plugins/exec-php/includes/option.php	Mon Feb 01 09:51:57 2010 +0000
@@ -0,0 +1,171 @@
+<?php
+
+require_once(dirname(__FILE__).'/const.php');
+
+// -----------------------------------------------------------------------------
+// the ExecPhp_Option class handles the loading and storing of the
+// plugin options including all needed conversion routines during upgrade
+// -----------------------------------------------------------------------------
+
+if (!class_exists('ExecPhp_Option')) :
+
+define('ExecPhp_OPTION_VERSION', 'version');
+define('ExecPhp_OPTION_WIDGET_SUPPORT', 'widget_support');
+define('ExecPhp_OPTION_HAS_OLD_STYLE', 'exec-php_has_old_style');
+define('ExecPhp_OPTION_IGNORE_OLD_STYLE_WARNING', 'exec-php_ignore_old_style_warning');
+
+class ExecPhp_Option
+{
+	var $m_status = ExecPhp_STATUS_UNINITIALIZED;
+	var $m_version = ExecPhp_VERSION;
+
+	// default option values will be set during load()
+	var $m_widget_support = true;
+
+	// ---------------------------------------------------------------------------
+	// init
+	// ---------------------------------------------------------------------------
+
+	function ExecPhp_Option()
+	{
+		$this->m_status = $this->upgrade();
+	}
+
+	// ---------------------------------------------------------------------------
+	// option handling
+	// ---------------------------------------------------------------------------
+
+	// Upgrades plugin from previous versions or even installs it
+	function upgrade()
+	{
+		$old_version = $this->detect_plugin_version();
+		while ($old_version != ExecPhp_VERSION)
+		{
+			$this->load();
+			if (version_compare($old_version, '4.0.dev') < 0)
+			{
+				$this->upgrade_to_4_0();
+				$old_version = '4.0';
+			}
+			else if (version_compare($old_version, '4.1.dev') < 0)
+				$old_version = '4.1';
+			else if (version_compare($old_version, '4.2.dev') < 0)
+			{
+				$this->upgrade_to_4_2();
+				$old_version = '4.2';
+			}
+			else if (version_compare($old_version, '4.3.dev') < 0)
+				$old_version = '4.3';
+			else if (version_compare($old_version, '4.4.dev') < 0)
+				$old_version = '4.4';
+			else if (version_compare($old_version, '4.5.dev') < 0)
+				$old_version = '4.5';
+			else if (version_compare($old_version, '4.6.dev') < 0)
+				$old_version = '4.6';
+			else if (version_compare($old_version, '4.7.dev') < 0)
+				$old_version = '4.7';
+			else if (version_compare($old_version, '4.8.dev') < 0)
+				$old_version = '4.8';
+			else if (version_compare($old_version, '4.9.dev') < 0)
+				$old_version = '4.9';
+			else
+				// we are downgrading to an older version of the plugin by
+				// resetting the version to 0 and walking up the conversion path
+				$old_version = '0';
+
+			$this->m_version = $old_version;
+			$this->save();
+		}
+		$this->load();
+		return ExecPhp_STATUS_OKAY;
+	}
+
+	function save()
+	{
+		// introduced in 4.0
+		$option[ExecPhp_OPTION_VERSION] = $this->m_version;
+
+		// introduced in 4.0
+		$option[ExecPhp_OPTION_WIDGET_SUPPORT] = $this->m_widget_support;
+
+		update_option(ExecPhp_PLUGIN_ID, $option);
+	}
+
+	function load()
+	{
+		$option = get_option(ExecPhp_PLUGIN_ID);
+
+		// introduced in 4.0
+		if (isset($option[ExecPhp_OPTION_WIDGET_SUPPORT]))
+			$this->m_widget_support = $option[ExecPhp_OPTION_WIDGET_SUPPORT];
+		else
+			$this->m_widget_support = true;
+	}
+
+	// ---------------------------------------------------------------------------
+	// tools
+	// ---------------------------------------------------------------------------
+
+	function detect_plugin_version()
+	{
+		$option = get_option(ExecPhp_PLUGIN_ID);
+		if ($option === false)
+			$version = '0';
+		else
+			$version = $option[ExecPhp_OPTION_VERSION];
+		return $version;
+	}
+
+	function upgrade_to_4_0()
+	{
+		// this is first installation of the plugin or upgrade from a version
+		// prior to 4.0;
+		// still needed for deletion from the database - these are obsolete
+		// since version 3.1
+		delete_option(ExecPhp_OPTION_HAS_OLD_STYLE);
+		delete_option(ExecPhp_OPTION_IGNORE_OLD_STYLE_WARNING);
+
+		// be sure standard roles are available, these may be deleted or
+		// renamed by the blog administrator
+		$role = get_role('administrator');
+		if ($role !== NULL)
+			$role->add_cap(ExecPhp_CAPABILITY_EXECUTE_ARTICLES);
+	}
+
+	function upgrade_to_4_2()
+	{
+		// be sure standard roles are available, these may be deleted or
+		// renamed by the blog administrator
+		$role = get_role('administrator');
+		if ($role !== NULL)
+			$role->add_cap(ExecPhp_CAPABILITY_EDIT_OTHERS_PHP);
+	}
+
+	// ---------------------------------------------------------------------------
+	// access
+	// ---------------------------------------------------------------------------
+
+	function set_from_POST()
+	{
+		$this->m_widget_support
+			= isset($_POST[ExecPhp_POST_WIDGET_SUPPORT]);
+	}
+
+	function get_status()
+	{
+		return $this->m_status;
+	}
+
+	function get_version()
+	{
+		return $this->m_version;
+	}
+
+	function get_widget_support()
+	{
+		return $this->m_widget_support;
+	}
+}
+endif;
+
+?>
\ No newline at end of file