aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorNicolas LÅ“uillet <nicolas.loeuillet@gmail.com>2013-08-24 22:42:37 -0700
committerNicolas LÅ“uillet <nicolas.loeuillet@gmail.com>2013-08-24 22:42:37 -0700
commit217bacc66371f41a58cca924bec575102491db35 (patch)
tree6b95c7e88f77d015f1d2c9c098898420d9f96fc6
parent83954e711d7f79173db00ad7160f6d1d6a3a9c5d (diff)
parentdb4767e22b9c130bdfe7102383d0f42a2eece490 (diff)
downloadwallabag-217bacc66371f41a58cca924bec575102491db35.tar.gz
wallabag-217bacc66371f41a58cca924bec575102491db35.tar.zst
wallabag-217bacc66371f41a58cca924bec575102491db35.zip
Merge pull request #173 from EliasZ/dev
Graceful error-handling with imports and defining where import files are stored
-rw-r--r--inc/poche/Poche.class.php43
-rw-r--r--inc/poche/define.inc.php6
-rw-r--r--tpl/config.twig6
3 files changed, 39 insertions, 16 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
364 /** 364 /**
365 * import from Instapaper. poche needs a ./instapaper-export.html file 365 * import from Instapaper. poche needs a ./instapaper-export.html file
366 * @todo add the return value 366 * @todo add the return value
367 * @param string $targetFile the file used for importing
367 * @return boolean 368 * @return boolean
368 */ 369 */
369 private function importFromInstapaper() 370 private function importFromInstapaper($targetFile)
370 { 371 {
371 # TODO gestion des articles favs 372 # TODO gestion des articles favs
372 $html = new simple_html_dom(); 373 $html = new simple_html_dom();
373 $html->load_file('./instapaper-export.html'); 374 $html->load_file($targetFile);
374 Tools::logm('starting import from instapaper'); 375 Tools::logm('starting import from instapaper');
375 376
376 $read = 0; 377 $read = 0;
@@ -403,13 +404,14 @@ class Poche
403 /** 404 /**
404 * import from Pocket. poche needs a ./ril_export.html file 405 * import from Pocket. poche needs a ./ril_export.html file
405 * @todo add the return value 406 * @todo add the return value
407 * @param string $targetFile the file used for importing
406 * @return boolean 408 * @return boolean
407 */ 409 */
408 private function importFromPocket() 410 private function importFromPocket($targetFile)
409 { 411 {
410 # TODO gestion des articles favs 412 # TODO gestion des articles favs
411 $html = new simple_html_dom(); 413 $html = new simple_html_dom();
412 $html->load_file('./ril_export.html'); 414 $html->load_file($targetFile);
413 Tools::logm('starting import from pocket'); 415 Tools::logm('starting import from pocket');
414 416
415 $read = 0; 417 $read = 0;
@@ -442,12 +444,13 @@ class Poche
442 /** 444 /**
443 * import from Readability. poche needs a ./readability file 445 * import from Readability. poche needs a ./readability file
444 * @todo add the return value 446 * @todo add the return value
447 * @param string $targetFile the file used for importing
445 * @return boolean 448 * @return boolean
446 */ 449 */
447 private function importFromReadability() 450 private function importFromReadability($targetFile)
448 { 451 {
449 # TODO gestion des articles lus / favs 452 # TODO gestion des articles lus / favs
450 $str_data = file_get_contents("./readability"); 453 $str_data = file_get_contents($targetFile);
451 $data = json_decode($str_data,true); 454 $data = json_decode($str_data,true);
452 Tools::logm('starting import from Readability'); 455 Tools::logm('starting import from Readability');
453 $count = 0; 456 $count = 0;
@@ -499,15 +502,31 @@ class Poche
499 */ 502 */
500 public function import($from) 503 public function import($from)
501 { 504 {
502 if ($from == 'pocket') { 505 $providers = array(
503 return $this->importFromPocket(); 506 'pocket' => 'importFromPocket',
507 'readability' => 'importFromReadability',
508 'instapaper' => 'importFromInstapaper'
509 );
510
511 if (! isset($providers[$from])) {
512 $this->messages->add('e', _('Unknown import provider.'));
513 Tools::redirect();
504 } 514 }
505 else if ($from == 'readability') { 515
506 return $this->importFromReadability(); 516 $targetDefinition = 'IMPORT_' . strtoupper($from) . '_FILE';
517 $targetFile = constant($targetDefinition);
518
519 if (! defined($targetDefinition)) {
520 $this->messages->add('e', _('Incomplete inc/poche/define.inc.php file, please define "' . $targetDefinition . '".'));
521 Tools::redirect();
507 } 522 }
508 else if ($from == 'instapaper') { 523
509 return $this->importFromInstapaper(); 524 if (! file_exists($targetFile)) {
525 $this->messages->add('e', _('Could not find required "' . $targetFile . '" import file.'));
526 Tools::redirect();
510 } 527 }
528
529 $this->$providers[$from]($targetFile);
511 } 530 }
512 531
513 /** 532 /**
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');
29define ('LOCALE', __DIR__ . '/../../locale'); 29define ('LOCALE', __DIR__ . '/../../locale');
30define ('CACHE', __DIR__ . '/../../cache'); 30define ('CACHE', __DIR__ . '/../../cache');
31define ('PAGINATION', '10'); 31define ('PAGINATION', '10');
32define ('THEME', 'light'); \ No newline at end of file 32define ('THEME', 'light');
33
34define ('IMPORT_POCKET_FILE', './ril_export.html');
35define ('IMPORT_READABILITY_FILE', './readability');
36define ('IMPORT_INSTAPAPER_FILE', './instapaper-export.html'); \ No newline at end of file
diff --git a/tpl/config.twig b/tpl/config.twig
index e8563721..89d5bf84 100644
--- a/tpl/config.twig
+++ b/tpl/config.twig
@@ -50,9 +50,9 @@
50 <p>{% trans "Please execute the import script locally, it can take a very long time." %}</p> 50 <p>{% trans "Please execute the import script locally, it can take a very long time." %}</p>
51 <p>{% trans "More infos in the official doc:" %} <a href="http://inthepoche.com/?pages/Documentation">inthepoche.com</a></p> 51 <p>{% trans "More infos in the official doc:" %} <a href="http://inthepoche.com/?pages/Documentation">inthepoche.com</a></p>
52 <ul> 52 <ul>
53 <li><a href="./?import&amp;from=pocket">{% trans "import from Pocket" %}</a> (you must have a "ril_export.html" file on your server)</li> 53 <li><a href="./?import&from=pocket">{% trans "import from Pocket" %}</a> (you must have a "{{ defined('IMPORT_POCKET_FILE') ? constant('IMPORT_POCKET_FILE') ? 'INCORRECT CONFIGURATION' }}" file on your server)</li>
54 <li><a href="./?import&amp;from=readability">{% trans "import from Readability" %}</a> (you must have a "readability" file on your server)</li> 54 <li><a href="./?import&from=readability">{% trans "import from Readability" %}</a> (you must have a "{{ defined('IMPORT_READABILITY_FILE') ? constant('IMPORT_READABILITY_FILE') ? 'INCORRECT CONFIGURATION' }}" file on your server)</li>
55 <li><a href="./?import&amp;from=instapaper">{% trans "import from Instapaper" %}</a> (you must have a "instapaper-export.html" file on your server)</li> 55 <li><a href="./?import&from=instapaper">{% trans "import from Instapaper" %}</a> (you must have a "{{ defined('IMPORT_INSTAPAPER_FILE') ? constant('IMPORT_INSTAPAPER_FILE') ? 'INCORRECT CONFIGURATION' }}" file on your server)</li>
56 </ul> 56 </ul>
57 57
58 <h2>{% trans "Export your poche datas" %}</h2> 58 <h2>{% trans "Export your poche datas" %}</h2>