bludit/kernel/abstract/plugin.class.php

204 lines
3.1 KiB
PHP
Raw Normal View History

2015-05-05 03:00:01 +02:00
<?php defined('BLUDIT') or die('Bludit CMS.');
2015-03-08 18:02:59 +01:00
class Plugin {
// (string) Plugin's directory
public $directoryName;
2015-05-05 03:00:01 +02:00
2015-03-08 18:02:59 +01:00
// (string) Database path and filename
public $fileDb;
2015-05-05 03:00:01 +02:00
2015-03-08 18:02:59 +01:00
// (array) Database
public $db;
// (array) Database fields, only for initialize.
public $dbFields;
public $className;
2015-07-03 22:44:26 +02:00
public $data;
2015-03-08 18:02:59 +01:00
function __construct()
{
$reflector = new ReflectionClass(get_class($this));
2015-07-03 22:44:26 +02:00
$this->data = array(
'name'=>'',
'description'=>'',
'author'=>'',
'email'=>'',
'website'=>''
);
2015-03-08 18:02:59 +01:00
// Directory name
2015-07-03 22:44:26 +02:00
$this->directoryName = basename(dirname($reflector->getFileName())).DS;
2015-03-08 18:02:59 +01:00
// Class Name
$this->className = $reflector->getName();
2015-06-11 04:27:04 +02:00
// Initialize dbFields from the children.
$this->init();
2015-03-08 18:02:59 +01:00
// Init empty database
2015-06-11 04:27:04 +02:00
$this->db = $this->dbFields;
2015-03-08 18:02:59 +01:00
2015-07-03 22:44:26 +02:00
$this->fileDb = PATH_PLUGINS_DATABASES.$this->directoryName.'db.php';
2015-03-08 18:02:59 +01:00
// If the plugin installed then get the database.
if($this->installed())
{
2015-05-05 03:00:01 +02:00
$Tmp = new dbJSON($this->fileDb);
$this->db = $Tmp->db;
2015-03-08 18:02:59 +01:00
}
}
2015-07-03 22:44:26 +02:00
public function getData($key)
2015-06-11 04:27:04 +02:00
{
2015-07-03 22:44:26 +02:00
if(isset($this->data[$key])) {
return $this->data[$key];
2015-06-12 06:00:04 +02:00
}
2015-07-03 22:44:26 +02:00
return '';
}
public function setData($array)
{
$this->data = $array;
}
public function name()
{
return $this->getData('name');
2015-06-12 06:00:04 +02:00
}
public function description()
{
2015-07-03 22:44:26 +02:00
return $this->getData('description');
}
2015-06-12 06:00:04 +02:00
2015-07-03 22:44:26 +02:00
public function author()
{
return $this->getData('author');
}
public function email()
{
return $this->getData('email');
}
public function website()
{
return $this->getData('website');
2015-06-12 06:00:04 +02:00
}
public function className()
{
return $this->className;
2015-06-11 04:27:04 +02:00
}
2015-07-03 22:44:26 +02:00
public function directoryName()
{
return $this->directoryName;
}
2015-03-08 18:02:59 +01:00
// Return TRUE if the installation success, otherwise FALSE.
public function install()
{
2015-06-11 04:27:04 +02:00
if($this->installed()) {
2015-03-08 18:02:59 +01:00
return false;
2015-06-11 04:27:04 +02:00
}
2015-03-08 18:02:59 +01:00
// Create plugin directory for databases and others files.
2015-06-11 04:27:04 +02:00
mkdir(PATH_PLUGINS_DATABASES.$this->directoryName, 0755, true);
2015-03-08 18:02:59 +01:00
if( !empty($this->dbFields) )
{
2015-07-07 03:05:17 +02:00
// DEBUG: NO ME GUSTA LLAMAR A UNA CLASE
2015-05-05 03:00:01 +02:00
$Tmp = new dbJSON($this->fileDb);
2015-07-07 06:24:51 +02:00
$Tmp->set($this->dbFields);
2015-03-08 18:02:59 +01:00
}
return true;
}
public function uninstall()
{
2015-06-11 04:27:04 +02:00
unlink($this->fileDb);
rmdir(PATH_PLUGINS_DATABASES.$this->directoryName);
2015-03-08 18:02:59 +01:00
}
public function installed()
{
return file_exists($this->fileDb);
}
public function init()
{
2015-06-11 04:27:04 +02:00
// This method is used on childre classes.
// The user can define your own dbFields.
2015-05-05 03:00:01 +02:00
}
2015-03-08 18:02:59 +01:00
// DEBUG: Ver si se usa
public function showdb()
{
print_r( $this->db );
}
// EVENTS
// Before the posts load.
public function beforePostsLoad()
{
return false;
}
// After the posts load.
public function afterPostsLoad()
{
return false;
}
// Before the pages load.
public function beforePagesLoad()
{
return false;
}
// After the pages load.
public function afterPagesLoad()
{
return false;
}
public function onSiteHead()
{
return false;
}
public function onSiteBody()
{
2015-05-05 03:00:01 +02:00
return false;
2015-03-08 18:02:59 +01:00
}
2015-06-03 03:17:09 +02:00
public function onAdminHead()
{
return false;
}
public function onAdminBody()
{
return false;
}
2015-06-27 00:12:26 +02:00
public function onSiteSidebar()
{
return false;
}
public function onAdminSidebar()
2015-03-08 18:02:59 +01:00
{
2015-05-05 03:00:01 +02:00
return false;
2015-03-08 18:02:59 +01:00
}
2015-05-31 03:06:55 +02:00
}