123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- <?php
- phpinfo();
- /**
- * plugin.php 插件入口
- *
- * @copyright (C) 2005-2010 PHPCMS
- * @license http://www.phpcms.cn/license/
- * @lastmodify 2013-06-07
- */
- define('PHPCMS_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR);
- include PHPCMS_PATH.'phpcms/base.php';
- $param = pc_base::load_sys_class('param');
- pc_base::load_sys_func('plugin');
- $cache = '';
- if(isset($_GET['id'])) {
- if(!preg_match("/^[a-z0-9_\-]+$/i",$_GET['id'])) showmessage((L('illegal_parameters')));
- list($identification, $filename,$action) = explode('-', $_GET['id']);
- $filename = !empty($filename) ? $filename : $identification;
- $action = !empty($action) ? $action : 'init';
- }
- if(!preg_match("/^[a-z0-9_\-]+$/i", $identification)) showmessage(L('plugin_not_exist','','plugin'));
- $cache = getcache($identification,'plugins');
- if(!$cache['disable'] || $filename=='plugin_admin' || $filename=='hook') {
- showmessage(L('plugin_not_exist','','plugin'));
- } else {
- $status = plugin_stat($cache['appid']);
- if($status== 0 || $app_status == 1) {
- showmessage(L('plugin_developing','','plugin'));
- } elseif($status== 3) {
- showmessage(L('plugin_be_locked','','plugin'));
- }
- $iframe = string2array($cache['iframe']);
- if($iframe['url']) {
- $cache_var = getcache($identification.'_var','plugins');
- plugin_base::creat_iframe($cache,$cache_var);
- } else {
- plugin_base::creat_app($identification, $filename, $action);
- }
- }
- class plugin_base {
- /**
- * 初始化插件
- */
- public static function creat_app($id,$file,$action) {
- define('PLUGIN_ID', $id);
- define('PLUGIN_FILE', $file);
- define('PLUGIN_ACTION', $action);
- self::plugin_init();
- }
-
- /**
- * 调用插件方法
- */
- private function plugin_init() {
- $controller = self::load_controller();
- if (method_exists($controller, PLUGIN_ACTION)) {
- if (preg_match('/^[_]/i', PLUGIN_ACTION)) {
- exit('Plugin Error:You are visiting the action is to protect the private action');
- } else {
- call_user_func(array($controller, PLUGIN_ACTION));
- }
- } else {
- exit(L('plugin_error_or_not_exist','','plugin'));
- }
- }
-
- /**
- * 加载插件控制器
- * @param string $filename
- * @param string $m
- * @return obj
- */
- private function load_controller($filename = '', $m = '') {
- if (empty($filename)) $filename = PLUGIN_FILE;
- if (empty($m)) $m = PLUGIN_ID;
- $filepath = PC_PATH.'plugin'.DIRECTORY_SEPARATOR.$m.DIRECTORY_SEPARATOR.$filename.'.class.php';
- if (file_exists($filepath) && $filename !='plugin_admin') {
- $classname = $filename;
- include $filepath;
- if ($mypath = pc_base::my_path($filepath)) {
- $classname = 'MY_'.$filename;
- include $mypath;
- }
- return new $classname;
- } else {
- exit(L('plugin_error_or_not_exist','','plugin'));
- }
- }
-
- /**
- * 加载插件模板
- */
- final public static function plugin_tpl($file, $identification = '') {
- $identification = empty($identification) && defined('PLUGIN_ID') ? PLUGIN_ID : $identification;
- if(empty($identification)) return false;
- return PC_PATH.'plugin'.DIRECTORY_SEPARATOR.$identification.DIRECTORY_SEPARATOR.'templates'.DIRECTORY_SEPARATOR.$file.'.tpl.php';
- }
-
- public static function creat_iframe($cache = '',$cache_var = '') {
- $iframe = string2array($cache['iframe']);
- $width = $cache_var['width'] ? $cache_var['width'] : $iframe['width'];
- $height = $cache_var['height'] ? $cache_var['height'] : $iframe['width'];
- $url = $iframe['url'];
- $SEO = seo(1, 0, $cache['name'], $cache['description'], $cache['name']);
- include template('plugin','iframe');
- }
- }
- ?>
|