Merge with 3.7

This commit is contained in:
Romain Neutron
2012-10-10 11:34:21 +02:00
30 changed files with 586 additions and 396 deletions

View File

@@ -25,7 +25,7 @@
"swiftmailer/swiftmailer": "4.1.*", "swiftmailer/swiftmailer": "4.1.*",
"symfony/symfony": ">=2.1", "symfony/symfony": ">=2.1",
"tecnick.com/tcpdf": "dev-master", "tecnick.com/tcpdf": "dev-master",
"twig/twig": "1.9.*", "twig/twig": ">=1.9",
"twig/extensions": "master", "twig/extensions": "master",
"zend/gdata": ">1.11" "zend/gdata": ">1.11"
}, },

View File

@@ -3,6 +3,7 @@
#Declare which environment will be used by the application #Declare which environment will be used by the application
environment : prod environment : prod
key : null
#Declare all your environment configurations #Declare all your environment configurations

View File

@@ -29,7 +29,7 @@ rewrite ^/prod/story/.*$ /index.php last;
rewrite ^/prod/WorkZone/.*$ /index.php last; rewrite ^/prod/WorkZone/.*$ /index.php last;
rewrite ^/prod/language/.*$ /index.php last; rewrite ^/prod/language/.*$ /index.php last;
rewrite ^/prod/tools/.*$ /index.php last; rewrite ^/prod/tools/.*$ /index.php last;
rewrite ^/prod/TOU/.*$ /index.php last; rewrite ^/prod/TOU/.?$ /index.php last;
rewrite ^/prod/upload/.*$ /index.php last; rewrite ^/prod/upload/.*$ /index.php last;
rewrite ^/prod/lazaret/.*$ /index.php last; rewrite ^/prod/lazaret/.*$ /index.php last;
rewrite ^/prod/UserPreferences/.*$ /index.php last; rewrite ^/prod/UserPreferences/.*$ /index.php last;

View File

@@ -52,6 +52,24 @@ class TOU implements ControllerProviderInterface
return $app->json($ret); return $app->json($ret);
}); });
$controllers->get('/', function(Application $app, Request $request) {
$data = array();
foreach ($app['phraseanet.appbox']->get_databoxes() as $databox) {
$cgus = $databox->get_cgus();
if (!isset($cgus[$app['locale']])) {
continue;
}
$data[$databox->get_viewname()] = $cgus[$app['locale']]['value'];
}
return new Response($app['Core']['Twig']->render('/prod/TOU.html.twig', array('TOUs' => $data)));
});
return $controllers; return $controllers;
} }
} }

View File

@@ -201,6 +201,11 @@ class Configuration
return $this->specifications->setServices($services); return $this->specifications->setServices($services);
} }
public function setBinaries($binaries)
{
return $this->specifications->setBinaries($binaries);
}
public function setConnexions($connexions) public function setConnexions($connexions)
{ {
return $this->specifications->setConnexions($connexions); return $this->specifications->setConnexions($connexions);
@@ -216,6 +221,11 @@ class Configuration
return $this->specifications->getServices(); return $this->specifications->getServices();
} }
public function getBinaries()
{
return $this->specifications->getBinaries();
}
public function getConnexions() public function getConnexions()
{ {
return $this->specifications->getConnexions(); return $this->specifications->getConnexions();

View File

@@ -50,6 +50,13 @@ class ApplicationSpecification implements SpecificationInterface
); );
} }
public function setBinaries($binaries)
{
return file_put_contents(
$this->getBinariesPathFile(), $this->parser->dump($binaries, 7)
);
}
public function getConfigurations() public function getConfigurations()
{ {
return $this->parser->parse( return $this->parser->parse(
@@ -64,6 +71,17 @@ class ApplicationSpecification implements SpecificationInterface
); );
} }
public function getBinaries()
{
if (file_exists($this->getBinariesPathFile())) {
return $this->parser->parse(
file_get_contents($this->getBinariesPathFile())
);
}
return array('binaries' => array());
}
public function getServices() public function getServices()
{ {
return $this->parser->parse( return $this->parser->parse(
@@ -108,6 +126,7 @@ class ApplicationSpecification implements SpecificationInterface
chmod($this->getConnexionsPathFile(), 0700); chmod($this->getConnexionsPathFile(), 0700);
chmod($this->getConfigurationsPathFile(), 0700); chmod($this->getConfigurationsPathFile(), 0700);
chmod($this->getServicesPathFile(), 0700); chmod($this->getServicesPathFile(), 0700);
chmod($this->getBinariesPathFile(), 0700);
} }
} }
@@ -141,6 +160,11 @@ class ApplicationSpecification implements SpecificationInterface
return $this->getRealRootPath() . '/config/services.yml'; return $this->getRealRootPath() . '/config/services.yml';
} }
protected function getBinariesPathFile()
{
return $this->getRealRootPath() . '/config/binaries.yml';
}
protected function getRealRootPath() protected function getRealRootPath()
{ {
return realpath(__DIR__ . '/../../../../../'); return realpath(__DIR__ . '/../../../../../');

View File

@@ -26,12 +26,16 @@ interface SpecificationInterface
public function setServices($services); public function setServices($services);
public function setBinaries($binaries);
public function getConfigurations(); public function getConfigurations();
public function getConnexions(); public function getConnexions();
public function getServices(); public function getServices();
public function getBinaries();
public function initialize(); public function initialize();
public function delete(); public function delete();

View File

@@ -414,16 +414,17 @@ class API_V1_adapter extends API_V1_Abstract
), ),
), ),
'binary' => array( 'binary' => array(
'phpCli' => $app['phraseanet.registry']->get('GV_cli'), 'phpCli' => $app['phraseanet.registry']->get('php_binary'),
'phpIni' => $app['phraseanet.registry']->get('GV_PHP_INI'), 'phpIni' => $app['phraseanet.registry']->get('GV_PHP_INI'),
'imagick' => $app['phraseanet.registry']->get('GV_imagick'), 'imagick' => $app['phraseanet.registry']->get('convert_binary'),
'swfExtract' => $app['phraseanet.registry']->get('GV_swf_extract'), 'swfExtract' => $app['phraseanet.registry']->get('swf_extract_binary'),
'pdf2swf' => $app['phraseanet.registry']->get('GV_pdf2swf'), 'pdf2swf' => $app['phraseanet.registry']->get('pdf2swf_binary'),
'swfRender' => $app['phraseanet.registry']->get('GV_swf_render'), 'swfRender' => $app['phraseanet.registry']->get('swf_render_binary'),
'unoconv' => $app['phraseanet.registry']->get('GV_unoconv'), 'unoconv' => $app['phraseanet.registry']->get('unoconv_binary'),
'ffmpeg' => $app['phraseanet.registry']->get('GV_ffmpeg'), 'ffmpeg' => $app['phraseanet.registry']->get('ffmpeg_binary'),
'mp4box' => $app['phraseanet.registry']->get('GV_mp4box'), 'ffprobe' => $app['phraseanet.registry']->get('ffprobe_binary'),
'pdftotext' => $app['phraseanet.registry']->get('GV_pdftotext'), 'mp4box' => $app['phraseanet.registry']->get('mp4box_binary'),
'pdftotext' => $app['phraseanet.registry']->get('pdftotext_binary'),
'pdfmaxpages' => $app['phraseanet.registry']->get('GV_pdfmaxpages'),), 'pdfmaxpages' => $app['phraseanet.registry']->get('GV_pdfmaxpages'),),
'mainConfiguration' => array( 'mainConfiguration' => array(
'adminMail' => $app['phraseanet.registry']->get('GV_adminMail'), 'adminMail' => $app['phraseanet.registry']->get('GV_adminMail'),

View File

@@ -82,7 +82,7 @@ class connection
} }
$string .= "\nPOST datas :\n "; $string .= "\nPOST datas :\n ";
foreach ($_POST as $key => $value) { foreach ($_POST as $key => $value) {
$string .= "\t\t" . $key . ' = ' . $value . "\n"; $string .= "\t\t" . $key . ' = ' . (is_scalar($value) ? $value : 'non-scalar value') . "\n";
} }
$string .= "\n\n\n\n"; $string .= "\n\n\n\n";

View File

@@ -15,9 +15,11 @@
* @license http://opensource.org/licenses/gpl-3.0 GPLv3 * @license http://opensource.org/licenses/gpl-3.0 GPLv3
* @link www.phraseanet.com * @link www.phraseanet.com
*/ */
use Alchemy\Phrasea\Command\Command; use Alchemy\Phrasea\Command\Command;
use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Process\ProcessBuilder;
class module_console_sphinxGenerateSuggestion extends Command class module_console_sphinxGenerateSuggestion extends Command
{ {
@@ -59,15 +61,21 @@ class module_console_sphinxGenerateSuggestion extends Command
return 1; return 1;
} }
$builder = ProcessBuilder::create(array('/usr/local/bin/indexer'));
$builder->add('metadatas' . $index)
->add('--buildstops')
->add($tmp_file)
->add(1000000)
->add('--buildfreqs');
$builder->getProcess()->run();
if ( ! file_exists($tmp_file)) { if ( ! file_exists($tmp_file)) {
$output->writeln("<error> file '" . $tmp_file . "' does not exist</error>"); $output->writeln("<error> file '" . $tmp_file . "' does not exist</error>");
return 1; return 1;
} }
$cmd = '/usr/local/bin/indexer metadatas' . $index . ' --buildstops ' . $tmp_file . ' 1000000 --buildfreqs';
exec($cmd);
try { try {
$connbas = connection::getPDOConnection($this->container, $sbas_id); $connbas = connection::getPDOConnection($this->container, $sbas_id);
} catch (Exception $e) { } catch (Exception $e) {

View File

@@ -18,6 +18,7 @@
use Alchemy\Phrasea\Command\Command; use Alchemy\Phrasea\Command\Command;
use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Process\ProcessBuilder;
class module_console_systemBackupDB extends Command class module_console_systemBackupDB extends Command
{ {
@@ -64,18 +65,22 @@ class module_console_systemBackupDB extends Command
$output->write(sprintf('Generating %s ... ', $filename)); $output->write(sprintf('Generating %s ... ', $filename));
$command = sprintf( $builder = ProcessBuilder::create(array(
'mysqldump --host %s --port %s --user %s --password=%s' 'mysqldump',
. ' --database %s --default-character-set=utf8 > %s' '--host='.$base->get_host(),
, $base->get_host() '--port='.$base->get_port(),
, $base->get_port() '--user='.$base->get_user(),
, $base->get_user() '--password='.$base->get_passwd(),
, $base->get_passwd() '--databases', $base->get_dbname(),
, $base->get_dbname() '--default-character-set=utf8'
, escapeshellarg($filename) ));
);
system($command); $proces = $builder->getProcess();
$proces->run();
if ($proces->isSuccessful()) {
file_put_contents($filename, $proces->getOutput());
}
if (file_exists($filename) && filesize($filename) > 0) { if (file_exists($filename) && filesize($filename) > 0) {
$output->writeln('OK'); $output->writeln('OK');

View File

@@ -0,0 +1,135 @@
<?php
/*
* This file is part of Phraseanet
*
* (c) 2005-2012 Alchemy
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
use Alchemy\Phrasea\Core\Configuration;
use Symfony\Component\Yaml\Dumper;
/**
*
* @license http://opensource.org/licenses/gpl-3.0 GPLv3
* @link www.phraseanet.com
*/
class patch_373 implements patchInterface
{
/**
*
* @var string
*/
private $release = '3.7.3';
/**
*
* @var Array
*/
private $concern = array(base::APPLICATION_BOX);
/**
*
* @return string
*/
public function get_release()
{
return $this->release;
}
public function require_all_upgrades()
{
return false;
}
/**
*
* @return Array
*/
public function concern()
{
return $this->concern;
}
/**
* @param base $databox
*/
public function apply(base &$appbox)
{
$sql = 'SELECT * FROM registry WHERE `key` = :key';
$stmt = $appbox->get_connection()->prepare($sql);
$Regbinaries = array(
'GV_cli',
'GV_imagick',
'GV_pathcomposite',
'GV_swf_extract',
'GV_pdf2swf',
'GV_swf_render',
'GV_unoconv',
'GV_ffmpeg',
'GV_ffprobe',
'GV_mp4box',
'GV_pdftotext',
);
$mapping = array(
'GV_cli' => 'php_binary',
'GV_imagick' => 'convert_binary',
'GV_pathcomposite' => 'composite_binary',
'GV_swf_extract' => 'swf_extract_binary',
'GV_pdf2swf' => 'pdf2swf_binary',
'GV_swf_render' => 'swf_render_binary',
'GV_unoconv' => 'unoconv_binary',
'GV_ffmpeg' => 'ffmpeg_binary',
'GV_ffprobe' => 'ffprobe_binary',
'GV_mp4box' => 'mp4box_binary',
'GV_pdftotext' => 'pdftotext_binary',
);
foreach ($Regbinaries as $name) {
$stmt->execute(array(':key' => $name));
$row = $stmt->fetch(\PDO::FETCH_ASSOC);
$value = is_executable($row['value']) ? $row['value'] : '';
$binaries[$mapping[$name]] = $value;
}
$stmt->closeCursor();
$configuration = Configuration::build();
$configuration->setBinaries(array('binaries' => $binaries));
$sql = 'DELETE FROM registry WHERE `key` = :key';
$stmt = $appbox->get_connection()->prepare($sql);
foreach ($Regbinaries as $name) {
$stmt->execute(array(':key' => $name));
}
$stmt->closeCursor();
$GV_sit = null;
$sql = 'SELECT value FROM registry WHERE `key` = :key';
$stmt = $appbox->get_connection()->prepare($sql);
$stmt->execute(array(':key'=>'GV_sit'));
$row = $stmt->fetch(\PDO::FETCH_ASSOC);
$stmt->closeCursor();
$configs = $configuration->getConfigurations();
$configs['key'] = $row['value'];
$configuration->setConfigurations($configs);
$sql = 'DELETE FROM registry WHERE `key` = :key';
$stmt = $appbox->get_connection()->prepare($sql);
$stmt->execute(array(':key'=>'GV_sit'));
$stmt->closeCursor();
return true;
}
}

View File

@@ -10,6 +10,7 @@
*/ */
use Alchemy\Phrasea\Application; use Alchemy\Phrasea\Application;
use Symfony\Component\Process\ProcessBuilder;
/** /**
* *
@@ -83,7 +84,7 @@ class recordutils_image extends recordutils
return $subdef->get_pathfile(); return $subdef->get_pathfile();
} }
if ( ! $app['phraseanet.registry']->get('GV_imagick')) { if ( ! $app['phraseanet.registry']->get('convert_binary')) {
return $subdef->get_pathfile(); return $subdef->get_pathfile();
} }
@@ -286,15 +287,15 @@ class recordutils_image extends recordutils
$newh = $image_height + $stampheight; $newh = $image_height + $stampheight;
$cmd = $app['phraseanet.registry']->get('GV_imagick'); $builder = ProcessBuilder::create(array($app['phraseanet.registry']->get('convert_binary')));
$cmd .= ' -extent "' . $image_width . 'x' . $newh $builder->add('-extent')
. '" -draw "image SrcOver 0,' . $image_height . ' ' ->add($image_width . 'x' . $newh)
. $image_width . ',' . $stampheight . '\'' . $pathTmpStamp . '\'"'; ->add('-draw')
->add('image SrcOver 0,' . $image_height . ' ' . $image_width . ',' . $stampheight . '"' . $pathTmpStamp . '"')
->add($pathIn)
->add($pathOut);
$cmd.= " \"" . $pathIn . "\""; # <<-- le doc original $builder->getProcess()->run();
$cmd.= " \"" . $pathOut . "\""; # <-- le doc stampe
exec($cmd);
unlink($pathTmpStamp); unlink($pathTmpStamp);
@@ -302,7 +303,7 @@ class recordutils_image extends recordutils
return $pathOut; return $pathOut;
} }
return $subdef->get_pathfile();; return $subdef->get_pathfile();
} }
/** /**
@@ -330,7 +331,7 @@ class recordutils_image extends recordutils
$pathOut = $subdef->get_path() . 'watermark_' . $subdef->get_file(); $pathOut = $subdef->get_path() . 'watermark_' . $subdef->get_file();
if ( ! is_file($pathIn)) { if (!is_file($pathIn)) {
return false; return false;
} }
@@ -339,32 +340,19 @@ class recordutils_image extends recordutils
} }
if ($app['phraseanet.registry']->get('GV_pathcomposite') && if ($app['phraseanet.registry']->get('GV_pathcomposite') &&
file_exists($app['phraseanet.registry']->get('GV_RootPath') . 'config/wm/' . $base_id)) { // si il y a un WM file_exists($app['phraseanet.registry']->get('GV_RootPath') . 'config/wm/' . $base_id)) {
$cmd = $app['phraseanet.registry']->get('GV_pathcomposite') . " ";
$cmd .= $app['phraseanet.registry']->get('GV_RootPath') . 'config/wm/' . $base_id . " ";
$cmd .= " \"" . $pathIn . "\" "; # <<-- la preview original
$cmd .= " -strip -watermark 90% -gravity center ";
$cmd .= " \"" . $pathOut . "\""; # <-- la preview temporaire
$descriptorspec = array(0 => array("pipe", "r"), $builder = ProcessBuilder::create(array(
1 => array("pipe", "w"), $app['phraseanet.registry']->get('composite_binary'),
2 => array("pipe", "w") $app['phraseanet.registry']->get('GV_RootPath') . 'config/wm/' . $base_id,
); $pathIn,
$process = proc_open($cmd, $descriptorspec, $pipes); '-strip', '-watermark', '90%', '-gravity', 'center',
if (is_resource($process)) { $pathOut
fclose($pipes[0]); ));
$err = "";
while ( ! feof($pipes[1])) $builder->getProcess()->run();
$out = fgets($pipes[1], 1024); } elseif ($app['phraseanet.registry']->get('convert_binary')) {
fclose($pipes[1]);
while ( ! feof($pipes[2]))
$err .= fgets($pipes[2], 1024);
fclose($pipes[2]);
$return_value = proc_close($process);
}
} elseif ($app['phraseanet.registry']->get('GV_imagick')) {
$collname = phrasea::bas_names($base_id, $app); $collname = phrasea::bas_names($base_id, $app);
$cmd = $app['phraseanet.registry']->get('GV_imagick');
$tailleimg = @getimagesize($pathIn); $tailleimg = @getimagesize($pathIn);
$max = ($tailleimg[0] > $tailleimg[1] ? $tailleimg[0] : $tailleimg[1]); $max = ($tailleimg[0] > $tailleimg[1] ? $tailleimg[0] : $tailleimg[1]);
@@ -378,50 +366,23 @@ class recordutils_image extends recordutils
else else
$decalage = 1; $decalage = 1;
$cmd .= " -fill white -draw \"line 0,0 " $builder = ProcessBuilder::create(array(
. $tailleimg[0] . "," . $tailleimg[1] . "\""; $app['phraseanet.registry']->get('convert_binary'),
$cmd .= " -fill black -draw \"line 1,0 " '-fill', 'white', '-draw', 'line 0,0 ' . $tailleimg[0] . ',' . $tailleimg[1] . '',
. ($tailleimg[0] + 1) . "," . ($tailleimg[1]) . "\""; '-fill', 'black', '-draw', 'line 1,0 ' . $tailleimg[0] + 1 . ',' . $tailleimg[1] . '',
'-fill', 'white', '-draw', 'line ' . $tailleimg[0] . ',0 0,' . $tailleimg[1] . '',
'-fill', 'black', '-draw', 'line ' . ($tailleimg[0] + 1) . ',0 0,' . $tailleimg[1] . '',
'-fill', 'white', '-gravity', 'NorthWest', '-pointsize', $tailleText, '-draw', 'text 0,0 ' . $collname,
'-fill', 'black', '-gravity', 'NorthWest', '-pointsize', $tailleText, '-draw', 'text ' . $decalage . ', 1 ' . $collname,
'-fill', 'white', '-gravity', 'center', '-pointsize', $tailleText, '-draw', 'text 0,0 ' . $collname,
'-fill', 'black', '-gravity', 'center', '-pointsize', $tailleText, '-draw', 'text ' . $decalage . ', 1 ' . $collname,
'-fill', 'white', '-gravity', 'SouthEast', '-pointsize', $tailleText, '-draw', 'text 0,0 ' . $collname,
'-fill', 'black', '-gravity', 'SouthEast', '-pointsize', $tailleText, '-draw', 'text ' . $decalage . ', 1 ' . $collname,
$pathIn, $pathOut
));
$cmd .= " -fill white -draw \"line " $process = $builder->getProcess();
. $tailleimg[0] . ",0 0," . $tailleimg[1] . "\""; $process->run();
$cmd .= " -fill black -draw \"line "
. ($tailleimg[0] + 1) . ",0 1," . ($tailleimg[1]) . "\"";
$cmd .= " -fill white -gravity NorthWest -pointsize "
. " $tailleText -draw \"text 0,0 '$collname'\"";
$cmd .= " -fill black -gravity NorthWest -pointsize "
. " $tailleText -draw \"text $decalage,1 '$collname'\"";
$cmd .= " -fill white -gravity center -pointsize "
. " $tailleText -draw \"text 0,0 '$collname'\"";
$cmd .= " -fill black -gravity center -pointsize "
. " $tailleText -draw \"text $decalage,1 '$collname'\"";
$cmd .= " -fill white -gravity SouthEast -pointsize "
. " $tailleText -draw \"text 0,0 '$collname'\"";
$cmd .= " -fill black -gravity SouthEast -pointsize "
. " $tailleText -draw \"text $decalage,1 '$collname'\"";
$cmd.= " \"" . $pathIn . "\""; # <<-- la preview original
$cmd.= " \"" . $pathOut . "\""; # <-- la preview temporaire
$descriptorspec = array(0 => array("pipe", "r"),
1 => array("pipe", "w"),
2 => array("pipe", "w")
);
$process = proc_open($cmd, $descriptorspec, $pipes);
if (is_resource($process)) {
fclose($pipes[0]);
$err = "";
while ( ! feof($pipes[1]))
$out = fgets($pipes[1], 1024);
fclose($pipes[1]);
while ( ! feof($pipes[2]))
$err .= fgets($pipes[2], 1024);
fclose($pipes[2]);
$return_value = proc_close($process);
}
} }
if (is_file($pathOut)) { if (is_file($pathOut)) {

View File

@@ -28,10 +28,13 @@ class registry implements registryInterface
protected $app; protected $app;
const TYPE_BOOLEAN = 'boolean'; const TYPE_BOOLEAN = 'boolean';
const TYPE_ARRAY = 'array';
const TYPE_ENUM_MULTI = 'enum_multi'; const TYPE_ENUM_MULTI = 'enum_multi';
const TYPE_INTEGER = 'integer'; const TYPE_INTEGER = 'integer';
const TYPE_ENUM = 'enum';
const TYPE_STRING = 'string'; const TYPE_STRING = 'string';
const TYPE_TEXT = 'text';
const TYPE_TIMEZONE = 'timezone';
const TYPE_BINARY = 'binary';
/** /**
* *
@@ -48,6 +51,19 @@ class registry implements registryInterface
$this->cache->save('GV_ServerName', $app['phraseanet.configuration']->getPhraseanet()->get('servername')); $this->cache->save('GV_ServerName', $app['phraseanet.configuration']->getPhraseanet()->get('servername'));
$this->cache->save('GV_debug', $app['phraseanet.configuration']->isDebug()); $this->cache->save('GV_debug', $app['phraseanet.configuration']->isDebug());
$this->cache->save('GV_maintenance', $app['phraseanet.configuration']->isMaintained()); $this->cache->save('GV_maintenance', $app['phraseanet.configuration']->isMaintained());
$config = $app['phraseanet.configuration']->getConfigurations();
if (isset($config['key'])) {
$this->cache->save('GV_sit', $config['key']);
}
$binaries = $app['phraseanet.configuration']->getBinaries();
if (isset($binaries['binaries'])) {
foreach ($binaries['binaries'] as $name => $path) {
$this->cache->save($name, $path);
}
}
} }
return $this; return $this;
@@ -86,10 +102,13 @@ class registry implements registryInterface
$value = (int) $row['value']; $value = (int) $row['value'];
break; break;
case self::TYPE_ENUM_MULTI: case self::TYPE_ENUM_MULTI:
case self::TYPE_ARRAY:
$value = unserialize($row['value']); $value = unserialize($row['value']);
break; break;
case self::TYPE_STRING: case self::TYPE_STRING:
case self::TYPE_ENUM:
case self::TYPE_TIMEZONE:
case self::TYPE_TEXT:
case self::TYPE_BINARY:
default: default:
$value = $row['value']; $value = $row['value'];
break; break;
@@ -132,12 +151,15 @@ class registry implements registryInterface
$this->load(); $this->load();
switch ($type) { switch ($type) {
case self::TYPE_ARRAY:
case self::TYPE_ENUM_MULTI: case self::TYPE_ENUM_MULTI:
$sql_value = serialize($value); $sql_value = serialize($value);
$value = (array) $value; $value = (array) $value;
break; break;
case self::TYPE_STRING; case self::TYPE_STRING;
case self::TYPE_ENUM:
case self::TYPE_TIMEZONE:
case self::TYPE_TEXT:
case self::TYPE_BINARY:
default: default:
$sql_value = (string) $value; $sql_value = (string) $value;
$value = (string) $value; $value = (string) $value;
@@ -152,7 +174,11 @@ class registry implements registryInterface
break; break;
} }
$conn = connection::getPDOConnection($this->app); if ($type == self::TYPE_BINARY) {
return $this;
}
$conn = connection::getPDOConnection();
$sql = 'REPLACE INTO registry (`id`, `key`, `value`, `type`) $sql = 'REPLACE INTO registry (`id`, `key`, `value`, `type`)
VALUES (null, :key, :value, :type)'; VALUES (null, :key, :value, :type)';

View File

@@ -97,13 +97,15 @@ class setup
} }
} }
$type = 'string'; $type = $variable['type'];
switch ($variable['type']) { switch ($variable['type']) {
case 'string': case \registry::TYPE_STRING:
case 'password': case \registry::TYPE_BINARY:
case \registry::TYPE_TEXT:
case \registry::TYPE_TIMEZONE:
$datas[$variable['name']] = (string) trim($datas[$variable['name']]); $datas[$variable['name']] = (string) trim($datas[$variable['name']]);
break; break;
case 'enum': case \registry::TYPE_ENUM:
if (!isset($variable['available'])) { if (!isset($variable['available'])) {
$variable['error'] = 'avalaibility'; $variable['error'] = 'avalaibility';
} elseif (!is_array($variable['available'])) { } elseif (!is_array($variable['available'])) {
@@ -112,25 +114,16 @@ class setup
$variable['error'] = 'avalaibility'; $variable['error'] = 'avalaibility';
} }
break; break;
case 'enum_multi': case \registry::TYPE_ENUM_MULTI:
if (!isset($datas[$variable['name']])) if (!isset($datas[$variable['name']]))
$datas[$variable['name']] = null; $datas[$variable['name']] = null;
$datas[$variable['name']] = ($datas[$variable['name']]); $datas[$variable['name']] = ($datas[$variable['name']]);
$type = 'array';
break; break;
case 'boolean': case \registry::TYPE_BOOLEAN:
$datas[$variable['name']] = strtolower($datas[$variable['name']]) === 'true' ? '1' : '0'; $datas[$variable['name']] = strtolower($datas[$variable['name']]) === 'true' ? '1' : '0';
$type = 'boolean';
break; break;
case 'integer': case \registry::TYPE_INTEGER:
$datas[$variable['name']] = (int) trim($datas[$variable['name']]); $datas[$variable['name']] = (int) trim($datas[$variable['name']]);
$type = 'integer';
break;
case 'text':
$datas[$variable['name']] = trim($datas[$variable['name']]);
break;
case 'timezone':
$datas[$variable['name']] = trim($datas[$variable['name']]);
break; break;
default: default:
$error = true; $error = true;
@@ -180,17 +173,17 @@ class setup
$finder = new \Symfony\Component\Process\ExecutableFinder(); $finder = new \Symfony\Component\Process\ExecutableFinder();
$binaries = array( $binaries = array(
'PHP CLI' => $registry->get('GV_cli', $finder->find('php')), 'PHP CLI' => $registry->get('php_binary', $finder->find('php')),
'ImageMagick (convert)' => $registry->get('GV_imagick', $finder->find('convert')), 'ImageMagick (convert)' => $registry->get('convert_binary', $finder->find('convert')),
'PDF 2 SWF' => $registry->get('GV_pdf2swf', $finder->find('pdf2swf')), 'PDF 2 SWF' => $registry->get('pdf2swf_binary', $finder->find('pdf2swf')),
'Unoconv' => $registry->get('GV_unoconv', $finder->find('unoconv')), 'Unoconv' => $registry->get('unoconv_binary', $finder->find('unoconv')),
'SWFextract' => $registry->get('GV_swf_extract', $finder->find('swfextract')), 'SWFextract' => $registry->get('swf_extract_binary', $finder->find('swfextract')),
'SWFrender' => $registry->get('GV_swf_render', $finder->find('swfrender')), 'SWFrender' => $registry->get('swf_render_binary', $finder->find('swfrender')),
'MP4Box' => $registry->get('GV_mp4box', $finder->find('MP4Box')), 'MP4Box' => $registry->get('mp4box_binary', $finder->find('MP4Box')),
'xpdf (pdf2text)' => $registry->get('GV_pdftotext', $finder->find('pdftotext')), 'xpdf (pdf2text)' => $registry->get('pdftotext_binary', $finder->find('pdftotext')),
'ImageMagick (composite)' => $registry->get('GV_pathcomposite', $finder->find('composite')), 'ImageMagick (composite)' => $registry->get('composite_binary', $finder->find('composite')),
'FFmpeg' => $registry->get('GV_ffmpeg', $finder->find('ffmpeg')), 'FFmpeg' => $registry->get('ffmpeg_binary', $finder->find('ffmpeg')),
'FFprobe' => $registry->get('GV_ffprobe', $finder->find('ffprobe')), 'FFprobe' => $registry->get('ffprobe_binary', $finder->find('ffprobe')),
'phraseanet_indexer' => $finder->find('phraseanet_indexer'), 'phraseanet_indexer' => $finder->find('phraseanet_indexer'),
); );

View File

@@ -53,7 +53,7 @@ class task_Scheduler
public function run() public function run()
{ {
//prevent scheduler to fail if GV_cli is not provided //prevent scheduler to fail if GV_cli is not provided
if ( ! is_executable($this->dependencyContainer['phraseanet.registry']->get('GV_cli'))) { if ( ! is_executable($this->dependencyContainer['phraseanet.registry']->get('php_binary'))) {
throw new \RuntimeException('PHP cli is not provided in registry'); throw new \RuntimeException('PHP cli is not provided in registry');
} }
@@ -214,7 +214,7 @@ class task_Scheduler
$taskPoll[$tkey] = array( $taskPoll[$tkey] = array(
"task" => $task, "task" => $task,
"current_status" => $status, "current_status" => $status,
"cmd" => $this->dependencyContainer['phraseanet.registry']->get('GV_cli'), "cmd" => $this->dependencyContainer['phraseanet.registry']->get('php_binary'),
"args" => array( "args" => array(
'-f', '-f',
$this->dependencyContainer['phraseanet.registry']->get('GV_RootPath') . 'bin/console', $this->dependencyContainer['phraseanet.registry']->get('GV_RootPath') . 'bin/console',
@@ -325,7 +325,7 @@ class task_Scheduler
$descriptors[2] = array('file', $nullfile, 'a+'); $descriptors[2] = array('file', $nullfile, 'a+');
$taskPoll[$tkey]["process"] = proc_open( $taskPoll[$tkey]["process"] = proc_open(
$taskPoll[$tkey]["cmd"] . ' ' . implode(' ', $taskPoll[$tkey]["args"]) escapeshellarg($taskPoll[$tkey]["cmd"]) . ' ' . implode(' ', array_map('escapeshellarg', $taskPoll[$tkey]["args"]))
, $descriptors , $descriptors
, $taskPoll[$tkey]["pipes"] , $taskPoll[$tkey]["pipes"]
, $this->dependencyContainer['phraseanet.registry']->get('GV_RootPath') . "bin/" , $this->dependencyContainer['phraseanet.registry']->get('GV_RootPath') . "bin/"

View File

@@ -899,18 +899,4 @@ abstract class task_abstract
return $this; return $this;
} }
/**
* Escape a shell command.
*
* As this function is buggy under windows, this method check the
* environment
*
* @param string $command
* @return string
*/
protected static function escapeShellCmd($command)
{
return defined('PHP_WINDOWS_VERSION_BUILD') ? escapeshellarg($command) : escapeshellcmd($command);
}
} }

View File

@@ -472,17 +472,11 @@ class task_period_cindexer extends task_abstract
$pipes = array(); $pipes = array();
$logcmd = self::escapeShellCmd($cmd); $logcmd = escapeshellarg($cmd).' '.implode(' ', array_map('escapeshellarg', $args_nopwd));
foreach ($args_nopwd as $arg) { $execmd = escapeshellarg($cmd).' '.implode(' ', array_map('escapeshellarg', $args));
$logcmd .= ' ' . escapeshellarg($arg);
}
$this->log(sprintf('cmd=\'%s\'', self::escapeShellCmd($logcmd))); $this->log(sprintf('cmd=\'%s\'', $logcmd));
$execmd = self::escapeShellCmd($cmd);
foreach ($args as $arg) {
$execmd .= ' ' . escapeshellarg($arg);
}
$process = proc_open($execmd, $descriptors, $pipes, $this->binpath, null, array('bypass_shell' => true)); $process = proc_open($execmd, $descriptors, $pipes, $this->binpath, null, array('bypass_shell' => true));
$pid = NULL; $pid = NULL;

View File

@@ -10,8 +10,6 @@ if (($pos = strpos($cwd, 'lib/conf.d')) !== false)
$EOL = PHP_EOL; $EOL = PHP_EOL;
$GV_sit = md5(time() . '--' . mt_rand(1000000, 9999999));
include_once dirname(__FILE__) . "/../../lib/classes/User/Interface.class.php"; include_once dirname(__FILE__) . "/../../lib/classes/User/Interface.class.php";
include_once dirname(__FILE__) . "/../../lib/classes/User/Adapter.class.php"; include_once dirname(__FILE__) . "/../../lib/classes/User/Adapter.class.php";
@@ -78,15 +76,7 @@ $GV = array(
'section' => _('GV::section:: Serveur HTTP'), 'section' => _('GV::section:: Serveur HTTP'),
'vars' => array( 'vars' => array(
array( array(
'type' => 'string', 'type' => \registry::TYPE_ENUM,
'name' => 'GV_sit',
'comment' => _('reglages:: Nom de linstallation'),
'default' => $GV_sit,
'readonly' => true,
'required' => true
),
array(
'type' => 'enum',
'name' => 'GV_default_lng', 'name' => 'GV_default_lng',
'comment' => _('reglages:: Langue par defaut'), 'comment' => _('reglages:: Langue par defaut'),
'default' => 'fr_FR', 'default' => 'fr_FR',
@@ -94,7 +84,7 @@ $GV = array(
'required' => true 'required' => true
), ),
array( array(
'type' => 'string', 'type' => \registry::TYPE_STRING,
'name' => 'GV_STATIC_URL', 'name' => 'GV_STATIC_URL',
'end_slash' => false, 'end_slash' => false,
'comment' => _('reglages:: URL statique (optionnel)'), 'comment' => _('reglages:: URL statique (optionnel)'),
@@ -107,19 +97,19 @@ $GV = array(
'rolled' => true, 'rolled' => true,
'vars' => array( 'vars' => array(
array( array(
'type' => 'text', 'type' => \registry::TYPE_TEXT,
'name' => 'GV_message', 'name' => 'GV_message',
'comment' => _('reglages:: Message a diffuser aux utilisateurs'), 'comment' => _('reglages:: Message a diffuser aux utilisateurs'),
'default' => "May the force be with you" 'default' => "May the force be with you"
), ),
array( array(
'type' => 'boolean', 'type' => \registry::TYPE_BOOLEAN,
'name' => 'GV_message_on', 'name' => 'GV_message_on',
'comment' => _('reglages:: activation du message a diffuser aux utilistaeurs'), 'comment' => _('reglages:: activation du message a diffuser aux utilistaeurs'),
'default' => false 'default' => false
), ),
array( array(
'type' => 'boolean', 'type' => \registry::TYPE_BOOLEAN,
'name' => 'GV_log_errors', 'name' => 'GV_log_errors',
'comment' => _('reglages:: logguer les erreurs'), 'comment' => _('reglages:: logguer les erreurs'),
'default' => false 'default' => false
@@ -129,14 +119,14 @@ $GV = array(
'section' => _('GV::section:: Connectivite aux webservices'), 'section' => _('GV::section:: Connectivite aux webservices'),
'vars' => array( 'vars' => array(
array( array(
'type' => 'boolean', 'type' => \registry::TYPE_BOOLEAN,
'name' => 'GV_google_api', 'name' => 'GV_google_api',
'comment' => _('reglages:: Utiliser els google apis'), 'comment' => _('reglages:: Utiliser els google apis'),
'default' => true, 'default' => true,
'required' => true 'required' => true
), ),
array( array(
'type' => 'string', 'type' => \registry::TYPE_STRING,
'name' => 'GV_i18n_service', 'name' => 'GV_i18n_service',
'comment' => _('reglages:: Service phrasea de localisation'), 'comment' => _('reglages:: Service phrasea de localisation'),
'default' => 'http://localization.webservice.alchemyasp.com/', 'default' => 'http://localization.webservice.alchemyasp.com/',
@@ -144,20 +134,20 @@ $GV = array(
'required' => true 'required' => true
), ),
array( array(
'type' => 'boolean', 'type' => \registry::TYPE_BOOLEAN,
'name' => 'GV_captchas', 'name' => 'GV_captchas',
'comment' => _('reglages:: Utilisation de l\'api recpatcha'), 'comment' => _('reglages:: Utilisation de l\'api recpatcha'),
'default' => false, 'default' => false,
'required' => true 'required' => true
), ),
array( array(
'type' => 'string', 'type' => \registry::TYPE_STRING,
'name' => 'GV_captcha_public_key', 'name' => 'GV_captcha_public_key',
'comment' => _('reglages:: clef publique recaptcha'), 'comment' => _('reglages:: clef publique recaptcha'),
'default' => '' 'default' => ''
), ),
array( array(
'type' => 'string', 'type' => \registry::TYPE_STRING,
'name' => 'GV_captcha_private_key', 'name' => 'GV_captcha_private_key',
'comment' => _('reglages:: clef privee recaptcha'), 'comment' => _('reglages:: clef privee recaptcha'),
'default' => '' 'default' => ''
@@ -167,26 +157,26 @@ $GV = array(
'section' => _('GV::section:: Connectivite a Youtube'), 'section' => _('GV::section:: Connectivite a Youtube'),
'vars' => array( 'vars' => array(
array( array(
'type' => 'boolean', 'type' => \registry::TYPE_BOOLEAN,
'name' => 'GV_youtube_api', 'name' => 'GV_youtube_api',
'comment' => sprintf(_('reglages:: Utiliser l\'api youtube, voir %s, <br/> mettre la callback a WEBSITE_URL/prod/bridge/callback/youtube'), $youtube_console_url), 'comment' => sprintf(_('reglages:: Utiliser l\'api youtube, voir %s, <br/> mettre la callback a WEBSITE_URL/prod/bridge/callback/youtube'), $youtube_console_url),
'default' => false, 'default' => false,
'required' => true 'required' => true
), ),
array( array(
'type' => 'string', 'type' => \registry::TYPE_STRING,
'name' => 'GV_youtube_client_id', 'name' => 'GV_youtube_client_id',
'comment' => _('reglages:: Youtube client id'), 'comment' => _('reglages:: Youtube client id'),
'default' => '' 'default' => ''
), ),
array( array(
'type' => 'string', 'type' => \registry::TYPE_STRING,
'name' => 'GV_youtube_client_secret', 'name' => 'GV_youtube_client_secret',
'comment' => _('reglages:: Youtube clientsecret'), 'comment' => _('reglages:: Youtube clientsecret'),
'default' => '' 'default' => ''
), ),
array( array(
'type' => 'string', 'type' => \registry::TYPE_STRING,
'name' => 'GV_youtube_dev_key', 'name' => 'GV_youtube_dev_key',
'comment' => sprintf(_('reglages:: Youtube cle developpeur, voir %s'), $dashboard_youtube), 'comment' => sprintf(_('reglages:: Youtube cle developpeur, voir %s'), $dashboard_youtube),
'default' => '' 'default' => ''
@@ -196,20 +186,20 @@ $GV = array(
'section' => _('GV::section:: Connectivite a FlickR'), 'section' => _('GV::section:: Connectivite a FlickR'),
'vars' => array( 'vars' => array(
array( array(
'type' => 'boolean', 'type' => \registry::TYPE_BOOLEAN,
'name' => 'GV_flickr_api', 'name' => 'GV_flickr_api',
'comment' => sprintf(_('reglages:: Utiliser l api flickr, voir %s, puis set la callback a %s'), $create_api_flickr, $flickr_callback), 'comment' => sprintf(_('reglages:: Utiliser l api flickr, voir %s, puis set la callback a %s'), $create_api_flickr, $flickr_callback),
'default' => false, 'default' => false,
'required' => true 'required' => true
), ),
array( array(
'type' => 'string', 'type' => \registry::TYPE_STRING,
'name' => 'GV_flickr_client_id', 'name' => 'GV_flickr_client_id',
'comment' => _('reglages:: FlickR client id'), 'comment' => _('reglages:: FlickR client id'),
'default' => '' 'default' => ''
), ),
array( array(
'type' => 'string', 'type' => \registry::TYPE_STRING,
'name' => 'GV_flickr_client_secret', 'name' => 'GV_flickr_client_secret',
'comment' => _('reglages:: FlickR client secret'), 'comment' => _('reglages:: FlickR client secret'),
'default' => '' 'default' => ''
@@ -219,20 +209,20 @@ $GV = array(
'section' => _('GV::section:: Connectivite a Dailymotion'), 'section' => _('GV::section:: Connectivite a Dailymotion'),
'vars' => array( 'vars' => array(
array( array(
'type' => 'boolean', 'type' => \registry::TYPE_BOOLEAN,
'name' => 'GV_dailymotion_api', 'name' => 'GV_dailymotion_api',
'comment' => sprintf(_('reglages:: Utiliser l api dailymotion, voir %s, puis set la callback a %s'), $create_api_dailymotion, $dailymotion_callback), 'comment' => sprintf(_('reglages:: Utiliser l api dailymotion, voir %s, puis set la callback a %s'), $create_api_dailymotion, $dailymotion_callback),
'default' => false, 'default' => false,
'required' => true 'required' => true
), ),
array( array(
'type' => 'string', 'type' => \registry::TYPE_STRING,
'name' => 'GV_dailymotion_client_id', 'name' => 'GV_dailymotion_client_id',
'comment' => _('reglages:: dailymotion client id'), 'comment' => _('reglages:: dailymotion client id'),
'default' => '' 'default' => ''
), ),
array( array(
'type' => 'string', 'type' => \registry::TYPE_STRING,
'name' => 'GV_dailymotion_client_secret', 'name' => 'GV_dailymotion_client_secret',
'comment' => _('reglages:: dailymotion client secret'), 'comment' => _('reglages:: dailymotion client secret'),
'default' => '' 'default' => ''
@@ -242,7 +232,7 @@ $GV = array(
'section' => _('GV::section:: Client Phraseanet API'), 'section' => _('GV::section:: Client Phraseanet API'),
'vars' => array( 'vars' => array(
array( array(
'type' => 'boolean', 'type' => \registry::TYPE_BOOLEAN,
'name' => 'GV_client_navigator', 'name' => 'GV_client_navigator',
'comment' => _('reglages:: Authoriser l\'application smartphone *Phraseanet Navigator* a se connecter sur cette instance'), 'comment' => _('reglages:: Authoriser l\'application smartphone *Phraseanet Navigator* a se connecter sur cette instance'),
'default' => false, 'default' => false,
@@ -253,7 +243,7 @@ $GV = array(
'section' => _('GV::section:: Gestionnaire d\'evenements'), 'section' => _('GV::section:: Gestionnaire d\'evenements'),
'vars' => array( 'vars' => array(
array( array(
'type' => 'enum_multi', 'type' => \registry::TYPE_ENUM_MULTI,
'name' => 'GV_events', 'name' => 'GV_events',
'default' => null, 'default' => null,
'comment' => _('reglages:: Evenements'), 'comment' => _('reglages:: Evenements'),
@@ -261,7 +251,7 @@ $GV = array(
'default' => array_keys($app['events-manager']->list_all('event')) 'default' => array_keys($app['events-manager']->list_all('event'))
), ),
array( array(
'type' => 'enum_multi', 'type' => \registry::TYPE_ENUM_MULTI,
'name' => 'GV_notifications', 'name' => 'GV_notifications',
'default' => null, 'default' => null,
'comment' => _('reglages:: Notifications'), 'comment' => _('reglages:: Notifications'),
@@ -273,7 +263,7 @@ $GV = array(
'section' => _('GV::section:: Stockage des documents'), 'section' => _('GV::section:: Stockage des documents'),
'vars' => array( 'vars' => array(
array( array(
'type' => 'string', 'type' => \registry::TYPE_STRING,
'name' => 'GV_base_datapath_noweb', 'name' => 'GV_base_datapath_noweb',
'end_slash' => true, 'end_slash' => true,
'comment' => _('Default path for datas'), 'comment' => _('Default path for datas'),
@@ -286,31 +276,31 @@ $GV = array(
'section' => _('GV::section:: Serveur Sphinx'), 'section' => _('GV::section:: Serveur Sphinx'),
'vars' => array( 'vars' => array(
array( array(
'type' => 'boolean', 'type' => \registry::TYPE_BOOLEAN,
'name' => 'GV_sphinx', 'name' => 'GV_sphinx',
'comment' => _('Utiliser Sphinx'), 'comment' => _('Utiliser Sphinx'),
'default' => false 'default' => false
), ),
array( array(
'type' => 'string', 'type' => \registry::TYPE_STRING,
'name' => 'GV_sphinx_host', 'name' => 'GV_sphinx_host',
'comment' => _('reglages:: de l\'adresse du serveur sphinx'), 'comment' => _('reglages:: de l\'adresse du serveur sphinx'),
'default' => '127.0.0.1' 'default' => '127.0.0.1'
), ),
array( array(
'type' => 'integer', 'type' => \registry::TYPE_INTEGER,
'name' => 'GV_sphinx_port', 'name' => 'GV_sphinx_port',
'comment' => _('reglages:: port du serveur sphinx'), 'comment' => _('reglages:: port du serveur sphinx'),
'default' => 9306 'default' => 9306
), ),
array( array(
'type' => 'string', 'type' => \registry::TYPE_STRING,
'name' => 'GV_sphinx_rt_host', 'name' => 'GV_sphinx_rt_host',
'comment' => _('reglages:: de l\'adresse du serveur RT sphinx'), 'comment' => _('reglages:: de l\'adresse du serveur RT sphinx'),
'default' => '127.0.0.1' 'default' => '127.0.0.1'
), ),
array( array(
'type' => 'integer', 'type' => \registry::TYPE_INTEGER,
'name' => 'GV_sphinx_rt_port', 'name' => 'GV_sphinx_rt_port',
'comment' => _('reglages:: port du serveur RT sphinx'), 'comment' => _('reglages:: port du serveur RT sphinx'),
'default' => 9308 'default' => 9308
@@ -321,7 +311,7 @@ $GV = array(
'section' => _('Phrasea Engine'), 'section' => _('Phrasea Engine'),
'vars' => array( 'vars' => array(
array( array(
'type' => 'enum', 'type' => \registry::TYPE_ENUM,
'name' => 'GV_phrasea_sort', 'name' => 'GV_phrasea_sort',
'comment' => _('Default results sort'), 'comment' => _('Default results sort'),
'default' => '', 'default' => '',
@@ -332,66 +322,59 @@ $GV = array(
'section' => _('GV::section:: Executables externes'), 'section' => _('GV::section:: Executables externes'),
'vars' => array( 'vars' => array(
array( array(
'type' => 'boolean', 'type' => \registry::TYPE_BOOLEAN,
'name' => 'GV_modxsendfile', 'name' => 'GV_modxsendfile',
'comment' => _('reglages:: mod_xsendfileapache active'), 'comment' => _('reglages:: mod_xsendfileapache active'),
'default' => false 'default' => false
), ),
array( array(
'type' => 'string', 'type' => \registry::TYPE_STRING,
'name' => 'GV_X_Accel_Redirect', 'name' => 'GV_X_Accel_Redirect',
'comment' => _('reglages:: Path en acces pour X-Accel-Redirect (NginX Uniquement)'), 'comment' => _('reglages:: Path en acces pour X-Accel-Redirect (NginX Uniquement)'),
'default' => '', 'default' => '',
'end_slash' => true 'end_slash' => true
), ),
array( array(
'type' => 'string', 'type' => \registry::TYPE_STRING,
'name' => 'GV_X_Accel_Redirect_mount_point', 'name' => 'GV_X_Accel_Redirect_mount_point',
'comment' => _('reglages:: Point de montage pour X-Accel-Redirect (NginX Uniquement)'), 'comment' => _('reglages:: Point de montage pour X-Accel-Redirect (NginX Uniquement)'),
'default' => 'noweb', 'default' => 'noweb',
'end_slash' => false 'end_slash' => false
), ),
array( array(
'type' => 'boolean', 'type' => \registry::TYPE_BOOLEAN,
'name' => 'GV_h264_streaming', 'name' => 'GV_h264_streaming',
'comment' => _('reglages:: activation du stream h264 via mod_token - attention, necessite les modules apache mod_h264_streaming et mod_auth_token'), 'comment' => _('reglages:: activation du stream h264 via mod_token - attention, necessite les modules apache mod_h264_streaming et mod_auth_token'),
'default' => false 'default' => false
), ),
array( array(
'type' => 'string', 'type' => \registry::TYPE_STRING,
'name' => 'GV_mod_auth_token_directory', 'name' => 'GV_mod_auth_token_directory',
'end_slash' => true, 'end_slash' => true,
'comment' => _('reglages:: point de montage du dossier protege via auth_token'), 'comment' => _('reglages:: point de montage du dossier protege via auth_token'),
'default' => false 'default' => false
), ),
array( array(
'type' => 'string', 'type' => \registry::TYPE_STRING,
'name' => 'GV_mod_auth_token_directory_path', 'name' => 'GV_mod_auth_token_directory_path',
'end_slash' => false, 'end_slash' => false,
'comment' => _('reglages:: path complet du dossier protege via auth_token'), 'comment' => _('reglages:: path complet du dossier protege via auth_token'),
'default' => false 'default' => false
), ),
array( array(
'type' => 'string', 'type' => \registry::TYPE_STRING,
'name' => 'GV_mod_auth_token_passphrase', 'name' => 'GV_mod_auth_token_passphrase',
'comment' => _('reglages:: passphrase du mod_auth_token (definie dans le fichier de configuration apache)'), 'comment' => _('reglages:: passphrase du mod_auth_token (definie dans le fichier de configuration apache)'),
'default' => false 'default' => false
), ),
array( array(
'type' => 'string', 'type' => \registry::TYPE_STRING,
'name' => 'GV_cli',
'comment' => _('reglages:: executable PHP CLI'),
'default' => '',
'required' => true
),
array(
'type' => 'string',
'name' => 'GV_PHP_INI', 'name' => 'GV_PHP_INI',
'comment' => _('reglages:: path du php.ini specifique (vide si non utilise)'), 'comment' => _('reglages:: path du php.ini specifique (vide si non utilise)'),
'default' => '' 'default' => ''
), ),
array( array(
'type' => 'enum', 'type' => \registry::TYPE_ENUM,
'name' => 'GV_imagine_driver', 'name' => 'GV_imagine_driver',
'default' => '', 'default' => '',
'comment' => _('Imagine driver'), 'comment' => _('Imagine driver'),
@@ -403,79 +386,13 @@ $GV = array(
) )
), ),
array( array(
'type' => 'string', 'type' => \registry::TYPE_INTEGER,
'name' => 'GV_imagick',
'default' => '',
'comment' => _('reglages:: chemin de l\'executable convert'),
'required' => true
),
array(
'type' => 'string',
'name' => 'GV_pathcomposite',
'default' => '',
'comment' => _('reglages:: chemin de l\'executable composite'),
'required' => true
),
array(
'type' => 'string',
'name' => 'GV_swf_extract',
'comment' => _('reglages:: chemin de l\'executable swfextract'),
'default' => '',
'required' => false
),
array(
'type' => 'string',
'name' => 'GV_pdf2swf',
'comment' => _('reglages:: chemin de l\'executable pdf2swf'),
'default' => '',
'required' => false
),
array(
'type' => 'string',
'name' => 'GV_swf_render',
'comment' => _('reglages:: chemin de l\'executable swfrender'),
'default' => '',
'required' => false
),
array(
'type' => 'string',
'name' => 'GV_unoconv',
'comment' => _('reglages:: chemin de l\'executable unoconv'),
'default' => '',
'required' => false
),
array(
'type' => 'string',
'name' => 'GV_ffmpeg',
'comment' => _('reglages:: chemin de l\'executable FFmpeg'),
'default' => ''
),
array(
'type' => 'integer',
'name' => 'GV_ffmpeg_threads', 'name' => 'GV_ffmpeg_threads',
'comment' => _('Number of threads allowed for FFmpeg'), 'comment' => _('Number of threads allowed for FFmpeg'),
'default' => 2 'default' => 2
), ),
array( array(
'type' => 'string', 'type' => \registry::TYPE_INTEGER,
'name' => 'GV_ffprobe',
'comment' => _('FFprobe path'),
'default' => ''
),
array(
'type' => 'string',
'name' => 'GV_mp4box',
'comment' => _('reglages:: chemin de l\'executable MP4Box'),
'default' => ''
),
array(
'type' => 'string',
'name' => 'GV_pdftotext',
'comment' => _('reglages:: chemin de l\'executable pdftotext (xpdf)'),
'default' => ''
),
array(
'type' => 'integer',
'name' => 'GV_pdfmaxpages', 'name' => 'GV_pdfmaxpages',
'comment' => _('reglages:: nombre maximum de page a extraire (PDF)'), 'comment' => _('reglages:: nombre maximum de page a extraire (PDF)'),
'default' => 5 'default' => 5
@@ -485,13 +402,13 @@ $GV = array(
'section' => _('GV::section:: Repertoires utilitaires'), 'section' => _('GV::section:: Repertoires utilitaires'),
'vars' => array( 'vars' => array(
array( array(
'type' => 'string', 'type' => \registry::TYPE_STRING,
'name' => 'GV_filesOwner', 'name' => 'GV_filesOwner',
'comment' => _('reglages:: proprietaire des fichiers'), 'comment' => _('reglages:: proprietaire des fichiers'),
'default' => '' 'default' => ''
), ),
array( array(
'type' => 'string', 'type' => \registry::TYPE_STRING,
'name' => 'GV_filesGroup', 'name' => 'GV_filesGroup',
'comment' => _('reglages:: groupes des fichiers'), 'comment' => _('reglages:: groupes des fichiers'),
'default' => '' 'default' => ''
@@ -501,34 +418,34 @@ $GV = array(
'section' => _('GV::section:: Configuration principale'), 'section' => _('GV::section:: Configuration principale'),
'vars' => array( 'vars' => array(
array( array(
'type' => 'string', 'type' => \registry::TYPE_STRING,
'name' => 'GV_adminMail', 'name' => 'GV_adminMail',
'comment' => _('reglages:: email de l\'administrateur'), 'comment' => _('reglages:: email de l\'administrateur'),
'default' => 'support@alchemy.fr' 'default' => 'support@alchemy.fr'
), ),
array( array(
'type' => 'boolean', 'type' => \registry::TYPE_BOOLEAN,
'name' => 'GV_view_bas_and_coll', 'name' => 'GV_view_bas_and_coll',
'comment' => _('reglages:: Afficher le nom des bases et des collections'), 'comment' => _('reglages:: Afficher le nom des bases et des collections'),
'default' => true, 'default' => true,
'required' => true 'required' => true
), ),
array( array(
'type' => 'boolean', 'type' => \registry::TYPE_BOOLEAN,
'name' => 'GV_choose_export_title', 'name' => 'GV_choose_export_title',
'comment' => _('reglages:: activer le choix du nom de fichier a l\'export'), 'comment' => _('reglages:: activer le choix du nom de fichier a l\'export'),
'default' => false, 'default' => false,
'required' => true 'required' => true
), ),
array( array(
'type' => 'enum', 'type' => \registry::TYPE_ENUM,
'name' => 'GV_default_export_title', 'name' => 'GV_default_export_title',
'comment' => _('reglages:: choix par defaut des noms de fichier a l\'export'), 'comment' => _('reglages:: choix par defaut des noms de fichier a l\'export'),
'default' => 'support@alchemy.fr', 'default' => 'support@alchemy.fr',
'available' => array('title' => 'Titre du document', 'original' => 'Nom original') 'available' => array('title' => 'Titre du document', 'original' => 'Nom original')
), ),
array( array(
'type' => 'enum', 'type' => \registry::TYPE_ENUM,
'name' => 'GV_social_tools', 'name' => 'GV_social_tools',
'comment' => _('reglages:: Active les partages Facebook et Twitter'), 'comment' => _('reglages:: Active les partages Facebook et Twitter'),
'available' => array('none' => 'Disabled', 'publishers' => 'Publishers', 'all' => 'Activated'), 'available' => array('none' => 'Disabled', 'publishers' => 'Publishers', 'all' => 'Activated'),
@@ -541,7 +458,7 @@ $GV = array(
'rolled' => true, 'rolled' => true,
'vars' => array( 'vars' => array(
array( array(
'type' => 'enum', 'type' => \registry::TYPE_ENUM,
'name' => 'GV_home_publi', 'name' => 'GV_home_publi',
'comment' => _('reglages:: presentation sur la home'), 'comment' => _('reglages:: presentation sur la home'),
'default' => 'COOLIRIS', 'default' => 'COOLIRIS',
@@ -554,19 +471,19 @@ $GV = array(
'rolled' => true, 'rolled' => true,
'vars' => array( 'vars' => array(
array( array(
'type' => 'integer', 'type' => \registry::TYPE_INTEGER,
'name' => 'GV_min_letters_truncation', 'name' => 'GV_min_letters_truncation',
'comment' => _('reglages:: Nombre minimal de lettre avec la troncature (Recherche)'), 'comment' => _('reglages:: Nombre minimal de lettre avec la troncature (Recherche)'),
'default' => 1 'default' => 1
), ),
array( array(
'type' => 'string', 'type' => \registry::TYPE_STRING,
'name' => 'GV_defaultQuery', 'name' => 'GV_defaultQuery',
'comment' => _('reglages:: Question par defaut'), 'comment' => _('reglages:: Question par defaut'),
'default' => 'all' 'default' => 'all'
), ),
array( array(
'type' => 'enum', 'type' => \registry::TYPE_ENUM,
'name' => 'GV_defaultQuery_type', 'name' => 'GV_defaultQuery_type',
'comment' => _('reglages:: type de document cherches par defaut e l\'ouverture du site'), 'comment' => _('reglages:: type de document cherches par defaut e l\'ouverture du site'),
'available' => array('0' => 'Documents', '1' => 'Regroupements'), 'available' => array('0' => 'Documents', '1' => 'Regroupements'),
@@ -578,7 +495,7 @@ $GV = array(
'rolled' => true, 'rolled' => true,
'vars' => array( 'vars' => array(
array( array(
'type' => 'boolean', 'type' => \registry::TYPE_BOOLEAN,
'name' => 'GV_anonymousReport', 'name' => 'GV_anonymousReport',
'comment' => _('reglages:: report anonyme (masque les infos concernant les utilisateurs)'), 'comment' => _('reglages:: report anonyme (masque les infos concernant les utilisateurs)'),
'default' => false, 'default' => false,
@@ -590,22 +507,22 @@ $GV = array(
'rolled' => true, 'rolled' => true,
'vars' => array( 'vars' => array(
array( array(
'type' => 'boolean', 'type' => \registry::TYPE_BOOLEAN,
'name' => 'GV_thesaurus', 'name' => 'GV_thesaurus',
'comment' => _('reglages:: Activation de l\'outil thesaurus'), 'comment' => _('reglages:: Activation de l\'outil thesaurus'),
'default' => true 'default' => true
), array( ), array(
'type' => 'boolean', 'type' => \registry::TYPE_BOOLEAN,
'name' => 'GV_multiAndReport', 'name' => 'GV_multiAndReport',
'comment' => _('reglages:: Activation du Mode MultiDOC'), 'comment' => _('reglages:: Activation du Mode MultiDOC'),
'default' => true 'default' => true
), array( ), array(
'type' => 'boolean', 'type' => \registry::TYPE_BOOLEAN,
'name' => 'GV_seeOngChgDoc', 'name' => 'GV_seeOngChgDoc',
'comment' => _('reglages:: Substitution de HD d\'un record '), 'comment' => _('reglages:: Substitution de HD d\'un record '),
'default' => false 'default' => false
), array( ), array(
'type' => 'boolean', 'type' => \registry::TYPE_BOOLEAN,
'name' => 'GV_seeNewThumb', 'name' => 'GV_seeNewThumb',
'comment' => _('reglages:: Substitution de thumbnail d\'un record'), 'comment' => _('reglages:: Substitution de thumbnail d\'un record'),
'default' => false 'default' => false
@@ -616,49 +533,49 @@ $GV = array(
'section' => _('GV::section:: Envois de mails'), 'section' => _('GV::section:: Envois de mails'),
'vars' => array( 'vars' => array(
array( array(
'type' => 'string', 'type' => \registry::TYPE_STRING,
'name' => 'GV_defaulmailsenderaddr', 'name' => 'GV_defaulmailsenderaddr',
'comment' => _('reglages:: Expediteur mail par defaut'), 'comment' => _('reglages:: Expediteur mail par defaut'),
'default' => 'phraseanet@example.com' 'default' => 'phraseanet@example.com'
), ),
array( array(
'type' => 'boolean', 'type' => \registry::TYPE_BOOLEAN,
'name' => 'GV_smtp', 'name' => 'GV_smtp',
'comment' => _('reglages:: Utilisation d\'un serveur SMTP'), 'comment' => _('reglages:: Utilisation d\'un serveur SMTP'),
'default' => false 'default' => false
), ),
array( array(
'type' => 'boolean', 'type' => \registry::TYPE_BOOLEAN,
'name' => 'GV_smtp_auth', 'name' => 'GV_smtp_auth',
'comment' => _('reglages:: Activation de l\'authentification smtp'), 'comment' => _('reglages:: Activation de l\'authentification smtp'),
'default' => false 'default' => false
), ),
array( array(
'type' => 'string', 'type' => \registry::TYPE_STRING,
'name' => 'GV_smtp_host', 'name' => 'GV_smtp_host',
'comment' => _('reglages:: Hote SMTP'), 'comment' => _('reglages:: Hote SMTP'),
'default' => '' 'default' => ''
), ),
array( array(
'type' => 'string', 'type' => \registry::TYPE_STRING,
'name' => 'GV_smtp_port', 'name' => 'GV_smtp_port',
'comment' => _('reglages:: Port SMTP'), 'comment' => _('reglages:: Port SMTP'),
'default' => '' 'default' => ''
), ),
array( array(
'type' => 'boolean', 'type' => \registry::TYPE_BOOLEAN,
'name' => 'GV_smtp_secure', 'name' => 'GV_smtp_secure',
'comment' => _('reglages:: Utiliser une conenction SSL'), 'comment' => _('reglages:: Utiliser une conenction SSL'),
'default' => false 'default' => false
), ),
array( array(
'type' => 'string', 'type' => \registry::TYPE_STRING,
'name' => 'GV_smtp_user', 'name' => 'GV_smtp_user',
'comment' => _('reglages:: User SMTP'), 'comment' => _('reglages:: User SMTP'),
'default' => '' 'default' => ''
), ),
array( array(
'type' => 'string', 'type' => \registry::TYPE_STRING,
'name' => 'GV_smtp_password', 'name' => 'GV_smtp_password',
'comment' => _('reglages:: Mot de passe SMTP'), 'comment' => _('reglages:: Mot de passe SMTP'),
'default' => '' 'default' => ''
@@ -668,13 +585,13 @@ $GV = array(
'section' => _('GV::section:: Exports FTP'), 'section' => _('GV::section:: Exports FTP'),
'vars' => array( 'vars' => array(
array( array(
'type' => 'boolean', 'type' => \registry::TYPE_BOOLEAN,
'name' => 'GV_activeFTP', 'name' => 'GV_activeFTP',
'comment' => _('reglages:: active la possibilite d\'exports FTP ou non (onglet dans multiexports)'), 'comment' => _('reglages:: active la possibilite d\'exports FTP ou non (onglet dans multiexports)'),
'default' => false 'default' => false
), ),
array( array(
'type' => 'boolean', 'type' => \registry::TYPE_BOOLEAN,
'name' => 'GV_ftp_for_user', 'name' => 'GV_ftp_for_user',
'comment' => _('reglages:: Donne ou non export FTP aux utilisateurs ou e l\'admin uniquement'), 'comment' => _('reglages:: Donne ou non export FTP aux utilisateurs ou e l\'admin uniquement'),
'default' => false 'default' => false
@@ -684,91 +601,97 @@ $GV = array(
'section' => _('GV::section:: Configuration du client'), 'section' => _('GV::section:: Configuration du client'),
'vars' => array( 'vars' => array(
array( array(
'type' => 'integer', 'type' => \registry::TYPE_INTEGER,
'name' => 'GV_download_max', 'name' => 'GV_download_max',
'comment' => _('Maximum megabytes allowed in download (if request is bigger, then mail is still available)'), 'comment' => _('Maximum megabytes allowed in download (if request is bigger, then mail is still available)'),
'default' => 120 'default' => 120
), ),
array( array(
'type' => 'integer', 'type' => \registry::TYPE_INTEGER,
'name' => 'GV_ong_search', 'name' => 'GV_ong_search',
'comment' => _('reglages:: position de l\'onglet de recherche'), 'comment' => _('reglages:: position de l\'onglet de recherche'),
'default' => 1 'default' => 1
), ),
array( array(
'type' => 'integer', 'type' => \registry::TYPE_INTEGER,
'name' => 'GV_ong_advsearch', 'name' => 'GV_ong_advsearch',
'comment' => _('reglages:: position de l\'onglet de recherche avancee'), 'comment' => _('reglages:: position de l\'onglet de recherche avancee'),
'default' => 2 'default' => 2
), ),
array( array(
'type' => 'integer', 'type' => \registry::TYPE_INTEGER,
'name' => 'GV_ong_topics', 'name' => 'GV_ong_topics',
'comment' => _('reglages:: position de l\'onglet des topics'), 'comment' => _('reglages:: position de l\'onglet des topics'),
'default' => 0 'default' => 0
), ),
array( array(
'type' => 'integer', 'type' => \registry::TYPE_INTEGER,
'name' => 'GV_ong_actif', 'name' => 'GV_ong_actif',
'comment' => _('reglages:: numero de l\'onglet actif'), 'comment' => _('reglages:: numero de l\'onglet actif'),
'default' => 1 'default' => 1
), ),
array( array(
'type' => 'enum', 'type' => \registry::TYPE_ENUM,
'name' => 'GV_client_render_topics', 'name' => 'GV_client_render_topics',
'comment' => _('reglages:: rendu des topics'), 'comment' => _('reglages:: rendu des topics'),
'available' => array('tree' => 'Arbres', 'popups' => 'Menus deroulants'), 'available' => array('tree' => 'Arbres', 'popups' => 'Menus deroulants'),
'default' => 'tree' 'default' => 'tree'
), ),
array( array(
'type' => 'boolean', 'type' => \registry::TYPE_BOOLEAN,
'name' => 'GV_rollover_reg_preview', 'name' => 'GV_rollover_reg_preview',
'comment' => _('reglages:: Voir le rollover sur les regroupements (fenetre de preview)'), 'comment' => _('reglages:: Voir le rollover sur les regroupements (fenetre de preview)'),
'default' => true 'default' => true
), ),
array( array(
'type' => 'boolean', 'type' => \registry::TYPE_BOOLEAN,
'name' => 'GV_rollover_chu', 'name' => 'GV_rollover_chu',
'comment' => _('reglages:: Voir le rollover sur les elements du chutier'), 'comment' => _('reglages:: Voir le rollover sur les elements du chutier'),
'default' => true 'default' => true
), ),
array( array(
'type' => 'enum', 'type' => \registry::TYPE_ENUM,
'name' => 'GV_client_coll_ckbox', 'name' => 'GV_client_coll_ckbox',
'comment' => _('reglages:: Presentation des collections'), 'comment' => _('reglages:: Presentation des collections'),
'default' => 'checkbox', 'default' => 'checkbox',
'available' => array('popup' => 'Menu deroulant', 'checkbox' => 'case a cocher') 'available' => array('popup' => 'Menu deroulant', 'checkbox' => 'case a cocher')
), ),
array( array(
'type' => 'boolean', 'type' => \registry::TYPE_BOOLEAN,
'name' => 'GV_viewSizeBaket', 'name' => 'GV_viewSizeBaket',
'comment' => _('reglages:: Voir taille HD total des doc d\'un chutiers'), 'comment' => _('reglages:: Voir taille HD total des doc d\'un chutiers'),
'default' => true 'default' => true
), ),
array( array(
'type' => 'boolean', 'type' => \registry::TYPE_BOOLEAN,
'name' => 'GV_clientAutoShowProposals', 'name' => 'GV_clientAutoShowProposals',
'comment' => _('reglages:: Afficher automatiquement l\'onglet des propositions s\'il y\'en a'), 'comment' => _('reglages:: Afficher automatiquement l\'onglet des propositions s\'il y\'en a'),
'default' => true 'default' => true
), ),
array( array(
'type' => 'boolean', 'type' => \registry::TYPE_BOOLEAN,
'name' => 'GV_needAuth2DL', 'name' => 'GV_needAuth2DL',
'comment' => _('reglages:: Il est necessaire d\'etre connecte pour pouvoir telecharger en compte invite'), 'comment' => _('reglages:: Il est necessaire d\'etre connecte pour pouvoir telecharger en compte invite'),
'default' => true 'default' => true
),
array(
'type' => 'boolean',
'name' => 'GV_requireTOUValidationForExport',
'comment' => _('Users must accept Terms of Use for each export'),
'default' => false
) )
) )
), array( ), array(
'section' => _('GV::section:: Parametrage de l\'inscription'), 'section' => _('GV::section:: Parametrage de l\'inscription'),
'vars' => array( 'vars' => array(
array( array(
'type' => 'boolean', 'type' => \registry::TYPE_BOOLEAN,
'name' => 'GV_autoselectDB', 'name' => 'GV_autoselectDB',
'comment' => _('reglages:: A true, cette option descative le choix de selection des bases sur lesquelles on s\'inscrit, et l\'inscription se fait sur toutes les bases ou jai le droit de m\'inscrire'), 'comment' => _('reglages:: A true, cette option descative le choix de selection des bases sur lesquelles on s\'inscrit, et l\'inscription se fait sur toutes les bases ou jai le droit de m\'inscrire'),
'default' => true 'default' => true
), ),
array( array(
'type' => 'boolean', 'type' => \registry::TYPE_BOOLEAN,
'name' => 'GV_autoregister', 'name' => 'GV_autoregister',
'comment' => _('reglages:: Activation de l\'autoinscription'), 'comment' => _('reglages:: Activation de l\'autoinscription'),
'default' => false 'default' => false
@@ -778,13 +701,13 @@ $GV = array(
'section' => _('GV::section:: Configuration du push'), 'section' => _('GV::section:: Configuration du push'),
'vars' => array( 'vars' => array(
array( array(
'type' => 'integer', 'type' => \registry::TYPE_INTEGER,
'name' => 'GV_validation_reminder', 'name' => 'GV_validation_reminder',
'comment' => _('reglages:: Nombre de jour avant la fin de la validation pour envoie de mail de rappel'), 'comment' => _('reglages:: Nombre de jour avant la fin de la validation pour envoie de mail de rappel'),
'default' => 2 'default' => 2
), ),
array( array(
'type' => 'integer', 'type' => \registry::TYPE_INTEGER,
'name' => 'GV_val_expiration', 'name' => 'GV_val_expiration',
'comment' => _('reglages:: dure de validite des liens genere pour les validations, si 0 => validite permanente'), 'comment' => _('reglages:: dure de validite des liens genere pour les validations, si 0 => validite permanente'),
'default' => 10 'default' => 10
@@ -794,37 +717,37 @@ $GV = array(
'section' => _('GV::section:: Indexation par les robots'), 'section' => _('GV::section:: Indexation par les robots'),
'vars' => array( 'vars' => array(
array( array(
'type' => 'string', 'type' => \registry::TYPE_STRING,
'name' => 'GV_homeTitle', 'name' => 'GV_homeTitle',
'comment' => _('reglages :: Titre de l\'installation'), 'comment' => _('reglages :: Titre de l\'installation'),
'default' => 'Phraseanet' 'default' => 'Phraseanet'
), ),
array( array(
'type' => 'string', 'type' => \registry::TYPE_STRING,
'name' => 'GV_metaKeywords', 'name' => 'GV_metaKeywords',
'comment' => _('reglages:: Mots clefs pour l\'indexation des robots de moteurs de recherche'), 'comment' => _('reglages:: Mots clefs pour l\'indexation des robots de moteurs de recherche'),
'default' => '' 'default' => ''
), ),
array( array(
'type' => 'text', 'type' => \registry::TYPE_TEXT,
'name' => 'GV_metaDescription', 'name' => 'GV_metaDescription',
'comment' => _('reglages :: Description de l\'installation'), 'comment' => _('reglages :: Description de l\'installation'),
'default' => '' 'default' => ''
), ),
array( array(
'type' => 'string', 'type' => \registry::TYPE_STRING,
'name' => 'GV_googleAnalytics', 'name' => 'GV_googleAnalytics',
'comment' => _('reglages:: identifiant google analytics'), 'comment' => _('reglages:: identifiant google analytics'),
'default' => '' 'default' => ''
), ),
array( array(
'type' => 'boolean', 'type' => \registry::TYPE_BOOLEAN,
'name' => 'GV_allow_search_engine', 'name' => 'GV_allow_search_engine',
'comment' => _('Allow the website to be indexed by search engines like Google'), 'comment' => _('Allow the website to be indexed by search engines like Google'),
'default' => true 'default' => true
), ),
array( array(
'type' => 'boolean', 'type' => \registry::TYPE_BOOLEAN,
'name' => 'GV_display_gcf', 'name' => 'GV_display_gcf',
'comment' => _('reglages:: Afficher le bandeau Google Chrome Frame'), 'comment' => _('reglages:: Afficher le bandeau Google Chrome Frame'),
'default' => true 'default' => true

View File

@@ -1559,7 +1559,7 @@
</field> </field>
<field> <field>
<name>type</name> <name>type</name>
<type>enum('string','boolean','array','integer')</type> <type>enum('string','boolean','array','integer','text','binary','timezone','enum_multi','enum')</type>
<null></null> <null></null>
<extra></extra> <extra></extra>
<default>string</default> <default>string</default>

View File

@@ -111,12 +111,14 @@
<input type="hidden" name="download_{{name}}" value="{{values.size}}" /> <input type="hidden" name="download_{{name}}" value="{{values.size}}" />
<input type="hidden" name="count_{{name}}" value="{{values.available}}" /> <input type="hidden" name="count_{{name}}" value="{{values.available}}" />
{{values.label}} {% if values.total != values.available %}{{values.available}}/{{values.total}}{% endif %} ({{values.size | formatOctets}}) {{values.label}} {% if values.total != values.available %}{{values.available}}/{{values.total}}{% endif %} ({{values.size | formatOctets}})
{% if values.refused|length > 0 %}
{% set title%}
{% trans 'Documents indisponibles' %}
{% endset %}
<a href="#" class="undisposable_link" title="{{title|trim}}"> + </a>
{% endif %}
</label> </label>
{% set title%}
{% trans 'Documents indisponibles' %}
{% endset %}
{% if values.refused|length > 0 %} {% if values.refused|length > 0 %}
<a href="#" class="undisposable_link" title="{{title|e}}"> + </a>
<div style="display:none;" class="undisposable"> <div style="display:none;" class="undisposable">
<div>{% trans 'Les documents ne peuvent pas etre exportes' %}</div> <div>{% trans 'Les documents ne peuvent pas etre exportes' %}</div>
{% for datas in values.refused%} {% for datas in values.refused%}
@@ -136,6 +138,19 @@
</div> </div>
{% endif %} {% endif %}
{{ _self.choose_title('download', choose_export_title, default_export_title) }} {{ _self.choose_title('download', choose_export_title, default_export_title) }}
{% if registry.get('GV_requireTOUValidationForExport') == true %}
<div style="margin:0 20px;">
<label for="TOU_acceptDL" class="checkbox">
<input type="checkbox" name="TOU_accept" id="TOU_acceptDL" value="1" />
{% set beginning_link = '<a href="/prod/TOU/" class="TOUview">' %}
{% set end_link = '</a>' %}
{% trans %}
By checking this box, you accept {{ beginning_link }} Terms of Use {{ end_link }}
{% endtrans %}
</label>
</div>
{% endif %}
<div class="buttons_line"> <div class="buttons_line">
<button type="button" class="download_button btn btn-inverse">{% trans 'boutton::telecharger'%}</button> <button type="button" class="download_button btn btn-inverse">{% trans 'boutton::telecharger'%}</button>
<button type="button" class="close_button btn btn-inverse">{% trans 'boutton::annuler'%}</button> <button type="button" class="close_button btn btn-inverse">{% trans 'boutton::annuler'%}</button>
@@ -178,12 +193,14 @@
<label for="sendmail_{{name}}" class="checkbox"> <label for="sendmail_{{name}}" class="checkbox">
<input class="{{values.class}}" type="checkbox" id="sendmail_{{name}}" name="obj[]" value="{{name}}" /> <input class="{{values.class}}" type="checkbox" id="sendmail_{{name}}" name="obj[]" value="{{name}}" />
{{values.label}} {% if values.total != values.available %}{{values.available}}/{{values.total}}{% endif %} ({{values.size | formatOctets}}) {{values.label}} {% if values.total != values.available %}{{values.available}}/{{values.total}}{% endif %} ({{values.size | formatOctets}})
{% if values.refused|length > 0 %}
{% set title%}
{% trans 'Documents indisponibles' %}
{% endset %}
<a href="#" class="undisposable_link" title="{{title|trim}}"> + </a>
{% endif %}
</label> </label>
{% set title%}
{% trans 'Documents indisponibles' %}
{% endset %}
{% if values.refused|length > 0 %} {% if values.refused|length > 0 %}
<a href="#" class="undisposable_link" title="{{title|e}}"> + </a>
<div style="display:none;" class="undisposable"> <div style="display:none;" class="undisposable">
<div><i>{% trans 'La sous resolution n\'est pas disponible pour les documents suivants' %}</i></div> <div><i>{% trans 'La sous resolution n\'est pas disponible pour les documents suivants' %}</i></div>
{% for datas in values.refused%} {% for datas in values.refused%}
@@ -204,6 +221,19 @@
</div> </div>
{% endif %} {% endif %}
{{ _self.choose_title('sendmail', choose_export_title, default_export_title) }} {{ _self.choose_title('sendmail', choose_export_title, default_export_title) }}
{% if registry.get('GV_requireTOUValidationForExport') == true %}
<div style="margin:0 20px;">
<label for="TOU_acceptMail" class="checkbox">
<input type="checkbox" name="TOU_accept" id="TOU_acceptMail" value="1" />
{% set beginning_link = '<a href="/prod/TOU/" class="TOUview">' %}
{% set end_link = '</a>' %}
{% trans %}
By checking this box, you accept {{ beginning_link }} Terms of Use {{ end_link }}
{% endtrans %}
</label>
</div>
{% endif %}
<div class="buttons_line"> <div class="buttons_line">
<button type="button" class="sendmail_button btn btn-inverse">{% trans 'boutton::envoyer'%}</button> <button type="button" class="sendmail_button btn btn-inverse">{% trans 'boutton::envoyer'%}</button>
<img class="sendmail_button_loader" src="/skins/icons/loader404040.gif" style="visibility:hidden;margin:0 5px;"/> <img class="sendmail_button_loader" src="/skins/icons/loader404040.gif" style="visibility:hidden;margin:0 5px;"/>
@@ -229,7 +259,10 @@
{% trans 'Documents indisponibles' %} {% trans 'Documents indisponibles' %}
{% endset %} {% endset %}
{% if values.refused|length > 0 %} {% if values.refused|length > 0 %}
<a href="#" class="undisposable_link" title="{{title|e}}"> + </a> {% set title%}
{% trans 'Documents indisponibles' %}
{% endset %}
<a href="#" class="undisposable_link" title="{{title|trim}}"> + </a>
<div style="display:none;" class="undisposable"> <div style="display:none;" class="undisposable">
<div><i>{% trans 'La sous resolution n\'est pas disponible pour les documents suivants' %}</i></div> <div><i>{% trans 'La sous resolution n\'est pas disponible pour les documents suivants' %}</i></div>
{% for datas in values.refused%} {% for datas in values.refused%}
@@ -340,6 +373,19 @@
</div> </div>
</div> </div>
{% if registry.get('GV_requireTOUValidationForExport') == true %}
<div style="margin:0 20px;">
<label for="TOU_acceptOrder" class="checkbox">
<input type="checkbox" name="TOU_accept" id="TOU_acceptOrder" value="1" />
{% set beginning_link = '<a href="/prod/TOU/" class="TOUview">' %}
{% set end_link = '</a>' %}
{% trans %}
By checking this box, you accept {{ beginning_link }} Terms of Use {{ end_link }}
{% endtrans %}
</label>
</div>
{% endif %}
<div class="form_actions buttons_line"> <div class="form_actions buttons_line">
<button type="button" class="order_button btn btn-primary">{% trans 'boutton::commander'%}</button> <button type="button" class="order_button btn btn-primary">{% trans 'boutton::commander'%}</button>
<img class="order_button_loader" src="/skins/icons/loader404040.gif" style="visibility:hidden;margin:0 5px;"/> <img class="order_button_loader" src="/skins/icons/loader404040.gif" style="visibility:hidden;margin:0 5px;"/>
@@ -382,12 +428,14 @@
<label for="ftp_{{name}}" class="checkbox"> <label for="ftp_{{name}}" class="checkbox">
<input class="{{values.class}}" type="checkbox" id="ftp_{{name}}" name="obj[]" value="{{name}}" /> <input class="{{values.class}}" type="checkbox" id="ftp_{{name}}" name="obj[]" value="{{name}}" />
{{values.label}} {% if values.total != values.available %}{{values.available}}/{{values.total}}{% endif %} ({{values.size | formatOctets}})) {{values.label}} {% if values.total != values.available %}{{values.available}}/{{values.total}}{% endif %} ({{values.size | formatOctets}}))
{% if values.refused|length > 0 %}
{% set title%}
{% trans 'Documents indisponibles' %}
{% endset %}
<a href="#" class="undisposable_link" title="{{title|trim}}"> + </a>
{% endif %}
</label> </label>
{% set title%}
{% trans 'Documents indisponibles' %}
{% endset %}
{% if values.refused|length > 0 %} {% if values.refused|length > 0 %}
<a href="#" class="undisposable_link" title="{{title|e}}"> + </a>
<div style="display:none;" class="undisposable"> <div style="display:none;" class="undisposable">
<div><i>{% trans 'La sous resolution n\'est pas disponible pour les documents suivants' %}</i></div> <div><i>{% trans 'La sous resolution n\'est pas disponible pour les documents suivants' %}</i></div>
{% for datas in values.refused%} {% for datas in values.refused%}
@@ -407,6 +455,19 @@
</label> </label>
</div> </div>
{% endif %} {% endif %}
{% if registry.get('GV_requireTOUValidationForExport') == true %}
<div style="margin:0 20px;">
<label for="TOU_acceptFTP" class="checkbox">
<input type="checkbox" name="TOU_accept" id="TOU_acceptFTP" value="1" />
{% set beginning_link = '<a href="/prod/TOU/" class="TOUview">' %}
{% set end_link = '</a>' %}
{% trans %}
By checking this box, you accept {{ beginning_link }} Terms of Use {{ end_link }}
{% endtrans %}
</label>
</div>
{% endif %}
<div class="buttons_line"> <div class="buttons_line">
<button type="button" class="tryftp_button btn btn-inverse">{% trans 'boutton::essayer'%}</button> <button type="button" class="tryftp_button btn btn-inverse">{% trans 'boutton::essayer'%}</button>
<img class="tryftp_button_loader" src="/skins/icons/loader404040.gif" style="visibility:hidden;margin:0 5px;"/> <img class="tryftp_button_loader" src="/skins/icons/loader404040.gif" style="visibility:hidden;margin:0 5px;"/>
@@ -435,6 +496,25 @@
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
function check_TOU(container)
{
var checkbox = $('input[name="TOU_accept"]', $(container));
var go = checkbox.length === 0 || checkbox.attr('checked');
if(!go)
{
{% set alert_message %}
{% trans 'You must agree to the Terms of Use to continue.' %}
{% endset %}
alert("{{alert_message|e}}");
return false;
}
return true;
}
function check_subdefs(container) function check_subdefs(container)
{ {
var go = required = false; var go = required = false;
@@ -478,6 +558,17 @@
} }
$(document).ready(function(){ $(document).ready(function(){
$('a.TOUview').bind('click', function(){
var options = {
size : 'Medium',
closeButton: true,
title :'{% trans "Terms of Use" %}'
};
$dialog = p4.Dialog.Create(options, 2);
$.get($(this).attr('href'), function(content){$dialog.setContent(content);});
});
$('.close_button').bind('click',function(){ $('.close_button').bind('click',function(){
$('#dialog_dwnl').dialog('close').dialog('destroy'); $('#dialog_dwnl').dialog('close').dialog('destroy');
}); });
@@ -486,6 +577,10 @@
if(!check_subdefs($('#download'))) if(!check_subdefs($('#download')))
return false; return false;
if (!check_TOU($('#download'))) {
return false;
}
var total = 0; var total = 0;
var count = 0; var count = 0;
$('input[name="obj[]"]', $('#download')).each(function(){ $('input[name="obj[]"]', $('#download')).each(function(){
@@ -508,7 +603,7 @@
{% set alert_too_big_three %} {% set alert_too_big_three %}
{% trans 'Would you like to receive an e-mail when your download is ready ?' %} {% trans 'Would you like to receive an e-mail when your download is ready ?' %}
{% endset %} {% endset %}
if(count>1 && total/1024/1024 > {{max_download}}) if(count>1 && total/1024/1024 > {{max_download}})
{ {
if(confirm("{{alert_too_big_one|e('js') ~ "\\n" ~ alert_too_big_two ~ "\\n" ~ alert_too_big_three}}")) if(confirm("{{alert_too_big_one|e('js') ~ "\\n" ~ alert_too_big_two ~ "\\n" ~ alert_too_big_three}}"))
@@ -528,6 +623,11 @@
}); });
$('#order .order_button').bind('click',function(){ $('#order .order_button').bind('click',function(){
if (!check_TOU($('#order'))) {
return false;
}
$('#order .order_button_loader').css('visibility','visible'); $('#order .order_button_loader').css('visibility','visible');
var options = $('#order form').serialize()+'&use='+escape(tinyMCE.get('order_usage').getContent()); var options = $('#order form').serialize()+'&use='+escape(tinyMCE.get('order_usage').getContent());
@@ -559,6 +659,10 @@
if(!check_subdefs($('#ftp'))) if(!check_subdefs($('#ftp')))
return false; return false;
if (!check_TOU($('#ftp'))) {
return false;
}
$('#ftp .ftp_button_loader').css('visibility','visible'); $('#ftp .ftp_button_loader').css('visibility','visible');
$('#ftp .ftp_form:hidden').remove(); $('#ftp .ftp_form:hidden').remove();
@@ -605,6 +709,11 @@
{ {
return false; return false;
} }
if (!check_TOU($('#sendmail'))) {
return false;
}
$('#sendmail .close_button').trigger("click"); $('#sendmail .close_button').trigger("click");
//$('#sendmail .sendmail_button_loader').css('visibility','visible'); //$('#sendmail .sendmail_button_loader').css('visibility','visible');
//$(this).attr('disabled','disabled'); //$(this).attr('disabled','disabled');
@@ -616,7 +725,7 @@
dateFormat : 'yy-mm-dd' dateFormat : 'yy-mm-dd'
}); });
$('#dialog_dwnl a.undisposable_link').bind('click',function(){ $('#dialog_dwnl a.undisposable_link').bind('click',function(){
$(this).next('.undisposable').slideToggle(); $(this).parent().parent().find('.undisposable').slideToggle();
return false; return false;
}); });

View File

@@ -0,0 +1,9 @@
<div>
{% for name, TOU in TOUs %}
<h1 style="text-align:center;font-weight:bold;font-size:16px;">{{ name }}</h1>
{{ TOU }}
{% if loop.last == false %}
<hr/>
{% endif %}
{% endfor %}
</div>

View File

@@ -37,7 +37,7 @@
</span> </span>
</td> </td>
<td class='uploader-icon'> <td class='uploader-icon'>
<img src='/skins/icons/html5-logo.jpeg' width="32px" heigh="32px" title="{% trans 'You are using the HTML5 uploader.'%}"/> <img src='/skins/icons/html5-logo.png' width="32px" heigh="32px" title="{% trans 'You are using the HTML5 uploader.'%}"/>
</td> </td>
<td class="uploader-info"> <td class="uploader-info">
<p> <p>

View File

@@ -33,16 +33,16 @@ class ApplicationSetupTest extends PhraseanetWebTestCaseAbstract
$params = array( $params = array(
'GV_base_datapath_noweb', 'GV_base_datapath_noweb',
'GV_ServerName', 'GV_ServerName',
'GV_cli', 'php_binary',
'GV_imagick', 'convert_binary',
'GV_pathcomposite', 'composite_binary',
'GV_swf_extract', 'swf_extract_binary',
'GV_pdf2swf', 'pdf2swf_binary',
'GV_swf_render', 'swf_render_binary',
'GV_unoconv', 'unoconv_binary',
'GV_ffmpeg', 'ffmpeg_binary',
'GV_mp4box', 'mp4box_binary',
'GV_pdftotext', 'pdftotext_binary',
); );
foreach ($params as $param) { foreach ($params as $param) {

View File

@@ -88,33 +88,6 @@ class registryTest extends PhraseanetPHPUnitAbstract
$this->object->set('key_test', true, registry::TYPE_BOOLEAN); $this->object->set('key_test', true, registry::TYPE_BOOLEAN);
$this->assertTrue($this->object->get('key_test') === true); $this->assertTrue($this->object->get('key_test') === true);
/**
* Set value with type array
*/
$this->object->set('key_test', 'value1', registry::TYPE_ARRAY);
$this->assertTrue($this->object->get('key_test') === array('value1'));
$this->object->set('key_test', 1, registry::TYPE_ARRAY);
$this->assertTrue($this->object->get('key_test') === array(1));
$this->object->set('key_test', '1', registry::TYPE_ARRAY);
$this->assertTrue($this->object->get('key_test') === array('1'));
$this->object->set('key_test', array('caca'), registry::TYPE_ARRAY);
$this->assertTrue($this->object->get('key_test') === array('caca'));
$this->object->set('key_test', '0', registry::TYPE_ARRAY);
$this->assertTrue($this->object->get('key_test') === array('0'));
$this->object->set('key_test', 0, registry::TYPE_ARRAY);
$this->assertTrue($this->object->get('key_test') === array(0));
$this->object->set('key_test', false, registry::TYPE_ARRAY);
$this->assertTrue($this->object->get('key_test') === array(false));
$this->object->set('key_test', true, registry::TYPE_ARRAY);
$this->assertTrue($this->object->get('key_test') === array(true));
/** /**
* Set value with type enum_multi * Set value with type enum_multi
*/ */
@@ -184,4 +157,14 @@ class registryTest extends PhraseanetPHPUnitAbstract
$this->object->un_set('key_test'); $this->object->un_set('key_test');
$this->assertFalse($this->object->is_set('key_test')); $this->assertFalse($this->object->is_set('key_test'));
} }
public function testGVSit()
{
$this->assertNotNull($this->object->get('GV_sit'));
}
public function testGVSitNotModifiable()
{
$gv_sit = $this->object->get('GV_sit');
$this->assertEquals($gv_sit, $this->object->get('GV_sit'));
}
} }

View File

@@ -29,7 +29,7 @@
RewriteRule ^prod/push/.*$ /index.php [L] RewriteRule ^prod/push/.*$ /index.php [L]
RewriteRule ^prod/printer/.*$ /index.php [L] RewriteRule ^prod/printer/.*$ /index.php [L]
RewriteRule ^prod/story/.*$ /index.php [L] RewriteRule ^prod/story/.*$ /index.php [L]
RewriteRule ^prod/TOU/.*$ /index.php [L] RewriteRule ^prod/TOU/.?$ /index.php [L]
RewriteRule ^prod/WorkZone/.*$ /index.php [L] RewriteRule ^prod/WorkZone/.*$ /index.php [L]
RewriteRule ^prod/language/.*$ /index.php [L] RewriteRule ^prod/language/.*$ /index.php [L]
RewriteRule ^prod/tools/.*$ /index.php [L] RewriteRule ^prod/tools/.*$ /index.php [L]

View File

@@ -88,17 +88,17 @@ var p4 = p4 || {};
width = bodySize.x - 30 ; width = bodySize.x - 30 ;
break; break;
case 'Medium': case 'Medium':
width = 730; width = Math.min(bodySize.x - 30, 730);
height = 520; height = Math.min(bodySize.y - 30, 520);
break; break;
default: default:
case 'Small': case 'Small':
width = 420; width = Math.min(bodySize.x - 30, 420);
height = 300; height = Math.min(bodySize.y - 30, 300);
break; break;
case 'Alert': case 'Alert':
width = 300; width = Math.min(bodySize.x - 30, 300);
height = 150; height = Math.min(bodySize.y - 30, 150);
break; break;
} }

View File

@@ -2519,8 +2519,8 @@ function downloadThis(datas)
dialog_box = $('#dialog_dwnl'); dialog_box = $('#dialog_dwnl');
dialog_box.empty().addClass('loading').dialog({ dialog_box.empty().addClass('loading').dialog({
width:800, width:Math.min(bodySize.x - 30, 800),
height:600, height:Math.min(bodySize.y - 30, 600),
modal:true, modal:true,
closeOnEscape : true, closeOnEscape : true,
resizable : false, resizable : false,

Binary file not shown.

Before

Width:  |  Height:  |  Size: 755 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 910 B