Skip to content
installer_base.lib.php 143 KiB
Newer Older
					list($user, $group) = $output;
				}
				break;
latham's avatar
latham committed
			}
		}

		if (!empty($user) && !empty($group)) {
			chown($tConf, $user);
			chgrp($tConf, $group);
		}

		if (!empty($access)) {
			exec("chmod $access $tConf");
		}
	}

	/**
	 * Helper function - filter the contents of a config
	 * file by inserting the common ispconfig database
	 * credentials.
	 *
	 * @param $tContents
	 * @return string
	 */
	protected function insert_db_credentials($tContents) {
		global $conf;

		$tContents = str_replace('{mysql_server_ispconfig_user}', $conf["mysql"]["ispconfig_user"], $tContents);
		$tContents = str_replace('{mysql_server_ispconfig_password}', $conf["mysql"]["ispconfig_password"], $tContents);
		$tContents = str_replace('{mysql_server_database}', $conf["mysql"]["database"], $tContents);
		$tContents = str_replace('{mysql_server_ip}', $conf["mysql"]["ip"], $tContents);
		$tContents = str_replace('{mysql_server_host}', $conf['mysql']['host'], $tContents);
		$tContents = str_replace('{mysql_server_port}', $conf['mysql']['port'], $tContents);
		$tContents = str_replace('{mysql_server_port}', $conf["mysql"]["port"], $tContents);
latham's avatar
latham committed

		return $tContents;
	}
	private function loadAddonClasses($path) {
		if(!is_dir($path)) {
			return false;
		}
		$libpath = $path;
		if(($dir = opendir($libpath))) {
			while(false !== ($cur = readdir($dir))) {
				if($cur === '.' || $cur === '..' || strpos($cur, '..') !== false || !is_dir($libpath . '/' . $cur)) {
					continue;
				}
				$addon_file = $libpath . '/' . $cur . '/' . $cur . '.addon.php';
				if(!is_file($addon_file)) {
					continue;
				}

				$class_name = $cur . '_addon_installer';
				
				if(isset($this->addon_classes[$class_name]) && is_object($this->addon_classes[$class_name])) {
					// don't override
					continue;
				}
				
				include_once $addon_file;
				if(!class_exists($class_name)) {
					continue;
				}

				if(!is_array($this->addon_classes)) {
					$this->addon_classes = array();
				
				$this->addon_classes[$class_name] = new $class_name;
	public function raiseEvent($event_name, $data = false) {
		if(is_null($this->addon_classes)) {
			// load addon libs
			$this->addon_classes = array();
			
			$addonpath = $conf['ispconfig_install_dir'] . '/addons';
			$this->loadAddonClasses($addonpath);
		$call_method = 'onRaisedInstallerEvent';
		reset($this->addon_classes);
		foreach($this->addon_classes as $cl) {
			if(method_exists($cl, $call_method)) {
				call_user_func(array($cl, $call_method), $event_name, $data);