RSS Plugin, improves on code

This commit is contained in:
dignajar 2016-01-11 19:51:00 -03:00
parent 9323fe2f5a
commit 640b58ecdf
10 changed files with 174 additions and 18 deletions

View File

@ -68,6 +68,11 @@ class Plugin {
return PATH_PLUGINS.$this->directoryName.DS; return PATH_PLUGINS.$this->directoryName.DS;
} }
public function phpPathDB()
{
return PATH_PLUGINS_DATABASES.$this->directoryName.DS;
}
// Returns the item from plugin-data. // Returns the item from plugin-data.
public function getData($key) public function getData($key)
{ {
@ -181,7 +186,13 @@ class Plugin {
public function uninstall() public function uninstall()
{ {
unlink($this->filenameDb); // Delete all files.
$files = Filesystem::listFiles( $this->phpPathDB() );
foreach($files as $file) {
unlink($file);
}
// Delete the directory.
rmdir(PATH_PLUGINS_DATABASES.$this->directoryName); rmdir(PATH_PLUGINS_DATABASES.$this->directoryName);
} }

View File

@ -218,6 +218,16 @@ define('PATH_THEME_JS', PATH_THEME.'js'.DS);
define('PATH_THEME_IMG', PATH_THEME.'img'.DS); define('PATH_THEME_IMG', PATH_THEME.'img'.DS);
define('PATH_THEME_LANG', PATH_THEME.'languages'.DS); define('PATH_THEME_LANG', PATH_THEME.'languages'.DS);
// --- Absolute paths with domain ---
define('DOMAIN', $Site->domain());
define('DOMAIN_BASE', DOMAIN.HTML_PATH_ROOT);
define('DOMAIN_THEME_CSS', DOMAIN.HTML_PATH_THEME_CSS);
define('DOMAIN_THEME_JS', DOMAIN.HTML_PATH_THEME_JS);
define('DOMAIN_THEME_IMG', DOMAIN.HTML_PATH_THEME_IMG);
define('DOMAIN_UPLOADS', DOMAIN.HTML_PATH_UPLOADS);
define('DOMAIN_UPLOADS_PROFILES', DOMAIN.HTML_PATH_UPLOADS_PROFILES);
define('DOMAIN_UPLOADS_THUMBNAILS', DOMAIN.HTML_PATH_UPLOADS_THUMBNAILS);
// --- Objects with dependency --- // --- Objects with dependency ---
$Language = new dbLanguage( $Site->locale() ); $Language = new dbLanguage( $Site->locale() );
$Login = new Login( $dbUsers ); $Login = new Login( $dbUsers );

View File

@ -59,6 +59,11 @@ function buildPage($key)
$content = Text::imgRel2Abs($content, HTML_PATH_UPLOADS); // Parse img src relative to absolute. $content = Text::imgRel2Abs($content, HTML_PATH_UPLOADS); // Parse img src relative to absolute.
$Page->setField('content', $content, true); $Page->setField('content', $content, true);
// Pagebrake
$explode = explode(PAGE_BREAK, $content);
$Page->setField('breakContent', $explode[0], true);
$Page->setField('readMore', !empty($explode[1]), true);
// Date format // Date format
$pageDate = $Page->date(); $pageDate = $Page->date();
$Page->setField('dateRaw', $pageDate, true); $Page->setField('dateRaw', $pageDate, true);

View File

@ -170,16 +170,17 @@ class dbSite extends dbJSON
$protocol = 'http://'; $protocol = 'http://';
} }
$domain = $_SERVER['HTTP_HOST']; $domain = trim($_SERVER['HTTP_HOST'], '/');
return $protocol.$domain.HTML_PATH_ROOT; return $protocol.$domain;
} }
// Parse the domain from the field URL. // Parse the domain from the field URL.
$parse = parse_url($this->url()); $parse = parse_url($this->url());
$domain = $parse['scheme']."://".$parse['host'];
return $domain; $domain = trim($parse['host'], '/');
return $parse['scheme'].'://'.$domain;
} }
// Returns TRUE if the cli mode is enabled, otherwise FALSE. // Returns TRUE if the cli mode is enabled, otherwise FALSE.

View File

@ -15,21 +15,31 @@ class Page extends fileContent
{ {
return $this->getField('title'); return $this->getField('title');
} }
// Returns the content.
// Returns the content. This content is markdown parser. // This content is markdown parser.
// (boolean) $html, TRUE returns the content without satinize, FALSE otherwise. // (boolean) $fullContent, TRUE returns all content, if FALSE returns the first part of the content.
public function content($html=true) // (boolean) $raw, TRUE returns the content without sanitized, FALSE otherwise.
public function content($fullContent=true, $raw=true)
{ {
// This content is not sanitized. // This content is not sanitized.
$content = $this->getField('content'); $content = $this->getField('content');
if($html) { if(!$fullContent) {
$content = $this->getField('breakContent');
}
if($raw) {
return $content; return $content;
} }
return Sanitize::html($content); return Sanitize::html($content);
} }
public function readMore()
{
return $this->getField('readMore');
}
// Returns the content. This content is not markdown parser. // Returns the content. This content is not markdown parser.
// (boolean) $raw, TRUE returns the content without sanitized, FALSE otherwise. // (boolean) $raw, TRUE returns the content without sanitized, FALSE otherwise.
public function contentRaw($raw=true) public function contentRaw($raw=true)

View File

@ -186,7 +186,7 @@ class Post extends fileContent
global $Url; global $Url;
global $Site; global $Site;
$url = trim($Site->url(),'/'); $url = trim(DOMAIN_BASE,'/');
$key = $this->key(); $key = $this->key();
$filter = trim($Url->filters('post'), '/'); $filter = trim($Url->filters('post'), '/');
$htmlPath = trim(HTML_PATH_ROOT,'/'); $htmlPath = trim(HTML_PATH_ROOT,'/');

View File

@ -0,0 +1,12 @@
{
"plugin-data":
{
"name": "RSS",
"description": "This plugin generate a file rss.xml.",
"author": "Bludit",
"email": "",
"website": "https://github.com/dignajar/bludit-plugins",
"version": "1.0",
"releaseDate": "2016-01-07"
}
}

View File

@ -0,0 +1,12 @@
{
"plugin-data":
{
"name": "RSS",
"description": "This plugin generate a file rss.xml.",
"author": "Bludit",
"email": "",
"website": "https://github.com/dignajar/bludit-plugins",
"version": "1.0",
"releaseDate": "2016-01-07"
}
}

102
plugins/rss/plugin.php Normal file
View File

@ -0,0 +1,102 @@
<?php
class pluginRSS extends Plugin {
private function createXML()
{
global $Site;
global $dbPages;
global $dbPosts;
global $Url;
$xml = '<?xml version="1.0" encoding="UTF-8" ?>';
$xml .= '<rss version="2.0">';
$xml .= '<channel>';
$xml .= '<title>'.$Site->title().'</title>';
$xml .= '<link>'.$Site->url().'</link>';
$xml .= '<description>'.$Site->description().'</description>';
$posts = buildPostsForPage(0, 10, true);
foreach($posts as $Post)
{
$xml .= '<item>';
$xml .= '<title>'.$Post->title().'</title>';
$xml .= '<link>'.$Post->permalink(true).'</link>';
$xml .= '<description>'.$Post->description().'</description>';
$xml .= '</item>';
}
$xml .= '</channel></rss>';
// New DOM document
$doc = new DOMDocument();
// Friendly XML code
$doc->formatOutput = true;
$doc->loadXML($xml);
$doc->save(PATH_PLUGINS_DATABASES.$this->directoryName.DS.'rss.xml');
}
public function install($position = 0)
{
parent::install($position);
$this->createXML();
}
public function afterPostCreate()
{
$this->createXML();
}
public function afterPageCreate()
{
$this->createXML();
}
public function afterPostModify()
{
$this->createXML();
}
public function afterPageModify()
{
$this->createXML();
}
public function afterPostDelete()
{
$this->createXML();
}
public function afterPageDelete()
{
$this->createXML();
}
public function beforeRulesLoad()
{
global $Url;
if( $Url->uri() === HTML_PATH_ROOT.'rss.xml' )
{
// Send XML header
header('Content-type: text/xml');
// New DOM document
$doc = new DOMDocument();
// Load XML
$doc->load(PATH_PLUGINS_DATABASES.$this->directoryName.DS.'rss.xml');
// Print the XML
echo $doc->saveXML();
// Stop Bludit running
exit;
}
}
}

View File

@ -2,13 +2,6 @@
class pluginSitemap extends Plugin { class pluginSitemap extends Plugin {
public function init()
{
$this->dbFields = array(
'label'=>'Tags'
);
}
private function createXML() private function createXML()
{ {
global $Site; global $Site;