<?php
#
# plugin class for LemurCMS
#
#
$initClass = new init(false);
$initClass->getPluginList();
}
'styles' =>
; array('attachMessageCSS'), 'beforeBodyEnd' =>
; array(), 'search-box' =>
; array() );
$pluginInterfaceList = array(); function plugin
($location, $data = array()) {
if( empty($pluginList[ $location ]) ) return; $plugins = $pluginList[ $location ];
if( empty($plugins) ) return;
foreach( $plugins as $pFunc ) {
}
}
function registerPlugin( $pLocation, $pName ) {
if( !isset($pluginList[ $pLocation ]) ) { $pluginList[ $pLocation ] = array(); }
}
function runInterface( $title) {
}
function runInstall ( $plugin ) {
}
function runUninstall ( $plugin ) {
}
$optionsRun = false;
class Plugin extends functions {
public $pluginName;
public $visName;
public $Interface;
public $isActive = false;
public $options = false;
public $SERVER_ROOT = BASE_URL, $VISUAL_ROOT = THEME_URL;
public function Plugin( $pN ) {
if($pN !== false) {
$activePlugins = $initClass->activePlugins;
$this->pluginName = $this->make_clean_url($pN);
$pluginData[ $this->pluginName ][ 'name' ] = $pN;
$this->visName = $pN;
$this->isActive = true;
}
else {
$this->isActive = false;
}
}
}
public function addPlugin( $location, $callFunction ) {
if( !isset($pluginList[ $pLocation ]) ) { $pluginList[ $pLocation ] = array(); }
if( !$this->isActive ) return;
if( empty($this->
;pluginName
) ) $page->message('Error', 'Plugin Error', 'Plugin Name not specified');
$pluginData[ $this->
;visName
][ 'plugins' ][] = array( 'location'=>
;$location , 'callFunction'=>
;$callFunction );
}
else {
$sql = "INSERT INTO ".DBTABLEPREFIX."plugins (name, options) VALUES ('{$pluginData[ $this->visName ][ 'name' ]}', '{$options}')";
$query = $this->
;db_query
($sql) or
die($this->
;message
('error', 'MySQL Error', $this->
;db
->
;error
())); }
registerPlugin( $location, $callFunction );
}
public function description( $desc ) {
$pluginData[ $this->pluginName ][ 'desc' ] = $desc;
}
public function version( $desc ) {
$pluginData[ $this->pluginName ][ 'version' ] = $desc;
}
public function author( $auth ) {
$pluginData[ $this->pluginName ][ 'author' ] = $auth;
}
public function addUninstall ( $func ) {
$pluginUninstall [ $this->visName ] = $func;
}
public function addInstall ( $func ) {
$pluginInstall [ $this->visName ] = $func;
}
public function addInterface( $interfaceFunc ) {
$pluginInterfaceList[$this->pluginName] = $interfaceFunc;
$pluginData[ $this->pluginName ][ 'interface' ] = $interfaceFunc;
}
// Format for adding page
// @param str: page title
// @param str: menu title
// @param str: content
// @param str: weight
// @param str: parent_id
// @param str: secondary
// @param str: options
//
public function addPage ($pageTitle, $menuTitle, $content, $weight = '0', $parentId = '0', $secondary = '', $options = 'a:0:{}') {
$sql = "
;INSERT INTO
"
;.DBTABLEPREFIX
."
;content_pages
(title
, content
, orderingid
, menutitle
, parent_id
, time, secondary
, options
) VALUES ('$pageTitle', '$content', '$weight', '$menuTitle', '$weight', '$parentId', '$secondary', '$options')";
$query = $this->
;db
->
;query
($sql) or
die($this->
;db
->
;error
()); }
public function addOption ($name, $value) {
$plugin = $this->visName;
if(!$this->getOption($plugin, $name)) {
$sql = "INSERT INTO ".DBTABLEPREFIX."plugins_settings (plugin, field_name, data)
VALUES ('$plugin', '$name', '$value')";
$query = $this->db_query($sql);
return $query;
}
else {
return true;
}
}
public function updateOption ($name, $value) {
$plugin = $this->visName;
$this->getAllOptions();
$sql = "UPDATE ".DBTABLEPREFIX."plugins_settings SET data = '{$value}' WHERE plugin = '{$plugin}' AND field_name = '{$name}'";
else
$sql = "INSERT INTO ".DBTABLEPREFIX."plugins_settings (plugin, field_name, data) VALUES ('{$plugin}', '{$name}', '{$value}')";
$query = $this->
;db_query
($sql) or
die($this->
;db
->
;error
()); $this->getAllOptions(true);
return $query;
}
public function deleteOption ($name) {
$plugin = $this->visName;
$sql = "DELETE FROM ".DBTABLEPREFIX."plugins_settings WHERE plugin = '{$plugin}' AND field_name = '{$name}'";
$query = $this->db_query($sql);
return $query;
}
public function getOption ($name) {
global $optionsRun, $allOptions; $plugin = $this->visName;
$this->getAllOptions();
}
return $allOptions[$plugin][$name];
else
return false;
}
public function getAllOptions ($reset = false) {
global $optionsRun, $allOptions; $plugin = $this->visName;
if($optionsRun == false || $reset == true) {
$sql = "SELECT * FROM ".DBTABLEPREFIX."plugins_settings";
$query = $this->
;db_query
($sql) or
die($this->
;db
->
;error
()); while($row = $this->db->fetchAssoc($query)) {
foreach($row as $key => $value) {
}
// var_dump($row);
$allOptions[$row['plugin']][$row['field_name']] = unserialize($row['data']); else
}
$optionsRun = true;
}
if($allOptions !== false)
return $allOptions[$plugin];
else
return false;
}
public function addSidebarBlock ($title, $func) {
$pluginData[$this->
;pluginName
][ 'sidebar' ][] = array( 'title'=>
;$title, 'callFunction'=>
;$func ); }
public function addDashboardBlock ($title, $func, $column = '1') {
$pluginData[ 'dashboard' ][] = array( 'title'=>
;$title, 'callFunction'=>
;$func , 'column' =>
;$column); }
public function addPermission ($name, $value) {
$perUrl = BASE_URL.'includes/admin/permissions.php';
foreach($per as $level => $arrtrue) {
foreach($arrtrue as $cat => $arr2) {
if($cat == 'Individual Actions') {
//var_dump($newPer[$level][$cat]);
$per[$level][$cat][$name] = (bool) $value;
}
}
}
}
public function updatePermission ($name, $value) {
$this->addPermission($name, $value);
}
public function removePermission ($name) {
$perUrl = BASE_URL.'includes/admin/permissions.php';
foreach($per as $level => $arrtrue) {
foreach($arrtrue as $cat => $arr2) {
if($cat == 'Individual Actions') {
unset($per[$level][$cat][$name]); }
}
}
}
/*
Message Functions
*/
public function message($type = 'message', $header = "", $content = "", $small = false) {
$r .= "<div class='message-wrapper";
if($small == true) {
$r .= ' message-small';
}
else {
$r .= ' message-large';
}
$r .= "'>";
switch ($type) {
case 'message':
$r .= "<div class='message-message message'>nt<div class='message-message-header message-header'>".$header."</div>nt<div class='message-message-content message-content'>ntt<p>".$content."</p>nt</div>n</div>";
break;
case 'success':
$r .= "<div class='message-ok message'>nt<div class='message-ok-header message-header'>".$header."</div>nt<div class='message-ok-content message-content'>ntt<p>".$content."</p>nt</div>n</div>";
break;
case 'error':
$r .= "<div class='message-error message'>nt<div class='message-error-header message-header'>".$header."</div>nt<div class='message-error-content message-content'>ntt<p>".$content."</p>nt</div>n</div>";
break;
case 'warning':
$r .= "<div class='message-warning message'>nt<div class='message-warning-header message-header'>".$header."</div>nt<div class='message-warning-content message-content'>ntt<p>".$content."</p>nt</div>n</div>";
break;
}
$r .= "</div>";
return $r;
}
}
function attachMessageCSS () {
echo '<style type="text/css">@import "'.THEME_URL
.'includes/admin/css/messages.css";</style> ';
}
?>