From fb95aad7183ca04ea079c11ee0cc0a0690e263e0 Mon Sep 17 00:00:00 2001 From: Romain Neutron Date: Thu, 26 Jul 2012 12:28:41 +0200 Subject: [PATCH] Remove use of databox singleton --- lib/Alchemy/Phrasea/Application/Overview.php | 6 ++--- .../Phrasea/Border/Attribute/MetaField.php | 3 ++- .../Core/Service/Border/BorderManager.php | 4 +-- lib/classes/appbox.class.php | 6 ++--- lib/classes/collection.class.php | 3 ++- lib/classes/databox.class.php | 26 +++---------------- lib/classes/databox/field.class.php | 3 ++- lib/classes/databox/status.class.php | 6 +++-- .../module/console/fieldsDelete.class.php | 3 ++- .../module/console/fieldsMerge.class.php | 3 ++- .../module/console/fieldsRename.class.php | 3 ++- .../sphinxGenerateSuggestion.class.php | 2 +- lib/classes/module/report/activity.class.php | 3 ++- lib/classes/module/report/download.class.php | 3 ++- lib/classes/p4file.class.php | 5 ++-- .../adapter/phrasea/engine.class.php | 3 +-- .../adapter/sphinx/engine.class.php | 9 ++++--- lib/classes/task/databoxAbstract.class.php | 3 ++- lib/classes/task/period/RecordMover.class.php | 5 ++-- lib/classes/task/period/archive.class.php | 14 ++++++---- 20 files changed, 56 insertions(+), 57 deletions(-) diff --git a/lib/Alchemy/Phrasea/Application/Overview.php b/lib/Alchemy/Phrasea/Application/Overview.php index 54102f2192..5f681245c8 100644 --- a/lib/Alchemy/Phrasea/Application/Overview.php +++ b/lib/Alchemy/Phrasea/Application/Overview.php @@ -74,7 +74,7 @@ return call_user_func( $app->get('/datafiles/{sbas_id}/{record_id}/{subdef}/', function($sbas_id, $record_id, $subdef, PhraseaApplication $app) use ($session, $deliver_content) { - $databox = \databox::get_instance((int) $sbas_id); + $databox = $app['phraseanet.appbox']->get_databox((int) $sbas_id); $record = new \record_adapter($sbas_id, $record_id); if ( ! $session->is_authenticated()) { @@ -140,7 +140,7 @@ return call_user_func( $app->get('/permalink/v1/{label}/{sbas_id}/{record_id}/{key}/{subdef}/view/' , function($label, $sbas_id, $record_id, $key, $subdef, PhraseaApplication $app) { - $databox = \databox::get_instance((int) $sbas_id); + $databox = $app['phraseanet.appbox']->get_databox((int) $sbas_id); $record = \media_Permalink_Adapter::challenge_token($databox, $key, $record_id, $subdef); @@ -161,7 +161,7 @@ return call_user_func( $app->get('/permalink/v1/{label}/{sbas_id}/{record_id}/{key}/{subdef}/' , function($label, $sbas_id, $record_id, $key, $subdef) use ($app, $session, $deliver_content) { - $databox = \databox::get_instance((int) $sbas_id); + $databox = $app['phraseanet.appbox']->get_databox((int) $sbas_id); $record = \media_Permalink_Adapter::challenge_token($databox, $key, $record_id, $subdef); if ( ! ($record instanceof \record_adapter)) throw new \Exception('bad luck'); diff --git a/lib/Alchemy/Phrasea/Border/Attribute/MetaField.php b/lib/Alchemy/Phrasea/Border/Attribute/MetaField.php index bb83c1c3f0..f7443a3f77 100644 --- a/lib/Alchemy/Phrasea/Border/Attribute/MetaField.php +++ b/lib/Alchemy/Phrasea/Border/Attribute/MetaField.php @@ -108,7 +108,8 @@ class MetaField implements Attribute } try { - $databox = \databox::get_instance($datas['sbas_id']); + $appbox = \appbox::get_instance(\bootstrap::getCore()); + $databox = $appbox->get_databox($datas['sbas_id']); $field = $databox->get_meta_structure()->get_element($datas['id']); } catch (\Exception_NotFound $e) { throw new \InvalidArgumentException('Field does not exist anymore'); diff --git a/lib/Alchemy/Phrasea/Core/Service/Border/BorderManager.php b/lib/Alchemy/Phrasea/Core/Service/Border/BorderManager.php index 3fbbb9073a..b0b67d56e8 100644 --- a/lib/Alchemy/Phrasea/Core/Service/Border/BorderManager.php +++ b/lib/Alchemy/Phrasea/Core/Service/Border/BorderManager.php @@ -40,7 +40,7 @@ class BorderManager extends ServiceAbstract */ protected function init() { - + $appbox = \appbox::get_instance($this->core); $borderManager = new Border\Manager($this->core['EM'], $this->core['file-system']); if ($this->core['pdf-to-text']) { @@ -86,7 +86,7 @@ class BorderManager extends ServiceAbstract $databoxes = array(); foreach ($checker['databoxes'] as $sbas_id) { try { - $databoxes[] = \databox::get_instance($sbas_id); + $databoxes[] = $appbox->get_databox($sbas_id); } catch (\Exception $e) { throw new \InvalidArgumentException('Invalid databox option'); } diff --git a/lib/classes/appbox.class.php b/lib/classes/appbox.class.php index f2e4df90ed..8259b2cd82 100644 --- a/lib/classes/appbox.class.php +++ b/lib/classes/appbox.class.php @@ -557,8 +557,8 @@ class appbox extends base $ret = array(); foreach ($this->retrieve_sbas_ids() as $sbas_id) { try { - $ret[$sbas_id] = databox::get_instance($sbas_id); - } catch (Exception $e) { + $ret[$sbas_id] = new \databox($sbas_id); + } catch (\Exception_DataboxNotFound $e) { } } @@ -600,7 +600,7 @@ class appbox extends base if ( ! array_key_exists($sbas_id, $databoxes)) { throw new Exception_DataboxNotFound('Databox `' . $sbas_id . '` not found'); } - + return $databoxes[$sbas_id]; } diff --git a/lib/classes/collection.class.php b/lib/classes/collection.class.php index 48b41e70a8..1e16a88b45 100644 --- a/lib/classes/collection.class.php +++ b/lib/classes/collection.class.php @@ -370,7 +370,8 @@ class collection implements cache_cacheableInterface if ( ! $sbas_id || ! $coll_id) { throw new Exception_Databox_CollectionNotFound(sprintf("Collection could not be found")); } - $databox = databox::get_instance($sbas_id); + $appbox = \appbox::get_instance(\bootstrap::getCore()); + $databox = $appbox->get_databox($sbas_id); return self::get_from_coll_id($databox, $coll_id); } diff --git a/lib/classes/databox.class.php b/lib/classes/databox.class.php index 0f84bc5883..2fa9953289 100644 --- a/lib/classes/databox.class.php +++ b/lib/classes/databox.class.php @@ -100,13 +100,11 @@ class databox extends base protected $connection; protected $registry; - /** - * - * @param int $sbas_id - * @return databox - */ - protected function __construct($sbas_id) + public function __construct($sbas_id) { + assert(is_int($sbas_id)); + assert($sbas_id > 0); + $this->registry = registry::get_instance(); $this->connection = connection::getPDOConnection($sbas_id); $this->Core = \bootstrap::getCore(); @@ -187,22 +185,6 @@ class databox extends base return phrasea::sbas_names($this->get_sbas_id()); } - /** - * - * @param int $sbas_id - * @return databox - */ - public static function get_instance($sbas_id) - { - assert(is_int($sbas_id)); - assert($sbas_id > 0); - if ( ! array_key_exists($sbas_id, self::$_instances)) { - self::$_instances[$sbas_id] = new self($sbas_id); - } - - return self::$_instances[$sbas_id]; - } - /** * * @return databox_status diff --git a/lib/classes/databox/field.class.php b/lib/classes/databox/field.class.php index c49e350e60..e0fced178c 100644 --- a/lib/classes/databox/field.class.php +++ b/lib/classes/databox/field.class.php @@ -856,7 +856,8 @@ class databox_field implements cache_cacheableInterface */ public function __wakeup() { - $databox = databox::get_instance($this->sbas_id); + $appbox = \appbox::get_instance(\bootstrap::getCore()); + $databox = $appbox->get_databox($this->sbas_id); $this->set_databox($databox); return; diff --git a/lib/classes/databox/status.class.php b/lib/classes/databox/status.class.php index 73c47f79e5..fcb7b8c02b 100644 --- a/lib/classes/databox/status.class.php +++ b/lib/classes/databox/status.class.php @@ -61,6 +61,7 @@ class databox_status $path = $url = false; + $appbox = \appbox::get_instance(\bootstrap::getCore()); $sbas_params = phrasea::sbas_params(); $registry = registry::get_instance(); @@ -71,7 +72,7 @@ class databox_status $path = $this->path = $registry->get('GV_RootPath') . "config/status/" . urlencode($sbas_params[$sbas_id]["host"]) . "-" . urlencode($sbas_params[$sbas_id]["port"]) . "-" . urlencode($sbas_params[$sbas_id]["dbname"]); $url = $this->url = "/custom/status/" . urlencode($sbas_params[$sbas_id]["host"]) . "-" . urlencode($sbas_params[$sbas_id]["port"]) . "-" . urlencode($sbas_params[$sbas_id]["dbname"]); - $databox = databox::get_instance((int) $sbas_id); + $databox = $appbox->get_databox((int) $sbas_id); $xmlpref = $databox->get_structure(); $sxe = simplexml_load_string($xmlpref); @@ -244,6 +245,7 @@ class databox_status public static function deleteStatus($sbas_id, $bit) { $core = \bootstrap::getCore(); + $appbox = \appbox::get_instance($core); $user = $core->getAuthenticatedUser(); @@ -256,7 +258,7 @@ class databox_status if (isset($status[$bit])) { $connbas = connection::getPDOConnection($sbas_id); - $databox = databox::get_instance((int) $sbas_id); + $databox = $appbox->get_databox((int) $sbas_id); $doc = $databox->get_dom_structure(); if ($doc) { diff --git a/lib/classes/module/console/fieldsDelete.class.php b/lib/classes/module/console/fieldsDelete.class.php index 8cbdd1a56f..44d91c9905 100644 --- a/lib/classes/module/console/fieldsDelete.class.php +++ b/lib/classes/module/console/fieldsDelete.class.php @@ -42,8 +42,9 @@ class module_console_fieldsDelete extends Command protected function doExecute(InputInterface $input, OutputInterface $output) { + $appbox = \appbox::get_instance(\bootstrap::getCore()); try { - $databox = \databox::get_instance((int) $input->getArgument('sbas_id')); + $databox = $appbox->get_databox((int) $input->getArgument('sbas_id')); } catch (\Exception $e) { $output->writeln("Invalid databox id "); diff --git a/lib/classes/module/console/fieldsMerge.class.php b/lib/classes/module/console/fieldsMerge.class.php index f42121c98a..2d06c8d889 100644 --- a/lib/classes/module/console/fieldsMerge.class.php +++ b/lib/classes/module/console/fieldsMerge.class.php @@ -54,8 +54,9 @@ class module_console_fieldsMerge extends Command { $output->writeln(""); + $appbox = \appbox::get_instance(\bootstrap::getCore()); try { - $databox = \databox::get_instance((int) $input->getArgument('sbas_id')); + $databox = $appbox->get_databox((int) $input->getArgument('sbas_id')); } catch (\Exception $e) { $output->writeln("Invalid databox id "); diff --git a/lib/classes/module/console/fieldsRename.class.php b/lib/classes/module/console/fieldsRename.class.php index aeacab007f..338a9b96b6 100644 --- a/lib/classes/module/console/fieldsRename.class.php +++ b/lib/classes/module/console/fieldsRename.class.php @@ -45,8 +45,9 @@ class module_console_fieldsRename extends Command { $new_name = $input->getArgument('name'); + $appbox = \appbox::get_instance(\bootstrap::getCore()); try { - $databox = \databox::get_instance((int) $input->getArgument('sbas_id')); + $databox = $appbox->get_databox((int) $input->getArgument('sbas_id')); } catch (\Exception $e) { $output->writeln("Invalid databox id "); diff --git a/lib/classes/module/console/sphinxGenerateSuggestion.class.php b/lib/classes/module/console/sphinxGenerateSuggestion.class.php index 725b2ecb51..4623615e18 100644 --- a/lib/classes/module/console/sphinxGenerateSuggestion.class.php +++ b/lib/classes/module/console/sphinxGenerateSuggestion.class.php @@ -57,7 +57,7 @@ class module_console_sphinxGenerateSuggestion extends Command $tmp_file = $registry->get('GV_RootPath') . 'tmp/dict' . $index . '.txt'; - $databox = databox::get_instance($sbas_id); + $databox = $appbox->get_databox($sbas_id); $output->writeln("process Databox " . $databox->get_viewname() . " / $index\n"); diff --git a/lib/classes/module/report/activity.class.php b/lib/classes/module/report/activity.class.php index c0ee64804c..6259f211a3 100644 --- a/lib/classes/module/report/activity.class.php +++ b/lib/classes/module/report/activity.class.php @@ -290,7 +290,8 @@ class module_report_activity extends module_report $filter = $s->getFilters(); $conn = $s->getConnBas(); - $databox = \databox::get_instance($this->sbas_id); + $appbox = \appbox::get_instance(\bootstrap::getCore()); + $databox = $appbox->get_databox($this->sbas_id); $params = array(); $date_filter = $filter->getDateFilter(); diff --git a/lib/classes/module/report/download.class.php b/lib/classes/module/report/download.class.php index 041b0d6767..2019585eb3 100644 --- a/lib/classes/module/report/download.class.php +++ b/lib/classes/module/report/download.class.php @@ -210,7 +210,8 @@ class module_report_download extends module_report public static function getTopDl($dmin, $dmax, $sbas_id, $list_coll_id) { - $databox = \databox::get_instance((int) $sbas_id); + $appbox = \appbox::get_instance(\bootstrap::getCore()); + $databox = $appbox->get_databox((int) $sbas_id); $conn = $databox->get_connection(); $registry = $databox->get_registry(); diff --git a/lib/classes/p4file.class.php b/lib/classes/p4file.class.php index 9a64c98fd1..072e5a9953 100644 --- a/lib/classes/p4file.class.php +++ b/lib/classes/p4file.class.php @@ -79,7 +79,7 @@ class p4file } $sbas_id = phrasea::sbasFromBas($base_id); - $databox = databox::get_instance($sbas_id); + $databox = $appbox->get_databox($sbas_id); $collection = collection::get_from_base_id($base_id); $collprefs = simplexml_load_string($collection->get_prefs()); @@ -131,13 +131,14 @@ class p4file throw new Exception('This method is deprecated'); $core = \bootstrap::getCore(); + $appbox = \appbox::get_instance($core); $checks = array(); $system_file = new system_file($filename); $doctype = $system_file->get_phrasea_type(); - $databox = databox::get_instance($sbas_id); + $databox = $appbox->get_databox($sbas_id); if ($baseprefs = $databox->get_sxml_structure()) { diff --git a/lib/classes/searchEngine/adapter/phrasea/engine.class.php b/lib/classes/searchEngine/adapter/phrasea/engine.class.php index 0fe17f64e3..4c49c94478 100644 --- a/lib/classes/searchEngine/adapter/phrasea/engine.class.php +++ b/lib/classes/searchEngine/adapter/phrasea/engine.class.php @@ -427,7 +427,7 @@ class searchEngine_adapter_phrasea_engine extends searchEngine_adapter_abstract if ($this->results[$sbas_id]) $nbanswers += $this->results[$sbas_id]["nbanswers"]; - $logger = $session->get_logger(databox::get_instance($sbas_id)); + $logger = $session->get_logger($appbox->get_databox($sbas_id)); $conn2 = connection::getPDOConnection($sbas_id); @@ -558,7 +558,6 @@ class searchEngine_adapter_phrasea_engine extends searchEngine_adapter_abstract if ( ! isset($this->queries[$databox->get_sbas_id()])) continue; - //$databox = databox::get_instance($sbas_id); $sbas_id = $databox->get_sbas_id(); $this->colls[$sbas_id] = array(); foreach ($databox->get_collections() as $coll) { diff --git a/lib/classes/searchEngine/adapter/sphinx/engine.class.php b/lib/classes/searchEngine/adapter/sphinx/engine.class.php index a9dfc17d9b..023de67a06 100644 --- a/lib/classes/searchEngine/adapter/sphinx/engine.class.php +++ b/lib/classes/searchEngine/adapter/sphinx/engine.class.php @@ -97,9 +97,10 @@ class searchEngine_adapter_sphinx_engine extends searchEngine_adapter_abstract i $filters = array(); + $appbox = \appbox::get_instance(\bootstrap::getCore()); + foreach ($sbas_ids as $sbas_id) { - $databox = databox::get_instance($sbas_id); - $fields = $databox->get_meta_structure(); + $fields = $appbox->get_databox($sbas_id)->get_meta_structure(); foreach ($fields as $field) { if ( ! in_array($field->get_id(), $options->get_fields())) @@ -136,12 +137,12 @@ class searchEngine_adapter_sphinx_engine extends searchEngine_adapter_abstract i $this->sphinx->SetFilter('crc_struct_id', $filters); } + $appbox = \appbox::get_instance(\bootstrap::getCore()); /** * @todo : enhance : check status better */ foreach ($sbas_ids as $sbas_id) { - $databox = databox::get_instance($sbas_id); - $s_status = $databox->get_statusbits(); + $s_status = $appbox->get_databox($sbas_id)->get_statusbits(); $status_opts = $options->get_status(); foreach ($s_status as $n => $status) { if ( ! array_key_exists($n, $status_opts)) diff --git a/lib/classes/task/databoxAbstract.class.php b/lib/classes/task/databoxAbstract.class.php index eea9ce0c59..37de46085e 100755 --- a/lib/classes/task/databoxAbstract.class.php +++ b/lib/classes/task/databoxAbstract.class.php @@ -83,9 +83,10 @@ abstract class task_databoxAbstract extends task_abstract $this->sbas_id = (int) $row['sbas_id']; $this->log('This task works now on ' . phrasea::sbas_names($this->sbas_id)); + $appbox = \appbox::get_instance(\bootstrap::getCore()); try { // get the records to process - $databox = databox::get_instance((int) $row['sbas_id']); + $databox = $appbox->get_databox((int) $row['sbas_id']); } catch (Exception $e) { $this->log(sprintf('Warning : can\' connect to sbas(%s)', $row['sbas_id'])); continue; diff --git a/lib/classes/task/period/RecordMover.class.php b/lib/classes/task/period/RecordMover.class.php index 4479a6dcd4..2bd31dc53b 100644 --- a/lib/classes/task/period/RecordMover.class.php +++ b/lib/classes/task/period/RecordMover.class.php @@ -419,7 +419,8 @@ class task_period_RecordMover extends task_appboxAbstract protected function processOneContent(appbox $appbox, Array $row) { $logsql = (int) ($this->sxTaskSettings->logsql) > 0; - $dbox = databox::get_instance($row['sbas_id']); + $appbox = \appbox::get_instance(\bootstrap::getCore()); + $databox = $appbox->get_databox($row['sbas_id']); $rec = new record_adapter($row['sbas_id'], $row['record_id']); switch ($row['action']) { @@ -427,7 +428,7 @@ class task_period_RecordMover extends task_appboxAbstract // change collection ? if (array_key_exists('coll', $row)) { - $coll = collection::get_from_coll_id($dbox, $row['coll']); + $coll = collection::get_from_coll_id($databox, $row['coll']); $rec->move_to_collection($coll, $appbox); if ($logsql) { $this->log(sprintf("on sbas %s move rid %s to coll %s \n", $row['sbas_id'], $row['record_id'], $coll->get_coll_id())); diff --git a/lib/classes/task/period/archive.class.php b/lib/classes/task/period/archive.class.php index 81a537928c..53bc29a10b 100755 --- a/lib/classes/task/period/archive.class.php +++ b/lib/classes/task/period/archive.class.php @@ -270,7 +270,8 @@ class task_period_archive extends task_abstract { $this->debug = false; - $conn = \connection::getPDOConnection(); + $appbox = \appbox::get_instance(\bootstrap::getCore()); + $conn = $appbox->get_connection(); $this->sxTaskSettings = simplexml_load_string($this->settings); @@ -283,7 +284,7 @@ class task_period_archive extends task_abstract return 'tostop'; } - $databox = \databox::get_instance($this->sbas_id); + $databox = $appbox->get_databox($this->sbas_id); $this->TColls = array(); $collection = null; @@ -507,8 +508,9 @@ class task_period_archive extends task_abstract { clearstatcache(); + $appbox = \appbox::get_instance(\bootstrap::getCore()); connection::getPDOConnection(); - \databox::get_instance($this->sbas_id)->get_connection(); + $appbox->get_databox($this->sbas_id)->get_connection(); $path_in = p4string::delEndSlash(trim((string) ($this->sxTaskSettings->hotfolder))); if (false === $this->filesystem->exists($path_in . "/.phrasea.xml")) { @@ -1414,6 +1416,7 @@ class task_period_archive extends task_abstract */ private function archiveGrp(\DOMDocument $dom, \DOMElement $node, $path, $path_archived, $path_error, array &$nodesToDel) { + $appbox = \appbox::get_instance(\bootstrap::getCore()); $xpath = new DOMXPath($dom); // grp folders stay in place @@ -1466,7 +1469,7 @@ class task_period_archive extends task_abstract try { - $databox = \databox::get_instance($this->sbas_id); + $databox = $appbox->get_databox($this->sbas_id); $collection = collection::get_from_coll_id($databox, (int) $cid); if ($captionFileName === null) { $story = $this->createStory($collection, $path . '/' . $representationFileName, null); @@ -1838,6 +1841,7 @@ class task_period_archive extends task_abstract { $ret = false; + $appbox = \appbox::get_instance(\bootstrap::getCore()); $file = $node->getAttribute('name'); $cid = $node->getAttribute('cid'); $captionFileName = $captionFileNode ? $captionFileNode->getAttribute('name') : null; @@ -1868,7 +1872,7 @@ class task_period_archive extends task_abstract } try { - $databox = \databox::get_instance($this->sbas_id); + $databox = $appbox->get_databox($this->sbas_id); $collection = collection::get_from_coll_id($databox, (int) $cid); if ($captionFileName === null) {