From 32875e66985d2a1cc78fdcff7f23b7e762e0c139 Mon Sep 17 00:00:00 2001 From: Romain Neutron Date: Wed, 26 Jun 2013 16:58:36 +0200 Subject: [PATCH] Remove support of binary paths by registry --- .../Core/Provider/PluginServiceProvider.php | 4 ++- lib/Alchemy/Phrasea/Setup/Installer.php | 6 +---- .../Phrasea/Setup/Probe/BinariesProbe.php | 26 +++++++++---------- lib/classes/API/V1/adapter.php | 20 +++++++------- lib/classes/patch/373.php | 4 +-- lib/classes/recordutils/image.php | 14 +++++----- lib/classes/registry.php | 8 ------ lib/classes/task/Scheduler.php | 12 +++++++-- lib/classes/task/manager.php | 10 +++++-- 9 files changed, 56 insertions(+), 48 deletions(-) diff --git a/lib/Alchemy/Phrasea/Core/Provider/PluginServiceProvider.php b/lib/Alchemy/Phrasea/Core/Provider/PluginServiceProvider.php index 9c77ef5729..8626d554c2 100644 --- a/lib/Alchemy/Phrasea/Core/Provider/PluginServiceProvider.php +++ b/lib/Alchemy/Phrasea/Core/Provider/PluginServiceProvider.php @@ -57,7 +57,9 @@ class PluginServiceProvider implements ServiceProviderInterface }); $app['plugins.composer-installer'] = $app->share(function (Application $app) { - $phpBinary = $app['phraseanet.registry']->get('php_binary'); + $binaries = $app['phraseanet.configuration']['binaries']; + $phpBinary = isset($binaries['php_binary']) ? $binaries['php_binary'] : null; + if (!is_executable($phpBinary)) { $finder = new ExecutableFinder(); $phpBinary = $finder->find('php'); diff --git a/lib/Alchemy/Phrasea/Setup/Installer.php b/lib/Alchemy/Phrasea/Setup/Installer.php index f85e60e163..24d8a01cf1 100644 --- a/lib/Alchemy/Phrasea/Setup/Installer.php +++ b/lib/Alchemy/Phrasea/Setup/Installer.php @@ -50,15 +50,11 @@ class Installer $this->phraseaIndexer = $path; } - private function populateRegistryData($serverName, $dataPath, $binaryData) + private function populateRegistryData($serverName, $dataPath) { $this->app['phraseanet.registry']->set('GV_base_datapath_noweb', $dataPath, \registry::TYPE_STRING); $this->app['phraseanet.registry']->set('GV_ServerName', $serverName, \registry::TYPE_STRING); - foreach ($binaryData as $key => $value) { - $this->app['phraseanet.registry']->set($key, $value, \registry::TYPE_STRING); - } - // required to load GV template $app = $this->app; $GV = require __DIR__ . '/../../../../lib/conf.d/_GV_template.inc'; diff --git a/lib/Alchemy/Phrasea/Setup/Probe/BinariesProbe.php b/lib/Alchemy/Phrasea/Setup/Probe/BinariesProbe.php index b71bc6896a..b2424de839 100644 --- a/lib/Alchemy/Phrasea/Setup/Probe/BinariesProbe.php +++ b/lib/Alchemy/Phrasea/Setup/Probe/BinariesProbe.php @@ -16,20 +16,20 @@ use Alchemy\Phrasea\Setup\Requirements\BinariesRequirements; class BinariesProbe extends BinariesRequirements implements ProbeInterface { - public function __construct(\registryInterface $registry) + public function __construct(array $binaries) { parent::__construct(array_filter(array( - 'php_binary' => $registry->get('php_binary'), - 'convert_binary' => $registry->get('convert_binary'), - 'pdf2swf_binary' => $registry->get('pdf2swf_binary'), - 'unoconv_binary' => $registry->get('unoconv_binary'), - 'swf_extract_binary' => $registry->get('swf_extract_binary'), - 'swf_render_binary' => $registry->get('swf_render_binary'), - 'mp4box_binary' => $registry->get('mp4box_binary'), - 'pdftotext_binary' => $registry->get('pdftotext_binary'), - 'composite_binary' => $registry->get('composite_binary'), - 'ffmpeg_binary' => $registry->get('ffmpeg_binary'), - 'ffprobe_binary' => $registry->get('ffprobe_binary'), + 'php_binary' => isset($binaries['php_binary']) ? $binaries['php_binary'] : null, + 'convert_binary' => isset($binaries['convert_binary']) ? $binaries['convert_binary'] : null, + 'pdf2swf_binary' => isset($binaries['pdf2swf_binary']) ? $binaries['pdf2swf_binary'] : null, + 'unoconv_binary' => isset($binaries['unoconv_binary']) ? $binaries['unoconv_binary'] : null, + 'swf_extract_binary' => isset($binaries['swf_extract_binary']) ? $binaries['swf_extract_binary'] : null, + 'swf_render_binary' => isset($binaries['swf_render_binary']) ? $binaries['swf_render_binary'] : null, + 'mp4box_binary' => isset($binaries['mp4box_binary']) ? $binaries['mp4box_binary'] : null, + 'pdftotext_binary' => isset($binaries['pdftotext_binary']) ? $binaries['pdftotext_binary'] : null, + 'composite_binary' => isset($binaries['composite_binary']) ? $binaries['composite_binary'] : null, + 'ffmpeg_binary' => isset($binaries['ffmpeg_binary']) ? $binaries['ffmpeg_binary'] : null, + 'ffprobe_binary' => isset($binaries['ffprobe_binary']) ? $binaries['ffprobe_binary'] : null, ))); } @@ -40,6 +40,6 @@ class BinariesProbe extends BinariesRequirements implements ProbeInterface */ public static function create(Application $app) { - return new static($app['phraseanet.registry']); + return new static($app['phraseanet.configuration']['binaries']); } } diff --git a/lib/classes/API/V1/adapter.php b/lib/classes/API/V1/adapter.php index 5ffc4b8a3b..51203dcd18 100644 --- a/lib/classes/API/V1/adapter.php +++ b/lib/classes/API/V1/adapter.php @@ -335,6 +335,8 @@ class API_V1_adapter extends API_V1_Abstract $SEStatus = array('error' => $e->getMessage()); } + $binaries = $app['phraseanet.configuration']['binaries']; + return array( 'global_values' => array( 'serverName' => $app['phraseanet.registry']->get('GV_ServerName'), @@ -426,17 +428,17 @@ class API_V1_adapter extends API_V1_Abstract ), ), 'binary' => array( - 'phpCli' => $app['phraseanet.registry']->get('php_binary'), + 'phpCli' => isset($binaries['php_binary']) ? $binaries['php_binary'] : null, 'phpIni' => $app['phraseanet.registry']->get('GV_PHP_INI'), 'imagick' => $app['phraseanet.registry']->get('convert_binary'), - 'swfExtract' => $app['phraseanet.registry']->get('swf_extract_binary'), - 'pdf2swf' => $app['phraseanet.registry']->get('pdf2swf_binary'), - 'swfRender' => $app['phraseanet.registry']->get('swf_render_binary'), - 'unoconv' => $app['phraseanet.registry']->get('unoconv_binary'), - 'ffmpeg' => $app['phraseanet.registry']->get('ffmpeg_binary'), - 'ffprobe' => $app['phraseanet.registry']->get('ffprobe_binary'), - 'mp4box' => $app['phraseanet.registry']->get('mp4box_binary'), - 'pdftotext' => $app['phraseanet.registry']->get('pdftotext_binary'), + 'swfExtract' => isset($binaries['swf_extract_binary']) ? $binaries['swf_extract_binary'] : null, + 'pdf2swf' => isset($binaries['pdf2swf_binary']) ? $binaries['pdf2swf_binary'] : null, + 'swfRender' => isset($binaries['swf_render_binary']) ? $binaries['swf_render_binary'] : null, + 'unoconv' => isset($binaries['unoconv_binary']) ? $binaries['unoconv_binary'] : null, + 'ffmpeg' => isset($binaries['ffmpeg_binary']) ? $binaries['ffmpeg_binary'] : null, + 'ffprobe' => isset($binaries['ffprobe_binary']) ? $binaries['ffprobe_binary'] : null, + 'mp4box' => isset($binaries['mp4box_binary']) ? $binaries['mp4box_binary'] : null, + 'pdftotext' => isset($binaries['pdftotext_binary']) ? $binaries['pdftotext_binary'] : null, 'pdfmaxpages' => $app['phraseanet.registry']->get('GV_pdfmaxpages'),), 'mainConfiguration' => array( 'adminMail' => $app['phraseanet.registry']->get('GV_adminMail'), diff --git a/lib/classes/patch/373.php b/lib/classes/patch/373.php index ac08cd69ea..0eb02093c5 100644 --- a/lib/classes/patch/373.php +++ b/lib/classes/patch/373.php @@ -90,12 +90,12 @@ class patch_373 implements patchInterface 'GV_pdftotext' => 'pdftotext_binary', ); - $binaries = array('ghostscript_binary' => ''); + $binaries = array('ghostscript_binary' => null); foreach ($Regbinaries as $name) { $stmt->execute(array(':key' => $name)); $row = $stmt->fetch(\PDO::FETCH_ASSOC); - $value = is_executable($row['value']) ? $row['value'] : ''; + $value = is_executable($row['value']) ? $row['value'] : null; $binaries[$mapping[$name]] = $value; } diff --git a/lib/classes/recordutils/image.php b/lib/classes/recordutils/image.php index 0aa650079b..94d26a2960 100644 --- a/lib/classes/recordutils/image.php +++ b/lib/classes/recordutils/image.php @@ -75,6 +75,7 @@ class recordutils_image extends recordutils public static function stamp(Application $app, \media_subdef $subdef) { $base_id = $subdef->get_record()->get_base_id(); + $binaries = $app['phraseanet.configuration']['binaries']; if ($subdef->get_type() !== \media_subdef::TYPE_IMAGE) { return $subdef->get_pathfile(); @@ -84,7 +85,7 @@ class recordutils_image extends recordutils return $subdef->get_pathfile(); } - if ( ! $app['phraseanet.registry']->get('convert_binary')) { + if ( ! isset($binaries['convert_binary'])) { return $subdef->get_pathfile(); } @@ -287,7 +288,7 @@ class recordutils_image extends recordutils $newh = $image_height + $stampheight; - $builder = ProcessBuilder::create(array($app['phraseanet.registry']->get('convert_binary'))); + $builder = ProcessBuilder::create(array($binaries['convert_binary'])); $builder->add('-extent') ->add($image_width . 'x' . $newh) ->add('-draw') @@ -316,6 +317,7 @@ class recordutils_image extends recordutils public static function watermark(Application $app, \media_subdef $subdef) { $base_id = $subdef->get_record()->get_base_id(); + $binaries = $app['phraseanet.configuration']['binaries']; if ($subdef->get_name() !== 'preview') { return $subdef->get_pathfile(); @@ -341,11 +343,11 @@ class recordutils_image extends recordutils return $pathOut; } - if ($app['phraseanet.registry']->get('composite_binary') && + if (isset($binaries['composite_binary']) && file_exists($app['root.path'] . '/config/wm/' . $base_id)) { $builder = ProcessBuilder::create(array( - $app['phraseanet.registry']->get('composite_binary'), + $binaries['composite_binary'], $app['root.path'] . '/config/wm/' . $base_id, $pathIn, '-strip', '-watermark', '90%', '-gravity', 'center', @@ -353,7 +355,7 @@ class recordutils_image extends recordutils )); $builder->getProcess()->run(); - } elseif ($app['phraseanet.registry']->get('convert_binary')) { + } elseif (isset($binaries['convert_binary'])) { $collname = phrasea::bas_labels($base_id, $app); $tailleimg = @getimagesize($pathIn); $max = ($tailleimg[0] > $tailleimg[1] ? $tailleimg[0] : $tailleimg[1]); @@ -369,7 +371,7 @@ class recordutils_image extends recordutils $decalage = 1; $builder = ProcessBuilder::create(array( - $app['phraseanet.registry']->get('convert_binary'), + $binaries['convert_binary'], '-fill', 'white', '-draw', 'line 0,0 ' . $tailleimg[0] . ',' . $tailleimg[1] . '', '-fill', 'black', '-draw', 'line 1,0 ' . $tailleimg[0] + 1 . ',' . $tailleimg[1] . '', '-fill', 'white', '-draw', 'line ' . $tailleimg[0] . ',0 0,' . $tailleimg[1] . '', diff --git a/lib/classes/registry.php b/lib/classes/registry.php index 6dd2552c05..8e498a6eb8 100644 --- a/lib/classes/registry.php +++ b/lib/classes/registry.php @@ -55,14 +55,6 @@ class registry implements registryInterface if (isset($config['main']['key'])) { $this->cache->save('GV_sit', $config['main']['key']); } - - if (isset($config['binaries'])) { - foreach ($config['binaries'] as $name => $path) { - if ($path) { - $this->cache->save($name, $path); - } - } - } } return $this; diff --git a/lib/classes/task/Scheduler.php b/lib/classes/task/Scheduler.php index 208ca08b54..887ce5378c 100644 --- a/lib/classes/task/Scheduler.php +++ b/lib/classes/task/Scheduler.php @@ -11,6 +11,7 @@ use Alchemy\Phrasea\Application; use Monolog\Logger; +use Symfony\Component\Process\ExecutableFinder; /** * @@ -62,7 +63,14 @@ class task_Scheduler public function run() { //prevent scheduler to fail if GV_cli is not provided - if ( ! is_executable($this->dependencyContainer['phraseanet.registry']->get('php_binary'))) { + if (isset($this->dependencyContainer['phraseanet.configuration']['binaries']['php_binary'])) { + $php = $this->dependencyContainer['phraseanet.configuration']['binaries']['php_binary']; + } else { + $finder = new ExecutableFinder(); + $php = $finder->find($php); + } + + if ( ! is_executable($php)) { throw new \RuntimeException('PHP cli is not provided in registry'); } @@ -225,7 +233,7 @@ class task_Scheduler $taskPoll[$tkey] = array( "task" => $task, "current_status" => $status, - "cmd" => $this->dependencyContainer['phraseanet.registry']->get('php_binary'), + "cmd" => $php, "args" => array( '-f', $this->dependencyContainer['root.path'] . '/bin/console', diff --git a/lib/classes/task/manager.php b/lib/classes/task/manager.php index d6fa19a298..3188528379 100644 --- a/lib/classes/task/manager.php +++ b/lib/classes/task/manager.php @@ -126,9 +126,15 @@ class task_manager public function getSchedulerProcess() { - $phpcli = $this->app['phraseanet.registry']->get('php_binary'); + //prevent scheduler to fail if GV_cli is not provided + if (isset($this->app['phraseanet.configuration']['binaries']['php_binary'])) { + $php = $this->app['phraseanet.configuration']['binaries']['php_binary']; + } else { + $finder = new ExecutableFinder(); + $php = $finder->find($php); + } - $cmd = $phpcli . ' -f ' . $this->app['root.path'] . "/bin/console scheduler:start"; + $cmd = $php . ' -f ' . $this->app['root.path'] . "/bin/console scheduler:start"; return new Process($cmd); }