diff options
Diffstat (limited to 'inc/poche')
-rw-r--r-- | inc/poche/Database.class.php | 4 | ||||
-rwxr-xr-x[-rw-r--r--] | inc/poche/Poche.class.php | 56 |
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 | ||