diff --git a/lib/Alchemy/Phrasea/SearchEngine/AbstractConfigurationPanel.php b/lib/Alchemy/Phrasea/SearchEngine/AbstractConfigurationPanel.php index 5fd6abfc30..79cc238c26 100644 --- a/lib/Alchemy/Phrasea/SearchEngine/AbstractConfigurationPanel.php +++ b/lib/Alchemy/Phrasea/SearchEngine/AbstractConfigurationPanel.php @@ -4,14 +4,12 @@ namespace Alchemy\Phrasea\SearchEngine; abstract class AbstractConfigurationPanel implements ConfigurationPanelInterface { - abstract public function getName(); - public function getConfigPathFile() { return __DIR__ . '/../../../../config/'.$this->getName().'.json'; } - public function getAvailableDateFields($databoxes) + public function getAvailableDateFields(array $databoxes) { $date_fields = array(); diff --git a/lib/Alchemy/Phrasea/SearchEngine/ConfigurationPanelInterface.php b/lib/Alchemy/Phrasea/SearchEngine/ConfigurationPanelInterface.php index 3e715583ed..4f2be0a709 100644 --- a/lib/Alchemy/Phrasea/SearchEngine/ConfigurationPanelInterface.php +++ b/lib/Alchemy/Phrasea/SearchEngine/ConfigurationPanelInterface.php @@ -10,4 +10,12 @@ interface ConfigurationPanelInterface public function get(Application $app, Request $request); public function post(Application $app, Request $request); + + public function getName(); + + public function getConfiguration(); + + public function saveConfiguration(array $configuration); + + public function getAvailableDateFields(array $databoxes); } diff --git a/lib/Alchemy/Phrasea/SearchEngine/Phrasea/ConfigurationPanel.php b/lib/Alchemy/Phrasea/SearchEngine/Phrasea/ConfigurationPanel.php index 970c95068a..acce80bfc6 100644 --- a/lib/Alchemy/Phrasea/SearchEngine/Phrasea/ConfigurationPanel.php +++ b/lib/Alchemy/Phrasea/SearchEngine/Phrasea/ConfigurationPanel.php @@ -52,7 +52,7 @@ class ConfigurationPanel extends AbstractConfigurationPanel public function getConfiguration() { - $configuration = @json_decode(file_get_contents(__DIR__ . '/../../../../../config/phrasea-engine.json'), true); + $configuration = @json_decode(file_get_contents($this->getConfigPathFile()), true); if (!is_array($configuration)) { $configuration = array(); @@ -69,4 +69,10 @@ class ConfigurationPanel extends AbstractConfigurationPanel return $configuration; } + public function saveConfiguration(array $configuration) + { + file_put_contents($this->getConfigPathFile(), json_encode($configuration)); + + return $this; + } } diff --git a/lib/Alchemy/Phrasea/SearchEngine/SphinxSearch/ConfigurationPanel.php b/lib/Alchemy/Phrasea/SearchEngine/SphinxSearch/ConfigurationPanel.php index 778198b6f2..9bbccd77b8 100644 --- a/lib/Alchemy/Phrasea/SearchEngine/SphinxSearch/ConfigurationPanel.php +++ b/lib/Alchemy/Phrasea/SearchEngine/SphinxSearch/ConfigurationPanel.php @@ -5,6 +5,7 @@ namespace Alchemy\Phrasea\SearchEngine\SphinxSearch; use Alchemy\Phrasea\SearchEngine\AbstractConfigurationPanel; use Alchemy\Phrasea\Application; use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\Finder\Finder; class ConfigurationPanel extends AbstractConfigurationPanel { @@ -30,7 +31,7 @@ class ConfigurationPanel extends AbstractConfigurationPanel $params = array( 'configuration' => $configuration, 'configfile' => $this->generateSphinxConf($app['phraseanet.appbox']->get_databoxes(), $configuration), - 'charsets' => $this->get_available_charsets(), + 'charsets' => $this->getAvailableCharsets(), 'date_fields' => $this->getAvailableDateFields($app['phraseanet.appbox']->get_databoxes()), ); @@ -95,14 +96,14 @@ class ConfigurationPanel extends AbstractConfigurationPanel return $configuration; } - public function saveConfiguration($configuration) + public function saveConfiguration(array $configuration) { file_put_contents($this->getConfigPathFile(), json_encode($configuration)); return $this; } - public function get_available_charsets() + public function getAvailableCharsets() { if (null !== $this->charsets) { return $this->charsets; @@ -110,7 +111,7 @@ class ConfigurationPanel extends AbstractConfigurationPanel $this->charsets = array(); - $finder = new \Symfony\Component\Finder\Finder(); + $finder = new Finder(); $finder->in(__DIR__ . '/Charset/')->files()->name('*.php'); foreach ($finder as $file) { diff --git a/templates/web/admin/sphinx/configuration.html.twig b/templates/web/admin/sphinx/configuration.html.twig deleted file mode 100644 index fbc3bb94cc..0000000000 --- a/templates/web/admin/sphinx/configuration.html.twig +++ /dev/null @@ -1,26 +0,0 @@ -{% if app['request'].query.get('success') == '1' %} -
- × - {% trans 'Successful update' %} -
-{% endif %} - -
- - - - - -
- - \ No newline at end of file diff --git a/tests/Alchemy/Phrasea/SearchEngine/ConfigurationPanelAbstractTest.php b/tests/Alchemy/Phrasea/SearchEngine/ConfigurationPanelAbstractTest.php new file mode 100644 index 0000000000..219d71ed42 --- /dev/null +++ b/tests/Alchemy/Phrasea/SearchEngine/ConfigurationPanelAbstractTest.php @@ -0,0 +1,43 @@ +assertInternalType('string', $this->getPanel()->getName()); + } + + public function testGetConfiguration() + { + $this->assertInternalType('array', $this->getPanel()->getConfiguration()); + } + + public function testSaveConfiguration() + { + $config = $this->getPanel()->getConfiguration(); + $data = 'Yodelali' . mt_rand(); + $config['test'] = $data; + $this->getPanel()->saveConfiguration($config); + + $config = $this->getPanel()->getConfiguration(); + $this->assertEquals($data, $config['test']); + } + + public function testGetAvailableDateFields() + { + $dateFields = $this->getPanel()->getAvailableDateFields(self::$DI['app']['phraseanet.appbox']->get_databoxes()); + $this->assertInternalType('array', $dateFields); + + foreach ($dateFields as $dateField) { + $this->assertInternalType('string', $dateField); + } + } + +} diff --git a/tests/Alchemy/Phrasea/SearchEngine/PhraseaConfigurationPanelTest.php b/tests/Alchemy/Phrasea/SearchEngine/PhraseaConfigurationPanelTest.php new file mode 100644 index 0000000000..4a5ed49aac --- /dev/null +++ b/tests/Alchemy/Phrasea/SearchEngine/PhraseaConfigurationPanelTest.php @@ -0,0 +1,16 @@ +getPanel()->getAvailableCharsets(); + + $this->assertInternalType('array', $charsets); + foreach ($charsets as $name => $charset) { + $this->assertInternalType('string', $name); + $this->assertInstanceOf('Alchemy\Phrasea\SearchEngine\SphinxSearch\AbstractCharset', $charset); + } + } + + public function testGenerateSphinxConf() + { + $conf = $this->getPanel()->generateSphinxConf(); + $this->assertInternalType('string', $conf); + } + +} \ No newline at end of file diff --git a/tests/record/adapterTest.php b/tests/record/adapterTest.php index e486b68372..13cf7be91f 100644 --- a/tests/record/adapterTest.php +++ b/tests/record/adapterTest.php @@ -32,8 +32,6 @@ class record_adapterTest extends PhraseanetPHPUnitAuthenticatedAbstract } self::$updated = true; } - - self::$initialized = true; } /**