diff options
Diffstat (limited to 'engine/classes/ElggPluginPackage.php')
| -rw-r--r-- | engine/classes/ElggPluginPackage.php | 276 | 
1 files changed, 0 insertions, 276 deletions
diff --git a/engine/classes/ElggPluginPackage.php b/engine/classes/ElggPluginPackage.php index 6301ad1f2..dcc6918d0 100644 --- a/engine/classes/ElggPluginPackage.php +++ b/engine/classes/ElggPluginPackage.php @@ -453,282 +453,6 @@ class ElggPluginPackage {  		return $r;  	} - -	/************************************** -	 * Detailed reports for requirements. * -	 **************************************/ - - -	/** -	 * Returns a report of the dependencies with human -	 * readable statuses. -	 * -	 * @return array -	 */ -	public function getDependenciesReport() { -		$requires = $this->getManifest()->getRequires(); -		$conflicts = $this->getManifest()->getConflicts(); -		$enabled_plugins = get_installed_plugins('enabled'); - -		$status = true; -		$messages = array(); - -		$return = array( -			array( -				'type' => 'requires', -				'dep' => $dep, -				'status' => 'bool', -				'comment' => '' -			) -		); - -		foreach ($requires as $require) { -			switch ($require['type']) { -				case 'elgg_version': -					$result = $this->checkRequiresElgg($require, get_version()); -					break; - -				case 'elgg_release': -					$result = $this->checkRequiresElgg($require, get_version(true)); -					break; - -				case 'plugin': -					$result = $this->checkDepsPlugin($require, $enabled_plugins); -					break; - -				case 'php_extension': -					$result = $this->checkRequiresPhpExtension($require); -					break; - -				case 'php_ini': -					$result = $this->checkRequiresPhpIni($require); -					break; - -				default: -					$result = array( -						'status' => false, -						'message' => elgg_echo('ElggPluginPackage:UnknownDep', -										array($require['type'], $this->getManifest()->getPluginID())) -					); -					break; -			} - -			if (!$result['status']) { -				$status = false; -				$messages[] = $result['message']; -			} -		} - -		foreach ($conflicts as $conflict) { - -		} - -		$return = array( -			'status' => $status, -			'messages' => $messages -		); - -		return $return; -	} - -	/** -	 * Checks if $plugins meets the requirement by $require. -	 * -	 * Returns an array in the form array('status' => bool, 'message' => 'Any messages') -	 * -	 * @param array $require An Elgg manifest.xml requires array -	 * @param array $plugins A list of plugins as returned by get_installed_plugins(); -	 * @return array -	 */ -	private function checkRequiresPlugin(array $require, array $plugins = array()) { -		$status = true; -		$message = ''; - -		$name = $require['name']; -		$version = $require['version']; -		$comparison = $require['comparison']; - -		// not enabled. -		if (!array_key_exists($name, $plugins)) { -			$status = false; - -			if ($version) { -				$message = elgg_echo("ElggPluginPackage:Requires:Plugin:NotEnabled:$comparison", -							array($this->getManifest()->getPluginID(), $name, $version)); -			} else { -				$message = elgg_echo('ElggPluginPackage:Requires:Plugin:NotEnabled:NoVersion', -							array($this->getManifest()->getPluginID(), $name)); -			} -		} - -		// enabled. check version. -		if ($status != false) { -			$requires_plugin_info = $plugins[$name]; - -			//@todo boot strapping until we can migrate everything over to ElggPluginPackage. -			$plugin_package = new ElggPluginPackage($name); -			$plugin_version = $plugin_package->getManifest()->getVersion(); - -			if ($version && !version_compare($plugin_version, $version, $comparison)) { -				$status = false; - -				$message = elgg_echo("ElggPluginPackage:Requires:Plugin:$comparison", -								array($this->getManifest()->getPluginID(), $name, $version, $plugin_version)); -			} -		} - -		// if all else fails check with the provides -		if ($status == false) { -			if (elgg_check_plugins_provides('plugin', $name)) { -				// it's provided. check version if asked. -				$status = true; -				$message = ''; - -				if ($version && !elgg_check_plugins_provides('plugin', $name, $version, $comparison)) { -						// change the message to something more meaningful -						$provide = elgg_get_plugins_provides('plugin', $name); -						$plugin_version = "{$provide['provided_by']}:$name={$provide['version']}"; - -						$status = false; -						$message = elgg_echo("ElggPluginPackage:Requires:Plugin:$comparison", -								array($this->getManifest()->getPluginID(), $name, $version, $plugin_version)); -				} -			} -		} - -		return array( -			'status' => $status, -			'message' => $message -		); -	} - -	/** -	 * Checks if $elgg_version meets the requirement by $require. -	 * -	 * Returns an array in the form array('status' => bool, 'message' => 'Any messages') -	 * -	 * @param array $require      An Elgg manifest.xml requires array -	 * @param array $elgg_version An Elgg version (either YYYYMMDDXX or X.Y.Z) -	 * @return array -	 */ -	private function checkRequiresElgg(array $require, $elgg_version) { -		$status = true; -		$message = ''; -		$version = $require['version']; -		$comparison = $require['comparison']; - -		if (!version_compare($elgg_version, $version, $comparison)) { -			$status = false; -			$message = elgg_echo("ElggPluginPackage:Requires:Elgg:$comparison", -							array($this->getManifest()->getPluginID(), $version)); -		} - -		return array( -			'status' => $status, -			'message' => $message -		); -	} - -	/** -	 * Checks if the PHP extension in $require is loaded. -	 * -	 * @todo Can this be merged with the plugin checker? -	 * -	 * @param array $require An Elgg manifest.xml deps array -	 * @return array -	 */ -	private function checkRequiresPhpExtension($require) { -		$status = true; -		$message = ''; - -		$name = $require['name']; -		$version = $require['version']; -		$comparison = $require['comparison']; - -		// not enabled. -		if (!extension_loaded($name)) { -			$status = false; -			if ($version) { -				$message = elgg_echo("ElggPluginPackage:Requires:PhpExtension:NotInstalled:$comparison", -							array($this->getManifest()->getPluginID(), $name, $version)); -			} else { -				$message = elgg_echo('ElggPluginPackage:Requires:PhpExtension:NotInstalled:NoVersion', -							array($this->getManifest()->getPluginID(), $name)); -			} -		} - -		// enabled. check version. -		if ($status != false) { -			$ext_version = phpversion($name); - -			if ($version && !version_compare($ext_version, $version, $comparison)) { -				$status = false; -				$message = elgg_echo("ElggPluginPackage:Requires:PhpExtension:$comparison", -								array($this->getManifest()->getPluginID(), $name, $version)); -			} -		} - -		// some php extensions can be emulated, so check provides. -		if ($status == false) { -			if (elgg_check_plugins_provides('php_extension', $name)) { -				// it's provided. check version if asked. -				$status = true; -				$message = ''; - -				if ($version && !elgg_check_plugins_provides('php_extension', $name, $version, $comparison)) { -						// change the message to something more meaningful -						$provide = elgg_get_plugins_provides('php_extension', $name); -						$plugin_version = "{$provide['provided_by']}:$name={$provide['version']}"; - -						$status = false; -						$message = elgg_echo("ElggPluginPackage:Requires:PhpExtension:$comparison", -								array($this->getManifest()->getPluginID(), $name, $version, $plugin_version)); -				} -			} -		} - -		return array( -			'status' => $status, -			'message' => $message -		); -	} - - -	/** -	 * Check if the PHP ini setting satisfies $require. -	 * -	 * @param array $require An Elgg manifest.xml requires array -	 * @return array -	 */ -	private function checkRequiresPhpIni($require) { -		$status = true; -		$message = ''; - -		$name = $require['name']; -		$value = $require['value']; -		$comparison = $require['comparison']; - -		// ini_get() normalizes truthy values to 1 but falsey values to 0 or ''. -		// version_compare() considers '' < 0, so normalize '' to 0. -		// ElggPluginManifest normalizes all bool values and '' to 1 or 0. -		$setting = ini_get($name); - -		if ($setting === '') { -			$setting = 0; -		} - -		if (!version_compare($setting, $value, $comparison)) { -			$status = false; -			$message = elgg_echo("ElggPluginPackage:Requires:PhpIni:$comparison", -					array($this->getManifest()->getPluginID(), $name, $value, $setting)); -		} - -		return array( -			'status' => $status, -			'message' => $message -		); -	} -  	/**  	 * Activate the plugin.  	 *  | 
