mirror of
https://github.com/wallabag/wallabag.git
synced 2024-11-27 11:31:05 +00:00
code formatting changes: tabs replaced with spaces, some other small formatting enhancements
This commit is contained in:
commit
a8ef1f3f43
6 changed files with 688 additions and 649 deletions
353
inc/3rdparty/libraries/feedwriter/FeedItem.php
vendored
353
inc/3rdparty/libraries/feedwriter/FeedItem.php
vendored
|
@ -10,177 +10,188 @@
|
||||||
*/
|
*/
|
||||||
class FeedItem
|
class FeedItem
|
||||||
{
|
{
|
||||||
private $elements = array(); //Collection of feed elements
|
private $elements = array(); //Collection of feed elements
|
||||||
private $version;
|
private $version;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
*
|
*
|
||||||
* @param contant (RSS1/RSS2/ATOM) RSS2 is default.
|
* @param contant (RSS1/RSS2/ATOM) RSS2 is default.
|
||||||
*/
|
*/
|
||||||
function __construct($version = RSS2)
|
function __construct($version = RSS2)
|
||||||
{
|
{
|
||||||
$this->version = $version;
|
$this->version = $version;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set element (overwrites existing elements with $elementName)
|
* Set element (overwrites existing elements with $elementName)
|
||||||
*
|
*
|
||||||
* @access public
|
* @access public
|
||||||
* @param srting The tag name of an element
|
* @param srting The tag name of an element
|
||||||
* @param srting The content of tag
|
* @param srting The content of tag
|
||||||
* @param array Attributes(if any) in 'attrName' => 'attrValue' format
|
* @param array Attributes(if any) in 'attrName' => 'attrValue' format
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function setElement($elementName, $content, $attributes = null)
|
public function setElement($elementName, $content, $attributes = null)
|
||||||
{
|
{
|
||||||
if (isset($this->elements[$elementName])) {
|
if (isset($this->elements[$elementName])) {
|
||||||
unset($this->elements[$elementName]);
|
unset($this->elements[$elementName]);
|
||||||
}
|
}
|
||||||
$this->addElement($elementName, $content, $attributes);
|
$this->addElement($elementName, $content, $attributes);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add an element to elements array
|
* Add an element to elements array
|
||||||
*
|
*
|
||||||
* @access public
|
* @access public
|
||||||
* @param srting The tag name of an element
|
* @param srting The tag name of an element
|
||||||
* @param srting The content of tag
|
* @param srting The content of tag
|
||||||
* @param array Attributes(if any) in 'attrName' => 'attrValue' format
|
* @param array Attributes(if any) in 'attrName' => 'attrValue' format
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function addElement($elementName, $content, $attributes = null)
|
public function addElement($elementName, $content, $attributes = null)
|
||||||
{
|
{
|
||||||
$i = 0;
|
$i = 0;
|
||||||
if (isset($this->elements[$elementName])) {
|
if (isset($this->elements[$elementName])) {
|
||||||
$i = count($this->elements[$elementName]);
|
$i = count($this->elements[$elementName]);
|
||||||
} else {
|
} else {
|
||||||
$this->elements[$elementName] = array();
|
$this->elements[$elementName] = array();
|
||||||
}
|
}
|
||||||
$this->elements[$elementName][$i]['name'] = $elementName;
|
$this->elements[$elementName][$i]['name'] = $elementName;
|
||||||
$this->elements[$elementName][$i]['content'] = $content;
|
$this->elements[$elementName][$i]['content'] = $content;
|
||||||
$this->elements[$elementName][$i]['attributes'] = $attributes;
|
$this->elements[$elementName][$i]['attributes'] = $attributes;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set multiple feed elements from an array.
|
* Set multiple feed elements from an array.
|
||||||
* Elements which have attributes cannot be added by this method
|
* Elements which have attributes cannot be added by this method
|
||||||
*
|
*
|
||||||
* @access public
|
* @access public
|
||||||
* @param array array of elements in 'tagName' => 'tagContent' format.
|
* @param array array of elements in 'tagName' => 'tagContent' format.
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function addElementArray($elementArray)
|
public function addElementArray($elementArray)
|
||||||
{
|
{
|
||||||
if(! is_array($elementArray)) return;
|
if(! is_array($elementArray)) return;
|
||||||
foreach ($elementArray as $elementName => $content)
|
foreach ($elementArray as $elementName => $content)
|
||||||
{
|
{
|
||||||
$this->addElement($elementName, $content);
|
$this->addElement($elementName, $content);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the collection of elements in this feed item
|
* Return the collection of elements in this feed item
|
||||||
*
|
*
|
||||||
* @access public
|
* @access public
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
public function getElements()
|
public function getElements()
|
||||||
{
|
{
|
||||||
return $this->elements;
|
return $this->elements;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Wrapper functions ------------------------------------------------------
|
// Wrapper functions ------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the 'dscription' element of feed item
|
* Set the 'dscription' element of feed item
|
||||||
*
|
*
|
||||||
* @access public
|
* @access public
|
||||||
* @param string The content of 'description' element
|
* @param string The content of 'description' element
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function setDescription($description)
|
public function setDescription($description)
|
||||||
{
|
{
|
||||||
$tag = 'description';
|
$this->setElement('description', $description);
|
||||||
$this->setElement($tag, $description);
|
}
|
||||||
}
|
|
||||||
|
/**
|
||||||
/**
|
* @desc Set the 'title' element of feed item
|
||||||
* @desc Set the 'title' element of feed item
|
* @access public
|
||||||
* @access public
|
* @param string The content of 'title' element
|
||||||
* @param string The content of 'title' element
|
* @return void
|
||||||
* @return void
|
*/
|
||||||
*/
|
public function setTitle($title)
|
||||||
public function setTitle($title)
|
{
|
||||||
{
|
$this->setElement('title', $title);
|
||||||
$this->setElement('title', $title);
|
}
|
||||||
}
|
|
||||||
|
/**
|
||||||
/**
|
* Set the 'date' element of feed item
|
||||||
* Set the 'date' element of feed item
|
*
|
||||||
*
|
* @access public
|
||||||
* @access public
|
* @param string The content of 'date' element
|
||||||
* @param string The content of 'date' element
|
* @return void
|
||||||
* @return void
|
*/
|
||||||
*/
|
public function setDate($date)
|
||||||
public function setDate($date)
|
{
|
||||||
{
|
if(! is_numeric($date))
|
||||||
if(! is_numeric($date))
|
{
|
||||||
{
|
$date = strtotime($date);
|
||||||
$date = strtotime($date);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if($this->version == RSS2)
|
if($this->version == RSS2)
|
||||||
{
|
{
|
||||||
$tag = 'pubDate';
|
$tag = 'pubDate';
|
||||||
$value = date(DATE_RSS, $date);
|
$value = date(DATE_RSS, $date);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$tag = 'dc:date';
|
$tag = 'dc:date';
|
||||||
$value = date("Y-m-d", $date);
|
$value = date("Y-m-d", $date);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->setElement($tag, $value);
|
$this->setElement($tag, $value);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the 'link' element of feed item
|
* Set the 'link' element of feed item
|
||||||
*
|
*
|
||||||
* @access public
|
* @access public
|
||||||
* @param string The content of 'link' element
|
* @param string The content of 'link' element
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function setLink($link)
|
public function setLink($link)
|
||||||
{
|
{
|
||||||
if($this->version == RSS2 || $this->version == RSS1)
|
if($this->version == RSS2 || $this->version == RSS1)
|
||||||
{
|
{
|
||||||
$this->setElement('link', $link);
|
$this->setElement('link', $link);
|
||||||
$this->setElement('guid', $link);
|
$this->setElement('guid', $link);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$this->setElement('link','',array('href'=>$link));
|
$this->setElement('link','',array('href'=>$link));
|
||||||
$this->setElement('id', FeedWriter::uuid($link,'urn:uuid:'));
|
$this->setElement('id', FeedWriter::uuid($link,'urn:uuid:'));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the 'encloser' element of feed item
|
* Set the 'source' element of feed item
|
||||||
* For RSS 2.0 only
|
*
|
||||||
*
|
* @access public
|
||||||
* @access public
|
* @param string The content of 'source' element
|
||||||
* @param string The url attribute of encloser tag
|
* @return void
|
||||||
* @param string The length attribute of encloser tag
|
*/
|
||||||
* @param string The type attribute of encloser tag
|
public function setSource($link)
|
||||||
* @return void
|
{
|
||||||
*/
|
$this->setElement('source', $link);
|
||||||
public function setEncloser($url, $length, $type)
|
}
|
||||||
{
|
|
||||||
$attributes = array('url'=>$url, 'length'=>$length, 'type'=>$type);
|
/**
|
||||||
$this->setElement('enclosure','',$attributes);
|
* Set the 'encloser' element of feed item
|
||||||
}
|
* For RSS 2.0 only
|
||||||
|
*
|
||||||
|
* @access public
|
||||||
|
* @param string The url attribute of encloser tag
|
||||||
|
* @param string The length attribute of encloser tag
|
||||||
|
* @param string The type attribute of encloser tag
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function setEncloser($url, $length, $type)
|
||||||
|
{
|
||||||
|
$attributes = array('url'=>$url, 'length'=>$length, 'type'=>$type);
|
||||||
|
$this->setElement('enclosure','',$attributes);
|
||||||
|
}
|
||||||
|
|
||||||
} // end of class FeedItem
|
} // end of class FeedItem
|
||||||
?>
|
?>
|
773
inc/3rdparty/libraries/feedwriter/FeedWriter.php
vendored
773
inc/3rdparty/libraries/feedwriter/FeedWriter.php
vendored
|
@ -18,424 +18,423 @@ define('JSONP', 3, true);
|
||||||
*/
|
*/
|
||||||
class FeedWriter
|
class FeedWriter
|
||||||
{
|
{
|
||||||
private $self = null; // self URL - http://feed2.w3.org/docs/warning/MissingAtomSelfLink.html
|
private $self = null; // self URL - http://feed2.w3.org/docs/warning/MissingAtomSelfLink.html
|
||||||
private $hubs = array(); // PubSubHubbub hubs
|
private $hubs = array(); // PubSubHubbub hubs
|
||||||
private $channels = array(); // Collection of channel elements
|
private $channels = array(); // Collection of channel elements
|
||||||
private $items = array(); // Collection of items as object of FeedItem class.
|
private $items = array(); // Collection of items as object of FeedItem class.
|
||||||
private $data = array(); // Store some other version wise data
|
private $data = array(); // Store some other version wise data
|
||||||
private $CDATAEncoding = array(); // The tag names which have to encoded as CDATA
|
private $CDATAEncoding = array(); // The tag names which have to encoded as CDATA
|
||||||
private $xsl = null; // stylesheet to render RSS (used by Chrome)
|
private $xsl = null; // stylesheet to render RSS (used by Chrome)
|
||||||
private $json = null; // JSON object
|
private $json = null; // JSON object
|
||||||
|
|
||||||
private $version = null;
|
private $version = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
*
|
*
|
||||||
* @param constant the version constant (RSS2 or JSON).
|
* @param constant the version constant (RSS2 or JSON).
|
||||||
*/
|
*/
|
||||||
function __construct($version = RSS2)
|
function __construct($version = RSS2)
|
||||||
{
|
{
|
||||||
$this->version = $version;
|
$this->version = $version;
|
||||||
|
|
||||||
// Setting default value for assential channel elements
|
// Setting default value for assential channel elements
|
||||||
$this->channels['title'] = $version . ' Feed';
|
$this->channels['title'] = $version . ' Feed';
|
||||||
$this->channels['link'] = 'http://www.ajaxray.com/blog';
|
$this->channels['link'] = 'http://www.ajaxray.com/blog';
|
||||||
|
|
||||||
//Tag names to encode in CDATA
|
//Tag names to encode in CDATA
|
||||||
$this->CDATAEncoding = array('description', 'content:encoded', 'content', 'subtitle', 'summary');
|
$this->CDATAEncoding = array('description', 'content:encoded', 'content', 'subtitle', 'summary');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setFormat($format) {
|
public function setFormat($format) {
|
||||||
$this->version = $format;
|
$this->version = $format;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Start # public functions ---------------------------------------------
|
// Start # public functions ---------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set a channel element
|
* Set a channel element
|
||||||
* @access public
|
* @access public
|
||||||
* @param srting name of the channel tag
|
* @param srting name of the channel tag
|
||||||
* @param string content of the channel tag
|
* @param string content of the channel tag
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function setChannelElement($elementName, $content)
|
public function setChannelElement($elementName, $content)
|
||||||
{
|
{
|
||||||
$this->channels[$elementName] = $content ;
|
$this->channels[$elementName] = $content ;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set multiple channel elements from an array. Array elements
|
* Set multiple channel elements from an array. Array elements
|
||||||
* should be 'channelName' => 'channelContent' format.
|
* should be 'channelName' => 'channelContent' format.
|
||||||
*
|
*
|
||||||
* @access public
|
* @access public
|
||||||
* @param array array of channels
|
* @param array array of channels
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function setChannelElementsFromArray($elementArray)
|
public function setChannelElementsFromArray($elementArray)
|
||||||
{
|
{
|
||||||
if(! is_array($elementArray)) return;
|
if(! is_array($elementArray)) return;
|
||||||
foreach ($elementArray as $elementName => $content)
|
foreach ($elementArray as $elementName => $content)
|
||||||
{
|
{
|
||||||
$this->setChannelElement($elementName, $content);
|
$this->setChannelElement($elementName, $content);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Genarate the actual RSS/JSON file
|
* Genarate the actual RSS/JSON file
|
||||||
*
|
*
|
||||||
* @access public
|
* @access public
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function genarateFeed()
|
public function genarateFeed()
|
||||||
{
|
{
|
||||||
if ($this->version == RSS2) {
|
if ($this->version == RSS2) {
|
||||||
// header('Content-type: text/xml; charset=UTF-8');
|
// header('Content-type: text/xml; charset=UTF-8');
|
||||||
// this line prevents Chrome 20 from prompting download
|
// this line prevents Chrome 20 from prompting download
|
||||||
// used by Google: https://news.google.com/news/feeds?ned=us&topic=b&output=rss
|
// used by Google: https://news.google.com/news/feeds?ned=us&topic=b&output=rss
|
||||||
// header('X-content-type-options: nosniff');
|
// header('X-content-type-options: nosniff');
|
||||||
} elseif ($this->version == JSON) {
|
} elseif ($this->version == JSON) {
|
||||||
// header('Content-type: application/json; charset=UTF-8');
|
// header('Content-type: application/json; charset=UTF-8');
|
||||||
$this->json = new stdClass();
|
$this->json = new stdClass();
|
||||||
} elseif ($this->version == JSONP) {
|
} elseif ($this->version == JSONP) {
|
||||||
// header('Content-type: application/javascript; charset=UTF-8');
|
// header('Content-type: application/javascript; charset=UTF-8');
|
||||||
$this->json = new stdClass();
|
$this->json = new stdClass();
|
||||||
}
|
}
|
||||||
$this->printHead();
|
$this->printHead();
|
||||||
$this->printChannels();
|
$this->printChannels();
|
||||||
$this->printItems();
|
$this->printItems();
|
||||||
$this->printTale();
|
$this->printTale();
|
||||||
if ($this->version == JSON || $this->version == JSONP) {
|
if ($this->version == JSON || $this->version == JSONP) {
|
||||||
echo json_encode($this->json);
|
echo json_encode($this->json);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new FeedItem.
|
* Create a new FeedItem.
|
||||||
*
|
*
|
||||||
* @access public
|
* @access public
|
||||||
* @return object instance of FeedItem class
|
* @return object instance of FeedItem class
|
||||||
*/
|
*/
|
||||||
public function createNewItem()
|
public function createNewItem()
|
||||||
{
|
{
|
||||||
$Item = new FeedItem($this->version);
|
$Item = new FeedItem($this->version);
|
||||||
return $Item;
|
return $Item;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add a FeedItem to the main class
|
* Add a FeedItem to the main class
|
||||||
*
|
*
|
||||||
* @access public
|
* @access public
|
||||||
* @param object instance of FeedItem class
|
* @param object instance of FeedItem class
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function addItem($feedItem)
|
public function addItem($feedItem)
|
||||||
{
|
{
|
||||||
$this->items[] = $feedItem;
|
$this->items[] = $feedItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Wrapper functions -------------------------------------------------------------------
|
// Wrapper functions -------------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the 'title' channel element
|
* Set the 'title' channel element
|
||||||
*
|
*
|
||||||
* @access public
|
* @access public
|
||||||
* @param srting value of 'title' channel tag
|
* @param srting value of 'title' channel tag
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function setTitle($title)
|
public function setTitle($title)
|
||||||
{
|
{
|
||||||
$this->setChannelElement('title', $title);
|
$this->setChannelElement('title', $title);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add a hub to the channel element
|
* Add a hub to the channel element
|
||||||
*
|
*
|
||||||
* @access public
|
* @access public
|
||||||
* @param string URL
|
* @param string URL
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function addHub($hub)
|
public function addHub($hub)
|
||||||
{
|
{
|
||||||
$this->hubs[] = $hub;
|
$this->hubs[] = $hub;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set XSL URL
|
* Set XSL URL
|
||||||
*
|
*
|
||||||
* @access public
|
* @access public
|
||||||
* @param string URL
|
* @param string URL
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function setXsl($xsl)
|
public function setXsl($xsl)
|
||||||
{
|
{
|
||||||
$this->xsl = $xsl;
|
$this->xsl = $xsl;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set self URL
|
* Set self URL
|
||||||
*
|
*
|
||||||
* @access public
|
* @access public
|
||||||
* @param string URL
|
* @param string URL
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function setSelf($self)
|
public function setSelf($self)
|
||||||
{
|
{
|
||||||
$this->self = $self;
|
$this->self = $self;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the 'description' channel element
|
* Set the 'description' channel element
|
||||||
*
|
*
|
||||||
* @access public
|
* @access public
|
||||||
* @param srting value of 'description' channel tag
|
* @param srting value of 'description' channel tag
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function setDescription($desciption)
|
public function setDescription($description)
|
||||||
{
|
{
|
||||||
$tag = ($this->version == ATOM)? 'subtitle' : 'description';
|
$this->setChannelElement('description', $description);
|
||||||
$this->setChannelElement($tag, $desciption);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the 'link' channel element
|
* Set the 'link' channel element
|
||||||
*
|
*
|
||||||
* @access public
|
* @access public
|
||||||
* @param srting value of 'link' channel tag
|
* @param srting value of 'link' channel tag
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function setLink($link)
|
public function setLink($link)
|
||||||
{
|
{
|
||||||
$this->setChannelElement('link', $link);
|
$this->setChannelElement('link', $link);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the 'image' channel element
|
* Set the 'image' channel element
|
||||||
*
|
*
|
||||||
* @access public
|
* @access public
|
||||||
* @param srting title of image
|
* @param srting title of image
|
||||||
* @param srting link url of the imahe
|
* @param srting link url of the imahe
|
||||||
* @param srting path url of the image
|
* @param srting path url of the image
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function setImage($title, $link, $url)
|
public function setImage($title, $link, $url)
|
||||||
{
|
{
|
||||||
$this->setChannelElement('image', array('title'=>$title, 'link'=>$link, 'url'=>$url));
|
$this->setChannelElement('image', array('title'=>$title, 'link'=>$link, 'url'=>$url));
|
||||||
}
|
}
|
||||||
|
|
||||||
// End # public functions ----------------------------------------------
|
// End # public functions ----------------------------------------------
|
||||||
|
|
||||||
// Start # private functions ----------------------------------------------
|
// Start # private functions ----------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Prints the xml and rss namespace
|
* Prints the xml and rss namespace
|
||||||
*
|
*
|
||||||
* @access private
|
* @access private
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
private function printHead()
|
private function printHead()
|
||||||
{
|
{
|
||||||
if ($this->version == RSS2)
|
if ($this->version == RSS2)
|
||||||
{
|
{
|
||||||
$out = '<?xml version="1.0" encoding="utf-8"?>'."\n";
|
$out = '<?xml version="1.0" encoding="utf-8"?>'."\n";
|
||||||
if ($this->xsl) $out .= '<?xml-stylesheet type="text/xsl" href="'.htmlspecialchars($this->xsl).'"?>' . PHP_EOL;
|
if ($this->xsl) $out .= '<?xml-stylesheet type="text/xsl" href="'.htmlspecialchars($this->xsl).'"?>' . PHP_EOL;
|
||||||
$out .= '<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/">' . PHP_EOL;
|
$out .= '<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/">' . PHP_EOL;
|
||||||
echo $out;
|
echo $out;
|
||||||
}
|
}
|
||||||
elseif ($this->version == JSON || $this->version == JSONP)
|
elseif ($this->version == JSON || $this->version == JSONP)
|
||||||
{
|
{
|
||||||
$this->json->rss = array('@attributes' => array('version' => '2.0'));
|
$this->json->rss = array('@attributes' => array('version' => '2.0'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Closes the open tags at the end of file
|
* Closes the open tags at the end of file
|
||||||
*
|
*
|
||||||
* @access private
|
* @access private
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
private function printTale()
|
private function printTale()
|
||||||
{
|
{
|
||||||
if ($this->version == RSS2)
|
if ($this->version == RSS2)
|
||||||
{
|
{
|
||||||
echo '</channel>',PHP_EOL,'</rss>';
|
echo '</channel>',PHP_EOL,'</rss>';
|
||||||
}
|
}
|
||||||
// do nothing for JSON
|
// do nothing for JSON
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a single node as xml format
|
* Creates a single node as xml format
|
||||||
*
|
*
|
||||||
* @access private
|
* @access private
|
||||||
* @param string name of the tag
|
* @param string name of the tag
|
||||||
* @param mixed tag value as string or array of nested tags in 'tagName' => 'tagValue' format
|
* @param mixed tag value as string or array of nested tags in 'tagName' => 'tagValue' format
|
||||||
* @param array Attributes(if any) in 'attrName' => 'attrValue' format
|
* @param array Attributes(if any) in 'attrName' => 'attrValue' format
|
||||||
* @return string formatted xml tag
|
* @return string formatted xml tag
|
||||||
*/
|
*/
|
||||||
private function makeNode($tagName, $tagContent, $attributes = null)
|
private function makeNode($tagName, $tagContent, $attributes = null)
|
||||||
{
|
{
|
||||||
if ($this->version == RSS2)
|
if ($this->version == RSS2)
|
||||||
{
|
{
|
||||||
$nodeText = '';
|
$nodeText = '';
|
||||||
$attrText = '';
|
$attrText = '';
|
||||||
if (is_array($attributes))
|
if (is_array($attributes))
|
||||||
{
|
{
|
||||||
foreach ($attributes as $key => $value)
|
foreach ($attributes as $key => $value)
|
||||||
{
|
{
|
||||||
$attrText .= " $key=\"$value\" ";
|
$attrText .= " $key=\"$value\" ";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$nodeText .= "<{$tagName}{$attrText}>";
|
$nodeText .= "<{$tagName}{$attrText}>";
|
||||||
if (is_array($tagContent))
|
if (is_array($tagContent))
|
||||||
{
|
{
|
||||||
foreach ($tagContent as $key => $value)
|
foreach ($tagContent as $key => $value)
|
||||||
{
|
{
|
||||||
$nodeText .= $this->makeNode($key, $value);
|
$nodeText .= $this->makeNode($key, $value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//$nodeText .= (in_array($tagName, $this->CDATAEncoding))? $tagContent : htmlentities($tagContent);
|
//$nodeText .= (in_array($tagName, $this->CDATAEncoding))? $tagContent : htmlentities($tagContent);
|
||||||
$nodeText .= htmlspecialchars($tagContent);
|
$nodeText .= htmlspecialchars($tagContent);
|
||||||
}
|
}
|
||||||
//$nodeText .= (in_array($tagName, $this->CDATAEncoding))? "]]></$tagName>" : "</$tagName>";
|
//$nodeText .= (in_array($tagName, $this->CDATAEncoding))? "]]></$tagName>" : "</$tagName>";
|
||||||
$nodeText .= "</$tagName>";
|
$nodeText .= "</$tagName>";
|
||||||
return $nodeText . PHP_EOL;
|
return $nodeText . PHP_EOL;
|
||||||
}
|
}
|
||||||
elseif ($this->version == JSON || $this->version == JSONP)
|
elseif ($this->version == JSON || $this->version == JSONP)
|
||||||
{
|
{
|
||||||
$tagName = (string)$tagName;
|
$tagName = (string)$tagName;
|
||||||
$tagName = strtr($tagName, ':', '_');
|
$tagName = strtr($tagName, ':', '_');
|
||||||
$node = null;
|
$node = null;
|
||||||
if (!$tagContent && is_array($attributes) && count($attributes))
|
if (!$tagContent && is_array($attributes) && count($attributes))
|
||||||
{
|
{
|
||||||
$node = array('@attributes' => $this->json_keys($attributes));
|
$node = array('@attributes' => $this->json_keys($attributes));
|
||||||
} else {
|
} else {
|
||||||
if (is_array($tagContent)) {
|
if (is_array($tagContent)) {
|
||||||
$node = $this->json_keys($tagContent);
|
$node = $this->json_keys($tagContent);
|
||||||
} else {
|
} else {
|
||||||
$node = $tagContent;
|
$node = $tagContent;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return $node;
|
return $node;
|
||||||
}
|
}
|
||||||
return ''; // should not get here
|
return ''; // should not get here
|
||||||
}
|
}
|
||||||
|
|
||||||
private function json_keys(array $array) {
|
private function json_keys(array $array) {
|
||||||
$new = array();
|
$new = array();
|
||||||
foreach ($array as $key => $val) {
|
foreach ($array as $key => $val) {
|
||||||
if (is_string($key)) $key = strtr($key, ':', '_');
|
if (is_string($key)) $key = strtr($key, ':', '_');
|
||||||
if (is_array($val)) {
|
if (is_array($val)) {
|
||||||
$new[$key] = $this->json_keys($val);
|
$new[$key] = $this->json_keys($val);
|
||||||
} else {
|
} else {
|
||||||
$new[$key] = $val;
|
$new[$key] = $val;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return $new;
|
return $new;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @desc Print channels
|
* @desc Print channels
|
||||||
* @access private
|
* @access private
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
private function printChannels()
|
private function printChannels()
|
||||||
{
|
{
|
||||||
//Start channel tag
|
//Start channel tag
|
||||||
if ($this->version == RSS2) {
|
if ($this->version == RSS2) {
|
||||||
echo '<channel>' . PHP_EOL;
|
echo '<channel>' . PHP_EOL;
|
||||||
// add hubs
|
// add hubs
|
||||||
foreach ($this->hubs as $hub) {
|
foreach ($this->hubs as $hub) {
|
||||||
//echo $this->makeNode('link', '', array('rel'=>'hub', 'href'=>$hub, 'xmlns'=>'http://www.w3.org/2005/Atom'));
|
//echo $this->makeNode('link', '', array('rel'=>'hub', 'href'=>$hub, 'xmlns'=>'http://www.w3.org/2005/Atom'));
|
||||||
echo '<link rel="hub" href="'.htmlspecialchars($hub).'" xmlns="http://www.w3.org/2005/Atom" />' . PHP_EOL;
|
echo '<link rel="hub" href="'.htmlspecialchars($hub).'" xmlns="http://www.w3.org/2005/Atom" />' . PHP_EOL;
|
||||||
}
|
}
|
||||||
// add self
|
// add self
|
||||||
if (isset($this->self)) {
|
if (isset($this->self)) {
|
||||||
//echo $this->makeNode('link', '', array('rel'=>'self', 'href'=>$this->self, 'xmlns'=>'http://www.w3.org/2005/Atom'));
|
//echo $this->makeNode('link', '', array('rel'=>'self', 'href'=>$this->self, 'xmlns'=>'http://www.w3.org/2005/Atom'));
|
||||||
echo '<link rel="self" href="'.htmlspecialchars($this->self).'" xmlns="http://www.w3.org/2005/Atom" />' . PHP_EOL;
|
echo '<link rel="self" href="'.htmlspecialchars($this->self).'" xmlns="http://www.w3.org/2005/Atom" />' . PHP_EOL;
|
||||||
}
|
}
|
||||||
//Print Items of channel
|
//Print Items of channel
|
||||||
foreach ($this->channels as $key => $value)
|
foreach ($this->channels as $key => $value)
|
||||||
{
|
{
|
||||||
echo $this->makeNode($key, $value);
|
echo $this->makeNode($key, $value);
|
||||||
}
|
}
|
||||||
} elseif ($this->version == JSON || $this->version == JSONP) {
|
} elseif ($this->version == JSON || $this->version == JSONP) {
|
||||||
$this->json->rss['channel'] = (object)$this->json_keys($this->channels);
|
$this->json->rss['channel'] = (object)$this->json_keys($this->channels);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Prints formatted feed items
|
* Prints formatted feed items
|
||||||
*
|
*
|
||||||
* @access private
|
* @access private
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
private function printItems()
|
private function printItems()
|
||||||
{
|
{
|
||||||
foreach ($this->items as $item) {
|
foreach ($this->items as $item) {
|
||||||
$itemElements = $item->getElements();
|
$itemElements = $item->getElements();
|
||||||
|
|
||||||
echo $this->startItem();
|
echo $this->startItem();
|
||||||
|
|
||||||
if ($this->version == JSON || $this->version == JSONP) {
|
if ($this->version == JSON || $this->version == JSONP) {
|
||||||
$json_item = array();
|
$json_item = array();
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($itemElements as $thisElement) {
|
foreach ($itemElements as $thisElement) {
|
||||||
foreach ($thisElement as $instance) {
|
foreach ($thisElement as $instance) {
|
||||||
if ($this->version == RSS2) {
|
if ($this->version == RSS2) {
|
||||||
echo $this->makeNode($instance['name'], $instance['content'], $instance['attributes']);
|
echo $this->makeNode($instance['name'], $instance['content'], $instance['attributes']);
|
||||||
} elseif ($this->version == JSON || $this->version == JSONP) {
|
} elseif ($this->version == JSON || $this->version == JSONP) {
|
||||||
$_json_node = $this->makeNode($instance['name'], $instance['content'], $instance['attributes']);
|
$_json_node = $this->makeNode($instance['name'], $instance['content'], $instance['attributes']);
|
||||||
if (count($thisElement) > 1) {
|
if (count($thisElement) > 1) {
|
||||||
$json_item[strtr($instance['name'], ':', '_')][] = $_json_node;
|
$json_item[strtr($instance['name'], ':', '_')][] = $_json_node;
|
||||||
} else {
|
} else {
|
||||||
$json_item[strtr($instance['name'], ':', '_')] = $_json_node;
|
$json_item[strtr($instance['name'], ':', '_')] = $_json_node;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
echo $this->endItem();
|
echo $this->endItem();
|
||||||
if ($this->version == JSON || $this->version == JSONP) {
|
if ($this->version == JSON || $this->version == JSONP) {
|
||||||
if (count($this->items) > 1) {
|
if (count($this->items) > 1) {
|
||||||
$this->json->rss['channel']->item[] = $json_item;
|
$this->json->rss['channel']->item[] = $json_item;
|
||||||
} else {
|
} else {
|
||||||
$this->json->rss['channel']->item = $json_item;
|
$this->json->rss['channel']->item = $json_item;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Make the starting tag of channels
|
* Make the starting tag of channels
|
||||||
*
|
*
|
||||||
* @access private
|
* @access private
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
private function startItem()
|
private function startItem()
|
||||||
{
|
{
|
||||||
if ($this->version == RSS2)
|
if ($this->version == RSS2)
|
||||||
{
|
{
|
||||||
echo '<item>' . PHP_EOL;
|
echo '<item>' . PHP_EOL;
|
||||||
}
|
}
|
||||||
// nothing for JSON
|
// nothing for JSON
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Closes feed item tag
|
* Closes feed item tag
|
||||||
*
|
*
|
||||||
* @access private
|
* @access private
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
private function endItem()
|
private function endItem()
|
||||||
{
|
{
|
||||||
if ($this->version == RSS2)
|
if ($this->version == RSS2)
|
||||||
{
|
{
|
||||||
echo '</item>' . PHP_EOL;
|
echo '</item>' . PHP_EOL;
|
||||||
}
|
}
|
||||||
// nothing for JSON
|
// nothing for JSON
|
||||||
}
|
}
|
||||||
|
|
||||||
// End # private functions ----------------------------------------------
|
// End # private functions ----------------------------------------------
|
||||||
}
|
}
|
|
@ -846,13 +846,13 @@ class Poche
|
||||||
foreach ($html->find($list) as $ul) {
|
foreach ($html->find($list) as $ul) {
|
||||||
foreach ($ul->find('li') as $li) {
|
foreach ($ul->find('li') as $li) {
|
||||||
$tmpEntry = array();
|
$tmpEntry = array();
|
||||||
$a = $li->find('a');
|
$a = $li->find('a');
|
||||||
$tmpEntry['url'] = $a[0]->href;
|
$tmpEntry['url'] = $a[0]->href;
|
||||||
$tmpEntry['tags'] = $a[0]->tags;
|
$tmpEntry['tags'] = $a[0]->tags;
|
||||||
$tmpEntry['is_read'] = $read;
|
$tmpEntry['is_read'] = $read;
|
||||||
if ($tmpEntry['url']) {
|
if ($tmpEntry['url']) {
|
||||||
$data[] = $tmpEntry;
|
$data[] = $tmpEntry;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
# the second <ol/ul> is for read links
|
# the second <ol/ul> is for read links
|
||||||
$read = ((sizeof($data) && $read)?0:1);
|
$read = ((sizeof($data) && $read)?0:1);
|
||||||
|
@ -943,16 +943,15 @@ class Poche
|
||||||
* export poche entries in json
|
* export poche entries in json
|
||||||
* @return json all poche entries
|
* @return json all poche entries
|
||||||
*/
|
*/
|
||||||
public function export()
|
public function export() {
|
||||||
{
|
$filename = "wallabag-export-".$this->user->getId()."-".date("Y-m-d").".json";
|
||||||
$filename = "wallabag-export-".$this->user->getId()."-".date("Y-m-d").".json";
|
header('Content-Disposition: attachment; filename='.$filename);
|
||||||
header('Content-Disposition: attachment; filename='.$filename);
|
|
||||||
|
|
||||||
$entries = $this->store->retrieveAll($this->user->getId());
|
$entries = $this->store->retrieveAll($this->user->getId());
|
||||||
echo $this->tpl->render('export.twig', array(
|
echo $this->tpl->render('export.twig', array(
|
||||||
'export' => Tools::renderJson($entries),
|
'export' => Tools::renderJson($entries),
|
||||||
));
|
));
|
||||||
Tools::logm('export view');
|
Tools::logm('export view');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -960,43 +959,42 @@ class Poche
|
||||||
* @param string $which 'prod' or 'dev'
|
* @param string $which 'prod' or 'dev'
|
||||||
* @return string latest $which version
|
* @return string latest $which version
|
||||||
*/
|
*/
|
||||||
private function getPocheVersion($which = 'prod')
|
private function getPocheVersion($which = 'prod') {
|
||||||
{
|
$cache_file = CACHE . '/' . $which;
|
||||||
$cache_file = CACHE . '/' . $which;
|
$check_time = time();
|
||||||
$check_time = time();
|
|
||||||
|
|
||||||
# checks if the cached version file exists
|
# checks if the cached version file exists
|
||||||
if (file_exists($cache_file) && (filemtime($cache_file) > (time() - 86400 ))) {
|
if (file_exists($cache_file) && (filemtime($cache_file) > (time() - 86400 ))) {
|
||||||
$version = file_get_contents($cache_file);
|
$version = file_get_contents($cache_file);
|
||||||
$check_time = filemtime($cache_file);
|
$check_time = filemtime($cache_file);
|
||||||
} else {
|
} else {
|
||||||
$version = file_get_contents('http://static.wallabag.org/versions/' . $which);
|
$version = file_get_contents('http://static.wallabag.org/versions/' . $which);
|
||||||
file_put_contents($cache_file, $version, LOCK_EX);
|
file_put_contents($cache_file, $version, LOCK_EX);
|
||||||
}
|
}
|
||||||
return array($version, $check_time);
|
return array($version, $check_time);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function generateToken()
|
public function generateToken()
|
||||||
{
|
{
|
||||||
if (ini_get('open_basedir') === '') {
|
if (ini_get('open_basedir') === '') {
|
||||||
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
|
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
|
||||||
echo 'This is a server using Windows!';
|
echo 'This is a server using Windows!';
|
||||||
// alternative to /dev/urandom for Windows
|
// alternative to /dev/urandom for Windows
|
||||||
$token = substr(base64_encode(uniqid(mt_rand(), true)), 0, 20);
|
$token = substr(base64_encode(uniqid(mt_rand(), true)), 0, 20);
|
||||||
} else {
|
} else {
|
||||||
$token = substr(base64_encode(file_get_contents('/dev/urandom', false, null, 0, 20)), 0, 15);
|
$token = substr(base64_encode(file_get_contents('/dev/urandom', false, null, 0, 20)), 0, 15);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$token = substr(base64_encode(uniqid(mt_rand(), true)), 0, 20);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else {
|
|
||||||
$token = substr(base64_encode(uniqid(mt_rand(), true)), 0, 20);
|
|
||||||
}
|
|
||||||
|
|
||||||
$token = str_replace('+', '', $token);
|
$token = str_replace('+', '', $token);
|
||||||
$this->store->updateUserConfig($this->user->getId(), 'token', $token);
|
$this->store->updateUserConfig($this->user->getId(), 'token', $token);
|
||||||
$currentConfig = $_SESSION['poche_user']->config;
|
$currentConfig = $_SESSION['poche_user']->config;
|
||||||
$currentConfig['token'] = $token;
|
$currentConfig['token'] = $token;
|
||||||
$_SESSION['poche_user']->setConfig($currentConfig);
|
$_SESSION['poche_user']->setConfig($currentConfig);
|
||||||
Tools::redirect();
|
Tools::redirect();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function generateFeeds($token, $user_id, $tag_id, $type = 'home')
|
public function generateFeeds($token, $user_id, $tag_id, $type = 'home')
|
||||||
|
@ -1032,6 +1030,7 @@ class Poche
|
||||||
foreach ($entries as $entry) {
|
foreach ($entries as $entry) {
|
||||||
$newItem = $feed->createNewItem();
|
$newItem = $feed->createNewItem();
|
||||||
$newItem->setTitle($entry['title']);
|
$newItem->setTitle($entry['title']);
|
||||||
|
$newItem->setSource(Tools::getPocheUrl() . '?view=view&id=' . $entry['id']);
|
||||||
$newItem->setLink($entry['url']);
|
$newItem->setLink($entry['url']);
|
||||||
$newItem->setDate(time());
|
$newItem->setDate(time());
|
||||||
$newItem->setDescription($entry['content']);
|
$newItem->setDescription($entry['content']);
|
||||||
|
|
|
@ -59,8 +59,10 @@ class Tools
|
||||||
return $scriptname;
|
return $scriptname;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$host = (isset($_SERVER['HTTP_X_FORWARDED_HOST']) ? $_SERVER['HTTP_X_FORWARDED_HOST'] : (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME']));
|
||||||
|
|
||||||
return 'http' . ($https ? 's' : '') . '://'
|
return 'http' . ($https ? 's' : '') . '://'
|
||||||
. $_SERVER["HTTP_HOST"] . $serverport . $scriptname;
|
. $host . $serverport . $scriptname;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function redirect($url = '')
|
public static function redirect($url = '')
|
||||||
|
|
BIN
locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.mo
Normal file → Executable file
BIN
locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.mo
Normal file → Executable file
Binary file not shown.
116
locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.po
Normal file → Executable file
116
locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.po
Normal file → Executable file
|
@ -1,26 +1,25 @@
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: \n"
|
"Project-Id-Version: wallabag 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2014-02-25 18:33+0300\n"
|
"POT-Creation-Date: 2014-02-25 18:33+0300\n"
|
||||||
"PO-Revision-Date: \n"
|
"PO-Revision-Date: \n"
|
||||||
"Last-Translator: Maryana <mariroz@mr.lviv.ua>\n"
|
"Last-Translator: Gilles WITTEZAELE <gilles.wittezaele@laposte.net>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
"Language: \n"
|
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Poedit-KeywordsList: _;gettext;gettext_noop\n"
|
"X-Poedit-KeywordsList: _;gettext;gettext_noop\n"
|
||||||
"X-Poedit-Basepath: .\n"
|
"X-Poedit-SourceCharset: UTF-8\n"
|
||||||
"X-Poedit-SourceCharset: utf-8\n"
|
"X-Generator: Poedit 1.6.4\n"
|
||||||
"X-Generator: Poedit 1.5.7\n"
|
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||||
"X-Poedit-SearchPath-0: /home/mariroz/_DEV/web/wallabag/wallabag-master-testing\n"
|
"Language: fr_FR\n"
|
||||||
|
|
||||||
msgid "wallabag, a read it later open source system"
|
msgid "wallabag, a read it later open source system"
|
||||||
msgstr "wallabag, un système open source de lecture différé"
|
msgstr "wallabag, un système open source de lecture différé"
|
||||||
|
|
||||||
msgid "login failed: user doesn't exist"
|
msgid "login failed: user doesn't exist"
|
||||||
msgstr "identification échouée : l'utilisateur n'existe pas"
|
msgstr "échec de l'identification : cet utilisateur n'existe pas"
|
||||||
|
|
||||||
msgid "return home"
|
msgid "return home"
|
||||||
msgstr "retour à l'accueil"
|
msgstr "retour à l'accueil"
|
||||||
|
@ -32,13 +31,13 @@ msgid "Saving articles"
|
||||||
msgstr "Sauvegarde des articles"
|
msgstr "Sauvegarde des articles"
|
||||||
|
|
||||||
msgid "There are several ways to save an article:"
|
msgid "There are several ways to save an article:"
|
||||||
msgstr "Il y a plusieurs façons de sauver un article :"
|
msgstr "Il y a plusieurs façons d'enregistrer un article :"
|
||||||
|
|
||||||
msgid "read the documentation"
|
msgid "read the documentation"
|
||||||
msgstr "lisez la documentation"
|
msgstr "lisez la documentation"
|
||||||
|
|
||||||
msgid "download the extension"
|
msgid "download the extension"
|
||||||
msgstr "télécharger l'extension"
|
msgstr "téléchargez l'extension"
|
||||||
|
|
||||||
msgid "via F-Droid"
|
msgid "via F-Droid"
|
||||||
msgstr "via F-Droid"
|
msgstr "via F-Droid"
|
||||||
|
@ -50,7 +49,7 @@ msgid "via Google Play"
|
||||||
msgstr "via Google PlayStore"
|
msgstr "via Google PlayStore"
|
||||||
|
|
||||||
msgid "download the application"
|
msgid "download the application"
|
||||||
msgstr "télécharger l'application"
|
msgstr "téléchargez l'application"
|
||||||
|
|
||||||
msgid "By filling this field"
|
msgid "By filling this field"
|
||||||
msgstr "En remplissant ce champ"
|
msgstr "En remplissant ce champ"
|
||||||
|
@ -85,8 +84,13 @@ msgstr "Une version de développement plus récente est disponible."
|
||||||
msgid "Feeds"
|
msgid "Feeds"
|
||||||
msgstr "Flux"
|
msgstr "Flux"
|
||||||
|
|
||||||
msgid "Your feed token is currently empty and must first be generated to enable feeds. Click <a href='?feed&action=generate'>here to generate it</a>."
|
msgid ""
|
||||||
msgstr "Votre jeton de flux est actuellement vide doit d'abord être généré pour activer les flux. Cliquez <a href='?feed&action=generate'>ici</a> pour le générer."
|
"Your feed token is currently empty and must first be generated to enable "
|
||||||
|
"feeds. Click <a href='?feed&action=generate'>here to generate it</a>."
|
||||||
|
msgstr ""
|
||||||
|
"Votre jeton de flux est actuellement vide et doit d'abord être généré pour "
|
||||||
|
"activer les flux. Cliquez <a href='?feed&action=generate'>ici</a> pour "
|
||||||
|
"le générer."
|
||||||
|
|
||||||
msgid "Unread feed"
|
msgid "Unread feed"
|
||||||
msgstr "Flux des non lus"
|
msgstr "Flux des non lus"
|
||||||
|
@ -103,8 +107,12 @@ msgstr "Votre jeton :"
|
||||||
msgid "Your user id:"
|
msgid "Your user id:"
|
||||||
msgstr "Votre ID utilisateur :"
|
msgstr "Votre ID utilisateur :"
|
||||||
|
|
||||||
msgid "You can regenerate your token: <a href='?feed&action=generate'>generate!</a>."
|
msgid ""
|
||||||
msgstr "Vous pouvez regénérer votre jeton : <a href='?feed&action=generate'>génération !</a>."
|
"You can regenerate your token: <a href='?feed&action=generate'>generate!"
|
||||||
|
"</a>."
|
||||||
|
msgstr ""
|
||||||
|
"Vous pouvez regénérer votre jeton : <a href='?feed&"
|
||||||
|
"action=generate'>génération !</a>."
|
||||||
|
|
||||||
msgid "Change your theme"
|
msgid "Change your theme"
|
||||||
msgstr "Changer votre thème"
|
msgstr "Changer votre thème"
|
||||||
|
@ -136,8 +144,11 @@ msgstr "Répétez votre nouveau mot de passe :"
|
||||||
msgid "Import"
|
msgid "Import"
|
||||||
msgstr "Importer"
|
msgstr "Importer"
|
||||||
|
|
||||||
msgid "Please execute the import script locally as it can take a very long time."
|
msgid ""
|
||||||
msgstr "Merci d'exécuter l'import en local car cela peut prendre du temps."
|
"Please execute the import script locally as it can take a very long time."
|
||||||
|
msgstr ""
|
||||||
|
"Merci d'exécuter le script d'importation en local car cela peut prendre du "
|
||||||
|
"temps."
|
||||||
|
|
||||||
msgid "More info in the official documentation:"
|
msgid "More info in the official documentation:"
|
||||||
msgstr "Plus d'infos dans la documentation officielle :"
|
msgstr "Plus d'infos dans la documentation officielle :"
|
||||||
|
@ -150,13 +161,13 @@ msgid "(you must have a %s file on your server)"
|
||||||
msgstr "(le fichier %s doit être présent sur le serveur)"
|
msgstr "(le fichier %s doit être présent sur le serveur)"
|
||||||
|
|
||||||
msgid "Import from Readability"
|
msgid "Import from Readability"
|
||||||
msgstr "Import depuis Readability"
|
msgstr "Importer depuis Readability"
|
||||||
|
|
||||||
msgid "Import from Instapaper"
|
msgid "Import from Instapaper"
|
||||||
msgstr "Import depuis Instapaper"
|
msgstr "Importer depuis Instapaper"
|
||||||
|
|
||||||
msgid "Import from wallabag"
|
msgid "Import from wallabag"
|
||||||
msgstr "Import depuis wallabag"
|
msgstr "Importer depuis wallabag"
|
||||||
|
|
||||||
msgid "Export your wallabag data"
|
msgid "Export your wallabag data"
|
||||||
msgstr "Exporter vos données de wallabag"
|
msgstr "Exporter vos données de wallabag"
|
||||||
|
@ -185,8 +196,12 @@ msgstr "retourner à l'article"
|
||||||
msgid "plop"
|
msgid "plop"
|
||||||
msgstr "plop"
|
msgstr "plop"
|
||||||
|
|
||||||
msgid "You can <a href='wallabag_compatibility_test.php'>check your configuration here</a>."
|
msgid ""
|
||||||
msgstr "Vous pouvez vérifier votre configuration <a href='wallabag_compatibility_test.php'>ici</a>."
|
"You can <a href='wallabag_compatibility_test.php'>check your configuration "
|
||||||
|
"here</a>."
|
||||||
|
msgstr ""
|
||||||
|
"Vous pouvez vérifier votre configuration <a "
|
||||||
|
"href='wallabag_compatibility_test.php'>ici</a>."
|
||||||
|
|
||||||
msgid "favoris"
|
msgid "favoris"
|
||||||
msgstr "favoris"
|
msgstr "favoris"
|
||||||
|
@ -248,8 +263,14 @@ msgstr "installation"
|
||||||
msgid "install your wallabag"
|
msgid "install your wallabag"
|
||||||
msgstr "installez votre wallabag"
|
msgstr "installez votre wallabag"
|
||||||
|
|
||||||
msgid "wallabag is still not installed. Please fill the below form to install it. Don't hesitate to <a href='http://doc.wallabag.org/'>read the documentation on wallabag website</a>."
|
msgid ""
|
||||||
msgstr "wallabag n'est pas encore installé. Merci de remplir le formulaire suivant pour l'installer. N'hésitez pas à <a href='http://doc.wallabag.org'>lire la documentation sur le site de wallabag</a>."
|
"wallabag is still not installed. Please fill the below form to install it. "
|
||||||
|
"Don't hesitate to <a href='http://doc.wallabag.org/'>read the documentation "
|
||||||
|
"on wallabag website</a>."
|
||||||
|
msgstr ""
|
||||||
|
"wallabag n'est pas encore installé. Merci de remplir le formulaire suivant "
|
||||||
|
"pour l'installer. N'hésitez pas à <a href='http://doc.wallabag.org'>lire la "
|
||||||
|
"documentation sur le site de wallabag</a>."
|
||||||
|
|
||||||
msgid "Login"
|
msgid "Login"
|
||||||
msgstr "Nom d'utilisateur"
|
msgstr "Nom d'utilisateur"
|
||||||
|
@ -267,7 +288,8 @@ msgid "Login to wallabag"
|
||||||
msgstr "Se connecter à wallabag"
|
msgstr "Se connecter à wallabag"
|
||||||
|
|
||||||
msgid "you are in demo mode, some features may be disabled."
|
msgid "you are in demo mode, some features may be disabled."
|
||||||
msgstr "vous êtes en mode démo, certaines fonctionnalités peuvent être désactivées."
|
msgstr ""
|
||||||
|
"vous êtes en mode démo, certaines fonctionnalités peuvent être désactivées."
|
||||||
|
|
||||||
msgid "Username"
|
msgid "Username"
|
||||||
msgstr "Nom d'utilisateur"
|
msgstr "Nom d'utilisateur"
|
||||||
|
@ -318,10 +340,10 @@ msgid "tags:"
|
||||||
msgstr "tags :"
|
msgstr "tags :"
|
||||||
|
|
||||||
msgid "Edit tags"
|
msgid "Edit tags"
|
||||||
msgstr "Editer les tags"
|
msgstr "Modifier les tags"
|
||||||
|
|
||||||
msgid "save link!"
|
msgid "save link!"
|
||||||
msgstr "sauver le lien !"
|
msgstr "enregistrer le lien !"
|
||||||
|
|
||||||
msgid "powered by"
|
msgid "powered by"
|
||||||
msgstr "propulsé par"
|
msgstr "propulsé par"
|
||||||
|
@ -360,7 +382,7 @@ msgid "tweet"
|
||||||
msgstr "tweet"
|
msgstr "tweet"
|
||||||
|
|
||||||
msgid "email"
|
msgid "email"
|
||||||
msgstr "ee-mail"
|
msgstr "e-mail"
|
||||||
|
|
||||||
msgid "this article appears wrong?"
|
msgid "this article appears wrong?"
|
||||||
msgstr "cet article s'affiche mal ?"
|
msgstr "cet article s'affiche mal ?"
|
||||||
|
@ -369,7 +391,7 @@ msgid "No link available here!"
|
||||||
msgstr "Aucun lien n'est disponible ici !"
|
msgstr "Aucun lien n'est disponible ici !"
|
||||||
|
|
||||||
msgid "Poching a link"
|
msgid "Poching a link"
|
||||||
msgstr "Sauver un lien"
|
msgstr "Enregistrer un lien"
|
||||||
|
|
||||||
msgid "by filling this field"
|
msgid "by filling this field"
|
||||||
msgstr "en remplissant ce champ"
|
msgstr "en remplissant ce champ"
|
||||||
|
@ -396,19 +418,21 @@ msgid "a more recent development version is available."
|
||||||
msgstr "une version de développement plus récente est disponible."
|
msgstr "une version de développement plus récente est disponible."
|
||||||
|
|
||||||
msgid "Please execute the import script locally, it can take a very long time."
|
msgid "Please execute the import script locally, it can take a very long time."
|
||||||
msgstr "Merci d'exécuter l'import en local car cela peut prendre du temps."
|
msgstr ""
|
||||||
|
"Merci d'exécuter le script d'importation en local car cela peut prendre du "
|
||||||
|
"temps."
|
||||||
|
|
||||||
msgid "More infos in the official doc:"
|
msgid "More infos in the official doc:"
|
||||||
msgstr "Plus d'infos dans la documentation officielle :"
|
msgstr "Plus d'infos dans la documentation officielle :"
|
||||||
|
|
||||||
msgid "import from Pocket"
|
msgid "import from Pocket"
|
||||||
msgstr "import depuis Pocket"
|
msgstr "importation depuis Pocket"
|
||||||
|
|
||||||
msgid "import from Readability"
|
msgid "import from Readability"
|
||||||
msgstr "import depuis Readability"
|
msgstr "importation depuis Readability"
|
||||||
|
|
||||||
msgid "import from Instapaper"
|
msgid "import from Instapaper"
|
||||||
msgstr "import depuis Instapaper"
|
msgstr "importation depuis Instapaper"
|
||||||
|
|
||||||
msgid "estimated reading time :"
|
msgid "estimated reading time :"
|
||||||
msgstr "temps de lecture estimé :"
|
msgstr "temps de lecture estimé :"
|
||||||
|
@ -449,8 +473,12 @@ msgstr "en mode démo, vous ne pouvez pas mettre à jour le mot de passe"
|
||||||
msgid "your password has been updated"
|
msgid "your password has been updated"
|
||||||
msgstr "votre mot de passe a été mis à jour"
|
msgstr "votre mot de passe a été mis à jour"
|
||||||
|
|
||||||
msgid "the two fields have to be filled & the password must be the same in the two fields"
|
msgid ""
|
||||||
msgstr "les deux champs doivent être remplis & le mot de passe doit être le même dans les deux"
|
"the two fields have to be filled & the password must be the same in the two "
|
||||||
|
"fields"
|
||||||
|
msgstr ""
|
||||||
|
"les deux champs doivent être remplis & le mot de passe doit être le même "
|
||||||
|
"dans les deux"
|
||||||
|
|
||||||
msgid "still using the \""
|
msgid "still using the \""
|
||||||
msgstr "utilise encore \""
|
msgstr "utilise encore \""
|
||||||
|
@ -459,7 +487,7 @@ msgid "that theme does not seem to be installed"
|
||||||
msgstr "ce thème ne semble pas installé"
|
msgstr "ce thème ne semble pas installé"
|
||||||
|
|
||||||
msgid "you have changed your theme preferences"
|
msgid "you have changed your theme preferences"
|
||||||
msgstr "vous avez changez vos préférences de thème"
|
msgstr "vous avez changé vos préférences de thème"
|
||||||
|
|
||||||
msgid "that language does not seem to be installed"
|
msgid "that language does not seem to be installed"
|
||||||
msgstr "cette langue ne semble pas être installée"
|
msgstr "cette langue ne semble pas être installée"
|
||||||
|
@ -468,28 +496,28 @@ msgid "you have changed your language preferences"
|
||||||
msgstr "vous avez changé vos préférences de langue"
|
msgstr "vous avez changé vos préférences de langue"
|
||||||
|
|
||||||
msgid "login failed: you have to fill all fields"
|
msgid "login failed: you have to fill all fields"
|
||||||
msgstr "identification échouée : vous devez remplir tous les champs"
|
msgstr "échec de l'identification : vous devez remplir tous les champs"
|
||||||
|
|
||||||
msgid "welcome to your wallabag"
|
msgid "welcome to your wallabag"
|
||||||
msgstr "bienvenue dans votre wallabag"
|
msgstr "bienvenue dans votre wallabag"
|
||||||
|
|
||||||
msgid "login failed: bad login or password"
|
msgid "login failed: bad login or password"
|
||||||
msgstr "identification échouée : mauvais identifiant ou mot de passe"
|
msgstr "échec de l'identification : mauvais identifiant ou mot de passe"
|
||||||
|
|
||||||
msgid "import from instapaper completed"
|
msgid "import from instapaper completed"
|
||||||
msgstr "Import depuis Instapaper complété"
|
msgstr "Importation depuis Instapaper complété"
|
||||||
|
|
||||||
msgid "import from pocket completed"
|
msgid "import from pocket completed"
|
||||||
msgstr "Import depuis Pocket complété"
|
msgstr "Importation depuis Pocket complété"
|
||||||
|
|
||||||
msgid "import from Readability completed. "
|
msgid "import from Readability completed. "
|
||||||
msgstr "Import depuis Readability complété"
|
msgstr "Importation depuis Readability complété"
|
||||||
|
|
||||||
msgid "import from Poche completed. "
|
msgid "import from Poche completed. "
|
||||||
msgstr "Import depuis Pocket complété"
|
msgstr "Importation depuis Pocket complété"
|
||||||
|
|
||||||
msgid "Unknown import provider."
|
msgid "Unknown import provider."
|
||||||
msgstr "Fournisseur d'import inconnu."
|
msgstr "Format d'importation inconnu."
|
||||||
|
|
||||||
msgid "Incomplete inc/poche/define.inc.php file, please define \""
|
msgid "Incomplete inc/poche/define.inc.php file, please define \""
|
||||||
msgstr "Fichier inc/poche/define.inc.php incomplet, merci de définir \""
|
msgstr "Fichier inc/poche/define.inc.php incomplet, merci de définir \""
|
||||||
|
@ -498,7 +526,7 @@ msgid "Could not find required \""
|
||||||
msgstr "Ne peut pas trouver \""
|
msgstr "Ne peut pas trouver \""
|
||||||
|
|
||||||
msgid "Uh, there is a problem while generating feeds."
|
msgid "Uh, there is a problem while generating feeds."
|
||||||
msgstr "Ih, il y a un problème lors de la génération des flux."
|
msgstr "Hum, il y a un problème lors de la génération des flux."
|
||||||
|
|
||||||
msgid "Cache deleted."
|
msgid "Cache deleted."
|
||||||
msgstr "Cache effacé."
|
msgstr "Cache effacé."
|
||||||
|
|
Loading…
Reference in a new issue