Bugfixings in Config
- replaced usage of "!<unset>!" with null-returns - fixed bool settings (0/1) - fixed overriding config-values - fixed basepath problems
This commit is contained in:
		
					parent
					
						
							
								2d91d5c3d9
							
						
					
				
			
			
				commit
				
					
						8c3aebc376
					
				
			
		
					 24 changed files with 175 additions and 157 deletions
				
			
		| 
						 | 
				
			
			@ -144,7 +144,9 @@ if (!$foreground) {
 | 
			
		|||
	file_put_contents($pidfile, $pid);
 | 
			
		||||
 | 
			
		||||
	// We lose the database connection upon forking
 | 
			
		||||
	Factory\DBFactory::init($a->getConfigCache(), $a->getProfiler(), $_SERVER);
 | 
			
		||||
	/// @todo refactoring during https://github.com/friendica/friendica/issues/6720
 | 
			
		||||
	$basePath = \Friendica\Util\BasePath::create(dirname(__DIR__), $_SERVER);
 | 
			
		||||
	Factory\DBFactory::init($basePath, $a->getConfigCache(), $a->getProfiler(), $_SERVER);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Config::set('system', 'worker_daemon_mode', true);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -205,6 +205,7 @@ class App
 | 
			
		|||
	/**
 | 
			
		||||
	 * @brief App constructor.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param string           $basePath   The basedir of the app
 | 
			
		||||
	 * @param Configuration    $config    The Configuration
 | 
			
		||||
	 * @param LoggerInterface  $logger    The current app logger
 | 
			
		||||
	 * @param Profiler         $profiler  The profiler of this application
 | 
			
		||||
| 
						 | 
				
			
			@ -212,14 +213,15 @@ class App
 | 
			
		|||
	 *
 | 
			
		||||
	 * @throws Exception if the Basepath is not usable
 | 
			
		||||
	 */
 | 
			
		||||
	public function __construct(Configuration $config, LoggerInterface $logger, Profiler $profiler, $isBackend = true)
 | 
			
		||||
	public function __construct($basePath, Configuration $config, LoggerInterface $logger, Profiler $profiler, $isBackend = true)
 | 
			
		||||
	{
 | 
			
		||||
		BaseObject::setApp($this);
 | 
			
		||||
 | 
			
		||||
		$this->logger   = $logger;
 | 
			
		||||
		$this->config   = $config;
 | 
			
		||||
		$this->profiler = $profiler;
 | 
			
		||||
		$this->basePath = $this->config->get('system', 'basepath');
 | 
			
		||||
		$cfgBasePath = $this->config->get('system', 'basepath');
 | 
			
		||||
		$this->basePath = (isset($cfgBasePath) && $cfgBasePath !== '') ? $cfgBasePath : $basePath;
 | 
			
		||||
 | 
			
		||||
		if (!Core\System::isDirectoryUsable($this->basePath, false)) {
 | 
			
		||||
			throw new Exception('Basepath \'' . $this->basePath . '\' isn\'t usable.');
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -65,8 +65,6 @@ class Config
 | 
			
		|||
	 *
 | 
			
		||||
	 * Stores a config value ($value) in the category ($cat) under the key ($key)
 | 
			
		||||
	 *
 | 
			
		||||
	 * Note: Please do not store booleans - convert to 0/1 integer values!
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param string $cat The category of the configuration value
 | 
			
		||||
	 * @param string $key    The configuration key to set
 | 
			
		||||
	 * @param mixed  $value  The value to store
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,7 +6,11 @@ use Friendica\Database\DBA;
 | 
			
		|||
 | 
			
		||||
abstract class AbstractDbaConfigAdapter
 | 
			
		||||
{
 | 
			
		||||
	/** @var bool */
 | 
			
		||||
	/**
 | 
			
		||||
	 * The connection state of the adapter
 | 
			
		||||
	 *
 | 
			
		||||
	 * @var bool
 | 
			
		||||
	 */
 | 
			
		||||
	protected $connected = true;
 | 
			
		||||
 | 
			
		||||
	public function __construct()
 | 
			
		||||
| 
						 | 
				
			
			@ -14,8 +18,66 @@ abstract class AbstractDbaConfigAdapter
 | 
			
		|||
		$this->connected = DBA::connected();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Checks if the adapter is currently connected
 | 
			
		||||
	 *
 | 
			
		||||
	 * @return bool
 | 
			
		||||
	 */
 | 
			
		||||
	public function isConnected()
 | 
			
		||||
	{
 | 
			
		||||
		return $this->connected;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Formats a DB value to a config value
 | 
			
		||||
	 * - null   = The db-value isn't set
 | 
			
		||||
	 * - bool   = The db-value is either '0' or '1'
 | 
			
		||||
	 * - array  = The db-value is a serialized array
 | 
			
		||||
	 * - string = The db-value is a string
 | 
			
		||||
	 *
 | 
			
		||||
	 * Keep in mind that there aren't any numeric/integer config values in the database
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param null|string $value
 | 
			
		||||
	 *
 | 
			
		||||
	 * @return null|array|string
 | 
			
		||||
	 */
 | 
			
		||||
	protected function toConfigValue($value)
 | 
			
		||||
	{
 | 
			
		||||
		if (!isset($value)) {
 | 
			
		||||
			return null;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		switch (true) {
 | 
			
		||||
			// manage array value
 | 
			
		||||
			case preg_match("|^a:[0-9]+:{.*}$|s", $value):
 | 
			
		||||
				return unserialize($value);
 | 
			
		||||
 | 
			
		||||
			default:
 | 
			
		||||
				return $value;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Formats a config value to a DB value (string)
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param mixed $value
 | 
			
		||||
	 *
 | 
			
		||||
	 * @return string
 | 
			
		||||
	 */
 | 
			
		||||
	protected function toDbValue($value)
 | 
			
		||||
	{
 | 
			
		||||
		// if not set, save an empty string
 | 
			
		||||
		if (!isset($value)) {
 | 
			
		||||
			return '';
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		switch (true) {
 | 
			
		||||
			// manage arrays
 | 
			
		||||
			case is_array($value):
 | 
			
		||||
				return serialize($value);
 | 
			
		||||
 | 
			
		||||
			default:
 | 
			
		||||
				return (string)$value;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -21,10 +21,12 @@ interface IConfigAdapter
 | 
			
		|||
	 * Get a particular system-wide config variable given the category name
 | 
			
		||||
	 * ($family) and a key.
 | 
			
		||||
	 *
 | 
			
		||||
	 * Note: Boolean variables are defined as 0/1 in the database
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param string  $cat The category of the configuration value
 | 
			
		||||
	 * @param string  $key The configuration key to query
 | 
			
		||||
	 *
 | 
			
		||||
	 * @return mixed Stored value or "!<unset>!" if it does not exist
 | 
			
		||||
	 * @return null|mixed Stored value or null if it does not exist
 | 
			
		||||
	 */
 | 
			
		||||
	public function get($cat, $key);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -46,9 +48,9 @@ interface IConfigAdapter
 | 
			
		|||
	 * and removes it from the database.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param string $cat The category of the configuration value
 | 
			
		||||
	 * @param string $key   The configuration key to delete
 | 
			
		||||
	 * @param string $key The configuration key to delete
 | 
			
		||||
	 *
 | 
			
		||||
	 * @return mixed
 | 
			
		||||
	 * @return bool Operation success
 | 
			
		||||
	 */
 | 
			
		||||
	public function delete($cat, $key);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,11 +28,13 @@ interface IPConfigAdapter
 | 
			
		|||
	 * Get a particular user's config variable given the category name
 | 
			
		||||
	 * ($family) and a key.
 | 
			
		||||
	 *
 | 
			
		||||
	 * Note: Boolean variables are defined as 0/1 in the database
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param string  $uid           The user_id
 | 
			
		||||
	 * @param string  $cat           The category of the configuration value
 | 
			
		||||
	 * @param string  $key           The configuration key to query
 | 
			
		||||
	 *
 | 
			
		||||
	 * @return mixed Stored value or "!<unset>!" if it does not exist
 | 
			
		||||
	 * @return null|mixed Stored value or null if it does not exist
 | 
			
		||||
	 */
 | 
			
		||||
	public function get($uid, $cat, $key);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -59,7 +61,7 @@ interface IPConfigAdapter
 | 
			
		|||
	 * @param string $cat The category of the configuration value
 | 
			
		||||
	 * @param string $key The configuration key to delete
 | 
			
		||||
	 *
 | 
			
		||||
	 * @return bool
 | 
			
		||||
	 * @return bool Operation success
 | 
			
		||||
	 */
 | 
			
		||||
	public function delete($uid, $cat, $key);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -34,40 +34,49 @@ class JITConfigAdapter extends AbstractDbaConfigAdapter implements IConfigAdapte
 | 
			
		|||
		$configs = DBA::select('config', ['v', 'k'], ['cat' => $cat]);
 | 
			
		||||
		while ($config = DBA::fetch($configs)) {
 | 
			
		||||
			$key   = $config['k'];
 | 
			
		||||
			$value = $config['v'];
 | 
			
		||||
			$value = $this->toConfigValue($config['v']);
 | 
			
		||||
 | 
			
		||||
			if (isset($value) && $value !== '') {
 | 
			
		||||
			// The value was in the db, so don't check it again (unless you have to)
 | 
			
		||||
			$this->in_db[$cat][$key] = true;
 | 
			
		||||
 | 
			
		||||
			// just save it in case it is set
 | 
			
		||||
			if (isset($value)) {
 | 
			
		||||
				$return[$key] = $value;
 | 
			
		||||
				$this->in_db[$cat][$key] = true;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		DBA::close($configs);
 | 
			
		||||
 | 
			
		||||
		return [$cat => $config];
 | 
			
		||||
		return [$cat => $return];
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * {@inheritdoc}
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param bool $mark if true, mark the selection of the current cat/key pair
 | 
			
		||||
	 */
 | 
			
		||||
	public function get($cat, $key)
 | 
			
		||||
	public function get($cat, $key, $mark = true)
 | 
			
		||||
	{
 | 
			
		||||
		if (!$this->isConnected()) {
 | 
			
		||||
			return '!<unset>!';
 | 
			
		||||
			return null;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// The value got checked, so mark it to avoid checking it over and over again
 | 
			
		||||
		if ($mark) {
 | 
			
		||||
			$this->in_db[$cat][$key] = true;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		$config = DBA::selectFirst('config', ['v'], ['cat' => $cat, 'k' => $key]);
 | 
			
		||||
		if (DBA::isResult($config)) {
 | 
			
		||||
			// manage array value
 | 
			
		||||
			$value = (preg_match("|^a:[0-9]+:{.*}$|s", $config['v']) ? unserialize($config['v']) : $config['v']);
 | 
			
		||||
			$value = $this->toConfigValue($config['v']);
 | 
			
		||||
 | 
			
		||||
			if (isset($value) && $value !== '') {
 | 
			
		||||
				$this->in_db[$cat][$key] = true;
 | 
			
		||||
			// just return it in case it is set
 | 
			
		||||
			if (isset($value)) {
 | 
			
		||||
				return $value;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		$this->in_db[$cat][$key] = false;
 | 
			
		||||
		return '!<unset>!';
 | 
			
		||||
		return null;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
| 
						 | 
				
			
			@ -84,7 +93,7 @@ class JITConfigAdapter extends AbstractDbaConfigAdapter implements IConfigAdapte
 | 
			
		|||
		// The exception are array values.
 | 
			
		||||
		$dbvalue = (!is_array($value) ? (string)$value : $value);
 | 
			
		||||
 | 
			
		||||
		$stored = $this->get($cat, $key);
 | 
			
		||||
		$stored = $this->get($cat, $key, false);
 | 
			
		||||
 | 
			
		||||
		if (!isset($this->in_db[$cat])) {
 | 
			
		||||
			$this->in_db[$cat] = [];
 | 
			
		||||
| 
						 | 
				
			
			@ -93,12 +102,11 @@ class JITConfigAdapter extends AbstractDbaConfigAdapter implements IConfigAdapte
 | 
			
		|||
			$this->in_db[$cat][$key] = false;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (($stored === $dbvalue) && $this->in_db[$cat][$key]) {
 | 
			
		||||
		if (isset($stored) && ($stored === $dbvalue) && $this->in_db[$cat][$key]) {
 | 
			
		||||
			return true;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// manage array value
 | 
			
		||||
		$dbvalue = (is_array($value) ? serialize($value) : $dbvalue);
 | 
			
		||||
		$dbvalue = $this->toDbValue($dbvalue);
 | 
			
		||||
 | 
			
		||||
		$result = DBA::update('config', ['v' => $dbvalue], ['cat' => $cat, 'k' => $key], true);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -29,16 +29,18 @@ class JITPConfigAdapter extends AbstractDbaConfigAdapter implements IPConfigAdap
 | 
			
		|||
		if (DBA::isResult($pconfigs)) {
 | 
			
		||||
			while ($pconfig = DBA::fetch($pconfigs)) {
 | 
			
		||||
				$key = $pconfig['k'];
 | 
			
		||||
				$value = $pconfig['v'];
 | 
			
		||||
				$value = $this->toConfigValue($pconfig['v']);
 | 
			
		||||
 | 
			
		||||
				if (isset($value) && $value !== '') {
 | 
			
		||||
				// The value was in the db, so don't check it again (unless you have to)
 | 
			
		||||
				$this->in_db[$uid][$cat][$key] = true;
 | 
			
		||||
 | 
			
		||||
				if (isset($value)) {
 | 
			
		||||
					$return[$key] = $value;
 | 
			
		||||
					$this->in_db[$uid][$cat][$key] = true;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		} else if ($cat != 'config') {
 | 
			
		||||
			// Negative caching
 | 
			
		||||
			$return = "!<unset>!";
 | 
			
		||||
			$return = null;
 | 
			
		||||
		}
 | 
			
		||||
		DBA::close($pconfigs);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -51,22 +53,23 @@ class JITPConfigAdapter extends AbstractDbaConfigAdapter implements IPConfigAdap
 | 
			
		|||
	public function get($uid, $cat, $key)
 | 
			
		||||
	{
 | 
			
		||||
		if (!$this->isConnected()) {
 | 
			
		||||
			return '!<unset>!';
 | 
			
		||||
			return null;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// The value was in the db, so don't check it again (unless you have to)
 | 
			
		||||
		$this->in_db[$uid][$cat][$key] = true;
 | 
			
		||||
 | 
			
		||||
		$pconfig = DBA::selectFirst('pconfig', ['v'], ['uid' => $uid, 'cat' => $cat, 'k' => $key]);
 | 
			
		||||
		if (DBA::isResult($pconfig)) {
 | 
			
		||||
			// manage array value
 | 
			
		||||
			$value = (preg_match("|^a:[0-9]+:{.*}$|s", $pconfig['v']) ? unserialize($pconfig['v']) : $pconfig['v']);
 | 
			
		||||
			$value = $this->toConfigValue($pconfig['v']);
 | 
			
		||||
 | 
			
		||||
			if (isset($value) && $value !== '') {
 | 
			
		||||
				$this->in_db[$uid][$cat][$key] = true;
 | 
			
		||||
			if (isset($value)) {
 | 
			
		||||
				return $value;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		$this->in_db[$uid][$cat][$key] = false;
 | 
			
		||||
		return '!<unset>!';
 | 
			
		||||
		return null;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
| 
						 | 
				
			
			@ -118,13 +121,11 @@ class JITPConfigAdapter extends AbstractDbaConfigAdapter implements IPConfigAdap
 | 
			
		|||
			return false;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (!empty($this->in_db[$uid][$cat][$key])) {
 | 
			
		||||
		if (isset($this->in_db[$uid][$cat][$key])) {
 | 
			
		||||
			unset($this->in_db[$uid][$cat][$key]);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		$result = DBA::delete('pconfig', ['uid' => $uid, 'cat' => $cat, 'k' => $key]);
 | 
			
		||||
 | 
			
		||||
		return $result;
 | 
			
		||||
		return DBA::delete('pconfig', ['uid' => $uid, 'cat' => $cat, 'k' => $key]);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -35,8 +35,6 @@ class PreloadConfigAdapter extends AbstractDbaConfigAdapter implements IConfigAd
 | 
			
		|||
			$value = $config['v'];
 | 
			
		||||
			if (isset($value) && $value !== '') {
 | 
			
		||||
				$return[$config['cat']][$config['k']] = $value;
 | 
			
		||||
			} else {
 | 
			
		||||
				$return[$config['cat']][$config['k']] = '!<unset>!';
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		DBA::close($configs);
 | 
			
		||||
| 
						 | 
				
			
			@ -52,7 +50,7 @@ class PreloadConfigAdapter extends AbstractDbaConfigAdapter implements IConfigAd
 | 
			
		|||
	public function get($cat, $key)
 | 
			
		||||
	{
 | 
			
		||||
		if (!$this->isConnected()) {
 | 
			
		||||
			return '!<unset>!';
 | 
			
		||||
			return null;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		$config = DBA::selectFirst('config', ['v'], ['cat' => $cat, 'k' => $key]);
 | 
			
		||||
| 
						 | 
				
			
			@ -65,7 +63,7 @@ class PreloadConfigAdapter extends AbstractDbaConfigAdapter implements IConfigAd
 | 
			
		|||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		return '!<unset>!';
 | 
			
		||||
		return null;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
| 
						 | 
				
			
			@ -89,9 +87,7 @@ class PreloadConfigAdapter extends AbstractDbaConfigAdapter implements IConfigAd
 | 
			
		|||
		// manage array value
 | 
			
		||||
		$dbvalue = is_array($value) ? serialize($value) : $value;
 | 
			
		||||
 | 
			
		||||
		$result = DBA::update('config', ['v' => $dbvalue], ['cat' => $cat, 'k' => $key], true);
 | 
			
		||||
 | 
			
		||||
		return $result;
 | 
			
		||||
		return DBA::update('config', ['v' => $dbvalue], ['cat' => $cat, 'k' => $key], true);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
| 
						 | 
				
			
			@ -103,9 +99,7 @@ class PreloadConfigAdapter extends AbstractDbaConfigAdapter implements IConfigAd
 | 
			
		|||
			return false;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		$result = DBA::delete('config', ['cat' => $cat, 'k' => $key]);
 | 
			
		||||
 | 
			
		||||
		return $result;
 | 
			
		||||
		return DBA::delete('config', ['cat' => $cat, 'k' => $key]);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -52,8 +52,6 @@ class PreloadPConfigAdapter extends AbstractDbaConfigAdapter implements IPConfig
 | 
			
		|||
			$value = $pconfig['v'];
 | 
			
		||||
			if (isset($value) && $value !== '') {
 | 
			
		||||
				$return[$pconfig['cat']][$pconfig['k']] = $value;
 | 
			
		||||
			} else {
 | 
			
		||||
				$return[$pconfig['cat']][$pconfig['k']] = '!<unset>!';
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		DBA::close($pconfigs);
 | 
			
		||||
| 
						 | 
				
			
			@ -69,7 +67,7 @@ class PreloadPConfigAdapter extends AbstractDbaConfigAdapter implements IPConfig
 | 
			
		|||
	public function get($uid, $cat, $key)
 | 
			
		||||
	{
 | 
			
		||||
		if (!$this->isConnected()) {
 | 
			
		||||
			return '!<unset>!';
 | 
			
		||||
			return null;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (!$this->isLoaded($uid, $cat, $key)) {
 | 
			
		||||
| 
						 | 
				
			
			@ -85,7 +83,7 @@ class PreloadPConfigAdapter extends AbstractDbaConfigAdapter implements IPConfig
 | 
			
		|||
				return $value;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		return '!<unset>!';
 | 
			
		||||
		return null;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
| 
						 | 
				
			
			@ -112,9 +110,7 @@ class PreloadPConfigAdapter extends AbstractDbaConfigAdapter implements IPConfig
 | 
			
		|||
		// manage array value
 | 
			
		||||
		$dbvalue = is_array($value) ? serialize($value) : $value;
 | 
			
		||||
 | 
			
		||||
		$result = DBA::update('pconfig', ['v' => $dbvalue], ['uid' => $uid, 'cat' => $cat, 'k' => $key], true);
 | 
			
		||||
 | 
			
		||||
		return $result;
 | 
			
		||||
		return DBA::update('pconfig', ['v' => $dbvalue], ['uid' => $uid, 'cat' => $cat, 'k' => $key], true);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
| 
						 | 
				
			
			@ -130,9 +126,7 @@ class PreloadPConfigAdapter extends AbstractDbaConfigAdapter implements IPConfig
 | 
			
		|||
			$this->load($uid, $cat);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		$result = DBA::delete('pconfig', ['uid' => $uid, 'cat' => $cat, 'k' => $key]);
 | 
			
		||||
 | 
			
		||||
		return $result;
 | 
			
		||||
		return DBA::delete('pconfig', ['uid' => $uid, 'cat' => $cat, 'k' => $key]);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,8 +6,6 @@ namespace Friendica\Core\Config\Cache;
 | 
			
		|||
 * The Friendica config cache for the application
 | 
			
		||||
 * Initial, all *.config.php files are loaded into this cache with the
 | 
			
		||||
 * ConfigCacheLoader ( @see ConfigCacheLoader )
 | 
			
		||||
 *
 | 
			
		||||
 * Is used for further caching operations too (depending on the ConfigAdapter )
 | 
			
		||||
 */
 | 
			
		||||
class ConfigCache implements IConfigCache, IPConfigCache
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -37,7 +35,7 @@ class ConfigCache implements IConfigCache, IPConfigCache
 | 
			
		|||
 | 
			
		||||
				foreach ($keys as $key) {
 | 
			
		||||
					$value = $config[$category][$key];
 | 
			
		||||
					if (isset($value) && $value !== '!<unset>!') {
 | 
			
		||||
					if (isset($value)) {
 | 
			
		||||
						if ($overwrite) {
 | 
			
		||||
							$this->set($category, $key, $value);
 | 
			
		||||
						} else {
 | 
			
		||||
| 
						 | 
				
			
			@ -56,22 +54,13 @@ class ConfigCache implements IConfigCache, IPConfigCache
 | 
			
		|||
	{
 | 
			
		||||
		if (isset($this->config[$cat][$key])) {
 | 
			
		||||
			return $this->config[$cat][$key];
 | 
			
		||||
		} elseif ($key == null && isset($this->config[$cat])) {
 | 
			
		||||
		} elseif (!isset($key) && isset($this->config[$cat])) {
 | 
			
		||||
			return $this->config[$cat];
 | 
			
		||||
		} else {
 | 
			
		||||
			return '!<unset>!';
 | 
			
		||||
			return null;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * {@inheritdoc}
 | 
			
		||||
	 */
 | 
			
		||||
	public function has($cat, $key = null)
 | 
			
		||||
	{
 | 
			
		||||
		return (isset($this->config[$cat][$key]) && $this->config[$cat][$key] !== '!<unset>!') ||
 | 
			
		||||
		($key == null && isset($this->config[$cat]) && $this->config[$cat] !== '!<unset>!' && is_array($this->config[$cat]));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Sets a default value in the config cache. Ignores already existing keys.
 | 
			
		||||
	 *
 | 
			
		||||
| 
						 | 
				
			
			@ -91,9 +80,6 @@ class ConfigCache implements IConfigCache, IPConfigCache
 | 
			
		|||
	 */
 | 
			
		||||
	public function set($cat, $key, $value)
 | 
			
		||||
	{
 | 
			
		||||
		// Only arrays are serialized in database, so we have to unserialize sparingly
 | 
			
		||||
		$value = is_string($value) && preg_match("|^a:[0-9]+:{.*}$|s", $value) ? unserialize($value) : $value;
 | 
			
		||||
 | 
			
		||||
		if (!isset($this->config[$cat])) {
 | 
			
		||||
			$this->config[$cat] = [];
 | 
			
		||||
		}
 | 
			
		||||
| 
						 | 
				
			
			@ -103,15 +89,6 @@ class ConfigCache implements IConfigCache, IPConfigCache
 | 
			
		|||
		return true;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * {@inheritdoc}
 | 
			
		||||
	 */
 | 
			
		||||
	public function hasP($uid, $cat, $key = null)
 | 
			
		||||
	{
 | 
			
		||||
		return (isset($this->config[$uid][$cat][$key]) && $this->config[$uid][$cat][$key] !== '!<unset>!') ||
 | 
			
		||||
			($key == null && isset($this->config[$uid][$cat]) && $this->config[$uid][$cat] !== '!<unset>!' && is_array($this->config[$uid][$cat]));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * {@inheritdoc}
 | 
			
		||||
	 */
 | 
			
		||||
| 
						 | 
				
			
			@ -142,7 +119,7 @@ class ConfigCache implements IConfigCache, IPConfigCache
 | 
			
		|||
 | 
			
		||||
				foreach ($keys as $key) {
 | 
			
		||||
					$value = $config[$category][$key];
 | 
			
		||||
					if (isset($value) && $value !== '!<unset>!') {
 | 
			
		||||
					if (isset($value)) {
 | 
			
		||||
						$this->setP($uid, $category, $key, $value);
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
| 
						 | 
				
			
			@ -157,10 +134,10 @@ class ConfigCache implements IConfigCache, IPConfigCache
 | 
			
		|||
	{
 | 
			
		||||
		if (isset($this->config[$uid][$cat][$key])) {
 | 
			
		||||
			return $this->config[$uid][$cat][$key];
 | 
			
		||||
		} elseif ($key == null && isset($this->config[$uid][$cat])) {
 | 
			
		||||
		} elseif (!isset($key) && isset($this->config[$uid][$cat])) {
 | 
			
		||||
			return $this->config[$uid][$cat];
 | 
			
		||||
		} else {
 | 
			
		||||
			return '!<unset>!';
 | 
			
		||||
			return null;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -169,9 +146,6 @@ class ConfigCache implements IConfigCache, IPConfigCache
 | 
			
		|||
	 */
 | 
			
		||||
	public function setP($uid, $cat, $key, $value)
 | 
			
		||||
	{
 | 
			
		||||
		// Only arrays are serialized in database, so we have to unserialize sparingly
 | 
			
		||||
		$value = is_string($value) && preg_match("|^a:[0-9]+:{.*}$|s", $value) ? unserialize($value) : $value;
 | 
			
		||||
 | 
			
		||||
		if (!isset($this->config[$uid]) || !is_array($this->config[$uid])) {
 | 
			
		||||
			$this->config[$uid] = [];
 | 
			
		||||
		}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -37,9 +37,6 @@ class ConfigCacheLoader
 | 
			
		|||
	 */
 | 
			
		||||
	public function loadConfigFiles(ConfigCache $config)
 | 
			
		||||
	{
 | 
			
		||||
		// Setting at least the basepath we know
 | 
			
		||||
		$config->set('system', 'basepath', $this->baseDir);
 | 
			
		||||
 | 
			
		||||
		$config->load($this->loadCoreConfig('defaults'));
 | 
			
		||||
		$config->load($this->loadCoreConfig('settings'));
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,9 +20,9 @@ interface IConfigCache
 | 
			
		|||
	 * Gets a value from the config cache.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param string $cat     Config category
 | 
			
		||||
	 * @param string $key       Config key
 | 
			
		||||
	 * @param string $key     Config key
 | 
			
		||||
	 *
 | 
			
		||||
	 * @return mixed Returns the value of the Config entry or '!<unset>!' if not set
 | 
			
		||||
	 * @return null|mixed Returns the value of the Config entry or null if not set
 | 
			
		||||
	 */
 | 
			
		||||
	function get($cat, $key = null);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -47,15 +47,6 @@ interface IConfigCache
 | 
			
		|||
	 */
 | 
			
		||||
	function delete($cat, $key);
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Checks if a value is set in the config cache.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param string $cat  Config category
 | 
			
		||||
	 * @param string $key  Config key
 | 
			
		||||
	 * @return bool
 | 
			
		||||
	 */
 | 
			
		||||
	function has($cat, $key = null);
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Returns the whole configuration cache
 | 
			
		||||
	 *
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,7 +23,7 @@ interface IPConfigCache
 | 
			
		|||
	 * @param string $cat     Config category
 | 
			
		||||
	 * @param string $key     Config key
 | 
			
		||||
	 *
 | 
			
		||||
	 * @return string The value of the config entry or '!<unset>!' if not set
 | 
			
		||||
	 * @return null|string The value of the config entry or null if not set
 | 
			
		||||
	 */
 | 
			
		||||
	function getP($uid, $cat, $key = null);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -50,17 +50,6 @@ interface IPConfigCache
 | 
			
		|||
	 */
 | 
			
		||||
	function deleteP($uid, $cat, $key);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Checks if a value is set in the user config cache.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param int    $uid  User Id
 | 
			
		||||
	 * @param string $cat  Config category
 | 
			
		||||
	 * @param string $key  Config key
 | 
			
		||||
	 * @return bool
 | 
			
		||||
	 */
 | 
			
		||||
	function hasP($uid, $cat, $key = null);
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Returns the whole configuration cache
 | 
			
		||||
	 *
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -83,20 +83,19 @@ class Configuration
 | 
			
		|||
		if ($this->configAdapter->isConnected() &&
 | 
			
		||||
			(!$this->configAdapter->isLoaded($cat, $key) ||
 | 
			
		||||
			$refresh)) {
 | 
			
		||||
 | 
			
		||||
			$dbvalue = $this->configAdapter->get($cat, $key);
 | 
			
		||||
 | 
			
		||||
			if ($dbvalue !== '!<unset>!') {
 | 
			
		||||
			if (isset($dbvalue)) {
 | 
			
		||||
				$this->configCache->set($cat, $key, $dbvalue);
 | 
			
		||||
				return $dbvalue;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// use the config cache for return
 | 
			
		||||
		if ($this->configCache->has($cat, $key)) {
 | 
			
		||||
			return $this->configCache->get($cat, $key);
 | 
			
		||||
		} else {
 | 
			
		||||
			return $default_value;
 | 
			
		||||
		}
 | 
			
		||||
		$result = $this->configCache->get($cat, $key);
 | 
			
		||||
 | 
			
		||||
		return (isset($result)) ? $result : $default_value;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -77,18 +77,15 @@ class PConfiguration
 | 
			
		|||
				$refresh)) {
 | 
			
		||||
			$dbValue = $this->configAdapter->get($uid, $cat, $key);
 | 
			
		||||
 | 
			
		||||
			if ($dbValue !== '!<unset>!') {
 | 
			
		||||
			if (isset($dbValue)) {
 | 
			
		||||
				$this->configCache->setP($uid, $cat, $key, $dbValue);
 | 
			
		||||
				return $dbValue;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// use the config cache for return
 | 
			
		||||
		if ($this->configCache->hasP($uid, $cat, $key)) {
 | 
			
		||||
			return $this->configCache->getP($uid, $cat, $key);
 | 
			
		||||
		} else {
 | 
			
		||||
			return $default_value;
 | 
			
		||||
		}
 | 
			
		||||
		$result = $this->configCache->getP($uid, $cat, $key);
 | 
			
		||||
		return (isset($result)) ? $result : $default_value;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -65,8 +65,6 @@ class PConfig
 | 
			
		|||
	/**
 | 
			
		||||
	 * @brief Sets a configuration value for a user
 | 
			
		||||
	 *
 | 
			
		||||
	 * @note  Please do not store booleans - convert to 0/1 integer values!
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param string $uid    The user_id
 | 
			
		||||
	 * @param string $cat    The category of the configuration value
 | 
			
		||||
	 * @param string $key    The configuration key to set
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -40,6 +40,10 @@ class DBA
 | 
			
		|||
	 * @var Profiler
 | 
			
		||||
	 */
 | 
			
		||||
	private static $profiler;
 | 
			
		||||
	/**
 | 
			
		||||
	 * @var string
 | 
			
		||||
	 */
 | 
			
		||||
	private static $basedir;
 | 
			
		||||
	private static $server_info = '';
 | 
			
		||||
	private static $connection;
 | 
			
		||||
	private static $driver;
 | 
			
		||||
| 
						 | 
				
			
			@ -55,13 +59,14 @@ class DBA
 | 
			
		|||
	private static $db_name = '';
 | 
			
		||||
	private static $db_charset = '';
 | 
			
		||||
 | 
			
		||||
	public static function connect(IConfigCache $configCache, Profiler $profiler, $serveraddr, $user, $pass, $db, $charset = null)
 | 
			
		||||
	public static function connect($basedir, IConfigCache $configCache, Profiler $profiler, $serveraddr, $user, $pass, $db, $charset = null)
 | 
			
		||||
	{
 | 
			
		||||
		if (!is_null(self::$connection) && self::connected()) {
 | 
			
		||||
			return true;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// We are storing these values for being able to perform a reconnect
 | 
			
		||||
		self::$basedir = $basedir;
 | 
			
		||||
		self::$configCache = $configCache;
 | 
			
		||||
		self::$profiler = $profiler;
 | 
			
		||||
		self::$db_serveraddr = $serveraddr;
 | 
			
		||||
| 
						 | 
				
			
			@ -1034,7 +1039,7 @@ class DBA
 | 
			
		|||
	 * This process must only be started once, since the value is cached.
 | 
			
		||||
	 */
 | 
			
		||||
	private static function buildRelationData() {
 | 
			
		||||
		$definition = DBStructure::definition(self::$configCache->get('system', 'basepath'));
 | 
			
		||||
		$definition = DBStructure::definition(self::$basedir);
 | 
			
		||||
 | 
			
		||||
		foreach ($definition AS $table => $structure) {
 | 
			
		||||
			foreach ($structure['fields'] AS $field => $field_struct) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,13 +11,16 @@ class DBFactory
 | 
			
		|||
	/**
 | 
			
		||||
	 * Initialize the DBA connection
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param string             $basePath    The basepath of the application
 | 
			
		||||
	 * @param Cache\IConfigCache $configCache The configuration cache
 | 
			
		||||
	 * @param Profiler          $profiler    The profiler
 | 
			
		||||
	 * @param array             $server      The $_SERVER variables
 | 
			
		||||
	 * @param Profiler           $profiler    The profiler
 | 
			
		||||
	 * @param array              $server      The $_SERVER variables
 | 
			
		||||
	 *
 | 
			
		||||
	 * @throws \Exception if connection went bad
 | 
			
		||||
	 *
 | 
			
		||||
	 * @todo refactor basedir during https://github.com/friendica/friendica/issues/6720
 | 
			
		||||
	 */
 | 
			
		||||
	public static function init(Cache\IConfigCache $configCache, Profiler $profiler, array $server)
 | 
			
		||||
	public static function init($basePath, Cache\IConfigCache $configCache, Profiler $profiler, array $server)
 | 
			
		||||
	{
 | 
			
		||||
		if (Database\DBA::connected()) {
 | 
			
		||||
			return;
 | 
			
		||||
| 
						 | 
				
			
			@ -48,9 +51,9 @@ class DBFactory
 | 
			
		|||
			$db_data = $server['MYSQL_DATABASE'];
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (Database\DBA::connect($configCache, $profiler, $db_host, $db_user, $db_pass, $db_data, $charset)) {
 | 
			
		||||
		if (Database\DBA::connect($basePath, $configCache, $profiler, $db_host, $db_user, $db_pass, $db_data, $charset)) {
 | 
			
		||||
			// Loads DB_UPDATE_VERSION constant
 | 
			
		||||
			Database\DBStructure::definition($configCache->get('system', 'basepath'), false);
 | 
			
		||||
			Database\DBStructure::definition($basePath, false);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		unset($db_host, $db_user, $db_pass, $db_data, $charset);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,16 +22,16 @@ class DependencyFactory
 | 
			
		|||
	 */
 | 
			
		||||
	public static function setUp($channel, $directory, $isBackend = true)
 | 
			
		||||
	{
 | 
			
		||||
		$basedir = BasePath::create($directory, $_SERVER);
 | 
			
		||||
		$configLoader = new Cache\ConfigCacheLoader($basedir);
 | 
			
		||||
		$basePath = BasePath::create($directory, $_SERVER);
 | 
			
		||||
		$configLoader = new Cache\ConfigCacheLoader($basePath);
 | 
			
		||||
		$configCache = Factory\ConfigFactory::createCache($configLoader);
 | 
			
		||||
		$profiler = Factory\ProfilerFactory::create($configCache);
 | 
			
		||||
		Factory\DBFactory::init($configCache, $profiler, $_SERVER);
 | 
			
		||||
		Factory\DBFactory::init($basePath, $configCache, $profiler, $_SERVER);
 | 
			
		||||
		$config = Factory\ConfigFactory::createConfig($configCache);
 | 
			
		||||
		// needed to call PConfig::init()
 | 
			
		||||
		Factory\ConfigFactory::createPConfig($configCache);
 | 
			
		||||
		$logger = Factory\LoggerFactory::create($channel, $config);
 | 
			
		||||
 | 
			
		||||
		return new App($config, $logger, $profiler, $isBackend);
 | 
			
		||||
		return new App($basePath, $config, $logger, $profiler, $isBackend);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,8 +10,8 @@ use Friendica\BaseObject;
 | 
			
		|||
use Friendica\Core\Cache;
 | 
			
		||||
use Friendica\Core\Config;
 | 
			
		||||
use Friendica\Core\L10n;
 | 
			
		||||
use Friendica\Core\System;
 | 
			
		||||
use Friendica\Core\StorageManager;
 | 
			
		||||
use Friendica\Core\System;
 | 
			
		||||
use Friendica\Database\DBA;
 | 
			
		||||
use Friendica\Database\DBStructure;
 | 
			
		||||
use Friendica\Model\Storage\IStorage;
 | 
			
		||||
| 
						 | 
				
			
			@ -203,7 +203,7 @@ class Photo extends BaseObject
 | 
			
		|||
	 */
 | 
			
		||||
	private static function getFields()
 | 
			
		||||
	{
 | 
			
		||||
		$allfields = DBStructure::definition(false);
 | 
			
		||||
		$allfields = DBStructure::definition(self::getApp()->getBasePath(), false);
 | 
			
		||||
		$fields = array_keys($allfields["photo"]["fields"]);
 | 
			
		||||
		array_splice($fields, array_search("data", $fields), 1);
 | 
			
		||||
		return $fields;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -36,15 +36,15 @@ class ApiTest extends DatabaseTest
 | 
			
		|||
	 */
 | 
			
		||||
	public function setUp()
 | 
			
		||||
	{
 | 
			
		||||
		$basedir = BasePath::create(dirname(__DIR__) . '/../');
 | 
			
		||||
		$configLoader = new Cache\ConfigCacheLoader($basedir);
 | 
			
		||||
		$basePath = BasePath::create(dirname(__DIR__) . '/../');
 | 
			
		||||
		$configLoader = new Cache\ConfigCacheLoader($basePath);
 | 
			
		||||
		$configCache = Factory\ConfigFactory::createCache($configLoader);
 | 
			
		||||
		$profiler = Factory\ProfilerFactory::create($configCache);
 | 
			
		||||
		Factory\DBFactory::init($configCache, $profiler, $_SERVER);
 | 
			
		||||
		Factory\DBFactory::init($basePath, $configCache, $profiler, $_SERVER);
 | 
			
		||||
		$config = Factory\ConfigFactory::createConfig($configCache);
 | 
			
		||||
		Factory\ConfigFactory::createPConfig($configCache);
 | 
			
		||||
		$logger = Factory\LoggerFactory::create('test', $config);
 | 
			
		||||
		$this->app = new App($config, $logger, $profiler, false);
 | 
			
		||||
		$this->app = new App($basePath, $config, $logger, $profiler, false);
 | 
			
		||||
 | 
			
		||||
		parent::setUp();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -13,15 +13,15 @@ class DBATest extends DatabaseTest
 | 
			
		|||
{
 | 
			
		||||
	public function setUp()
 | 
			
		||||
	{
 | 
			
		||||
		$basedir = BasePath::create(dirname(__DIR__) . '/../../');
 | 
			
		||||
		$configLoader = new Cache\ConfigCacheLoader($basedir);
 | 
			
		||||
		$basePath = BasePath::create(dirname(__DIR__) . '/../../');
 | 
			
		||||
		$configLoader = new Cache\ConfigCacheLoader($basePath);
 | 
			
		||||
		$configCache = Factory\ConfigFactory::createCache($configLoader);
 | 
			
		||||
		$profiler = Factory\ProfilerFactory::create($configCache);
 | 
			
		||||
		Factory\DBFactory::init($configCache, $profiler, $_SERVER);
 | 
			
		||||
		Factory\DBFactory::init($basePath, $configCache, $profiler, $_SERVER);
 | 
			
		||||
		$config = Factory\ConfigFactory::createConfig($configCache);
 | 
			
		||||
		Factory\ConfigFactory::createPConfig($configCache);
 | 
			
		||||
		$logger = Factory\LoggerFactory::create('test', $config);
 | 
			
		||||
		$this->app = new App($config, $logger, $profiler, false);
 | 
			
		||||
		$this->app = new App($basePath, $config, $logger, $profiler, false);
 | 
			
		||||
 | 
			
		||||
		parent::setUp();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -13,15 +13,15 @@ class DBStructureTest extends DatabaseTest
 | 
			
		|||
{
 | 
			
		||||
	public function setUp()
 | 
			
		||||
	{
 | 
			
		||||
		$basedir = BasePath::create(dirname(__DIR__) . '/../../');
 | 
			
		||||
		$configLoader = new Cache\ConfigCacheLoader($basedir);
 | 
			
		||||
		$basePath = BasePath::create(dirname(__DIR__) . '/../../');
 | 
			
		||||
		$configLoader = new Cache\ConfigCacheLoader($basePath);
 | 
			
		||||
		$configCache = Factory\ConfigFactory::createCache($configLoader);
 | 
			
		||||
		$profiler = Factory\ProfilerFactory::create($configCache);
 | 
			
		||||
		Factory\DBFactory::init($configCache, $profiler, $_SERVER);
 | 
			
		||||
		Factory\DBFactory::init($basePath, $configCache, $profiler, $_SERVER);
 | 
			
		||||
		$config = Factory\ConfigFactory::createConfig($configCache);
 | 
			
		||||
		Factory\ConfigFactory::createPConfig($configCache);
 | 
			
		||||
		$logger = Factory\LoggerFactory::create('test', $config);
 | 
			
		||||
		$this->app = new App($config, $logger, $profiler, false);
 | 
			
		||||
		$this->app = new App($basePath, $config, $logger, $profiler, false);
 | 
			
		||||
 | 
			
		||||
		parent::setUp();
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue