DiscuzX/upload/uc_server/model/plugin.php

106 lines
2.6 KiB
PHP

<?php
/*
[UCenter] (C)2001-2099 Comsenz Inc.
This is NOT a freeware, use is subject to license terms
$Id: plugin.php 1059 2011-03-01 07:25:09Z monkey $
*/
!defined('IN_UC') && exit('Access Denied');
class pluginmodel {
var $db;
var $base;
function __construct(&$base) {
$this->pluginmodel($base);
}
function pluginmodel(&$base) {
$this->base = $base;
$this->db = $base->db;
}
function get_plugins() {
include_once UC_ROOT.'./lib/xml.class.php';
$arr = array();
$dir = UC_ROOT.'./plugin';
$d = opendir($dir);
while($f = readdir($d)) {
if($f != '.' && $f != '..' && $f != '.svn' && is_dir($dir.'/'.$f)) {
$s = file_get_contents($dir.'/'.$f.'/plugin.xml');
$arr1 = xml_unserialize($s);
$arr1['dir'] = $f;
unset($arr1['lang']);
$arr[] = $arr1;
}
}
$arr = $this->orderby_tabindex($arr);
return $arr;
}
function get_plugin($pluginname) {
$f = file_get_contents(UC_ROOT."./plugin/$pluginname/plugin.xml");
include_once UC_ROOT.'./lib/xml.class.php';
return xml_unserialize($f);
}
function get_plugin_by_name($pluginname) {
$dir = UC_ROOT.'./plugin';
$s = file_get_contents($dir.'/'.$pluginname.'/plugin.xml');
return xml_unserialize($s, TRUE);
}
function orderby_tabindex($arr1) {
$arr2 = array();
$t = array();
foreach($arr1 as $k => $v) {
$t[$k] = $v['tabindex'];
}
asort($t);
$arr3 = array();
foreach($t as $k => $v) {
$arr3[$k] = $arr1[$k];
}
return $arr3;
}
function cert_get_file() {
return UC_ROOT.'./data/tmp/ucenter_'.substr(md5(UC_KEY), 0, 16).'.cert';
}
function cert_dump_encode($arr, $life = 0) {
$s = "# UCenter Applications Setting Dump\n".
"# Version: UCenter ".UC_SERVER_VERSION."\n".
"# Time: ".$this->time."\n".
"# Expires: ".($this->time + $life)."\n".
"# From: ".UC_API."\n".
"#\n".
"# This file was BASE64 encoded\n".
"#\n".
"# UCenter Community: http://www.discuz.net\n".
"# Please visit our website for latest news about UCenter\n".
"# --------------------------------------------------------\n\n\n".
wordwrap(base64_encode(serialize($arr)), 50, "\n", 1);
return $s;
}
function cert_dump_decode($certfile) {
$s = @file_get_contents($certfile);
if(empty($s)) {
return array();
}
preg_match("/# Expires: (.*?)\n/", $s, $m);
if(empty($m[1]) || $m[1] < $this->time) {
unlink($certfile);
return array();
}
$s = preg_replace("/(#.*\s+)*/", '', $s);
$arr = daddslashes(unserialize(base64_decode($s)), 1);
return $arr;
}
}
?>