Remove support of binary paths by registry

This commit is contained in:
Romain Neutron
2013-06-26 16:58:36 +02:00
parent 21eea19074
commit 32875e6698
9 changed files with 56 additions and 48 deletions

View File

@@ -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');

View File

@@ -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';

View File

@@ -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']);
}
}

View File

@@ -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'),

View File

@@ -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;
}

View File

@@ -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] . '',

View File

@@ -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;

View File

@@ -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',

View File

@@ -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);
}