Chamilo is a learning management system focused on ease of use and accessibility
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
chamilo-lms/plugin/pens/lib/PENSPlugin.php

177 lines
4.4 KiB

<?php
/* For licensing terms, see /license.txt */
/**
* Class PENSPlugin
* This class is used to add an advanced subscription allowing the admin to
* create user queues requesting a subscribe to a session
* @package chamilo.plugin.pens
*/
class PENSPlugin extends Plugin implements HookPluginInterface
{
protected $strings;
private $errorMessages;
const TABLE_PENS = 'plugin_pens';
/**
* Constructor
*/
public function __construct()
{
$parameters = array(
);
parent::__construct($this->get_version(), $this->get_author(), $parameters);
$this->errorMessages = array();
}
/**
* Instance the plugin
* @staticvar null $result
* @return AdvancedSubscriptionPlugin
*/
public static function create()
{
static $result = null;
return $result ? $result : $result = new self();
}
/**
* Install the plugin
* @return void
*/
public function install()
{
$this->installDatabase();
$this->installHook();
}
/**
* Uninstall the plugin
* @return void
*/
public function uninstall()
{
$setting = api_get_setting('plugin_pens');
if (!empty($setting)) {
$this->uninstallHook();
// Note: Keeping area field data is intended so it will not be removed
$this->uninstallDatabase();
}
}
/**
* Create the database tables for the plugin
* @return void
*/
private function installDatabase()
{
$pensTable = Database::get_main_table(PENSPlugin::TABLE_PENS);
$sql = "CREATE TABLE $pensTable (
id int unsigned NOT NULL auto_increment,
pens_version varchar(255) NOT NULL,
package_type varchar(255) NOT NULL,
package_type_version varchar(255) NOT NULL,
package_format varchar(255) NOT NULL,
package_id varchar (255) NOT NULL,
client varchar(255) NOT NULL,
vendor_data text,
package_name varchar(255) NOT NULL,
created_at datetime NOT NULL,
updated_at datetime NULL,
PRIMARY KEY (id),
UNIQUE KEY package_id (package_id)
";
Database::query($sql);
}
/**
* Drop the database tables for the plugin
* @return void
*/
private function uninstallDatabase()
{
/* Drop plugin tables */
$pensTable = Database::get_main_table(PENSPlugin::TABLE_PENS);
$sql = "DROP TABLE IF EXISTS $pensTable; ";
Database::query($sql);
/* Delete settings */
$settingsTable = Database::get_main_table(TABLE_MAIN_SETTINGS_CURRENT);
Database::query("DELETE FROM $settingsTable WHERE subkey = 'plugin_pens'");
}
/**
* Get the error messages list
* @return array The message list
*/
public function getErrorMessages()
{
return $this->errorMessages;
}
/**
* This method will call the Hook management insertHook to add Hook observer from this plugin
* @return int
*/
public function installHook()
{
}
/**
* This method will call the Hook management deleteHook to disable Hook observer from this plugin
* @return int
*/
public function uninstallHook()
{
}
/**
* Copied and fixed from plugin.class.php
* Returns the "system" name of the plugin in lowercase letters
* @return string
*/
public function get_name()
{
return 'PENS';
}
/**
* Get author(s)
* @return string
*/
public function get_author()
{
return 'Guillaume Viguier-Just, Yannick Warnier';
}
/**
* Returns the plugin version
* @return string
*/
public function get_version()
{
return '1.1';
}
/**
* Get generic plugin info
* @return array
*/
public function get_info()
{
$result = array();
$result['title'] = $this->get_name();
$result['comment'] = 'Provides support for the PENS course exchange standard. Read the readme.txt file in the plugin/pens/ folder for a complete installation.';
$result['version'] = $this->get_version();
$result['author'] = $this->get_author();
$result['plugin_class'] = get_class($this);
$result['is_course_plugin'] = false;
$result['is_mail_plugin'] = false;
return $result;
}
}