From 66b6a3b5e2410827ac23bea0439f2fad03240018 Mon Sep 17 00:00:00 2001 From: EliasZ Date: Sat, 24 Aug 2013 15:59:51 +0200 Subject: [PATCH] graceful error-handling with imports, define where import files are stored --- inc/poche/Poche.class.php | 43 ++++++++++++++++++++++++++++----------- inc/poche/define.inc.php | 6 +++++- 2 files changed, 36 insertions(+), 13 deletions(-) diff --git a/inc/poche/Poche.class.php b/inc/poche/Poche.class.php index 4832f816..cb338766 100644 --- a/inc/poche/Poche.class.php +++ b/inc/poche/Poche.class.php @@ -364,13 +364,14 @@ class Poche /** * import from Instapaper. poche needs a ./instapaper-export.html file * @todo add the return value + * @param string $targetFile the file used for importing * @return boolean */ - private function importFromInstapaper() + private function importFromInstapaper($targetFile) { # TODO gestion des articles favs $html = new simple_html_dom(); - $html->load_file('./instapaper-export.html'); + $html->load_file($targetFile); Tools::logm('starting import from instapaper'); $read = 0; @@ -403,13 +404,14 @@ class Poche /** * import from Pocket. poche needs a ./ril_export.html file * @todo add the return value + * @param string $targetFile the file used for importing * @return boolean */ - private function importFromPocket() + private function importFromPocket($targetFile) { # TODO gestion des articles favs $html = new simple_html_dom(); - $html->load_file('./ril_export.html'); + $html->load_file($targetFile); Tools::logm('starting import from pocket'); $read = 0; @@ -442,12 +444,13 @@ class Poche /** * import from Readability. poche needs a ./readability file * @todo add the return value + * @param string $targetFile the file used for importing * @return boolean */ - private function importFromReadability() + private function importFromReadability($targetFile) { # TODO gestion des articles lus / favs - $str_data = file_get_contents("./readability"); + $str_data = file_get_contents($targetFile); $data = json_decode($str_data,true); Tools::logm('starting import from Readability'); $count = 0; @@ -499,15 +502,31 @@ class Poche */ public function import($from) { - if ($from == 'pocket') { - return $this->importFromPocket(); + $providers = array( + 'pocket' => 'importFromPocket', + 'readability' => 'importFromReadability', + 'instapaper' => 'importFromInstapaper' + ); + + if (! isset($providers[$from])) { + $this->messages->add('e', _('Unknown import provider.')); + Tools::redirect(); } - else if ($from == 'readability') { - return $this->importFromReadability(); + + $targetDefinition = 'IMPORT_' . strtoupper($from) . '_FILE'; + $targetFile = constant($targetDefinition); + + if (! defined($targetDefinition)) { + $this->messages->add('e', _('Incomplete inc/poche/define.inc.php file, please define "' . $targetDefinition . '".')); + Tools::redirect(); } - else if ($from == 'instapaper') { - return $this->importFromInstapaper(); + + if (! file_exists($targetFile)) { + $this->messages->add('e', _('Could not find required "' . $targetFile . '" import file.')); + Tools::redirect(); } + + $this->$providers[$from]($targetFile); } /** diff --git a/inc/poche/define.inc.php b/inc/poche/define.inc.php index 2154ce88..2d0a39ec 100644 --- a/inc/poche/define.inc.php +++ b/inc/poche/define.inc.php @@ -29,4 +29,8 @@ define ('TPL', __DIR__ . '/../../tpl'); define ('LOCALE', __DIR__ . '/../../locale'); define ('CACHE', __DIR__ . '/../../cache'); define ('PAGINATION', '10'); -define ('THEME', 'light'); \ No newline at end of file +define ('THEME', 'light'); + +define ('IMPORT_POCKET_FILE', './ril_export.html'); +define ('IMPORT_READABILITY_FILE', './readability'); +define ('IMPORT_INSTAPAPER_FILE', './instapaper-export.html'); \ No newline at end of file -- 2.41.0