>
------------------------------------------------------------------------------
:: HISTORY
| release | date |
| 1.0.0 | 2010/03/30 | * Update class & function names
| | |
| 1.1.0 | 2010/03/30 | * add the BBtoHTML function
| | |
| 1.2.0 | 2010/07/28 | * add the loadConfigFromFile function
| | |
| 1.3.0 | 2010/10/13 | * add the addHeaderCSS, addHeaderJS functions
| | |
| 1.3.1 | 2010/10/20 | * applyHeaderItems functions implemented with an
| | | higher priority on the 'loc_begin_page_header' event
| | |
| | | * implement the getUserLanguageDesc() function, using
| | | extended description function if present
| | |
| | | * implement the getPiwigoSystemPath() function
| | |
| | | * implement the rmDir() function
| | |
| 1.3.2 | 2011/01/28 | * implement the addUI() function
| | |
| | | * implement getMinified() & setMinifiedState() functions
| | |
| 1.3.3 | 2011/02/01 | * fix bug on loadConfig() function
| | |
| | | * update deleteConfig() function (allow to be used to
| | | delete the GPCCore config)
| | |
| | | * mantis bug:2167
| | |
| 1.3.4 | 2011/02/02 | * mantis bug:2170
| | | . File path for RBuilder registered plugins is corrupted
| | |
| | | * mantis bug:2178
| | | . RBuilder register function don't work
| | |
| | | * mantis bug:2179
| | | . JS file loaded in wrong order made incompatibility
| | | with Lightbox, GMaps & ASE plugins (and probably other)
| | |
| 1.4.0 | 2011/04/10 | * Updated for piwigo 2.2
| | |
| 1.4.1 | 2011/09/19 | * Add [var] and [form_mail] markup interpreter
| | |
| | |
------------------------------------------------------------------------------
no constructor, only static function are provided
- static function loadConfig
- static function loadConfigFromFile
- static function saveConfig
- static function deleteConfig
- static function getRegistered
- static function getModulesInfos
- static function register
- static function unregister
- static function BBtoHTML
- static function VarToHTML
- static function FormMailToHTML
- static function addHeaderCSS
- static function addHeaderJS
- static function addUI
- static function getMinified
- static function setMinifiedState
- static function getUserLanguageDesc
- static function getPiwigoSystemPath
- static function formatOctet
- static function rmDir
- static function applyMarkups
---------------------------------------------------------------------- */
class GPCCore
{
static private $piwigoSystemPath;
static private $minified='.min';
static public $pluginName = "GPCCore";
static protected $headerItems = array(
'css' => array(),
'js' => array()
);
static public function init()
{
global $conf;
self::$piwigoSystemPath=dirname(dirname(dirname(dirname(__FILE__))));
if(isset($conf['gpc.script.minify'])) self::setMinifiedState($conf['gpc.script.minify']);
if((isset($conf['gpc.markup.bb']) && $conf['gpc.markup.bb']) ||
(isset($conf['gpc.markup.var']) && $conf['gpc.markup.var']) ||
(isset($conf['gpc.markup.form']) && $conf['gpc.markup.form'])
)
{
add_event_handler('render_category_name', array('GPCCore', 'applyMarkups'), EVENT_HANDLER_PRIORITY_NEUTRAL+5);
add_event_handler('render_category_description', array('GPCCore', 'applyMarkups'), EVENT_HANDLER_PRIORITY_NEUTRAL+5, 2);
add_event_handler('render_element_description', array('GPCCore', 'applyMarkups'), EVENT_HANDLER_PRIORITY_NEUTRAL+5);
add_event_handler('AP_render_content', array('GPCCore', 'applyMarkups'), EVENT_HANDLER_PRIORITY_NEUTRAL+5);
}
}
/* ---------------------------------------------------------------------------
* grum plugin classes informations functions
* -------------------------------------------------------------------------*/
static public function getModulesInfos()
{
return(
Array(
Array('name' => "CommonPlugin", 'version' => "2.2.0"),
Array('name' => "GPCAjax", 'version' => "3.0.0"),
Array('name' => "GPCCategorySelector", 'version' => "1.0.1"),
Array('name' => "GPCCore", 'version' => "1.4.1"),
Array('name' => "GPCCss", 'version' => "3.1.0"),
Array('name' => "GPCPagesNavigation", 'version' => "2.0.0"),
Array('name' => "GPCPublicIntegration", 'version' => "2.0.0"),
Array('name' => "GPCRequestBuilder", 'version' => "1.1.2"),
Array('name' => "GPCTables", 'version' => "1.5.0"),
Array('name' => "GPCTabSheet", 'version' => "1.1.1"),
Array('name' => "GPCTranslate", 'version' => "2.1.1"),
Array('name' => "GPCUsersGroups", 'version' => "2.1.0")
)
);
}
/* ---------------------------------------------------------------------------
* register oriented functions
* -------------------------------------------------------------------------*/
/**
* register a plugin using GPC
*
* @param String $pluginName : the plugin name
* @param String $release : the plugin version like "2.0.0"
* @param String $GPCNeed : the minimal version of GPC needed by the plugin to
* work
* @return Boolean : true if registering is Ok, otherwise false
*/
static public function register($plugin, $release, $GPCneeded)
{
$config=Array();
if(!self::loadConfig(self::$pluginName, $config))
{
$config['registered']=array();
}
$config['registered'][$plugin]=Array(
'name' => $plugin,
'release' => $release,
'needed' => $GPCneeded,
'date' => date("Y-m-d"),
);
return(self::saveConfig(self::$pluginName, $config));
}
/**
* unregister a plugin using GPC
*
* assume that if the plugin was not registerd before, unregistering returns
* a true value
*
* @param String $pluginName : the plugin name
* @return Boolean : true if registering is Ok, otherwise false
*/
static public function unregister($plugin)
{
$config=Array();
if(self::loadConfig(self::$pluginName, $config))
{
if(array_key_exists('registered', $config))
{
if(array_key_exists($plugin, $config['registered']))
{
unset($config['registered'][$plugin]);
return(self::saveConfig(self::$pluginName, $config));
}
}
}
// assume if the plugin was not registered before, unregistering it is OK
return(true);
}
/**
* @return Array : list of registered plugins
*/
static public function getRegistered()
{
$config=Array();
if(self::loadConfig(self::$pluginName, $config))
{
if(array_key_exists('registered', $config))
{
return($config['registered']);
}
}
return(Array());
}
/* ---------------------------------------------------------------------------
* config oriented functions
* -------------------------------------------------------------------------*/
/**
* load config from CONFIG_TABLE into an array
*
* @param String $pluginName : the plugin name, must contain only alphanumerical
* character
* @param Array $config : array, initialized or not with default values ; the
* config values are loaded in this value
* @return Boolean : true if config is loaded, otherwise false
*/
static public function loadConfig($pluginName, &$config=Array())
{
global $conf;
if(!isset($conf[$pluginName.'_config']))
{
return(false);
}
$configValues = unserialize($conf[$pluginName.'_config']);
reset($configValues);
while (list($key, $val) = each($configValues))
{
if(is_array($val))
{
foreach($val as $key2 => $val2)
{
$config[$key][$key2]=$val2;
}
}
else
{
$config[$key] =$val;
}
}
$conf[$pluginName.'_config']=serialize($config);
return(true);
}
/**
* load config from a file into an array
*
* note : the config file is a PHP file one var $conf used as an array,
* like the piwigo $conf var
*
* @param String $fileName : the file name
* @param Array $config : array, initialized or not with default values ; the
* config values are loaded in this value
* @return Boolean : true if config is loaded, otherwise false
*/
static public function loadConfigFromFile($fileName, &$config=Array())
{
$conf=array();
if(!is_array($config) or !file_exists($fileName))
{
return(false);
}
include_once($fileName);
foreach($conf as $key=>$val)
{
$config[$key]=$val;
}
return(true);
}
/**
* save var $my_config into CONFIG_TABLE
*
* @param String $pluginName : the plugin name, must contain only alphanumerical
* character
* @param Array $config : array of configuration values
* @return Boolean : true if config is saved, otherwise false
*/
static public function saveConfig($pluginName, $config)
{
global $conf;
$sql="REPLACE INTO ".CONFIG_TABLE."
VALUES('".$pluginName."_config', '"
.pwg_db_real_escape_string(serialize($config))."', '')";
$result=pwg_query($sql);
if($result)
{
$conf[$pluginName.'_config']=serialize($config);
return true;
}
else
{
return false;
}
}
/**
* delete config from CONFIG_TABLE
*
* @param String $pluginName : the plugin name, must contain only alphanumerical
* character ; if empty, assume GPCCore config
* @return Boolean : true if config is deleted, otherwise false
*/
static public function deleteConfig($pluginName='')
{
if($pluginName=='') $pluginName=self::$pluginName;
$sql="DELETE FROM ".CONFIG_TABLE."
WHERE param='".$pluginName."_config'";
$result=pwg_query($sql);
if($result)
{ return true; }
else
{ return false; }
}
/**
* convert (light) BB tag to HTML tag
*
* all BB codes are not recognized, only :
* - [ul] [/ul]
* - [li] [/li]
* - [b] [/b]
* - [i] [/i]
* - [url] [/url]
* - carriage return is replaced by a
*
* @param String $text : text to convert
* @return String : BB to HTML text
*/
static public function BBtoHTML($text)
{
$patterns = Array(
'/\[li\](.*?)\[\/li\]\n*/im',
'/\[b\](.*?)\[\/b\]/ism',
'/\[i\](.*?)\[\/i\]/ism',
'/\[p\](.*?)\[\/p\]/ism',
'/\[url\]([\w]+?:\/\/[^ \"\n\r\t<]*?)\[\/url\]/ism',
'/\[url=([\w]+?:\/\/[^ \"\n\r\t<]*?)\](.*?)\[\/url\]/ism',
'/\n{0,1}\[ul\]\n{0,1}/im',
'/\n{0,1}\[\/ul\]\n{0,1}/im',
'/\n{0,1}\[ol\]\n{0,1}/im',
'/\n{0,1}\[\/ol\]\n{0,1}/im',
'/\n/im',
);
$replacements = Array(
'
\1
', '\1', '\2', '