aboutsummaryrefslogtreecommitdiffhomepage
path: root/inc/poche
diff options
context:
space:
mode:
Diffstat (limited to 'inc/poche')
-rw-r--r--inc/poche/Database.class.php4
-rwxr-xr-x[-rw-r--r--]inc/poche/Poche.class.php56
2 files changed, 49 insertions, 11 deletions
diff --git a/inc/poche/Database.class.php b/inc/poche/Database.class.php
index 3332b5a3..a366e866 100644
--- a/inc/poche/Database.class.php
+++ b/inc/poche/Database.class.php
@@ -345,7 +345,7 @@ class Database {
345 } 345 }
346 346
347 public function retrieveAllTags($user_id) { 347 public function retrieveAllTags($user_id) {
348 $sql = "SELECT tags.* FROM tags 348 $sql = "SELECT DISTINCT tags.* FROM tags
349 LEFT JOIN tags_entries ON tags_entries.tag_id=tags.id 349 LEFT JOIN tags_entries ON tags_entries.tag_id=tags.id
350 LEFT JOIN entries ON tags_entries.entry_id=entries.id 350 LEFT JOIN entries ON tags_entries.entry_id=entries.id
351 WHERE entries.user_id=?"; 351 WHERE entries.user_id=?";
@@ -357,7 +357,7 @@ class Database {
357 357
358 public function retrieveTag($id, $user_id) { 358 public function retrieveTag($id, $user_id) {
359 $tag = NULL; 359 $tag = NULL;
360 $sql = "SELECT tags.* FROM tags 360 $sql = "SELECT DISTINCT tags.* FROM tags
361 LEFT JOIN tags_entries ON tags_entries.tag_id=tags.id 361 LEFT JOIN tags_entries ON tags_entries.tag_id=tags.id
362 LEFT JOIN entries ON tags_entries.entry_id=entries.id 362 LEFT JOIN entries ON tags_entries.entry_id=entries.id
363 WHERE tags.id=? AND entries.user_id=?"; 363 WHERE tags.id=? AND entries.user_id=?";
diff --git a/inc/poche/Poche.class.php b/inc/poche/Poche.class.php
index 753bd7f0..fc9a455a 100644..100755
--- a/inc/poche/Poche.class.php
+++ b/inc/poche/Poche.class.php
@@ -348,17 +348,55 @@ class Poche
348 348
349 protected function getPageContent(Url $url) 349 protected function getPageContent(Url $url)
350 { 350 {
351 $options = array('http' => array('user_agent' => 'poche')); 351 // Saving and clearing context
352 if (isset($_SERVER['AUTH_TYPE']) && "basic" === strtolower($_SERVER['AUTH_TYPE'])) { 352 $REAL = array();
353 $options['http']['header'] = sprintf( 353 foreach( $GLOBALS as $key => $value ) {
354 "Authorization: Basic %s", 354 if( $key != "GLOBALS" && $key != "_SESSION" ) {
355 base64_encode( 355 $GLOBALS[$key] = array();
356 sprintf('%s:%s', $_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) 356 $REAL[$key] = $value;
357 ) 357 }
358 }
359 // Saving and clearing session
360 $REAL_SESSION = array();
361 foreach( $_SESSION as $key => $value ) {
362 $REAL_SESSION[$key] = $value;
363 unset($_SESSION[$key]);
364 }
365
366 // Running code in different context
367 $scope = function() {
368 extract( func_get_arg(1) );
369 $_GET = $_REQUEST = array(
370 "url" => $url->getUrl(),
371 "max" => 5,
372 "links" => "preserve",
373 "exc" => "",
374 "format" => "json",
375 "submit" => "Create Feed"
358 ); 376 );
377 ob_start();
378 require func_get_arg(0);
379 $json = ob_get_flush();
380 return $json;
381 };
382 $json = $scope( "inc/3rdparty/makefulltextfeed.php", array("url" => $url) );
383
384 // Clearing and restoring context
385 foreach( $GLOBALS as $key => $value ) {
386 if( $key != "GLOBALS" && $key != "_SESSION" ) {
387 unset($GLOBALS[$key]);
388 }
389 }
390 foreach( $REAL as $key => $value ) {
391 $GLOBALS[$key] = $value;
392 }
393 // Clearing and restoring session
394 foreach( $_SESSION as $key => $value ) {
395 unset($_SESSION[$key]);
396 }
397 foreach( $REAL_SESSION as $key => $value ) {
398 $_SESSION[$key] = $value;
359 } 399 }
360 $context = stream_context_create($options);
361 $json = file_get_contents(Tools::getPocheUrl() . '/inc/3rdparty/makefulltextfeed.php?url='.urlencode($url->getUrl()).'&max=5&links=preserve&exc=&format=json&submit=Create+Feed', false, $context);
362 return json_decode($json, true); 400 return json_decode($json, true);
363 } 401 }
364 402