Add default values for avatar and attachment directories in web installer

This commit is contained in:
Diogo Cordeiro 2018-08-25 03:32:02 +01:00
parent b3c3af1ef6
commit ddc3cecfc0
1 changed files with 22 additions and 14 deletions

View File

@ -46,6 +46,8 @@ abstract class Installer
public $sitename, $server, $path, $fancy, $siteProfile, $ssl; public $sitename, $server, $path, $fancy, $siteProfile, $ssl;
/** DB info */ /** DB info */
public $host, $database, $dbtype, $username, $password, $db; public $host, $database, $dbtype, $username, $password, $db;
/** Storage info */
public $avatarDir, $fileDir;
/** Administrator info */ /** Administrator info */
public $adminNick, $adminPass, $adminEmail; public $adminNick, $adminPass, $adminEmail;
/** Should we skip writing the configuration file? */ /** Should we skip writing the configuration file? */
@ -135,22 +137,28 @@ abstract class Installer
// Check the subdirs used for file uploads // Check the subdirs used for file uploads
// TODO get another flag for this --skipFileSubdirCreation // TODO get another flag for this --skipFileSubdirCreation
if (!$this->skipConfig) { if (!$this->skipConfig) {
$fileSubdirs = array($this->avatarDir, $this->fileDir); define('GNUSOCIAL', true);
foreach ($fileSubdirs as $fileSubdir) { define('STATUSNET', true);
$fileFullPath = INSTALLDIR."/$fileSubdir"; require_once INSTALLDIR . '/lib/language.php';
if (!file_exists($fileFullPath)) { $_server=$this->server; $_path=$this->path; // We won't be using those so it's safe to do this small hack
$pass = $pass && mkdir($fileFullPath); require_once INSTALLDIR.DIRECTORY_SEPARATOR.'lib'.DIRECTORY_SEPARATOR.'default.php';
} elseif (!is_dir($fileFullPath)) { $fileSubdirs = [empty($this->avatarDir) ? $default['avatar']['dir'] : $this->avatarDir,
$this->warning(sprintf('GNU social expected a directory but found something else on this path: %s', $fileFullPath), empty($this->fileDir) ? $default['attachments']['dir'] : $this->fileDir];
'Either make sure it goes to a directory or remove it and a directory will be created.'); unset($default);
$pass = false; foreach ($fileSubdirs as $fileFullPath) {
} elseif (!is_writable($fileFullPath)) { if (!file_exists($fileFullPath)) {
$this->warning(sprintf('Cannot write to %s directory: <code>%s</code>', $fileSubdir, $fileFullPath), $pass = $pass && mkdir($fileFullPath);
sprintf('On your server, try this command: <code>chmod a+w %s</code>', $fileFullPath)); } elseif (!is_dir($fileFullPath)) {
$pass = false; $this->warning(sprintf('GNU social expected a directory but found something else on this path: %s', $fileFullPath),
'Either make sure it goes to a directory or remove it and a directory will be created.');
$pass = false;
} elseif (!is_writable($fileFullPath)) {
$this->warning(sprintf('Cannot write to %s directory: <code>%s</code>', $fileSubdir, $fileFullPath),
sprintf('On your server, try this command: <code>chmod a+w %s</code>', $fileFullPath));
$pass = false;
}
} }
} }
}
return $pass; return $pass;
} }