aboutsummaryrefslogtreecommitdiffhomepage
path: root/inc/poche/Poche.class.php
diff options
context:
space:
mode:
Diffstat (limited to 'inc/poche/Poche.class.php')
-rw-r--r--inc/poche/Poche.class.php91
1 files changed, 52 insertions, 39 deletions
diff --git a/inc/poche/Poche.class.php b/inc/poche/Poche.class.php
index e0dc0d20..646193f7 100644
--- a/inc/poche/Poche.class.php
+++ b/inc/poche/Poche.class.php
@@ -47,16 +47,16 @@ class Poche
47 die('You don\'t have write access on cache directory.'); 47 die('You don\'t have write access on cache directory.');
48 } 48 }
49 else if (file_exists('./install/update.php') && !DEBUG_POCHE) { 49 else if (file_exists('./install/update.php') && !DEBUG_POCHE) {
50 $msg = 'A poche update is needed. Please execute this update <a href="install/update.php">by clicking here</a>. If you have already do the update, please delete /install folder.'; 50 $msg = '<h1>setup</h1><p><strong>It\'s your first time here?</strong> Please copy /install/poche.sqlite in db folder. Then, delete install folder.<br /><strong>If you have already installed poche</strong>, an update is needed <a href="install/update.php">by clicking here</a>.</p>';
51 $allIsGood = FALSE; 51 $allIsGood = FALSE;
52 } 52 }
53 else if (file_exists('./install') && !DEBUG_POCHE) { 53 else if (file_exists('./install') && !DEBUG_POCHE) {
54 $msg = 'If you want to update your poche, you just have to delete /install folder. <br />To install your poche with sqlite, copy /install/poche.sqlite in /db and delete the folder /install. you have to delete the /install folder before using poche.'; 54 $msg = '<h1>setup</h1><p><strong>If you want to update your poche</strong>, you just have to delete /install folder. <br /><strong>To install your poche with sqlite</strong>, copy /install/poche.sqlite in /db and delete the folder /install. you have to delete the /install folder before using poche.</p>';
55 $allIsGood = FALSE; 55 $allIsGood = FALSE;
56 } 56 }
57 else if (STORAGE == 'sqlite' && !is_writable(STORAGE_SQLITE)) { 57 else if (STORAGE == 'sqlite' && !is_writable(STORAGE_SQLITE)) {
58 Tools::logm('you don\'t have write access on sqlite file'); 58 Tools::logm('you don\'t have write access on sqlite file');
59 $msg = 'You don\'t have write access on sqlite file.'; 59 $msg = '<h1>error</h1><p>You don\'t have write access on sqlite file.</p>';
60 $allIsGood = FALSE; 60 $allIsGood = FALSE;
61 } 61 }
62 62
@@ -156,36 +156,31 @@ class Poche
156 switch ($action) 156 switch ($action)
157 { 157 {
158 case 'add': 158 case 'add':
159 if($parametres_url = $url->fetchContent()) { 159 $content = $url->extract();
160 if ($this->store->add($url->getUrl(), $parametres_url['title'], $parametres_url['content'], $this->user->getId())) { 160
161 Tools::logm('add link ' . $url->getUrl()); 161 if ($this->store->add($url->getUrl(), $content['title'], $content['body'], $this->user->getId())) {
162 $sequence = ''; 162 Tools::logm('add link ' . $url->getUrl());
163 if (STORAGE == 'postgres') { 163 $sequence = '';
164 $sequence = 'entries_id_seq'; 164 if (STORAGE == 'postgres') {
165 } 165 $sequence = 'entries_id_seq';
166 $last_id = $this->store->getLastId($sequence);
167 if (DOWNLOAD_PICTURES) {
168 $content = filtre_picture($parametres_url['content'], $url->getUrl(), $last_id);
169 Tools::logm('updating content article');
170 $this->store->updateContent($last_id, $content, $this->user->getId());
171 }
172 if (!$import) {
173 $this->messages->add('s', _('the link has been added successfully'));
174 }
175 } 166 }
176 else { 167 $last_id = $this->store->getLastId($sequence);
177 if (!$import) { 168 if (DOWNLOAD_PICTURES) {
178 $this->messages->add('e', _('error during insertion : the link wasn\'t added')); 169 $content = filtre_picture($parametres_url['body'], $url->getUrl(), $last_id);
179 Tools::logm('error during insertion : the link wasn\'t added ' . $url->getUrl()); 170 Tools::logm('updating content article');
180 } 171 $this->store->updateContent($last_id, $content, $this->user->getId());
172 }
173 if (!$import) {
174 $this->messages->add('s', _('the link has been added successfully'));
181 } 175 }
182 } 176 }
183 else { 177 else {
184 if (!$import) { 178 if (!$import) {
185 $this->messages->add('e', _('error during fetching content : the link wasn\'t added')); 179 $this->messages->add('e', _('error during insertion : the link wasn\'t added'));
186 Tools::logm('error during content fetch ' . $url->getUrl()); 180 Tools::logm('error during insertion : the link wasn\'t added ' . $url->getUrl());
187 } 181 }
188 } 182 }
183
189 if (!$import) { 184 if (!$import) {
190 Tools::redirect(); 185 Tools::redirect();
191 } 186 }
@@ -220,7 +215,6 @@ class Poche
220 } 215 }
221 break; 216 break;
222 default: 217 default:
223 Tools::logm('action ' . $action . 'doesn\'t exist');
224 break; 218 break;
225 } 219 }
226 } 220 }
@@ -364,13 +358,14 @@ class Poche
364 /** 358 /**
365 * import from Instapaper. poche needs a ./instapaper-export.html file 359 * import from Instapaper. poche needs a ./instapaper-export.html file
366 * @todo add the return value 360 * @todo add the return value
361 * @param string $targetFile the file used for importing
367 * @return boolean 362 * @return boolean
368 */ 363 */
369 private function importFromInstapaper() 364 private function importFromInstapaper($targetFile)
370 { 365 {
371 # TODO gestion des articles favs 366 # TODO gestion des articles favs
372 $html = new simple_html_dom(); 367 $html = new simple_html_dom();
373 $html->load_file('./instapaper-export.html'); 368 $html->load_file($targetFile);
374 Tools::logm('starting import from instapaper'); 369 Tools::logm('starting import from instapaper');
375 370
376 $read = 0; 371 $read = 0;
@@ -403,13 +398,14 @@ class Poche
403 /** 398 /**
404 * import from Pocket. poche needs a ./ril_export.html file 399 * import from Pocket. poche needs a ./ril_export.html file
405 * @todo add the return value 400 * @todo add the return value
401 * @param string $targetFile the file used for importing
406 * @return boolean 402 * @return boolean
407 */ 403 */
408 private function importFromPocket() 404 private function importFromPocket($targetFile)
409 { 405 {
410 # TODO gestion des articles favs 406 # TODO gestion des articles favs
411 $html = new simple_html_dom(); 407 $html = new simple_html_dom();
412 $html->load_file('./ril_export.html'); 408 $html->load_file($targetFile);
413 Tools::logm('starting import from pocket'); 409 Tools::logm('starting import from pocket');
414 410
415 $read = 0; 411 $read = 0;
@@ -442,12 +438,13 @@ class Poche
442 /** 438 /**
443 * import from Readability. poche needs a ./readability file 439 * import from Readability. poche needs a ./readability file
444 * @todo add the return value 440 * @todo add the return value
441 * @param string $targetFile the file used for importing
445 * @return boolean 442 * @return boolean
446 */ 443 */
447 private function importFromReadability() 444 private function importFromReadability($targetFile)
448 { 445 {
449 # TODO gestion des articles lus / favs 446 # TODO gestion des articles lus / favs
450 $str_data = file_get_contents("./readability"); 447 $str_data = file_get_contents($targetFile);
451 $data = json_decode($str_data,true); 448 $data = json_decode($str_data,true);
452 Tools::logm('starting import from Readability'); 449 Tools::logm('starting import from Readability');
453 $count = 0; 450 $count = 0;
@@ -499,15 +496,31 @@ class Poche
499 */ 496 */
500 public function import($from) 497 public function import($from)
501 { 498 {
502 if ($from == 'pocket') { 499 $providers = array(
503 return $this->importFromPocket(); 500 'pocket' => 'importFromPocket',
501 'readability' => 'importFromReadability',
502 'instapaper' => 'importFromInstapaper'
503 );
504
505 if (! isset($providers[$from])) {
506 $this->messages->add('e', _('Unknown import provider.'));
507 Tools::redirect();
504 } 508 }
505 else if ($from == 'readability') { 509
506 return $this->importFromReadability(); 510 $targetDefinition = 'IMPORT_' . strtoupper($from) . '_FILE';
511 $targetFile = constant($targetDefinition);
512
513 if (! defined($targetDefinition)) {
514 $this->messages->add('e', _('Incomplete inc/poche/define.inc.php file, please define "' . $targetDefinition . '".'));
515 Tools::redirect();
507 } 516 }
508 else if ($from == 'instapaper') { 517
509 return $this->importFromInstapaper(); 518 if (! file_exists($targetFile)) {
519 $this->messages->add('e', _('Could not find required "' . $targetFile . '" import file.'));
520 Tools::redirect();
510 } 521 }
522
523 $this->$providers[$from]($targetFile);
511 } 524 }
512 525
513 /** 526 /**