diff --git a/config/configuration.sample.yml b/config/configuration.sample.yml index 7f8dadb824..2d1742786d 100644 --- a/config/configuration.sample.yml +++ b/config/configuration.sample.yml @@ -136,3 +136,4 @@ xsendfile: - directory: '' mount-point: '' +plugins: [] diff --git a/lib/Alchemy/Phrasea/Command/Command.php b/lib/Alchemy/Phrasea/Command/Command.php index 13a266c7a0..fcbb840e62 100644 --- a/lib/Alchemy/Phrasea/Command/Command.php +++ b/lib/Alchemy/Phrasea/Command/Command.php @@ -37,7 +37,21 @@ abstract class Command extends SymfoCommand { if ($input->getOption('verbose')) { $handler = new StreamHandler('php://stdout'); - $this->container['monolog']->pushHandler($handler); + + $this->container['monolog'] = $this->container->share( + $this->container->extend('monolog', function($logger, $app) use ($handler) { + $logger->pushHandler($handler); + + return $logger; + }) + ); + $this->container['task-manager.logger'] = $this->container->share( + $this->container->extend('task-manager.logger', function($logger, $app) use ($handler) { + $logger->pushHandler($handler); + + return $logger; + }) + ); } return $this->doExecute($input, $output); diff --git a/lib/Alchemy/Phrasea/Core/Provider/TaskManagerServiceProvider.php b/lib/Alchemy/Phrasea/Core/Provider/TaskManagerServiceProvider.php index 8d36b6f9c2..8daecafe36 100644 --- a/lib/Alchemy/Phrasea/Core/Provider/TaskManagerServiceProvider.php +++ b/lib/Alchemy/Phrasea/Core/Provider/TaskManagerServiceProvider.php @@ -13,37 +13,22 @@ namespace Alchemy\Phrasea\Core\Provider; use Silex\Application; use Silex\ServiceProviderInterface; -use Monolog\Handler\SyslogHandler; -use Monolog\Handler\NativeMailerHandler; -use Alchemy\Phrasea\Exception\RuntimeException; +use Monolog\Logger; +use Monolog\Handler\NullHandler; class TaskManagerServiceProvider implements ServiceProviderInterface { - public function register(Application $app) { + $app['task-manager.logger'] = $app->share(function(Application $app) { + $logger = new Logger('task-manager logger'); + $logger->pushHandler(new NullHandler()); + + return $logger; + }); + $app['task-manager'] = $app->share(function(Application $app) { - - $logger = clone $app['monolog']; - - $options = $app['phraseanet.configuration']['main']['task-manager']['options']; - - if (isset($options['syslog_level']) && null !== $syslogLevel = constant($options['syslog_level'])) { - $handler = new SyslogHandler("Phraseanet-Task", "user", $syslogLevel); - $logger->pushHandler($handler); - } - - if (isset($options['maillog_level']) && null !== $maillogLevel = constant($options['maillog_level'])) { - if ('' === $adminMail = trim($app['phraseanet.registry']->get('GV_adminMail'))) { - throw new RuntimeException("Admininstrator mail must be set to get log by mail."); - } - $senderMail = $app['phraseanet.registry']->get('GV_defaultmailsenderaddr'); - - $handler = new NativeMailerHandler($adminMail, "Phraseanet-Task", $senderMail, $maillogLevel); - $logger->pushHandler($handler); - } - - return new \task_manager($app, $logger); + return new \task_manager($app, $app['task-manager.logger']); }); } diff --git a/lib/Alchemy/Phrasea/Core/Version.php b/lib/Alchemy/Phrasea/Core/Version.php index 9cdcfb4982..010fb7b738 100644 --- a/lib/Alchemy/Phrasea/Core/Version.php +++ b/lib/Alchemy/Phrasea/Core/Version.php @@ -18,7 +18,7 @@ namespace Alchemy\Phrasea\Core; */ class Version { - protected static $number = '3.8.0.a13'; + protected static $number = '3.8.0.a14'; protected static $name = 'Carnosaurus'; public static function getNumber() diff --git a/lib/classes/module/console/taskrun.php b/lib/classes/module/console/taskrun.php index bf5b7d176b..88d5df89c3 100644 --- a/lib/classes/module/console/taskrun.php +++ b/lib/classes/module/console/taskrun.php @@ -96,8 +96,8 @@ class module_console_taskrun extends Command } $logfile = __DIR__ . '/../../../../logs/task_' . $task_id . '.log'; - $this->container['monolog']->pushHandler(new RotatingFileHandler($logfile, 10)); - $this->task = $task_manager->getTask($task_id, $this->container['monolog']); + $this->container['task-manager.logger']->pushHandler(new RotatingFileHandler($logfile, 10)); + $this->task = $task_manager->getTask($task_id, $this->container['task-manager.logger']); $lib2v = array( 'DEBUG' => \task_abstract::LOG_DEBUG, diff --git a/lib/classes/patch/3814.php b/lib/classes/patch/3814.php new file mode 100644 index 0000000000..acb0dad987 --- /dev/null +++ b/lib/classes/patch/3814.php @@ -0,0 +1,57 @@ +release; + } + + /** + * {@inheritdoc} + */ + public function require_all_upgrades() + { + return false; + } + + /** + * {@inheritdoc} + */ + public function concern() + { + return $this->concern; + } + + /** + * {@inheritdoc} + */ + public function apply(base $appbox, Application $app) + { + $app['phraseanet.configuration']->setDefault('plugins'); + + return true; + } +} diff --git a/lib/classes/record/adapter.php b/lib/classes/record/adapter.php index 0bec68b5f7..5d76249393 100644 --- a/lib/classes/record/adapter.php +++ b/lib/classes/record/adapter.php @@ -1627,7 +1627,7 @@ class record_adapter implements record_Interface, cache_cacheableInterface $subdefs = $databox->get_subdef_structure()->getSubdefGroup($this->get_type()); if (!$subdefs) { - $app['monolog']->addInfo(sprintf('Nothing to do for %s', $this->get_type())); + $app['task-manager.logger']->addInfo(sprintf('Nothing to do for %s', $this->get_type())); return; } @@ -1644,14 +1644,14 @@ class record_adapter implements record_Interface, cache_cacheableInterface if ($this->has_subdef($subdefname) && $this->get_subdef($subdefname)->is_physically_present()) { $pathdest = $this->get_subdef($subdefname)->get_pathfile(); $this->get_subdef($subdefname)->remove_file(); - $app['monolog']->addInfo(sprintf('Removed old file for %s', $subdefname)); + $app['task-manager.logger']->addInfo(sprintf('Removed old file for %s', $subdefname)); $this->clearSubdefCache($subdefname); } $pathdest = $this->generateSubdefPathname($subdef, $app['filesystem'], $pathdest); - $app['monolog']->addInfo(sprintf('Generating subdef %s to %s', $subdefname, $pathdest)); - $this->generate_subdef($app['media-alchemyst'], $subdef, $pathdest, $app['monolog']); + $app['task-manager.logger']->addInfo(sprintf('Generating subdef %s to %s', $subdefname, $pathdest)); + $this->generate_subdef($app['media-alchemyst'], $subdef, $pathdest, $app['task-manager.logger']); if (file_exists($pathdest)) { $media = $app['mediavorus']->guess($pathdest); diff --git a/lib/classes/task/abstract.php b/lib/classes/task/abstract.php index 66a060aa17..b17fa3aa3f 100644 --- a/lib/classes/task/abstract.php +++ b/lib/classes/task/abstract.php @@ -865,7 +865,7 @@ abstract class task_abstract $tid = $dependencyContainer['phraseanet.appbox']->get_connection()->lastInsertId(); - $task = new $class_name($tid, $dependencyContainer, $dependencyContainer['monolog']); + $task = new $class_name($tid, $dependencyContainer, $dependencyContainer['task-manager.logger']); $task->setTitle($task->getName()); return $task;