protected function getPageContent(Url $url)
{
- $options = array('http' => array('user_agent' => 'poche'));
- if (isset($_SERVER['AUTH_TYPE']) && "basic" === strtolower($_SERVER['AUTH_TYPE'])) {
- $options['http']['header'] = sprintf(
- "Authorization: Basic %s",
- base64_encode(
- sprintf('%s:%s', $_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'])
- )
+ // Saving and clearing context
+ $REAL = array();
+ foreach( $GLOBALS as $key => $value ) {
+ if( $key != "GLOBALS" && $key != "_SESSION" ) {
+ $GLOBALS[$key] = array();
+ $REAL[$key] = $value;
+ }
+ }
+ // Saving and clearing session
+ $REAL_SESSION = array();
+ foreach( $_SESSION as $key => $value ) {
+ $REAL_SESSION[$key] = $value;
+ unset($_SESSION[$key]);
+ }
+
+ // Running code in different context
+ $scope = function() {
+ extract( func_get_arg(1) );
+ $_GET = $_REQUEST = array(
+ "url" => $url->getUrl(),
+ "max" => 5,
+ "links" => "preserve",
+ "exc" => "",
+ "format" => "json",
+ "submit" => "Create Feed"
);
+ ob_start();
+ require func_get_arg(0);
+ $json = ob_get_flush();
+ return $json;
+ };
+ $json = $scope( "inc/3rdparty/makefulltextfeed.php", array("url" => $url) );
+
+ // Clearing and restoring context
+ foreach( $GLOBALS as $key => $value ) {
+ if( $key != "GLOBALS" && $key != "_SESSION" ) {
+ unset($GLOBALS[$key]);
+ }
+ }
+ foreach( $REAL as $key => $value ) {
+ $GLOBALS[$key] = $value;
+ }
+ // Clearing and restoring session
+ foreach( $_SESSION as $key => $value ) {
+ unset($_SESSION[$key]);
+ }
+ foreach( $REAL_SESSION as $key => $value ) {
+ $_SESSION[$key] = $value;
}
- $context = stream_context_create($options);
- $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);
return json_decode($json, true);
}
case 'add_tag' :
$tags = explode(',', $_POST['value']);
$entry_id = $_POST['entry_id'];
+ $entry = $this->store->retrieveOneById($entry_id, $this->user->getId());
+ if (!$entry) {
+ $this->messages->add('e', _('Article not found!'));
+ Tools::logm('error : article not found');
+ Tools::redirect();
+ }
foreach($tags as $key => $tag_value) {
$value = trim($tag_value);
$tag = $this->store->retrieveTagByValue($value);
break;
case 'remove_tag' :
$tag_id = $_GET['tag_id'];
+ $entry = $this->store->retrieveOneById($id, $this->user->getId());
+ if (!$entry) {
+ $this->messages->add('e', _('Article not found!'));
+ Tools::logm('error : article not found');
+ Tools::redirect();
+ }
$this->store->removeTagForEntry($id, $tag_id);
Tools::redirect();
break;
break;
case 'edit-tags':
# tags
+ $entry = $this->store->retrieveOneById($id, $this->user->getId());
+ if (!$entry) {
+ $this->messages->add('e', _('Article not found!'));
+ Tools::logm('error : article not found');
+ Tools::redirect();
+ }
$tags = $this->store->retrieveTagsByEntry($id);
$tpl_vars = array(
'entry_id' => $id,
);
break;
case 'tag':
- $entries = $this->store->retrieveEntriesByTag($id);
- $tag = $this->store->retrieveTag($id);
+ $entries = $this->store->retrieveEntriesByTag($id, $this->user->getId());
+ $tag = $this->store->retrieveTag($id, $this->user->getId());
$tpl_vars = array(
'tag' => $tag,
'entries' => $entries,
break;
case 'tags':
$token = $this->user->getConfigValue('token');
- $tags = $this->store->retrieveAllTags();
+ $tags = $this->store->retrieveAllTags($this->user->getId());
$tpl_vars = array(
'token' => $token,
'user_id' => $this->user->getId(),
$feed->setChannelElement('author', 'wallabag');
if ($type == 'tag') {
- $entries = $this->store->retrieveEntriesByTag($tag_id);
+ $entries = $this->store->retrieveEntriesByTag($tag_id, $user_id);
}
else {
$entries = $this->store->getEntriesByView($type, $user_id);