]> git.immae.eu Git - github/wallabag/wallabag.git/commitdiff
graceful error-handling with imports, define where import files are stored
authorEliasZ <mail@eliaszerrouq.nl>
Sat, 24 Aug 2013 13:59:51 +0000 (15:59 +0200)
committerEliasZ <mail@eliaszerrouq.nl>
Sat, 24 Aug 2013 13:59:51 +0000 (15:59 +0200)
inc/poche/Poche.class.php
inc/poche/define.inc.php

index 4832f81683c5b320aa0c2ae0aa4129b9d1e47f04..cb338766fd0d9b6efbe79e58f7f97a5b78f11b15 100644 (file)
@@ -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);
     }
 
     /**
index 2154ce8819f95aad7cb62802aa5c7481fdf4f95a..2d0a39ec4f5da5fc31be63bc318c3b96862dd457 100644 (file)
@@ -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