// Load settings from database; note we need autoload for this
Config::loadSettings();
+ self::fillConfigVoids();
self::verifyLoadedConfig();
self::initPlugins();
}
}
+ static function fillConfigVoids()
+ {
+ // special cases on empty configuration options
+ if (!common_config('thumbnail', 'dir')) {
+ common_config_set('thumbnail', 'dir', File::path('thumb'));
+ }
+ }
+
/**
* Verify that the loaded config is good. Not complete, but will
* throw exceptions on common configuration problems I hope.
*/
static function verifyLoadedConfig()
{
+ $mkdirs = [];
+
if (common_config('htmlpurifier', 'Cache.DefinitionImpl') === 'Serializer'
&& !is_dir(common_config('htmlpurifier', 'Cache.SerializerPath'))) {
- if (!mkdir(common_config('htmlpurifier', 'Cache.SerializerPath'))) {
- throw new ConfigException('Could not create HTMLPurifier cache dir: '._ve(common_config('htmlpurifier', 'Cache.SerializerPath')));
+ $mkdirs[common_config('htmlpurifier', 'Cache.SerializerPath')] = 'HTMLPurifier Serializer cache';
+ }
+
+ // go through our configurable storage directories
+ foreach (['attachments', 'thumbnail'] as $dirtype) {
+ $dir = common_config($dirtype, 'dir');
+ if (!empty($dir) && !is_dir($dir)) {
+ $mkdirs[$dir] = $dirtype;
+ }
+ }
+
+ // try to create those that are not directories
+ foreach ($mkdirs as $dir=>$description) {
+ if (is_file($dir)) {
+ throw new ConfigException('Expected directory for '._ve($description).' is a file!');
+ }
+ if (!mkdir($dir)) {
+ throw new ConfigException('Could not create directory for '._ve($description).': '._ve($dir));
+ }
+ if (!chmod($dir, 0775)) {
+ common_log(LOG_WARNING, 'Could not chmod 0775 on directory for '._ve($description).': '._ve($dir));
}
}