6 Commits
beta3.1 ... 1.0

576 changed files with 107101 additions and 118495 deletions

0
.htaccess Normal file
View File

View File

@@ -1,20 +1,33 @@
## PicHome beta3.1 更新说明 ## PicHome Home1.0 更新说明
### 1.增加billfish库文件导入支持 ### 1.支持升级到团队版,可在站点设置->授权信息界面查看
### 2.库设置内容更改,显示当前库连接状态,断开为不可用;增加普通目录文件缩略图生成数量显示, ### 2.billfish数据支持修复billfish导入有回收站数据导致导入进度不能完成的问题
整体优化库设置在未导入之前也可对库进行管理操作
### 3.修复系统设置界面因二级域名导致的白页问题 ### 3.eagle数据支持修复eagle导入更新数据时目录数据异常问题
### 4.修复标签分类等数据显示异常问题;不可用状态的库将不在列表页展示其内容 ### 4.eagle数据支持修复eagle导入非图片文件缩略图变更后显示异常问题
### 5.修复下载时提示文件不存在的bug ### 5.普通目录数据支持,整体修改导入逻辑,修复导入错误,提升导入效率
### 6.优化删除逻辑,将更快清理冗余数据 ### 6.优化导入体验,导入增加部分错误提示,修复导入时删除库不断弹出弹窗的错误,以及导入类型提示不匹配问题
### 7.优化导入逻辑 ### 7.导入增加校验更新,用于修复以往导入产生的错误修正
### 8.优化访问效率 ### 7.修复删除库错误,由数据兼容错误导致没有真正删除问题
### 9.其他已知bug修复 ### 8.增加文件访问永久地址获取(仅管理员可用)
### 9.文件访问地址使用动态地址增强安全性(非永久地址)
### 10.开放库筛选项设置,可在站点设置->筛选器设置中修改,支持标签分类作为单独筛选项展示;若库未设置筛选项,默认使用“全部库”筛选项,并依其变化而变化
### 11.修复分享的移动端问题
### 12.新增模板3(适用标签类筛选的内容)
### 13.优化访问效率
### 14.优化界面展示效果
### 15.其他已知bug修复

View File

@@ -1,15 +1,15 @@
<?php <?php
/* /*
* @copyright QiaoQiaoShiDai Internet Technology(Shanghai)Co.,Ltd * @copyright QiaoQiaoShiDai Internet Technology(Shanghai)Co.,Ltd
* @license https://www.oaooa.com/licenses/ * @license https://www.oaooa.com/licenses/
* *
* @link https://www.oaooa.com * @link https://www.oaooa.com
* @author zyx(zyx@oaooa.com) * @author zyx(zyx@oaooa.com)
*/ */
define('IN_ADMIN', TRUE); define('IN_ADMIN', TRUE);
define('NOROBOT', TRUE); define('NOROBOT', TRUE);
define('ADMINSCRIPT', basename(__FILE__)); define('ADMINSCRIPT', basename(__FILE__));
define('BASESCRIPT', basename(__FILE__)); define('BASESCRIPT', basename(__FILE__));
define('CURSCRIPT', 'admin'); define('CURSCRIPT', 'admin');
define('APPTYPEID', 0); define('APPTYPEID', 0);
require __DIR__.'/core/adminstart.php'; require __DIR__.'/core/adminstart.php';

View File

@@ -1,395 +1,395 @@
<?php <?php
/* /*
* @copyright QiaoQiaoShiDai Internet Technology(Shanghai)Co.,Ltd * @copyright QiaoQiaoShiDai Internet Technology(Shanghai)Co.,Ltd
* @license https://www.oaooa.com/licenses/ * @license https://www.oaooa.com/licenses/
* *
* @link https://www.oaooa.com * @link https://www.oaooa.com
* @author zyx(zyx@oaooa.com) * @author zyx(zyx@oaooa.com)
*/ */
if(!defined('IN_OAOOA') || !defined('IN_ADMIN')) { if(!defined('IN_OAOOA') || !defined('IN_ADMIN')) {
exit('Access Denied'); exit('Access Denied');
} }
function runquery($sql) { function runquery($sql) {
global $_G; global $_G;
$tablepre = $_G['config']['db'][1]['tablepre']; $tablepre = $_G['config']['db'][1]['tablepre'];
$dbcharset = $_G['config']['db'][1]['dbcharset']; $dbcharset = $_G['config']['db'][1]['dbcharset'];
$sql = str_replace(array(' dzz_', ' `dzz_',' oaooa_', ' `oaooa_' ), array(' {tablepre}', ' `{tablepre}',' {tablepre}', ' `{tablepre}' ), $sql); $sql = str_replace(array(' dzz_', ' `dzz_',' oaooa_', ' `oaooa_' ), array(' {tablepre}', ' `{tablepre}',' {tablepre}', ' `{tablepre}' ), $sql);
$sql = str_replace("\r", "\n", str_replace(array(' {tablepre}', ' `{tablepre}'), array(' '.$tablepre, ' `'.$tablepre), $sql)); $sql = str_replace("\r", "\n", str_replace(array(' {tablepre}', ' `{tablepre}'), array(' '.$tablepre, ' `'.$tablepre), $sql));
$ret = array(); $ret = array();
$num = 0; $num = 0;
foreach(explode(";\n", trim($sql)) as $query) { foreach(explode(";\n", trim($sql)) as $query) {
$queries = explode("\n", trim($query)); $queries = explode("\n", trim($query));
foreach($queries as $query) { foreach($queries as $query) {
$ret[$num] .= $query[0] == '#' || $query[0].$query[1] == '--' ? '' : $query; $ret[$num] .= $query[0] == '#' || $query[0].$query[1] == '--' ? '' : $query;
} }
$num++; $num++;
} }
unset($sql); unset($sql);
foreach($ret as $query) { foreach($ret as $query) {
$query = trim($query); $query = trim($query);
if($query) { if($query) {
if(substr($query, 0, 12) == 'CREATE TABLE') { if(substr($query, 0, 12) == 'CREATE TABLE') {
$name = preg_replace("/CREATE TABLE ([a-z0-9_]+) .*/is", "\\1", $query); $name = preg_replace("/CREATE TABLE ([a-z0-9_]+) .*/is", "\\1", $query);
DB::query(createtable($query, $dbcharset)); DB::query(createtable($query, $dbcharset));
} else { } else {
DB::query($query); DB::query($query);
} }
} }
} }
} }
function createtable($sql, $dbcharset) { function createtable($sql, $dbcharset) {
$type = strtoupper(preg_replace("/^\s*CREATE TABLE\s+.+\s+\(.+?\).*(ENGINE|TYPE)\s*=\s*([a-z]+?).*$/isU", "\\2", $sql)); $type = strtoupper(preg_replace("/^\s*CREATE TABLE\s+.+\s+\(.+?\).*(ENGINE|TYPE)\s*=\s*([a-z]+?).*$/isU", "\\2", $sql));
$type = in_array($type, array('MYISAM', 'HEAP')) ? $type : 'MYISAM'; $type = in_array($type, array('MYISAM', 'HEAP')) ? $type : 'MYISAM';
return preg_replace("/^\s*(CREATE TABLE\s+.+\s+\(.+?\)).*$/isU", "\\1", $sql). return preg_replace("/^\s*(CREATE TABLE\s+.+\s+\(.+?\)).*$/isU", "\\1", $sql).
( " ENGINE=$type DEFAULT CHARSET=$dbcharset"); ( " ENGINE=$type DEFAULT CHARSET=$dbcharset");
} }
function cron_create($app, $filename='', $name='', $weekday=-1, $day=-1, $hour=-1, $minute=-1) { function cron_create($app, $filename='', $name='', $weekday=-1, $day=-1, $hour=-1, $minute=-1) {
$pluginid = $app['identifier']; $pluginid = $app['identifier'];
$app_path = $app['app_path']; $app_path = $app['app_path'];
if(!ispluginkey($pluginid)) { if(!ispluginkey($pluginid)) {
return false; return false;
} }
$dir = DZZ_ROOT.'./'.$app_path.'/'.$pluginid.'/cron'; $dir = DZZ_ROOT.'./'.$app_path.'/'.$pluginid.'/cron';
if(!file_exists($dir)) { if(!file_exists($dir)) {
return false; return false;
} }
$crondir = dir($dir); $crondir = dir($dir);
while($filename = $crondir->read()) { while($filename = $crondir->read()) {
if(!in_array($filename, array('.', '..')) && preg_match("/^cron\_[\w\.]+$/", $filename)) { if(!in_array($filename, array('.', '..')) && preg_match("/^cron\_[\w\.]+$/", $filename)) {
$content = file_get_contents($dir.'/'.$filename); $content = file_get_contents($dir.'/'.$filename);
preg_match("/cronname\:(.+?)\n/", $content, $r);$name = trim($r[1]); preg_match("/cronname\:(.+?)\n/", $content, $r);$name = trim($r[1]);
preg_match("/week\:(.+?)\n/", $content, $r);$weekday = trim($r[1]) ? intval($r[1]) : -1; preg_match("/week\:(.+?)\n/", $content, $r);$weekday = trim($r[1]) ? intval($r[1]) : -1;
preg_match("/day\:(.+?)\n/", $content, $r);$day = trim($r[1]) ? intval($r[1]) : -1; preg_match("/day\:(.+?)\n/", $content, $r);$day = trim($r[1]) ? intval($r[1]) : -1;
preg_match("/hour\:(.+?)\n/", $content, $r);$hour = trim($r[1]) ? intval($r[1]) : -1; preg_match("/hour\:(.+?)\n/", $content, $r);$hour = trim($r[1]) ? intval($r[1]) : -1;
preg_match("/minute\:(.+?)\n/", $content, $r);$minute = trim($r[1]) ? trim($r[1]) : 0; preg_match("/minute\:(.+?)\n/", $content, $r);$minute = trim($r[1]) ? trim($r[1]) : 0;
$minutenew = explode(',', $minute); $minutenew = explode(',', $minute);
foreach($minutenew as $key => $val) { foreach($minutenew as $key => $val) {
$minutenew[$key] = $val = intval($val); $minutenew[$key] = $val = intval($val);
if($val < 0 || $var > 59) { if($val < 0 || $var > 59) {
unset($minutenew[$key]); unset($minutenew[$key]);
} }
} }
$minutenew = array_slice(array_unique($minutenew), 0, 12); $minutenew = array_slice(array_unique($minutenew), 0, 12);
$minutenew = implode("\t", $minutenew); $minutenew = implode("\t", $minutenew);
$filename = $app_path.':'.$pluginid.':'.$filename; $filename = $app_path.':'.$pluginid.':'.$filename;
$cronid = C::t('cron')->get_cronid_by_filename($filename); $cronid = C::t('cron')->get_cronid_by_filename($filename);
if(!$cronid) { if(!$cronid) {
C::t('cron')->insert(array( C::t('cron')->insert(array(
'available' => 1, 'available' => 1,
'type' => 'app', 'type' => 'app',
'name' => $name, 'name' => $name,
'filename' => $filename, 'filename' => $filename,
'weekday' => $weekday, 'weekday' => $weekday,
'day' => $day, 'day' => $day,
'hour' => $hour, 'hour' => $hour,
'minute' => $minutenew, 'minute' => $minutenew,
), true); ), true);
} else { } else {
C::t('cron')->update($cronid, array( C::t('cron')->update($cronid, array(
'name' => $name, 'name' => $name,
'weekday' => $weekday, 'weekday' => $weekday,
'day' => $day, 'day' => $day,
'hour' => $hour, 'hour' => $hour,
'minute' => $minutenew, 'minute' => $minutenew,
)); ));
} }
} }
} }
} }
function cron_delete($app) { function cron_delete($app) {
$pluginid = $app['identifier']; $pluginid = $app['identifier'];
$app_path = $app['app_path']; $app_path = $app['app_path'];
if(!ispluginkey($pluginid)) { if(!ispluginkey($pluginid)) {
return false; return false;
} }
$dir = DZZ_ROOT.'./'.$app_path.'/'.$pluginid.'/cron'; $dir = DZZ_ROOT.'./'.$app_path.'/'.$pluginid.'/cron';
if(!file_exists($dir)) { if(!file_exists($dir)) {
return false; return false;
} }
$crondir = dir($dir); $crondir = dir($dir);
$count = 0; $count = 0;
while($filename = $crondir->read()) { while($filename = $crondir->read()) {
if(!in_array($filename, array('.', '..')) && preg_match("/^cron\_[\w\.]+$/", $filename)) { if(!in_array($filename, array('.', '..')) && preg_match("/^cron\_[\w\.]+$/", $filename)) {
$filename = $app_path.':'.$pluginid.':'.$filename; $filename = $app_path.':'.$pluginid.':'.$filename;
$cronid = C::t('cron')->get_cronid_by_filename($filename); $cronid = C::t('cron')->get_cronid_by_filename($filename);
C::t('cron')->delete($cronid); C::t('cron')->delete($cronid);
$count++; $count++;
} }
} }
return $count; return $count;
} }
function isplugindir($dir) { function isplugindir($dir) {
return preg_match("/^[a-z]+[a-z0-9_]*\/$/", $dir); return preg_match("/^[a-z]+[a-z0-9_]*\/$/", $dir);
} }
function ispluginkey($key) { function ispluginkey($key) {
return preg_match("/^[a-z]+[a-z0-9_]*$/i", $key); return preg_match("/^[a-z]+[a-z0-9_]*$/i", $key);
} }
function dir_writeable($dir) { function dir_writeable($dir) {
if(!is_dir($dir)) { if(!is_dir($dir)) {
@mkdir($dir, 0777); @mkdir($dir, 0777);
} }
if(is_dir($dir)) { if(is_dir($dir)) {
if($fp = @fopen("$dir/test.txt", 'w')) { if($fp = @fopen("$dir/test.txt", 'w')) {
@fclose($fp); @fclose($fp);
@unlink("$dir/test.txt"); @unlink("$dir/test.txt");
$writeable = 1; $writeable = 1;
} else { } else {
$writeable = 0; $writeable = 0;
} }
} }
return $writeable; return $writeable;
} }
function exportdata($name, $filename, $data) { function exportdata($name, $filename, $data) {
global $_G; global $_G;
require_once libfile('class/xml'); require_once libfile('class/xml');
$root = array( $root = array(
'Title' => $name, 'Title' => $name,
'Version' => $_G['setting']['version'], 'Version' => $_G['setting']['version'],
'Time' => dgmdate(TIMESTAMP, 'Y-m-d H:i'), 'Time' => dgmdate(TIMESTAMP, 'Y-m-d H:i'),
'From' => $_G['setting']['bbname'].' ('.$_G['siteurl'].')', 'From' => $_G['setting']['bbname'].' ('.$_G['siteurl'].')',
'Data' => exportarray($data, 1) 'Data' => exportarray($data, 1)
); );
$filename = strtolower(str_replace(array('!', ' '), array('', '_'), $name)).'_'.$filename.'.xml'; $filename = strtolower(str_replace(array('!', ' '), array('', '_'), $name)).'_'.$filename.'.xml';
$plugin_export = array2xml($root, 1); $plugin_export = array2xml($root, 1);
ob_end_clean(); ob_end_clean();
dheader('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); dheader('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
dheader('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); dheader('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
dheader('Cache-Control: no-cache, must-revalidate'); dheader('Cache-Control: no-cache, must-revalidate');
dheader('Pragma: no-cache'); dheader('Pragma: no-cache');
dheader('Content-Encoding: none'); dheader('Content-Encoding: none');
dheader('Content-Length: '.strlen($plugin_export)); dheader('Content-Length: '.strlen($plugin_export));
dheader('Content-Disposition: attachment; filename='.$filename); dheader('Content-Disposition: attachment; filename='.$filename);
dheader('Content-Type: text/xml'); dheader('Content-Type: text/xml');
echo $plugin_export; echo $plugin_export;
define('FOOTERDISABLED' , 1); define('FOOTERDISABLED' , 1);
exit(); exit();
} }
function imagetobase64($file){ function imagetobase64($file){
$type=getimagesize($file);//取得图片的大小,类型等 $type=getimagesize($file);//取得图片的大小,类型等
$fp=fopen($file,"r")or die("Can't open file"); $fp=fopen($file,"r")or die("Can't open file");
$file_content=chunk_split(base64_encode(fread($fp,filesize($file))));//base64编码 $file_content=chunk_split(base64_encode(fread($fp,filesize($file))));//base64编码
switch($type[2]){//判读图片类型 switch($type[2]){//判读图片类型
case 1:$img_type="gif";break; case 1:$img_type="gif";break;
case 2:$img_type="jpg";break; case 2:$img_type="jpg";break;
case 3:$img_type="png";break; case 3:$img_type="png";break;
} }
$img='data:image/'.$img_type.';base64,'.$file_content;//合成图片的base64编码 $img='data:image/'.$img_type.';base64,'.$file_content;//合成图片的base64编码
fclose($fp); fclose($fp);
return $img; return $img;
} }
function base64toimage($data,$dir='appimg',$target=''){ function base64toimage($data,$dir='appimg',$target=''){
global $_G; global $_G;
$dataarr=explode(',',$data); $dataarr=explode(',',$data);
$imgcontent=base64_decode($dataarr[1]); $imgcontent=base64_decode($dataarr[1]);
$imgext=str_replace(array('data:image/',';base64'),'',$dataarr[0]); $imgext=str_replace(array('data:image/',';base64'),'',$dataarr[0]);
if(!$target) { if(!$target) {
$imageext=array('jpg','jpeg','png','gif'); $imageext=array('jpg','jpeg','png','gif');
if(!in_array($imgext,$imageext)) $ext='jpg'; if(!in_array($imgext,$imageext)) $ext='jpg';
$subdir = $subdir1 = $subdir2 = ''; $subdir = $subdir1 = $subdir2 = '';
$subdir1 = date('Ym'); $subdir1 = date('Ym');
$subdir2 = date('d'); $subdir2 = date('d');
$subdir = $subdir1.'/'.$subdir2.'/'; $subdir = $subdir1.'/'.$subdir2.'/';
$target1=$_G['setting']['attachdir'].$dir.'/'.$subdir.''.date('His').''.strtolower(random(16)).'.'.$imgext; $target1=$_G['setting']['attachdir'].$dir.'/'.$subdir.''.date('His').''.strtolower(random(16)).'.'.$imgext;
$target=str_replace($_G['setting']['attachdir'],'',$target1); $target=str_replace($_G['setting']['attachdir'],'',$target1);
}else{ }else{
$target1=$_G['setting']['attachdir'].$target; $target1=$_G['setting']['attachdir'].$target;
} }
$targetpath = dirname($target1); $targetpath = dirname($target1);
dmkdir($targetpath); dmkdir($targetpath);
if(file_put_contents($target1, $imgcontent)){ if(file_put_contents($target1, $imgcontent)){
if(@filesize($target1)<200) { if(@filesize($target1)<200) {
@unlink($target1); @unlink($target1);
return false; return false;
} }
return $target; return $target;
}else return false; }else return false;
} }
function importByarray($arr,$force=0){ function importByarray($arr,$force=0){
$app=$arr['app']; $app=$arr['app'];
//判断应用是否已经存在 //判断应用是否已经存在
$oapp=DB::fetch_first("select * from %t where identifier=%s and app_path=%s ",array('app_market', $app['identifier'],$app['app_path'])); $oapp=DB::fetch_first("select * from %t where identifier=%s and app_path=%s ",array('app_market', $app['identifier'],$app['app_path']));
if(!$force && $oapp){ if(!$force && $oapp){
showmessage('application_been'); showmessage('application_been');
} }
//转化应用图标 //转化应用图标
if($app['appico']){ if($app['appico']){
$app['appico']=base64toimage($app['appico'],'appico'); $app['appico']=base64toimage($app['appico'],'appico');
} }
$app['extra']=serialize($app['extra']); $app['extra']=serialize($app['extra']);
if($oapp){ if($oapp){
$appid=$oapp['appid']; $appid=$oapp['appid'];
C::t('app_market')->update($appid,$app); C::t('app_market')->update($appid,$app);
}else{ }else{
$app['available']=0; $app['available']=0;
$appid=$app['appid']=C::t('app_market')->insert($app,1); $appid=$app['appid']=C::t('app_market')->insert($app,1);
} }
if($arr['hooks']){//初始化钩子 if($arr['hooks']){//初始化钩子
C::t('hooks')->insert_by_appid($appid,$arr['hooks'],$arr['_attributes']['hooks']); C::t('hooks')->insert_by_appid($appid,$arr['hooks'],$arr['_attributes']['hooks']);
} }
if($appid){ if($appid){
C::t('app_open')->insert_by_exts($appid,($app['fileext']?explode(',',$app['fileext']):array())); C::t('app_open')->insert_by_exts($appid,($app['fileext']?explode(',',$app['fileext']):array()));
C::t('app_tag')->addtags(($app['tag']?explode(',',$app['tag']):array()),$appid); C::t('app_tag')->addtags(($app['tag']?explode(',',$app['tag']):array()),$appid);
} }
return $app; return $app;
} }
function upgradeinformation($status = 0) { function upgradeinformation($status = 0) {
global $_G, $upgrade_step; global $_G, $upgrade_step;
if(empty($upgrade_step)) { if(empty($upgrade_step)) {
return ''; return '';
} }
if($status==1 && $upgrade_step['step']==2) return ''; if($status==1 && $upgrade_step['step']==2) return '';
$update = array(); $update = array();
$siteuniqueid = C::t('setting')->fetch('siteuniqueid'); $mcode = C::t('setting')->fetch('machinecode');
$update['siteurl']=$_G['siteurl']; $update['siteurl']=$_G['siteurl'];
$update['sitename']=$_G['setting']['sitename']; $update['sitename']=$_G['setting']['sitename'];
$update['uniqueid'] = $siteuniqueid; $update['mcode'] = $mcode;
$update['curversion'] = $upgrade_step['curversion']; $update['curversion'] = $upgrade_step['curversion'];
$update['currelease'] = $upgrade_step['currelease']; $update['currelease'] = $upgrade_step['currelease'];
$update['upgradeversion'] = $upgrade_step['version']; $update['upgradeversion'] = $upgrade_step['version'];
$update['upgraderelease'] = $upgrade_step['release']; $update['upgraderelease'] = $upgrade_step['release'];
$update['step'] = $upgrade_step['step'] == 'dbupdate' ? 4 : $upgrade_step['step']; $update['step'] = $upgrade_step['step'] == 'dbupdate' ? 4 : $upgrade_step['step'];
$update['status'] = $status; $update['status'] = $status;
$update['version_level'] = CORE_VERSION_LEVEL; $update['version_level'] = CORE_VERSION_LEVEL;
$data = ''; $data = '';
foreach($update as $key => $value) { foreach($update as $key => $value) {
$data .= $key.'='.rawurlencode($value).'&'; $data .= $key.'='.rawurlencode($value).'&';
} }
$upgradeurl = APP_CHECK_URL."market/system/upgrade/".rawurlencode(base64_encode($data))."/".TIMESTAMP; $upgradeurl = APP_CHECK_URL."authlicense/count//upgrade/".rawurlencode(base64_encode($data))."/".TIMESTAMP;
dfsockopen($upgradeurl,0, '', '', FALSE, '',0.2); dfsockopen($upgradeurl,0, '', '', FALSE, '',0.2);
return ''; return '';
//return '<img src="'.$upgradeurl.'" width="0" height="0" />'; //return '<img src="'.$upgradeurl.'" width="0" height="0" />';
} }
function upgradeinformation_app($status = 0) { function upgradeinformation_app($status = 0) {
global $_G, $appinfo; global $_G, $appinfo;
if(empty($appinfo)) { if(empty($appinfo)) {
return ''; return '';
}else{ }else{
if( isset($appinfo['upgradeinfo']) ){ if( isset($appinfo['upgradeinfo']) ){
$lastversion=$appinfo['upgradeinfo']['version']; $lastversion=$appinfo['upgradeinfo']['version'];
$mid=$appinfo['upgradeinfo']['mid']; $mid=$appinfo['upgradeinfo']['mid'];
}else{ }else{
$lastversion=$appinfo['version']; $lastversion=$appinfo['version'];
$mid=$appinfo['mid']; $mid=$appinfo['mid'];
} }
} }
if($status==0) return ''; if($status==0) return '';
$update = array(); $update = array();
$siteuniqueid = C::t('setting')->fetch('siteuniqueid'); $siteuniqueid = C::t('setting')->fetch('siteuniqueid');
$update['siteurl']=$_G['siteurl']; $update['siteurl']=$_G['siteurl'];
$update['sitename']=$_G['setting']['sitename']; $update['sitename']=$_G['setting']['sitename'];
$update['uniqueid'] = $siteuniqueid; $update['uniqueid'] = $siteuniqueid;
$update['mid'] = $mid; $update['mid'] = $mid;
$update['curversion'] = $appinfo['version']; $update['curversion'] = $appinfo['version'];
$update['lastversion'] = $lastversion; $update['lastversion'] = $lastversion;
$update['identifier'] = $appinfo['identifier']; $update['identifier'] = $appinfo['identifier'];
$update['lastversion'] = $lastversion; $update['lastversion'] = $lastversion;
$update['status'] = $status; $update['status'] = $status;
$update['version_level'] = CORE_VERSION_LEVEL; $update['version_level'] = CORE_VERSION_LEVEL;
$data = ''; $data = '';
foreach($update as $key => $value) { foreach($update as $key => $value) {
$data .= $key.'='.rawurlencode($value).'&'; $data .= $key.'='.rawurlencode($value).'&';
} }
$upgradeurl=APP_CHECK_URL."market/appinstall/".rawurlencode(base64_encode($data)); //APP_CHECK_URL."index.php?mod=dzzmarket&op=installinfo&data=".rawurlencode(base64_encode($data)).'&timestamp='.TIMESTAMP; $upgradeurl=APP_CHECK_URL."market/appinstall/".rawurlencode(base64_encode($data)); //APP_CHECK_URL."index.php?mod=dzzmarket&op=installinfo&data=".rawurlencode(base64_encode($data)).'&timestamp='.TIMESTAMP;
dfsockopen($upgradeurl,0, '', '', FALSE, '',0.2); dfsockopen($upgradeurl,0, '', '', FALSE, '',0.2);
return ''; return '';
//return '<img src="'.$upgradeurl.'" width="0" height="0" />'; //return '<img src="'.$upgradeurl.'" width="0" height="0" />';
} }
function getwheres($intkeys, $strkeys, $randkeys, $likekeys, $pre='') { function getwheres($intkeys, $strkeys, $randkeys, $likekeys, $pre='') {
$wherearr = array(); $wherearr = array();
$urls = array(); $urls = array();
foreach ($intkeys as $var) { foreach ($intkeys as $var) {
$value = isset($_GET[$var])?$_GET[$var]:''; $value = isset($_GET[$var])?$_GET[$var]:'';
if(strlen($value)) { if(strlen($value)) {
$urls[] = "$var=$value"; $urls[] = "$var=$value";
$var = addslashes($var); $var = addslashes($var);
$wherearr[] = "{$pre}{$var}='".intval($value)."'"; $wherearr[] = "{$pre}{$var}='".intval($value)."'";
} }
} }
foreach ($strkeys as $var) { foreach ($strkeys as $var) {
$value = isset($_GET[$var])?trim($_GET[$var]):''; $value = isset($_GET[$var])?trim($_GET[$var]):'';
if(strlen($value)) { if(strlen($value)) {
$urls[] = "$var=".rawurlencode($value); $urls[] = "$var=".rawurlencode($value);
$var = addslashes($var); $var = addslashes($var);
$value = addslashes($value); $value = addslashes($value);
$wherearr[] = "{$pre}{$var}='$value'"; $wherearr[] = "{$pre}{$var}='$value'";
} }
} }
foreach ($randkeys as $vars) { foreach ($randkeys as $vars) {
$value1 = isset($_GET[$vars[1].'1'])?$vars[0]($_GET[$vars[1].'1']):''; $value1 = isset($_GET[$vars[1].'1'])?$vars[0]($_GET[$vars[1].'1']):'';
$value2 = isset($_GET[$vars[1].'2'])?$vars[0]($_GET[$vars[1].'2']):''; $value2 = isset($_GET[$vars[1].'2'])?$vars[0]($_GET[$vars[1].'2']):'';
if($value1) { if($value1) {
$urls[] = "{$vars[1]}1=".rawurlencode($_GET[$vars[1].'1']); $urls[] = "{$vars[1]}1=".rawurlencode($_GET[$vars[1].'1']);
$vars[1] = addslashes($vars[1]); $vars[1] = addslashes($vars[1]);
$value1 = addslashes($value1); $value1 = addslashes($value1);
$wherearr[] = "{$pre}{$vars[1]}>='$value1'"; $wherearr[] = "{$pre}{$vars[1]}>='$value1'";
} }
if($value2) { if($value2) {
$wherearr[] = "{$pre}{$vars[1]}<='$value2'"; $wherearr[] = "{$pre}{$vars[1]}<='$value2'";
$vars[2] = addslashes($vars[2]); $vars[2] = addslashes($vars[2]);
$value2 = addslashes($value2); $value2 = addslashes($value2);
$urls[] = "{$vars[1]}2=".rawurlencode($_GET[$vars[1].'2']); $urls[] = "{$vars[1]}2=".rawurlencode($_GET[$vars[1].'2']);
} }
} }
foreach ($likekeys as $var) { foreach ($likekeys as $var) {
$value = isset($_GET[$var])?stripsearchkey($_GET[$var]):''; $value = isset($_GET[$var])?stripsearchkey($_GET[$var]):'';
if(strlen($value)>1) { if(strlen($value)>1) {
$urls[] = "$var=".rawurlencode($_GET[$var]); $urls[] = "$var=".rawurlencode($_GET[$var]);
$var = addslashes($var); $var = addslashes($var);
$value = addslashes($value); $value = addslashes($value);
$wherearr[] = "{$pre}{$var} LIKE BINARY '%$value%'"; $wherearr[] = "{$pre}{$var} LIKE BINARY '%$value%'";
} }
} }
return array('wherearr'=>$wherearr, 'urls'=>$urls); return array('wherearr'=>$wherearr, 'urls'=>$urls);
} }
function getorders($alloworders, $default, $pre='') { function getorders($alloworders, $default, $pre='') {
$orders = array('sql'=>'', 'urls'=>array()); $orders = array('sql'=>'', 'urls'=>array());
if(empty($_GET['orderby']) || !in_array($_GET['orderby'], $alloworders)) { if(empty($_GET['orderby']) || !in_array($_GET['orderby'], $alloworders)) {
$_GET['orderby'] = $default; $_GET['orderby'] = $default;
if(empty($_GET['ordersc'])) $_GET['ordersc'] = 'desc'; if(empty($_GET['ordersc'])) $_GET['ordersc'] = 'desc';
} }
$orders['sql'] = " ORDER BY {$pre}$_GET[orderby] "; $orders['sql'] = " ORDER BY {$pre}$_GET[orderby] ";
$orders['urls'][] = "orderby=$_GET[orderby]"; $orders['urls'][] = "orderby=$_GET[orderby]";
if(!empty($_GET['ordersc']) && $_GET['ordersc'] == 'desc') { if(!empty($_GET['ordersc']) && $_GET['ordersc'] == 'desc') {
$orders['urls'][] = 'ordersc=desc'; $orders['urls'][] = 'ordersc=desc';
$orders['sql'] .= ' DESC '; $orders['sql'] .= ' DESC ';
} else { } else {
$orders['urls'][] = 'ordersc=asc'; $orders['urls'][] = 'ordersc=asc';
} }
return $orders; return $orders;
} }
?> ?>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,15 +1,15 @@
<?php <?php
namespace admin\login\classes; namespace admin\login\classes;
use \core as C; use \core as C;
class Adminlogin{ class Adminlogin{
public function run(){ public function run(){
$dzz = C::app(); $dzz = C::app();
$dzz->init(); $dzz->init();
$admincp = new \dzz_admincp(); $admincp = new \dzz_admincp();
$admincp->core = $dzz; $admincp->core = $dzz;
$return = $admincp->init(); $return = $admincp->init();
if(defined('IS_API') && IS_API && $return === 0){ if(defined('IS_API') && IS_API && $return === 0){
exit(json_encode(array('loginstatus'=>0,'hash'=>FORMHASH))); exit(json_encode(array('loginstatus'=>0,'hash'=>FORMHASH)));
} }
} }
} }

View File

@@ -1,130 +1,130 @@
input:-webkit-autofill { input:-webkit-autofill {
box-shadow: 0 0 0px 1000px white inset !important; box-shadow: 0 0 0px 1000px white inset !important;
} }
.mainContainer { .mainContainer {
position: absolute; position: absolute;
height: 100%; height: 100%;
width: 100%; width: 100%;
z-index: 10; z-index: 10;
} }
.loginContainer { .loginContainer {
height: 100%; height: 100%;
width: 100% width: 100%
} }
.logintips { .logintips {
color: red; color: red;
line-height: 30px; line-height: 30px;
padding: 20px; padding: 20px;
width: 350px; width: 350px;
background: #FFF; background: #FFF;
border-radius: 5px; border-radius: 5px;
border: 1px solid #e3e3e3; border: 1px solid #e3e3e3;
-webkit-box-shadow: 0 5px 15px RGBA(0,0,0,.3); -webkit-box-shadow: 0 5px 15px RGBA(0,0,0,.3);
-moz-box-shadow: 0 5px 15px RGBA(0,0,0,.3); -moz-box-shadow: 0 5px 15px RGBA(0,0,0,.3);
box-shadow: 0 5px 15px RGBA(0,0,0,.3); box-shadow: 0 5px 15px RGBA(0,0,0,.3);
} }
#loginform { #loginform {
width: 350px; width: 350px;
margin: 0; margin: 0;
text-align: center; text-align: center;
} }
.login h4 { .login h4 {
height: 35px; height: 35px;
margin-bottom: 10px; margin-bottom: 10px;
} }
.avatarContainer { .avatarContainer {
margin-bottom: 50px; margin-bottom: 50px;
margin-top: 20px; margin-top: 20px;
overflow: hidden; overflow: hidden;
text-align: center; text-align: center;
} }
.avatarContainer img { .avatarContainer img {
max-width: 128px; max-width: 128px;
max-height: 128px; max-height: 128px;
} }
.avatarContainer .maintitle{ .avatarContainer .maintitle{
font-size:20px; font-size:20px;
font-weight: 600; font-weight: 600;
padding-top:10px; padding-top:10px;
} }
#admin_password_Container { #admin_password_Container {
padding: 30px 0 30px 0; padding: 30px 0 30px 0;
} }
#admin_password_Container .input-black { #admin_password_Container .input-black {
margin-bottom: 10px; margin-bottom: 10px;
} }
.loginformContainer { .loginformContainer {
padding: 30px; padding: 30px;
text-align: center; text-align: center;
background-color: #FFF; background-color: #FFF;
border-radius: 5px; border-radius: 5px;
border: 1px solid #e3e3e3; border: 1px solid #e3e3e3;
-webkit-box-shadow: 0 5px 15px RGBA(0,0,0,.3); -webkit-box-shadow: 0 5px 15px RGBA(0,0,0,.3);
-moz-box-shadow: 0 5px 15px RGBA(0,0,0,.3); -moz-box-shadow: 0 5px 15px RGBA(0,0,0,.3);
box-shadow: 0 5px 15px RGBA(0,0,0,.3); box-shadow: 0 5px 15px RGBA(0,0,0,.3);
} }
.loginformContainer .username { .loginformContainer .username {
font-size: 16px; font-size: 16px;
font-weight: bold; font-weight: bold;
text-align: center; text-align: center;
margin: 10px 0 0; margin: 10px 0 0;
min-height: 1em; min-height: 1em;
} }
.loginformContainer .email { .loginformContainer .email {
color: #404040; color: #404040;
line-height: 2; line-height: 2;
margin-bottom: 0; margin-bottom: 0;
font-size: 14px; font-size: 14px;
} }
input[type="password"], input[type="text"] { input[type="password"], input[type="text"] {
height: 40px; height: 40px;
width: 100%; width: 100%;
direction: ltr; direction: ltr;
font-size: 14px; font-size: 14px;
outline: none; outline: none;
width: 286px\0; width: 286px\0;
*width:286px; *width:286px;
} }
input[type="submit"] { input[type="submit"] {
width: 100%; width: 100%;
height: 40px; height: 40px;
font-size: 16px; font-size: 16px;
font-weight: 700; font-weight: 700;
width: 286px\0; width: 286px\0;
*width:286px; *width:286px;
} }
input[type="password"]:focus, input[type="text"]:focus { input[type="password"]:focus, input[type="text"]:focus {
box-shadow: none; box-shadow: none;
outline: none; outline: none;
} }
.footer .copyright { .footer .copyright {
border: medium none; border: medium none;
font-size: 12px; font-size: 12px;
position: static; position: static;
text-align: center; text-align: center;
} }
.copyright { .copyright {
color: #899; color: #899;
font-family: "微软雅黑"; font-family: "微软雅黑";
font-size: 12px; font-size: 12px;
left: 5px; left: 5px;
line-height: 150%; line-height: 150%;
padding-top: 20px; padding-top: 20px;
text-align: center; text-align: center;
z-index: 10; z-index: 10;
} }
.copyright a { .copyright a {
color: #899; color: #899;
} }
.wrapper-placeholder { .wrapper-placeholder {
text-align: left text-align: left
} }
.Topcarousel { .Topcarousel {
display: inline-block; display: inline-block;
width: 100px; width: 100px;
height: 100px; height: 100px;
border-radius: 50%; border-radius: 50%;
line-height: 100px; line-height: 100px;
font-size: 45px; font-size: 45px;
color: #fff; color: #fff;
} }

View File

@@ -130,7 +130,7 @@ function html_login_form() {
$sid = getglobal('sid'); $sid = getglobal('sid');
$avatarstatus=getglobal('avatarstatus','member'); $avatarstatus=getglobal('avatarstatus','member');
if(!$uid ){ if(!$uid ){
$avastar ='<img src="'.($_G['setting']['sitelogo']?\IO::getFileUri('attach::'.$_G['setting']['sitelogo']):'data/attachment/sitelogo/sitelogo.png').'" />'; $avastar ='<img src="data/attachment/sitelogo/sitelogo.png" />';
}else{ }else{
$avastar = avatar_block($uid); $avastar = avatar_block($uid);
} }

View File

@@ -1,9 +1,9 @@
<?php <?php
/** /**
* Created by PhpStorm. * Created by PhpStorm.
* User: Administrator * User: Administrator
* Date: 2020/9/7 * Date: 2020/9/7
* Time: 16:24 * Time: 16:24
*/ */
$return = updatesession(); $return = updatesession();
exit(json_encode(array('status'=>$return))); exit(json_encode(array('status'=>$return)));

View File

@@ -20,6 +20,7 @@ b725e80a7ff1e8a3a434e77ba290a6df *admin/system/dist/css/chunk-74c32c70.4b7d665e.
2e6b6788446f5529d3deed1697515b3b *admin/system/dist/css/chunk-76f23146.6fc79cd8.css 2e6b6788446f5529d3deed1697515b3b *admin/system/dist/css/chunk-76f23146.6fc79cd8.css
c513c1a246b65307640fca09b0034313 *admin/system/dist/css/chunk-77c8d08e.61624e22.css c513c1a246b65307640fca09b0034313 *admin/system/dist/css/chunk-77c8d08e.61624e22.css
d12dc4f1e439eb23e83c18205290cf55 *admin/system/dist/css/chunk-7828662a.c81657ef.css d12dc4f1e439eb23e83c18205290cf55 *admin/system/dist/css/chunk-7828662a.c81657ef.css
053d89992d7adc9fae1b7830d031f2b0 *admin/system/dist/css/chunk-801d4da6.a47ba236.css
4fc8845677fec5f6ab3e4e56dcf36650 *admin/system/dist/css/chunk-9f9c2568.5356ad7d.css 4fc8845677fec5f6ab3e4e56dcf36650 *admin/system/dist/css/chunk-9f9c2568.5356ad7d.css
84614a4a0974a1157dc75739ce2b8966 *admin/system/dist/css/chunk-af3b1b98.b822363f.css 84614a4a0974a1157dc75739ce2b8966 *admin/system/dist/css/chunk-af3b1b98.b822363f.css
f018e18ed2f2fe16f2d76ed02b284545 *admin/system/dist/css/chunk-e730cc06.987283b7.css f018e18ed2f2fe16f2d76ed02b284545 *admin/system/dist/css/chunk-e730cc06.987283b7.css
@@ -33,7 +34,8 @@ ea41001e9a9735db73fd1c33f753a258 *admin/system/dist/css/chunk-vendors.4d5d56a8.c
888e61f04316f10bddfff7bee10c6dd0 *admin/system/dist/fonts/remixicon.888e61f0.ttf 888e61f04316f10bddfff7bee10c6dd0 *admin/system/dist/fonts/remixicon.888e61f0.ttf
9915fef980fa539085da55b84dfde760 *admin/system/dist/fonts/remixicon.9915fef9.woff2 9915fef980fa539085da55b84dfde760 *admin/system/dist/fonts/remixicon.9915fef9.woff2
95138f36e015ad912c37db92164f5844 *admin/system/dist/img/remixicon.95138f36.svg 95138f36e015ad912c37db92164f5844 *admin/system/dist/img/remixicon.95138f36.svg
ae1ba44ed8a73c33b0aa0ab4a44cf523 *admin/system/dist/index.html 911c0d4f607a5e0f1ba2a9eb9280ab66 *admin/system/dist/index.html
e116b4f06b14ec0f557bbf891fd591af *admin/system/dist/js/chunk-2b4f90f7.8dd0185d.js
057184d69924bbec3848613e9d484a61 *admin/system/dist/js/chunk-2b4f90f7.ec4ac270.js 057184d69924bbec3848613e9d484a61 *admin/system/dist/js/chunk-2b4f90f7.ec4ac270.js
9915050af25ebd2a757ddda815fa2025 *admin/system/dist/js/chunk-2d0a3327.ad2684c9.js 9915050af25ebd2a757ddda815fa2025 *admin/system/dist/js/chunk-2d0a3327.ad2684c9.js
14d1eb5255f59b744a0e86b76e999f8c *admin/system/dist/js/chunk-2d0bdbc6.4ec7bc5e.js 14d1eb5255f59b744a0e86b76e999f8c *admin/system/dist/js/chunk-2d0bdbc6.4ec7bc5e.js
@@ -54,11 +56,13 @@ f1356ba4b41b1c2d0db9158645cfd968 *admin/system/dist/js/chunk-2d0dd46d.bd431129.j
240a2f188b2b072ac8200cd0a3cc153a *admin/system/dist/js/chunk-76f23146.0d2957ed.js 240a2f188b2b072ac8200cd0a3cc153a *admin/system/dist/js/chunk-76f23146.0d2957ed.js
60e968e5f5a74243077cee14c95528ee *admin/system/dist/js/chunk-77c8d08e.3e576953.js 60e968e5f5a74243077cee14c95528ee *admin/system/dist/js/chunk-77c8d08e.3e576953.js
80880cf301a3788dc9bee90756f7e93d *admin/system/dist/js/chunk-7828662a.e587f025.js 80880cf301a3788dc9bee90756f7e93d *admin/system/dist/js/chunk-7828662a.e587f025.js
55515e2cd3f2bb776a090112418eae77 *admin/system/dist/js/chunk-801d4da6.0f74a3ea.js
55253ec60403c36280aecd7a278c8737 *admin/system/dist/js/chunk-9f9c2568.538835dd.js 55253ec60403c36280aecd7a278c8737 *admin/system/dist/js/chunk-9f9c2568.538835dd.js
0b209b8b1a24238e609f30444e59741f *admin/system/dist/js/chunk-9f9c2568.877eae72.js 0b209b8b1a24238e609f30444e59741f *admin/system/dist/js/chunk-9f9c2568.877eae72.js
037a3c1f50e8e47edde48a7ff4d45130 *admin/system/dist/js/chunk-af3b1b98.850ec152.js 037a3c1f50e8e47edde48a7ff4d45130 *admin/system/dist/js/chunk-af3b1b98.850ec152.js
25f102fba0aba57fcad60998d1e1c334 *admin/system/dist/js/chunk-e730cc06.3ce9a994.js 25f102fba0aba57fcad60998d1e1c334 *admin/system/dist/js/chunk-e730cc06.3ce9a994.js
328be3371bb7c2536befbfddcc64e417 *admin/system/dist/js/chunk-vendors.3b95dfe3.js 328be3371bb7c2536befbfddcc64e417 *admin/system/dist/js/chunk-vendors.3b95dfe3.js
b4c690180b4c0268240bb8544d252b67 *admin/system/dist/js/index.5892fe49.js
5247e802fd0efbbe8eb80cd9f6a34540 *admin/system/dist/js/index.b5ff203c.js 5247e802fd0efbbe8eb80cd9f6a34540 *admin/system/dist/js/index.b5ff203c.js
e6b823145386281984301ad83fcf96fe *admin/system/dist/js/index.d36cff59.js e6b823145386281984301ad83fcf96fe *admin/system/dist/js/index.d36cff59.js
904b573ab459ffaba51c33b5851d0f5d *admin/system/dist/js/index.d77cc092.js 904b573ab459ffaba51c33b5851d0f5d *admin/system/dist/js/index.d77cc092.js
@@ -111,7 +115,7 @@ bcfb2e3e9c3ff2018f356176a1cf43a2 *core/class/class_core.php
3ce9db683150a76cd033167c7e281391 *core/class/class_Des.php 3ce9db683150a76cd033167c7e281391 *core/class/class_Des.php
212cc7650e4798754337b1fefb291827 *core/class/class_FileDownload.php 212cc7650e4798754337b1fefb291827 *core/class/class_FileDownload.php
b6b0b9dc4773307d80f9215ed5122361 *core/class/class_GifMerge.php b6b0b9dc4773307d80f9215ed5122361 *core/class/class_GifMerge.php
4793dcfc740be53d3fc40ba98562558a *core/class/class_image.php fda45a96b7be48e159007eb8434a9685 *core/class/class_image.php
d301e008d382be1af825d77bc993d423 *core/class/class_ImagePalette.php d301e008d382be1af825d77bc993d423 *core/class/class_ImagePalette.php
1b836428237ca8d2bb58695cbe37df67 *core/class/class_JSSDK.php 1b836428237ca8d2bb58695cbe37df67 *core/class/class_JSSDK.php
986ad79bf8a9bff90c64c82918c0fa74 *core/class/class_Minifier.php 986ad79bf8a9bff90c64c82918c0fa74 *core/class/class_Minifier.php
@@ -218,14 +222,15 @@ b333c9e8748737d29d090f31a502a147 *core/class/table/table_mailcron.php
7efba4a878332f9739c40a4f63d96f64 *core/class/table/table_organization_job.php 7efba4a878332f9739c40a4f63d96f64 *core/class/table/table_organization_job.php
f9fea2c25dbea100b27386dde7057be4 *core/class/table/table_organization_upjob.php f9fea2c25dbea100b27386dde7057be4 *core/class/table/table_organization_upjob.php
7e02ce47e363f56c798a7c261cccc6a4 *core/class/table/table_organization_user.php 7e02ce47e363f56c798a7c261cccc6a4 *core/class/table/table_organization_user.php
def27091cbc525a4cd45b2955472ce29 *core/class/table/table_pichome_collectlist.php
37e3c23f4c36ba1167bc433f18e8ce93 *core/class/table/table_pichome_comments.php 37e3c23f4c36ba1167bc433f18e8ce93 *core/class/table/table_pichome_comments.php
dc169efe36fdf79623277fb5a538c673 *core/class/table/table_pichome_ffmpeg_record.php dc169efe36fdf79623277fb5a538c673 *core/class/table/table_pichome_ffmpeg_record.php
64030519d059cc061b9cc990b2ed9b08 *core/class/table/table_pichome_folder.php 1cbfd07fc6cc2ec4ce28cae9d5334a95 *core/class/table/table_pichome_folder.php
15cc26415b076bb08eeed7f76c40c45b *core/class/table/table_pichome_folderresources.php 15cc26415b076bb08eeed7f76c40c45b *core/class/table/table_pichome_folderresources.php
fb390b2cfce67236a7263549a430868b *core/class/table/table_pichome_folder_relation.php fb390b2cfce67236a7263549a430868b *core/class/table/table_pichome_folder_relation.php
180233f6f8d234986280df5c3821fe24 *core/class/table/table_pichome_imagickrecord.php 180233f6f8d234986280df5c3821fe24 *core/class/table/table_pichome_imagickrecord.php
a2a946f8d3a0180db50b1c7435d9516a *core/class/table/table_pichome_palette.php a2a946f8d3a0180db50b1c7435d9516a *core/class/table/table_pichome_palette.php
ec314812cba390bac62835cce5efdfbf *core/class/table/table_pichome_resources.php 9070977794d2ca52379721d552c3e1e7 *core/class/table/table_pichome_resources.php
534452d059df927d062dac5bcd7b0de6 *core/class/table/table_pichome_resourcestag.php 534452d059df927d062dac5bcd7b0de6 *core/class/table/table_pichome_resourcestag.php
c08ce988dad5ccead193db0a7f79b4f2 *core/class/table/table_pichome_resources_attr.php c08ce988dad5ccead193db0a7f79b4f2 *core/class/table/table_pichome_resources_attr.php
09db8f5c9d2966f503bee5a4c6d6cc32 *core/class/table/table_pichome_resources_relation.php 09db8f5c9d2966f503bee5a4c6d6cc32 *core/class/table/table_pichome_resources_relation.php
@@ -235,7 +240,7 @@ fafb2bf10eed9314bc2bf2d6b32d84b9 *core/class/table/table_pichome_tag.php
02ef950574c3af62f7b13fd61a61c2ce *core/class/table/table_pichome_taggroup.php 02ef950574c3af62f7b13fd61a61c2ce *core/class/table/table_pichome_taggroup.php
d36c3e504e4666b6a9301699ebeeeaa5 *core/class/table/table_pichome_taggroup_relation.php d36c3e504e4666b6a9301699ebeeeaa5 *core/class/table/table_pichome_taggroup_relation.php
1969387f935173b42f34c33c426e1fb7 *core/class/table/table_pichome_tagrelation.php 1969387f935173b42f34c33c426e1fb7 *core/class/table/table_pichome_tagrelation.php
15537ad5c8fac2620c4199d07038a126 *core/class/table/table_pichome_vapp.php c860e27706f0d5d97efceba9a5a1c619 *core/class/table/table_pichome_vapp.php
eea6b39fd13b5fdf18052c7733adb369 *core/class/table/table_process.php eea6b39fd13b5fdf18052c7733adb369 *core/class/table/table_process.php
ffc8c199da703d941c493fa317785611 *core/class/table/table_session.php ffc8c199da703d941c493fa317785611 *core/class/table/table_session.php
774bda01812449ffa4819b0be241dc4e *core/class/table/table_setting.php 774bda01812449ffa4819b0be241dc4e *core/class/table/table_setting.php
@@ -254,7 +259,7 @@ d5b0e7dc291a731a5c184d97baecf2df *core/class/table/table_user_profile_setting.ph
bc2e189cfaacbdb84ddceb3a0abdcf92 *core/class/table/table_user_verify_info.php bc2e189cfaacbdb84ddceb3a0abdcf92 *core/class/table/table_user_verify_info.php
692cda4c6ad17e87e1edefb7251d0116 *core/class/table/table_user_wechat.php 692cda4c6ad17e87e1edefb7251d0116 *core/class/table/table_user_wechat.php
ca64f852f9c9442d65fa30ed279c6d6c *core/coreBase.php ca64f852f9c9442d65fa30ed279c6d6c *core/coreBase.php
25f7c644790916b7121bd38d1301d1ea *core/core_version.php 32785586bb05fca676beed40893a76ba *core/core_version.php
d90d23b8deb20cef2c43e66725ec2813 *core/cron/cron_cache_cleanup_week.php d90d23b8deb20cef2c43e66725ec2813 *core/cron/cron_cache_cleanup_week.php
540843e90244b66d31a1deb8c882d238 *core/cron/cron_cache_pichome_searchhot.php 540843e90244b66d31a1deb8c882d238 *core/cron/cron_cache_pichome_searchhot.php
09bf107dfc58f0424b0245834d221a42 *core/cron/cron_clean_notification_month.php 09bf107dfc58f0424b0245834d221a42 *core/cron/cron_clean_notification_month.php
@@ -371,10 +376,25 @@ f4741b20d0983035a4db52858a0f6240 *data/cache/tags.php
47bbeaba8bfa9a1b1d088e2977ddc314 *data/extdata/exts.php 47bbeaba8bfa9a1b1d088e2977ddc314 *data/extdata/exts.php
d41d8cd98f00b204e9800998ecf8427e *data/sendmail.lock d41d8cd98f00b204e9800998ecf8427e *data/sendmail.lock
d41d8cd98f00b204e9800998ecf8427e *data/sendwx.lock d41d8cd98f00b204e9800998ecf8427e *data/sendwx.lock
ac153bd851d728eed4c993b38260f1c8 *dzz/class/class_encode.php 3adf9db6567079f39787326907e65a81 *dzz/billfish/class/class_billfishexport.php
043e8771d5984838964069c11815a104 *dzz/billfish/class/table/table_billfish_folderrecord.php
e8a6a327799675bebb4a6c66aa895f32 *dzz/billfish/class/table/table_billfish_record.php
946e09642ffe242f3eb7e3876e66127b *dzz/billfish/class/table/table_billfish_taggrouprecord.php
af76b998930a2ea1b565afe98e83c6e3 *dzz/billfish/class/table/table_billfish_tagrecord.php
66eb18511cf2fd7817c97629562f45b2 *dzz/billfish/classes/delpichomefolderafter.php
aebc0d22523952b3a81993ab5d52321d *dzz/billfish/classes/getpichomethumb.php
930c3c4350639839e724b8de7d16b013 *dzz/billfish/classes/pichomevappdelete.php
e284fd1a7b8d5d5ce30d04583588c5e1 *dzz/class/class_encode.php
762fd46dbe12c6fa06ba3df224fe20f8 *dzz/eagle/class/class_eagleexport.php
e165ceec42c6de2c56b5d4339f4843e1 *dzz/eagle/class/table/table_eagle_folderrecord.php
2c1f9123c8775cd340416afee533d29a *dzz/eagle/class/table/table_eagle_record.php
e9a0575b63f2ee8011d81724eb829b30 *dzz/eagle/classes/deleteafter.php
d2a28bf51a52b9530d54e364e6e5766c *dzz/eagle/classes/delpichomefolderafter.php
db2a8594d52f5cc6f65f5271849b094f *dzz/eagle/classes/getpichomethumb.php
0b99362e5be7a741986567d8e9738c69 *dzz/eagle/classes/pichomevappdelete.php
a3ad077bda18e4057e0b31e3b3b2eed4 *dzz/ffmpeg/class/class_fmpeg.php a3ad077bda18e4057e0b31e3b3b2eed4 *dzz/ffmpeg/class/class_fmpeg.php
a8a30984a87248b934ef8747481b2e0e *dzz/ffmpeg/classes/info.php bc4ab81b4c26d1a67a97a9f105201e7e *dzz/ffmpeg/classes/info.php
3ba0ebc60cd19158228e5c47f931aa80 *dzz/ffmpeg/classes/thumb.php d8ed7668f7e78a7618f80db40f88f2b8 *dzz/ffmpeg/classes/thumb.php
b0ef25e19c4aa9e96c06f5fb6f091883 *dzz/ffmpeg/composer.json b0ef25e19c4aa9e96c06f5fb6f091883 *dzz/ffmpeg/composer.json
a962e01165e345d26a86a07e9e098239 *dzz/ffmpeg/composer.lock a962e01165e345d26a86a07e9e098239 *dzz/ffmpeg/composer.lock
808d6119fa0a890a2554fa07e600ba7d *dzz/ffmpeg/convert.php 808d6119fa0a890a2554fa07e600ba7d *dzz/ffmpeg/convert.php
@@ -389,8 +409,8 @@ b49d7db7da975848af00a7597333d12e *dzz/ffmpeg/ffmpeg/avcodec-57.dll
109731440511e75afa2c4dcbe5b2d069 *dzz/ffmpeg/ffmpeg/postproc-54.dll 109731440511e75afa2c4dcbe5b2d069 *dzz/ffmpeg/ffmpeg/postproc-54.dll
91ca5f81f37690d1e05772947b38e8a0 *dzz/ffmpeg/ffmpeg/swresample-2.dll 91ca5f81f37690d1e05772947b38e8a0 *dzz/ffmpeg/ffmpeg/swresample-2.dll
4f49c26e951e69007d60edf054d2a37a *dzz/ffmpeg/ffmpeg/swscale-4.dll 4f49c26e951e69007d60edf054d2a37a *dzz/ffmpeg/ffmpeg/swscale-4.dll
17d36f2ee186514a290fab9baaeac65e *dzz/ffmpeg/getinfo.php 54eb4c59cb02380010cabc5d69aae021 *dzz/ffmpeg/getinfo.php
671f1a782b7dc9395519933bffb967fe *dzz/ffmpeg/thumb.php c81877414511a5f8c1e919c61526da2a *dzz/ffmpeg/thumb.php
723b27a2bb73cccf492ed827bc528a5c *dzz/ffmpeg/vendor/alchemy/binary-driver/LICENSE 723b27a2bb73cccf492ed827bc528a5c *dzz/ffmpeg/vendor/alchemy/binary-driver/LICENSE
9608b8205db23a377edd4f328af949bd *dzz/ffmpeg/vendor/alchemy/binary-driver/src/Alchemy/BinaryDriver/AbstractBinary.php 9608b8205db23a377edd4f328af949bd *dzz/ffmpeg/vendor/alchemy/binary-driver/src/Alchemy/BinaryDriver/AbstractBinary.php
96d510df2561b5a55bc62b0d04db9861 *dzz/ffmpeg/vendor/alchemy/binary-driver/src/Alchemy/BinaryDriver/BinaryDriverTestCase.php 96d510df2561b5a55bc62b0d04db9861 *dzz/ffmpeg/vendor/alchemy/binary-driver/src/Alchemy/BinaryDriver/BinaryDriverTestCase.php
@@ -683,8 +703,8 @@ e0fbf93ee3e79762c694682e010f721d *dzz/ffmpeg/vendor/symfony/process/LICENSE
882fab9690637ec4cf9746b825b21e15 *dzz/ffmpeg/vendor/symfony/process/Process.php 882fab9690637ec4cf9746b825b21e15 *dzz/ffmpeg/vendor/symfony/process/Process.php
2a3b661974c0cd7432f29595ccdb6a93 *dzz/ffmpeg/vendor/symfony/process/ProcessBuilder.php 2a3b661974c0cd7432f29595ccdb6a93 *dzz/ffmpeg/vendor/symfony/process/ProcessBuilder.php
13625bd3819dabb00e70409aa8b8cc54 *dzz/ffmpeg/vendor/symfony/process/ProcessUtils.php 13625bd3819dabb00e70409aa8b8cc54 *dzz/ffmpeg/vendor/symfony/process/ProcessUtils.php
848f904ac7e815cf4abc752639c32f68 *dzz/imageColor/classes/getcolor.php 634039b168dae271922c99af9b144e4b *dzz/imageColor/classes/getcolor.php
8fcedaed7fefce2be26a36d2ac4bf9af *dzz/imageColor/index.php be1fd6f396b2fda2f45217565298f52e *dzz/imageColor/index.php
a35efffbc8ffb84994c399cac01fb592 *dzz/images/addUser.png a35efffbc8ffb84994c399cac01fb592 *dzz/images/addUser.png
325472601571f31e1bf00674c368d335 *dzz/images/b.gif 325472601571f31e1bf00674c368d335 *dzz/images/b.gif
87fadeff473ddcb5208b7af66ae5966a *dzz/images/close.png 87fadeff473ddcb5208b7af66ae5966a *dzz/images/close.png
@@ -969,9 +989,11 @@ bae84af37dba1b272ef439708d1b8e9f *dzz/images/extimg_small/xml.png
a949e13639231f3ab4192465ff2538ac *dzz/images/logo-blue.png a949e13639231f3ab4192465ff2538ac *dzz/images/logo-blue.png
b92838cc79a788fc78a7685b5aae1f28 *dzz/index/index.php b92838cc79a788fc78a7685b5aae1f28 *dzz/index/index.php
d615e6446bb74240281aa217d6f5ad01 *dzz/index/login.php d615e6446bb74240281aa217d6f5ad01 *dzz/index/login.php
9464641e570a5ef040351554605b519d *dzz/io/getImg.php f1f3a52260de623f37da59db88d5132f *dzz/io/getImg.php
c922015b4938aea09a73ed7d1d759ee4 *dzz/language/en-US/lang.php c922015b4938aea09a73ed7d1d759ee4 *dzz/language/en-US/lang.php
d91b3ccebc18bcd41bc44e9da28d598f *dzz/language/zh-CN/lang.php d91b3ccebc18bcd41bc44e9da28d598f *dzz/language/zh-CN/lang.php
d0cec69ef9e94897d184cee623497d3f *dzz/local/class/class_localexport.php
6620d302f12ba470c79c46e17d94b87f *dzz/local/classes/deleteafter.php
e6ff860b694692916c323609ac7697f8 *dzz/pdf/build/pdf.js e6ff860b694692916c323609ac7697f8 *dzz/pdf/build/pdf.js
81b75950e639b1439c398d62a6037686 *dzz/pdf/build/pdf.js.map 81b75950e639b1439c398d62a6037686 *dzz/pdf/build/pdf.js.map
f025b4d2dd3cd3eca72f347e2406101d *dzz/pdf/build/pdf.worker.js f025b4d2dd3cd3eca72f347e2406101d *dzz/pdf/build/pdf.worker.js
@@ -1379,10 +1401,11 @@ badeea57fda90d27e54a9f9488ac4c43 *dzz/pdf/web/viewer.html
f2dddeac144b9bbac3ef849464bdf74b *dzz/pdf/web/viewer.js f2dddeac144b9bbac3ef849464bdf74b *dzz/pdf/web/viewer.js
9d8f7b8df2cf3dffa23febb3582928d4 *dzz/pdf/web/viewer.js.map 9d8f7b8df2cf3dffa23febb3582928d4 *dzz/pdf/web/viewer.js.map
57cbaacb499474a5ca6c14a86d411512 *dzz/pichome/admin.php 57cbaacb499474a5ca6c14a86d411512 *dzz/pichome/admin.php
ae17e4be72c28160524e6d0f15a08764 *dzz/pichome/ajax.php 3d3aa981f09612419f1cffe5cfa4f4ab *dzz/pichome/ajax.php
c550e347457729fb118592d6be50d050 *dzz/pichome/checkexport.php c550e347457729fb118592d6be50d050 *dzz/pichome/checkexport.php
6433341eb6119db85c0d2001c5155150 *dzz/pichome/class/class_eagleexport.php b6201d143beca6278320d101db08695f *dzz/pichome/class/class_eagleexport.php
d89bf384de0af51c78c3a40a680e1c89 *dzz/pichome/class/class_localexport.php ae068aea655bde669f255db1dd988024 *dzz/pichome/class/class_localexport.php
8bd360df9ad3377d6ede3c4b56c73c6c *dzz/pichome/collection.php
6293eb9bd5b473c7f178be5d6534341c *dzz/pichome/config/config.php 6293eb9bd5b473c7f178be5d6534341c *dzz/pichome/config/config.php
29640dfed0df1100d9c8e4d819b4c593 *dzz/pichome/css/admin.css 29640dfed0df1100d9c8e4d819b4c593 *dzz/pichome/css/admin.css
07f01151181178c663d669622ea927f3 *dzz/pichome/css/common.css 07f01151181178c663d669622ea927f3 *dzz/pichome/css/common.css
@@ -1396,55 +1419,66 @@ f09b1c7476e28ad67f1c2f2f314230a0 *dzz/pichome/css/fonts/remixicon.symbol.svg
881fbc46361e0c0e5f003c159b2f3005 *dzz/pichome/css/fonts/remixicon.woff 881fbc46361e0c0e5f003c159b2f3005 *dzz/pichome/css/fonts/remixicon.woff
9915fef980fa539085da55b84dfde760 *dzz/pichome/css/fonts/remixicon.woff2 9915fef980fa539085da55b84dfde760 *dzz/pichome/css/fonts/remixicon.woff2
beba9d9c0e6f710c90145d9e3cbbab2d *dzz/pichome/css/index.css beba9d9c0e6f710c90145d9e3cbbab2d *dzz/pichome/css/index.css
393c3333716eea4c974db36b5a8630d5 *dzz/pichome/css/mobile/common.css 87163334cb48cff22fdabe3e8e615cc7 *dzz/pichome/css/mobile/common.css
577f7f31ca1ac0fe27b7c7e8f28f838f *dzz/pichome/css/mobile/details.css 0f7c873eb385eefd56b37a025b978eb4 *dzz/pichome/css/mobile/details.css
871bda5b39c93380460d42db713c2932 *dzz/pichome/css/mobile/index.css ed97c351d8b9390710c7421c4197bcf1 *dzz/pichome/css/mobile/image.css
86078d14becfe840e42b75da9b7193ec *dzz/pichome/css/mobile/index.css
f1e227b4a2e8a0345daaf6141e1856dd *dzz/pichome/css/mobile/personal.css f1e227b4a2e8a0345daaf6141e1856dd *dzz/pichome/css/mobile/personal.css
3af6f1b9febc5c78806ac865f8d18ebb *dzz/pichome/css/mobile/screen.css
cc6d3bf279ed780dd69d0dcc250bd442 *dzz/pichome/css/mobile/share.css cc6d3bf279ed780dd69d0dcc250bd442 *dzz/pichome/css/mobile/share.css
d56b57b7000fef922f9031726810a467 *dzz/pichome/css/pc/AddcollectionDialog.css
509deac393472e307756fc9deee67276 *dzz/pichome/css/pc/admin.css 509deac393472e307756fc9deee67276 *dzz/pichome/css/pc/admin.css
4616cbd4493d6a922221b5225605bf17 *dzz/pichome/css/pc/common.css 670b7f2f61bdfd492b53e03e750ee531 *dzz/pichome/css/pc/collection.css
6b6a57a59a5d6ee5bd3c3c501baf1b02 *dzz/pichome/css/pc/common.css
7b846f80e058d874a9cb7106a18e5b78 *dzz/pichome/css/pc/components/addcollect.css
e600f6b1841e3542bb948a5289e9363e *dzz/pichome/css/pc/components/collect.css
e3123a0f6930b3d0a84387d3102c704d *dzz/pichome/css/pc/details.css e3123a0f6930b3d0a84387d3102c704d *dzz/pichome/css/pc/details.css
0446460c4b1c238c4a17b4119c5c106e *dzz/pichome/css/pc/image.css 1b81547e0d91292d2a77153774bbf013 *dzz/pichome/css/pc/image.css
4e1559e2dada467206bec5c77b5a23f5 *dzz/pichome/css/pc/index.css c0a5a61c77eb071519b9e148edafdacd *dzz/pichome/css/pc/index.css
16ceb77eb522e138548921aa5b024a36 *dzz/pichome/css/pc/screen.css 16ceb77eb522e138548921aa5b024a36 *dzz/pichome/css/pc/screen.css
69c8a20f13ee8eb40d35ddd497d35fd3 *dzz/pichome/css/pc/xuanzhuan/iconfont.ttf 69c8a20f13ee8eb40d35ddd497d35fd3 *dzz/pichome/css/pc/xuanzhuan/iconfont.ttf
b006647cb9c39a657d354fcf0bdf88bf *dzz/pichome/css/pc/xuanzhuan/index.css b006647cb9c39a657d354fcf0bdf88bf *dzz/pichome/css/pc/xuanzhuan/index.css
48994b9f88c49cdb67a88116380cfb95 *dzz/pichome/css/theme/black/index.css 48994b9f88c49cdb67a88116380cfb95 *dzz/pichome/css/theme/black/index.css
fe6f435c4534024a6894473daec0845a *dzz/pichome/css/theme/black/root.css ec549d08e4bd82c18ac8a906e7c3ff0e *dzz/pichome/css/theme/black/root.css
247be4f622b714c5745e69ebb932e197 *dzz/pichome/css/theme/darkgrey/index.css 247be4f622b714c5745e69ebb932e197 *dzz/pichome/css/theme/darkgrey/index.css
9925ea840cd52bf961eb4b1eb7b565b8 *dzz/pichome/css/theme/darkgrey/root.css 3e59794617124cb119a6b0fc763a7c14 *dzz/pichome/css/theme/darkgrey/root.css
732389ded34cb9c52dd88271f1345af9 *dzz/pichome/css/theme/fonts/element-icons.ttf 732389ded34cb9c52dd88271f1345af9 *dzz/pichome/css/theme/fonts/element-icons.ttf
535877f50039c0cb49a6196a5b7517cd *dzz/pichome/css/theme/fonts/element-icons.woff 535877f50039c0cb49a6196a5b7517cd *dzz/pichome/css/theme/fonts/element-icons.woff
dce825b1ca6c3b1c18adc856618b8602 *dzz/pichome/css/theme/lightgrey/index.css dce825b1ca6c3b1c18adc856618b8602 *dzz/pichome/css/theme/lightgrey/index.css
74e133fde11f139ecfeedafb438a13ce *dzz/pichome/css/theme/lightgrey/root.css 8e19f8f0afd86036d9e6b74e8fa25b4f *dzz/pichome/css/theme/lightgrey/root.css
106204b58c77af1048a22bfe9cbd1d49 *dzz/pichome/css/theme/navyblue/index.css 106204b58c77af1048a22bfe9cbd1d49 *dzz/pichome/css/theme/navyblue/index.css
17018172c965f899a07fd8f53b789ecf *dzz/pichome/css/theme/navyblue/root.css 9e60cad02523fcf3aac6c9d960294af0 *dzz/pichome/css/theme/navyblue/root.css
6a3812a857dae07ed74b59d26c86d7e1 *dzz/pichome/css/theme/purple/index.css 6a3812a857dae07ed74b59d26c86d7e1 *dzz/pichome/css/theme/purple/index.css
c514077b8965f7d3bd473f19d85620e3 *dzz/pichome/css/theme/purple/root.css 48fcbcbd9d925541404038119bacdc9a *dzz/pichome/css/theme/purple/root.css
4705cbd2d8a842635d69d2ace637212e *dzz/pichome/css/theme/white/index.css 4705cbd2d8a842635d69d2ace637212e *dzz/pichome/css/theme/white/index.css
b6aae0d83f9163cf8a6acda2c77f573e *dzz/pichome/css/theme/white/root.css 42223aa2673c8b81e62a8ebc481d9da2 *dzz/pichome/css/theme/white/root.css
5c7db30e0823a778d5341db79a4ece27 *dzz/pichome/delete.php 7dded9715f7c5c2408f7905b6cddf810 *dzz/pichome/delete.php
0bc21a1af1a289191cf5a48523f2cf8c *dzz/pichome/details.php 0bc21a1af1a289191cf5a48523f2cf8c *dzz/pichome/details.php
220a956534e1384a2c64cfc89ef48617 *dzz/pichome/download.php 214cabed470fd756b227851860513e6b *dzz/pichome/download.php
e245c8b1f860c8252eade7f3dec51879 *dzz/pichome/dzz_app_pichome.xml e245c8b1f860c8252eade7f3dec51879 *dzz/pichome/dzz_app_pichome.xml
1ef6b3e8f2d9664ac3665b62f6c5f39b *dzz/pichome/exportfile.php 43f2f7de28bea4de51cde2b4f1f8e82b *dzz/pichome/exportfile.php
dd58cee1073dfc2907838fe3ec26235b *dzz/pichome/exportfilecheck.php af14eda8139abc2d09e421cc4b27a1b4 *dzz/pichome/exportfilecheck.php
ba8263d806bb02f8c1cd5b3becdfaac0 *dzz/pichome/filelist.php f0b8396b0798d20e257802e0284c1c99 *dzz/pichome/filelist.php
2d0185de715fe914af40ce715d15afca *dzz/pichome/function/function_common.php 2d0185de715fe914af40ce715d15afca *dzz/pichome/function/function_common.php
d211a97399d52fea48f94a45a06648d1 *dzz/pichome/image/eaglefile.webp d211a97399d52fea48f94a45a06648d1 *dzz/pichome/image/eaglefile.webp
8a53ae7b1997c5ddc37e06b74f47b6b2 *dzz/pichome/image/flashlight.png
152ec265e38eb67acb6cb31026448e3d *dzz/pichome/image/img/t1.jpeg 152ec265e38eb67acb6cb31026448e3d *dzz/pichome/image/img/t1.jpeg
651d0b49012d763c7dda236756274a9d *dzz/pichome/image/img/t2.jpg 651d0b49012d763c7dda236756274a9d *dzz/pichome/image/img/t2.jpg
309c31fa9200e0c9b4ee8fd3f1399dfc *dzz/pichome/image/img/t3.jpeg 309c31fa9200e0c9b4ee8fd3f1399dfc *dzz/pichome/image/img/t3.jpeg
5f5562a16dad1fa33294b5c0a920f1d6 *dzz/pichome/image/img/t4.jpeg 5f5562a16dad1fa33294b5c0a920f1d6 *dzz/pichome/image/img/t4.jpeg
006790064e59717d811f6f1eec849e63 *dzz/pichome/image/library/billfish.png
e6bda96407083273f2a6ef5ac3b1e819 *dzz/pichome/image/library/eagle.png
cf4ad845fa202adf1c2c99dba55a6490 *dzz/pichome/image/library/file.png
5d34d2b476b50156b594b9371dd38d1f *dzz/pichome/image/library/library.png
08a26df5cbee8f21dbac8d646d1da218 *dzz/pichome/image/nodata.svg 08a26df5cbee8f21dbac8d646d1da218 *dzz/pichome/image/nodata.svg
1f0ee3cd38e82bd18490a34fcec8c690 *dzz/pichome/image/notScreen.png 1f0ee3cd38e82bd18490a34fcec8c690 *dzz/pichome/image/notScreen.png
f308fd14dbe2e06349ef366d6f9aa2c7 *dzz/pichome/image/palette.png f308fd14dbe2e06349ef366d6f9aa2c7 *dzz/pichome/image/palette.png
d51db8efca781201f641a41b57420dfe *dzz/pichome/image/phlogo.png d51db8efca781201f641a41b57420dfe *dzz/pichome/image/phlogo.png
438384ffb6dbf09c63f9c0254c57340a *dzz/pichome/index.php 438384ffb6dbf09c63f9c0254c57340a *dzz/pichome/index.php
bc4b3499031370aaa3fabf218806f65f *dzz/pichome/initexport.php 9976279181804deb1113d4b3e6af7fab *dzz/pichome/initexport.php
c9b191574ccc8ab6c8ff631302f10561 *dzz/pichome/install.php c9b191574ccc8ab6c8ff631302f10561 *dzz/pichome/install.php
29b8b6254aaaa263cbb0fe8272f05a59 *dzz/pichome/js/audioPlay.js 29b8b6254aaaa263cbb0fe8272f05a59 *dzz/pichome/js/audioPlay.js
a088950fc4bf4348d87cda978e5ded97 *dzz/pichome/js/common.js ed875394497b550972b24c9b09d00955 *dzz/pichome/js/common.js
b7a95d9f617863cf515a43e7b83978c5 *dzz/pichome/js/headerMethods.js b7a95d9f617863cf515a43e7b83978c5 *dzz/pichome/js/headerMethods.js
d752d1878252e486cc0244887cfadbae *dzz/pichome/js/headerWatch.js d752d1878252e486cc0244887cfadbae *dzz/pichome/js/headerWatch.js
d5843dbdc71ff8014a5eafd346a262da *dzz/pichome/js/jquery.mousewheel.min.js d5843dbdc71ff8014a5eafd346a262da *dzz/pichome/js/jquery.mousewheel.min.js
@@ -1455,11 +1489,14 @@ d36c75e3d8880ebfece375fd7cd46787 *dzz/pichome/js/mobile/plug/colorPicker/jquery.
b5d4479aca9121ce9ed95af5d77c10d9 *dzz/pichome/js/mobile/plug/vant/index.css b5d4479aca9121ce9ed95af5d77c10d9 *dzz/pichome/js/mobile/plug/vant/index.css
3d5fcccab75bba76cc259351e875d42a *dzz/pichome/js/mobile/plug/vant/vant.min.js 3d5fcccab75bba76cc259351e875d42a *dzz/pichome/js/mobile/plug/vant/vant.min.js
29b8b6254aaaa263cbb0fe8272f05a59 *dzz/pichome/js/pc/audioPlay.js 29b8b6254aaaa263cbb0fe8272f05a59 *dzz/pichome/js/pc/audioPlay.js
27f51d96c2a6cca4ec0abbce6e0a24db *dzz/pichome/js/pc/components/addcollect.js
1bfeb0538751df45e883d9751aae14a3 *dzz/pichome/js/pc/components/collect.js
56972b38bc78798895d3bb917f4aeb5e *dzz/pichome/js/pc/components/collectdialog.js
2ffc868ac18c18d948c3ae5576afa98b *dzz/pichome/js/pc/headerMethods.js 2ffc868ac18c18d948c3ae5576afa98b *dzz/pichome/js/pc/headerMethods.js
84f0575bc959e85fc1abab5dc71d3079 *dzz/pichome/js/pc/headerWatch.js 84f0575bc959e85fc1abab5dc71d3079 *dzz/pichome/js/pc/headerWatch.js
d5843dbdc71ff8014a5eafd346a262da *dzz/pichome/js/pc/jquery.mousewheel.min.js d5843dbdc71ff8014a5eafd346a262da *dzz/pichome/js/pc/jquery.mousewheel.min.js
72dbef2b0dd2644f4fb4e72ddbb7013b *dzz/pichome/js/pc/plug/DomResize.js 72dbef2b0dd2644f4fb4e72ddbb7013b *dzz/pichome/js/pc/plug/DomResize.js
8a788a8d0bfb2d3c1988bddb4aef4b4b *dzz/pichome/js/pc/plug/element-ui.js 693f98461ce3fa58cbe5ac24d9a21b1e *dzz/pichome/js/pc/plug/element-ui.js
66fe9527aec8d8b68e3bc5036ea8f7f9 *dzz/pichome/js/pc/plug/sortable.min.js 66fe9527aec8d8b68e3bc5036ea8f7f9 *dzz/pichome/js/pc/plug/sortable.min.js
7292e14f4f8fad306d40a6d7d586b225 *dzz/pichome/js/pc/plug/wavesurfer.js 7292e14f4f8fad306d40a6d7d586b225 *dzz/pichome/js/pc/plug/wavesurfer.js
ef4591bffb23a90c8d9e0d02a7b5c15f *dzz/pichome/js/pc/row-grid.js ef4591bffb23a90c8d9e0d02a7b5c15f *dzz/pichome/js/pc/row-grid.js
@@ -1476,15 +1513,18 @@ b21b8531847604ab5f2f5caaef51ba31 *dzz/pichome/js/vue/vue.js
69764bf35375a54256412f3c748b312d *dzz/pichome/js/waterfall.js 69764bf35375a54256412f3c748b312d *dzz/pichome/js/waterfall.js
c24f19d7061cdf5bae41e5e9b9f5600c *dzz/pichome/language/en-US/lang.php c24f19d7061cdf5bae41e5e9b9f5600c *dzz/pichome/language/en-US/lang.php
8a3e6ab24d873202b96c3acd9c1b0d2b *dzz/pichome/language/zh-CN/lang.php 8a3e6ab24d873202b96c3acd9c1b0d2b *dzz/pichome/language/zh-CN/lang.php
04a1d42c4c596325364400f866a2c143 *dzz/pichome/library.php 9b1430e306b95dff41087a2fca148484 *dzz/pichome/library.php
ccef8b340c90fc0061c6dd645fecc8df *dzz/pichome/setting.php ccef8b340c90fc0061c6dd645fecc8df *dzz/pichome/setting.php
cda7d5feb6b4ed907d8a1eeb7d0ba46d *dzz/pichome/share.php 30a3b6a3143136ebf197c3e58e6bcfe8 *dzz/pichome/share.php
892a7e59f327bc5f273fc0fe2cd2679b *dzz/pichome/template/mobile/components/classify.htm 892a7e59f327bc5f273fc0fe2cd2679b *dzz/pichome/template/mobile/components/classify.htm
00be7e9bc0e92e22f9c7aa8fce703854 *dzz/pichome/template/mobile/components/index/JsCommon.htm 23b99d3824aa02a61621667b100dbacb *dzz/pichome/template/mobile/components/index/image/classify.htm
5752e1116e385c87552c6328125e14c3 *dzz/pichome/template/mobile/components/index/image/JsCollect.htm
b5ff94d14983520fb465ffa78959b81f *dzz/pichome/template/mobile/components/index/image/more.htm
643af4f4eabf3fd0f01d05f1e0fb6189 *dzz/pichome/template/mobile/components/index/JsCommon.htm
3c0bae451668c060ae526d3253e9be73 *dzz/pichome/template/mobile/components/index/JsDetailMessage.htm 3c0bae451668c060ae526d3253e9be73 *dzz/pichome/template/mobile/components/index/JsDetailMessage.htm
b61252abe414de77e062e3f96aabccbd *dzz/pichome/template/mobile/components/index/JsImages.htm 493f25784b802d691a49b22d55345e19 *dzz/pichome/template/mobile/components/index/JsImages.htm
801d90ff93583268416fdc99faa91860 *dzz/pichome/template/mobile/components/index/JsIndex.htm 507954354bef6b8905158c9037d38e8a *dzz/pichome/template/mobile/components/index/JsIndex.htm
18939ca3c3ccb67156c1d2f3d059a3fa *dzz/pichome/template/mobile/components/index/JsMy.htm d1051b51dd34c88927309c4e82744553 *dzz/pichome/template/mobile/components/index/JsMy.htm
a09a548c0637e1dfc7397410ac056711 *dzz/pichome/template/mobile/components/index/JsScreen.htm a09a548c0637e1dfc7397410ac056711 *dzz/pichome/template/mobile/components/index/JsScreen.htm
76399fc5b4e7a84ee75ed49e34e483c9 *dzz/pichome/template/mobile/components/index/JsSearch.htm 76399fc5b4e7a84ee75ed49e34e483c9 *dzz/pichome/template/mobile/components/index/JsSearch.htm
aa8df8e4c660d9136bbff54070a2522a *dzz/pichome/template/mobile/components/index/JsSort.htm aa8df8e4c660d9136bbff54070a2522a *dzz/pichome/template/mobile/components/index/JsSort.htm
@@ -1505,20 +1545,26 @@ ae8d0557008c6f19458bed5c49db2167 *dzz/pichome/template/mobile/components/index/s
8f54b82e6d2f9cb4d7ba43d09a39f088 *dzz/pichome/template/mobile/frame/footer_simple.htm 8f54b82e6d2f9cb4d7ba43d09a39f088 *dzz/pichome/template/mobile/frame/footer_simple.htm
ae502b90b2b31175892efe56867bc2e7 *dzz/pichome/template/mobile/frame/header_simple_end.htm ae502b90b2b31175892efe56867bc2e7 *dzz/pichome/template/mobile/frame/header_simple_end.htm
fdc74d5e180321fc338ae91a1a90e22e *dzz/pichome/template/mobile/frame/header_simple_start.htm fdc74d5e180321fc338ae91a1a90e22e *dzz/pichome/template/mobile/frame/header_simple_start.htm
f9c4288c838455ae487c2cc0c4d44890 *dzz/pichome/template/mobile/page/details.htm 385067e1775bcc445b1dbc978d543ac0 *dzz/pichome/template/mobile/page/details.htm
f9f65e35608efe6563e49abbc66c1249 *dzz/pichome/template/mobile/page/index.htm e34a4b13baa25f03bddc82608964ffd7 *dzz/pichome/template/mobile/page/index.htm
be7755b8e73e2ffa49557e8c3891027a *dzz/pichome/template/mobile/page/personal.htm be7755b8e73e2ffa49557e8c3891027a *dzz/pichome/template/mobile/page/personal.htm
63845b99e6f7f14d1385b56a0c4ffebf *dzz/pichome/template/mobile/page/share.htm 59d6f74af0683d8c3dee09e7e09f9787 *dzz/pichome/template/mobile/page/share.htm
dd8403f5dbcfb5767f01143f12afff93 *dzz/pichome/template/pc/components/headerAdmin/index.htm de346d0b0da4cc4eceb143baf17f6812 *dzz/pichome/template/pc/components/collection/Jsimage.htm
7705ce7827e5d3de8b4b41659ff0d9e9 *dzz/pichome/template/pc/components/collection/JsLeft.htm
74a6088ee7aa0b3cf1201de5b6d30132 *dzz/pichome/template/pc/components/headerAdmin/index.htm
e078614bb6d558d96006ec127f7c392c *dzz/pichome/template/pc/components/headerindex/index.htm e078614bb6d558d96006ec127f7c392c *dzz/pichome/template/pc/components/headerindex/index.htm
0436c3ba601aa0804b0e51926f557988 *dzz/pichome/template/pc/components/headerindex/screen.htm 0436c3ba601aa0804b0e51926f557988 *dzz/pichome/template/pc/components/headerindex/screen.htm
105d244408ea6a9780677c28b376ea6c *dzz/pichome/template/pc/components/headerindex/searchScreen.htm 105d244408ea6a9780677c28b376ea6c *dzz/pichome/template/pc/components/headerindex/searchScreen.htm
e3cbbf2cf1281dfe69ee59584debe8dc *dzz/pichome/template/pc/components/image/ImageAudioPlay.htm
8719049c86e5ed162ef840352086ee8f *dzz/pichome/template/pc/components/image/ImageList.htm
7bd38f47edd65c05832edd108ef1479e *dzz/pichome/template/pc/components/image/ImageRowGrid.htm
b146499d5bc505f37ec0d323394d1e27 *dzz/pichome/template/pc/components/image/ImageWaterfall.htm
e52de01bb534c8ae8906aeea2a26e4bc *dzz/pichome/template/pc/components/index/header/JsHdeaderSearch1.htm e52de01bb534c8ae8906aeea2a26e4bc *dzz/pichome/template/pc/components/index/header/JsHdeaderSearch1.htm
710efaf3e9e92603f55599af84e07f2b *dzz/pichome/template/pc/components/index/header/JsHdeaderSearch2.htm 710efaf3e9e92603f55599af84e07f2b *dzz/pichome/template/pc/components/index/header/JsHdeaderSearch2.htm
0b560bcf32b9928e09a087efbe543405 *dzz/pichome/template/pc/components/index/header/JsHdeaderSearchInput.htm aa36103d6b45e77c11a97dc34f5fa38c *dzz/pichome/template/pc/components/index/header/JsHdeaderSearchInput.htm
44afb76ddd1106c3081e901b74ccd350 *dzz/pichome/template/pc/components/index/header/JsHdeaderSearchScreen.htm 44afb76ddd1106c3081e901b74ccd350 *dzz/pichome/template/pc/components/index/header/JsHdeaderSearchScreen.htm
cdfdeb7826e501fc2d0dabbe4545bba6 *dzz/pichome/template/pc/components/index/header/JsHeaderRight.htm cdfdeb7826e501fc2d0dabbe4545bba6 *dzz/pichome/template/pc/components/index/header/JsHeaderRight.htm
82a1a57d683d58fd868fb91fac13ab25 *dzz/pichome/template/pc/components/index/header/JsHeaderRightAvatar.htm 2dcef9d94e0d12773e17f32cf9c84720 *dzz/pichome/template/pc/components/index/header/JsHeaderRightAvatar.htm
a5629a36eef6a8c0d3aec35f3a679d86 *dzz/pichome/template/pc/components/index/header/JsHeaderRightBtn.htm a5629a36eef6a8c0d3aec35f3a679d86 *dzz/pichome/template/pc/components/index/header/JsHeaderRightBtn.htm
754c1ae954a2bd706a9ca808225927c9 *dzz/pichome/template/pc/components/index/image/ImageAudioPlay.htm 754c1ae954a2bd706a9ca808225927c9 *dzz/pichome/template/pc/components/index/image/ImageAudioPlay.htm
8719049c86e5ed162ef840352086ee8f *dzz/pichome/template/pc/components/index/image/ImageList.htm 8719049c86e5ed162ef840352086ee8f *dzz/pichome/template/pc/components/index/image/ImageList.htm
@@ -1526,10 +1572,10 @@ f394ee2d8177fe42a05aeb7c5d1b783a *dzz/pichome/template/pc/components/index/image
506a3a316c9b37a48c65ed71c7435f33 *dzz/pichome/template/pc/components/index/image/ImageWaterfall.htm 506a3a316c9b37a48c65ed71c7435f33 *dzz/pichome/template/pc/components/index/image/ImageWaterfall.htm
e75f2d5563b6d12d345ee4414e2840f9 *dzz/pichome/template/pc/components/index/images.htm e75f2d5563b6d12d345ee4414e2840f9 *dzz/pichome/template/pc/components/index/images.htm
0764f300b91acf6e60925fa91c528941 *dzz/pichome/template/pc/components/index/indexVuex.htm 0764f300b91acf6e60925fa91c528941 *dzz/pichome/template/pc/components/index/indexVuex.htm
ac1a37ef71ff76f05435a47b8f13a6b8 *dzz/pichome/template/pc/components/index/JsCommon.htm f18d9fc925dd80b5682ea9b65afb96c0 *dzz/pichome/template/pc/components/index/JsCommon.htm
d88649d33a48388af9e95f4b7b3aeea8 *dzz/pichome/template/pc/components/index/JsHeader1.htm d88649d33a48388af9e95f4b7b3aeea8 *dzz/pichome/template/pc/components/index/JsHeader1.htm
eb3a364123d4c0982dfc2497683adc29 *dzz/pichome/template/pc/components/index/JsHeader2.htm eb3a364123d4c0982dfc2497683adc29 *dzz/pichome/template/pc/components/index/JsHeader2.htm
5ecc3eabb026b20734c7bec319263ed3 *dzz/pichome/template/pc/components/index/Jsimage.htm 203fade598d5f1f14bd0cbe612f400c9 *dzz/pichome/template/pc/components/index/Jsimage.htm
e5f81267932b2e39355c4bff620d11b6 *dzz/pichome/template/pc/components/index/JsLibrary.htm e5f81267932b2e39355c4bff620d11b6 *dzz/pichome/template/pc/components/index/JsLibrary.htm
7a925a4631acb01fc275bbb237250d92 *dzz/pichome/template/pc/components/index/JsScreen.htm 7a925a4631acb01fc275bbb237250d92 *dzz/pichome/template/pc/components/index/JsScreen.htm
ca1f90529303acc461fb2ce08fb6e7fc *dzz/pichome/template/pc/components/index/screen/btime/js.htm ca1f90529303acc461fb2ce08fb6e7fc *dzz/pichome/template/pc/components/index/screen/btime/js.htm
@@ -1559,23 +1605,23 @@ ed778182594282451fdeaf533390504a *dzz/pichome/template/pc/components/index/scree
ce8f0dddfb2446e04ed00da108a9d5ff *dzz/pichome/template/pc/components/index/screen/tag/js.htm ce8f0dddfb2446e04ed00da108a9d5ff *dzz/pichome/template/pc/components/index/screen/tag/js.htm
12adf53eb950a45a47d2d80e8b246fa6 *dzz/pichome/template/pc/components/index/screen/tag/temp.htm 12adf53eb950a45a47d2d80e8b246fa6 *dzz/pichome/template/pc/components/index/screen/tag/temp.htm
c2953f2cc75684f3a777148ad8c5fce9 *dzz/pichome/template/pc/components/index/screen.htm c2953f2cc75684f3a777148ad8c5fce9 *dzz/pichome/template/pc/components/index/screen.htm
78e4336426983a0ec62934217dee535c *dzz/pichome/template/pc/components/index/template2/JsLeft.htm 56e224bc38e1eb8da17523729f62dfd8 *dzz/pichome/template/pc/components/index/template2/JsLeft.htm
8f54b82e6d2f9cb4d7ba43d09a39f088 *dzz/pichome/template/pc/frame/footer_simple.htm 8f54b82e6d2f9cb4d7ba43d09a39f088 *dzz/pichome/template/pc/frame/footer_simple.htm
ae502b90b2b31175892efe56867bc2e7 *dzz/pichome/template/pc/frame/header_simple_end.htm ae502b90b2b31175892efe56867bc2e7 *dzz/pichome/template/pc/frame/header_simple_end.htm
08154101159fde8eb21fe522cc937e4c *dzz/pichome/template/pc/frame/header_simple_start.htm 08154101159fde8eb21fe522cc937e4c *dzz/pichome/template/pc/frame/header_simple_start.htm
42648cd5769edf01f824444c5acc98b2 *dzz/pichome/template/pc/page/adminBasic.htm f45c9ec8917e94bf4b61a7b5bbacf3e5 *dzz/pichome/template/pc/page/adminBasic.htm
d46f3035458009aa3d87d579da8848c3 *dzz/pichome/template/pc/page/adminFileterset.htm d46f3035458009aa3d87d579da8848c3 *dzz/pichome/template/pc/page/adminFileterset.htm
ef3300e59bc7be272f56ade943326d88 *dzz/pichome/template/pc/page/adminImportsetting.htm ef3300e59bc7be272f56ade943326d88 *dzz/pichome/template/pc/page/adminImportsetting.htm
ea578588242396cb021031f41dd4bc69 *dzz/pichome/template/pc/page/adminLeft.htm ea578588242396cb021031f41dd4bc69 *dzz/pichome/template/pc/page/adminLeft.htm
0e57e8ab9dbccead521f9b18fe8a2de2 *dzz/pichome/template/pc/page/adminLoginpage.htm 0e57e8ab9dbccead521f9b18fe8a2de2 *dzz/pichome/template/pc/page/adminLoginpage.htm
624c95c6ba1998d1f0538493c510fed1 *dzz/pichome/template/pc/page/adminPagesetting.htm 624c95c6ba1998d1f0538493c510fed1 *dzz/pichome/template/pc/page/adminPagesetting.htm
0920466b526ad2b5b6e20c8b2acead53 *dzz/pichome/template/pc/page/adminPersonal.htm 3ad11c89ea7b41c55b63d2f5d29004fb *dzz/pichome/template/pc/page/adminPersonal.htm
4adfd28ac9666c2aeb1af34040db7551 *dzz/pichome/template/pc/page/details.htm 364cd2b3bba93563c86ebf33102a6ba9 *dzz/pichome/template/pc/page/details.htm
8e351bacc90f2855e890cc3cb0ef9fc2 *dzz/pichome/template/pc/page/index.htm 8e351bacc90f2855e890cc3cb0ef9fc2 *dzz/pichome/template/pc/page/index.htm
701ca3999a6f963e5dd8081f4ca73498 *dzz/pichome/template/pc/page/index1.htm 22d1d385387e15a52c90b35eb6ed3a55 *dzz/pichome/template/pc/page/index1.htm
dee08b61a3556659df1cb5daa3845b4e *dzz/pichome/template/pc/page/index2.htm b672309ad39f5e67246c0aabe7811306 *dzz/pichome/template/pc/page/index2.htm
ecbf47343950b3ab1498a97c97d88771 *dzz/pichome/template/pc/page/library.htm c339f4670ef6db9e27f37f497e36f566 *dzz/pichome/template/pc/page/library.htm
d05bbcc9ca122a830c924cfabed697c0 *dzz/pichome/template/pc/page/share.htm b3675471f7a9d279efd0162ac18f1505 *dzz/pichome/template/pc/page/share.htm
3cd79761b99168c3f9faf607183df134 *dzz/pichome/uninstall.php 3cd79761b99168c3f9faf607183df134 *dzz/pichome/uninstall.php
b5221437a0c978e0caf63f2278759934 *dzz/pichome/uninstall_real.php b5221437a0c978e0caf63f2278759934 *dzz/pichome/uninstall_real.php
a5c5705a5b9e3a2175d3633656ae614e *dzz/pichome/updatesearchvaldata.php a5c5705a5b9e3a2175d3633656ae614e *dzz/pichome/updatesearchvaldata.php
@@ -1607,8 +1653,8 @@ b0bb6c733a343afcddcd03baaeff31b0 *dzz/xgplayer/js/xgplayer.music.js
5cb9422375b907e05eb6b7dc36fcd895 *favicon.ico 5cb9422375b907e05eb6b7dc36fcd895 *favicon.ico
8e55bdb192a3aefe82e03292527819ca *htaccess_default.txt 8e55bdb192a3aefe82e03292527819ca *htaccess_default.txt
55d39f5cf3916ab6a9336d95c671ab53 *index.php 55d39f5cf3916ab6a9336d95c671ab53 *index.php
d47506e140e630a579c83fe4911972ae *install/data/install.sql b92e6bc4f11bbece12288d800321aa3c *install/data/install.sql
53cf9484adc4e5d9a87f88a662df5dc8 *install/data/install_data.sql 2630350d3ef08d868fcd36e678094709 *install/data/install_data.sql
feabf4e4c8e20dc73548dfd6ba8400f9 *install/images/error.png feabf4e4c8e20dc73548dfd6ba8400f9 *install/images/error.png
fc25acefcabc066437d4b27550387954 *install/images/logo.png fc25acefcabc066437d4b27550387954 *install/images/logo.png
2ba93e93e0fbdfeb91e22f6d3bf8b6ca *install/images/logo.svg 2ba93e93e0fbdfeb91e22f6d3bf8b6ca *install/images/logo.svg
@@ -1621,7 +1667,8 @@ a987af86766c27c565794ffa189cf664 *install/include/install_mysql.php
249b244097610688130b93721d1c2bd1 *install/include/install_mysqli.php 249b244097610688130b93721d1c2bd1 *install/include/install_mysqli.php
effd4ff5bdac95bbc9e360de443f335c *install/include/install_var.php effd4ff5bdac95bbc9e360de443f335c *install/include/install_var.php
4c34d50daace82774e12ef92efb93d18 *install/index.php 4c34d50daace82774e12ef92efb93d18 *install/index.php
672ea3abb501cb04f0708a5c69ac2161 *install/language/zh-cn/lang.php 677cacb463b31ea65d0ce771f9c02422 *install/language/zh-cn/lang.php
2938ca630f07497e9a4adedf25fbdae2 *install/update.php
5aefe69b1ba16fe8a6f79c2156f8f281 *misc/ajax.php 5aefe69b1ba16fe8a6f79c2156f8f281 *misc/ajax.php
66ee773a4c2e373da92f48f81930cf3f *misc/classes/init.php 66ee773a4c2e373da92f48f81930cf3f *misc/classes/init.php
f656adb0c1b2699a4d8c613f2b9dacab *misc/pichomeexport.php f656adb0c1b2699a4d8c613f2b9dacab *misc/pichomeexport.php

View File

@@ -1,49 +1,49 @@
/* /*
* @copyright QiaoQiaoShiDai Internet Technology(Shanghai)Co.,Ltd * @copyright QiaoQiaoShiDai Internet Technology(Shanghai)Co.,Ltd
* @license https://www.oaooa.com/licenses/ * @license https://www.oaooa.com/licenses/
* *
* @link https://www.oaooa.com * @link https://www.oaooa.com
* @author zyx(zyx@oaooa.com) * @author zyx(zyx@oaooa.com)
*/ */
function checkAll(type, form, value, checkall, changestyle) { function checkAll(type, form, value, checkall, changestyle) {
var checkall = checkall ? checkall : 'chkall'; var checkall = checkall ? checkall : 'chkall';
for(var i = 0; i < form.elements.length; i++) { for(var i = 0; i < form.elements.length; i++) {
var e = form.elements[i]; var e = form.elements[i];
if(type == 'option' && e.type == 'radio' && e.value == value && e.disabled != true) { if(type == 'option' && e.type == 'radio' && e.value == value && e.disabled != true) {
e.checked = true; e.checked = true;
} else if(type == 'value' && e.type == 'checkbox' && e.getAttribute('chkvalue') == value) { } else if(type == 'value' && e.type == 'checkbox' && e.getAttribute('chkvalue') == value) {
e.checked = form.elements[checkall].checked; e.checked = form.elements[checkall].checked;
if(changestyle) { if(changestyle) {
multiupdate(e); multiupdate(e);
} }
} else if(type == 'prefix' && e.name && e.name != checkall && (!value || (value && e.name.match(value)))) { } else if(type == 'prefix' && e.name && e.name != checkall && (!value || (value && e.name.match(value)))) {
e.checked = form.elements[checkall].checked; e.checked = form.elements[checkall].checked;
if(changestyle) { if(changestyle) {
if(e.parentNode && e.parentNode.tagName.toLowerCase() == 'li') { if(e.parentNode && e.parentNode.tagName.toLowerCase() == 'li') {
e.parentNode.className = e.checked ? 'checked' : ''; e.parentNode.className = e.checked ? 'checked' : '';
} }
if(e.parentNode.parentNode && e.parentNode.parentNode.tagName.toLowerCase() == 'div') { if(e.parentNode.parentNode && e.parentNode.parentNode.tagName.toLowerCase() == 'div') {
e.parentNode.parentNode.className = e.checked ? 'item checked' : 'item'; e.parentNode.parentNode.className = e.checked ? 'item checked' : 'item';
} }
} }
} }
} }
} }
function fixTree_organization(el){ function fixTree_organization(el){
el.find('.tree-heng1').each(function(){ el.find('.tree-heng1').each(function(){
var tr=jQuery(this).parent().parent().parent(); var tr=jQuery(this).parent().parent().parent();
var dep=jQuery(this).parent().find('.tree-su').length; var dep=jQuery(this).parent().find('.tree-su').length;
tr.nextAll().each(function(){ tr.nextAll().each(function(){
var child_org=jQuery(this).find('.child-org'); var child_org=jQuery(this).find('.child-org');
var dep1=child_org.find('.tree-su').length; var dep1=child_org.find('.tree-su').length;
if(dep1<=dep) return false; if(dep1<=dep) return false;
else{ else{
child_org.find('.tree-su').eq(dep).removeClass('tree-su'); child_org.find('.tree-su').eq(dep).removeClass('tree-su');
} }
}); });
}); });
} }

View File

@@ -1,184 +1,184 @@
<?php <?php
/* /*
* @copyright QiaoQiaoShiDai Internet Technology(Shanghai)Co.,Ltd * @copyright QiaoQiaoShiDai Internet Technology(Shanghai)Co.,Ltd
* @license https://www.oaooa.com/licenses/ * @license https://www.oaooa.com/licenses/
* *
* @link https://www.oaooa.com * @link https://www.oaooa.com
* @author zyx(zyx@oaooa.com) * @author zyx(zyx@oaooa.com)
*/ */
if(!defined('IN_OAOOA')) { if(!defined('IN_OAOOA')) {
exit('Access Denied'); exit('Access Denied');
} }
global $_G; global $_G;
Hook::listen('adminlogin'); Hook::listen('adminlogin');
$uid = $_G['uid']; $uid = $_G['uid'];
include libfile('function/filerouterule'); include libfile('function/filerouterule');
require libfile('function/code'); require libfile('function/code');
$operation = $_GET['operation'] ? trim($_GET['operation']) : ''; $operation = $_GET['operation'] ? trim($_GET['operation']) : '';
if($operation == 'getApp'){//获取当前用户应用 if($operation == 'getApp'){//获取当前用户应用
$config = array(); $config = array();
if($_G['uid']){ if($_G['uid']){
$config= dzz_userconfig_init(); $config= dzz_userconfig_init();
if(!$config){ if(!$config){
//$config= dzz_userconfig_init(); //$config= dzz_userconfig_init();
if($config['applist']){ if($config['applist']){
$applist=explode(',',$config['applist']); $applist=explode(',',$config['applist']);
}else{ }else{
$applist=array(); $applist=array();
} }
}else{//检测不允许删除的应用,重新添加进去 }else{//检测不允许删除的应用,重新添加进去
if($config['applist']){ if($config['applist']){
$applist=explode(',',$config['applist']); $applist=explode(',',$config['applist']);
}else{ }else{
$applist=array(); $applist=array();
} }
if($applist_n =array_keys(C::t('app_market')->fetch_all_by_notdelete($_G['uid']))) { if($applist_n =array_keys(C::t('app_market')->fetch_all_by_notdelete($_G['uid']))) {
$newappids = array(); $newappids = array();
foreach ($applist_n as $appid) { foreach ($applist_n as $appid) {
if (!in_array($appid, $applist)) { if (!in_array($appid, $applist)) {
$applist[] = $appid; $applist[] = $appid;
$newappids[] = $appid; $newappids[] = $appid;
} }
} }
if ($newappids) C::t('app_user')->insert_by_uid($_G['uid'], $newappids); if ($newappids) C::t('app_user')->insert_by_uid($_G['uid'], $newappids);
C::t('user_field')->update($_G['uid'], array('applist' => implode(',', $applist))); C::t('user_field')->update($_G['uid'], array('applist' => implode(',', $applist)));
} }
} }
}else{ }else{
$applist =array_keys(C::t('app_market')->fetch_all_by_default()); $applist =array_keys(C::t('app_market')->fetch_all_by_default());
} }
//获取已安装应用 //获取已安装应用
$app=C::t('app_market')->fetch_all_by_appid($applist); $app=C::t('app_market')->fetch_all_by_appid($applist);
$applist_1=array(); $applist_1=array();
$applist_2=array(); $applist_2=array();
$identifier=array('imageTool','picture'); $identifier=array('imageTool','picture');
foreach($app as $key => $value){ foreach($app as $key => $value){
if($value['isshow']<1) continue; if($value['isshow']<1) continue;
if($value['available']<1) continue; if($value['available']<1) continue;
if($value['position']<1) continue;//位置为无的忽略 if($value['position']<1) continue;//位置为无的忽略
//判断管理员应用 //判断管理员应用
if($_G['adminid']!=1 && $value['group']==3){ if($_G['adminid']!=1 && $value['group']==3){
continue; continue;
} }
$params=array('name'=>$value['identifier'],'perm'=>1,'return_type'=>'bool'); $params=array('name'=>$value['identifier'],'perm'=>1,'return_type'=>'bool');
if(Hook::listen('rolecheck',$params,null,true)===false) continue; if(Hook::listen('rolecheck',$params,null,true)===false) continue;
//if($value['system'] == 2) continue; //if($value['system'] == 2) continue;
if(in_array($value['identifier'], $identifier)){ if(in_array($value['identifier'], $identifier)){
$applist_1[] = $value; $applist_1[] = $value;
}else{ }else{
$applist_2[] = $value; $applist_2[] = $value;
} }
} }
//获取虚拟应用 //获取虚拟应用
$params=array(); $params=array();
$vapps=Hook::listen('vapplist',$params,null,true); $vapps=Hook::listen('vapplist',$params,null,true);
foreach($vapps as $key => $value){ foreach($vapps as $key => $value){
$params=array('name'=>'vapp/'.$value['identifier'],'perm'=>1,'return_type'=>'bool'); $params=array('name'=>'vapp/'.$value['identifier'],'perm'=>1,'return_type'=>'bool');
if(Hook::listen('rolecheck',$params,null,true)===false) continue; if(Hook::listen('rolecheck',$params,null,true)===false) continue;
$applist_1[] = $value; $applist_1[] = $value;
} }
//对应用根据disp 排序 //对应用根据disp 排序
if($applist_1){ if($applist_1){
$sort = array( $sort = array(
'direction' => 'SORT_ASC', //排序顺序标志 SORT_DESC 降序SORT_ASC 升序 'direction' => 'SORT_ASC', //排序顺序标志 SORT_DESC 降序SORT_ASC 升序
'field' => 'disp', //排序字段 'field' => 'disp', //排序字段
); );
$arrSort = array(); $arrSort = array();
foreach($applist_1 AS $uniqid => $row){ foreach($applist_1 AS $uniqid => $row){
foreach($row AS $key=>$value){ foreach($row AS $key=>$value){
$arrSort[$key][$uniqid] = $value; $arrSort[$key][$uniqid] = $value;
} }
} }
if($sort['direction']){ if($sort['direction']){
array_multisort($arrSort[$sort['field']], constant($sort['direction']), $applist_1); array_multisort($arrSort[$sort['field']], constant($sort['direction']), $applist_1);
} }
} }
exit(json_encode(array('data'=>array_merge($applist_1,$applist_2)))); exit(json_encode(array('data'=>array_merge($applist_1,$applist_2))));
}else{ }else{
// 地址栏名称 // 地址栏名称
$navtitle = $_G['setting']['sitename']; $navtitle = $_G['setting']['sitename'];
// 获取hash // 获取hash
$hash = FORMHASH; $hash = FORMHASH;
// 获取当前用户信息 // 获取当前用户信息
$userData = array(); $userData = array();
$udata = DB::fetch_first("select u.uid,u.avatarstatus,u.username,u.groupid,u.adminid,u.nickname,s.svalue from %t u $udata = DB::fetch_first("select u.uid,u.avatarstatus,u.username,u.groupid,u.adminid,u.nickname,s.svalue from %t u
left join %t s on s.uid = u.uid and s.skey=%swhere u.uid =%d", left join %t s on s.uid = u.uid and s.skey=%swhere u.uid =%d",
array('user','user_setting','headerColor',$uid)); array('user','user_setting','headerColor',$uid));
if($udata['avatarstatus'] == 1){ if($udata['avatarstatus'] == 1){
$userData['icon'] = 'avatar.php?uid='.$udata['uid'].'&random='.VERHASH; $userData['icon'] = 'avatar.php?uid='.$udata['uid'].'&random='.VERHASH;
}elseif($udata['svalue']){ }elseif($udata['svalue']){
$userData['firstword'] = strtoupper(new_strsubstr($udata['username'],1,'')); $userData['firstword'] = strtoupper(new_strsubstr($udata['username'],1,''));
$userData['headerColor'] = $udata['svalue']; $userData['headerColor'] = $udata['svalue'];
$userData['icon'] = false; $userData['icon'] = false;
}else{ }else{
$colorkey = rand(1,15); $colorkey = rand(1,15);
$headerColor = $colors[$colorkey]; $headerColor = $colors[$colorkey];
C::t('user_setting')->insert_by_skey('headerColor',$headerColor,$udata['uid']); C::t('user_setting')->insert_by_skey('headerColor',$headerColor,$udata['uid']);
$userData['firstword'] = strtoupper(new_strsubstr($udata['username'],1,'')); $userData['firstword'] = strtoupper(new_strsubstr($udata['username'],1,''));
$userData['headerColor'] = $udata['svalue']; $userData['headerColor'] = $udata['svalue'];
} }
if( C::t('user')->checkfounder($udata)){ if( C::t('user')->checkfounder($udata)){
$userData['perm'] = 3; $userData['perm'] = 3;
}elseif($udata['adminid'] == 1){ }elseif($udata['adminid'] == 1){
$userData['perm'] = 2; $userData['perm'] = 2;
}else{ }else{
$userData['perm'] = 1; $userData['perm'] = 1;
} }
$userData['username'] = $udata['username']; $userData['username'] = $udata['username'];
$userData['uid'] = $uid; $userData['uid'] = $uid;
$userData['language'] = $_G[language]; $userData['language'] = $_G[language];
$userData['upgrade'] = $_G['setting']['upgrade']; $userData['upgrade'] = $_G['setting']['upgrade'];
$userData['version'] = $_G['setting']['version']; $userData['version'] = $_G['setting']['version'];
// 获取顶部应用 // 获取顶部应用
if($userData['language'] == 'en-US'){ if($userData['language'] == 'en-US'){
$navMenuNames = ['System setting','Cloud settings','Orguser','App','Statistics','System Tool']; $navMenuNames = ['System setting','Cloud settings','Orguser','App','Statistics','System Tool'];
}else{ }else{
$navMenuNames = ['系统设置','云设置','用户','应用','统计','系统工具']; $navMenuNames = ['系统设置','云设置','用户','应用','统计','系统工具'];
} }
$navMenu = array( $navMenu = array(
array( array(
'name'=>$navMenuNames[0], 'name'=>$navMenuNames[0],
'index'=>'setting', 'index'=>'setting',
'type'=>'admin' 'type'=>'admin'
), ),
array( array(
'name'=>$navMenuNames[1], 'name'=>$navMenuNames[1],
'index'=>'cloudsetting', 'index'=>'cloudsetting',
'type'=>'admin' 'type'=>'admin'
), ),
array( array(
'name'=>$navMenuNames[2], 'name'=>$navMenuNames[2],
'index'=>'orguser', 'index'=>'orguser',
'type'=>'admin' 'type'=>'admin'
), ),
array( array(
'name'=>$navMenuNames[3], 'name'=>$navMenuNames[3],
'index'=>'app', 'index'=>'app',
'type'=>'admin' 'type'=>'admin'
), ),
array( array(
'name'=>$navMenuNames[4], 'name'=>$navMenuNames[4],
'index'=>'stats', 'index'=>'stats',
'type'=>'dzz' 'type'=>'dzz'
), ),
array( array(
'name'=>$navMenuNames[5], 'name'=>$navMenuNames[5],
'index'=>'system', 'index'=>'system',
'type'=>'admin' 'type'=>'admin'
), ),
); );
// 获取通知 // 获取通知
$notice_num=DB::result_first("select COUNT(*) from %t where new>0 and uid=%d",array('notification',$_G['uid'])); $notice_num=DB::result_first("select COUNT(*) from %t where new>0 and uid=%d",array('notification',$_G['uid']));
exit(json_encode(array('hash'=>$hash,'navMenu'=>$navMenu,'userData'=>$userData,'notice_num'=>$notice_num,'navtitle'=>$navtitle))); exit(json_encode(array('hash'=>$hash,'navMenu'=>$navMenu,'userData'=>$userData,'notice_num'=>$notice_num,'navtitle'=>$navtitle)));
} }
?> ?>

View File

@@ -1,200 +1,200 @@
<?php <?php
/* /*
* @copyright QiaoQiaoShiDai Internet Technology(Shanghai)Co.,Ltd * @copyright QiaoQiaoShiDai Internet Technology(Shanghai)Co.,Ltd
* @license https://www.oaooa.com/licenses/ * @license https://www.oaooa.com/licenses/
* *
* @link https://www.oaooa.com * @link https://www.oaooa.com
* @author zyx(zyx@oaooa.com) * @author zyx(zyx@oaooa.com)
*/ */
if (!defined('IN_OAOOA') || !defined('IN_ADMIN')) { if (!defined('IN_OAOOA') || !defined('IN_ADMIN')) {
exit('Access Denied'); exit('Access Denied');
} }
include_once libfile('function/cache'); include_once libfile('function/cache');
//error_reporting(E_ALL); //error_reporting(E_ALL);
$op = $_GET['op']; $op = $_GET['op'];
$navtitle = lang('cron') . ' - ' . lang('admin_navtitle'); $navtitle = lang('cron') . ' - ' . lang('admin_navtitle');
if (empty($_GET['edit']) && empty($_GET['run'])) { if (empty($_GET['edit']) && empty($_GET['run'])) {
if (!submitcheck('cronssubmit')) { if (!submitcheck('cronssubmit')) {
$crons = array(); $crons = array();
$query = DB::query("SELECT * FROM " . DB::table('cron') . " ORDER BY type DESC"); $query = DB::query("SELECT * FROM " . DB::table('cron') . " ORDER BY type DESC");
while ($cron = DB::fetch($query)) { while ($cron = DB::fetch($query)) {
$disabled = $cron['weekday'] == -1 && $cron['day'] == -1 && $cron['hour'] == -1 && $cron['minute'] == '' ? 'disabled' : ''; $disabled = $cron['weekday'] == -1 && $cron['day'] == -1 && $cron['hour'] == -1 && $cron['minute'] == '' ? 'disabled' : '';
if ($cron['day'] > 0 && $cron['day'] < 32) { if ($cron['day'] > 0 && $cron['day'] < 32) {
$cron['time'] = lang('monthly') . $cron['day'] . lang('day'); $cron['time'] = lang('monthly') . $cron['day'] . lang('day');
} elseif ($cron['weekday'] >= 0 && $cron['weekday'] < 7) { } elseif ($cron['weekday'] >= 0 && $cron['weekday'] < 7) {
$cron['time'] = lang('weekly') . lang('misc_cron_week_day_' . $cron['weekday']); $cron['time'] = lang('weekly') . lang('misc_cron_week_day_' . $cron['weekday']);
} elseif ($cron['hour'] >= 0 && $cron['hour'] < 24) { } elseif ($cron['hour'] >= 0 && $cron['hour'] < 24) {
$cron['time'] = lang('everyday'); $cron['time'] = lang('everyday');
} else { } else {
$cron['time'] = lang('per_hour'); $cron['time'] = lang('per_hour');
} }
$cron['time'] .= $cron['hour'] >= 0 && $cron['hour'] < 24 ? sprintf('%02d', $cron[hour]) . lang('timeliness') : ''; $cron['time'] .= $cron['hour'] >= 0 && $cron['hour'] < 24 ? sprintf('%02d', $cron[hour]) . lang('timeliness') : '';
if (!in_array($cron['minute'], array(-1, ''))) { if (!in_array($cron['minute'], array(-1, ''))) {
foreach ($cron['minute'] = explode("\t", $cron['minute']) as $k => $v) { foreach ($cron['minute'] = explode("\t", $cron['minute']) as $k => $v) {
$cron['minute'][$k] = sprintf('%02d', $v); $cron['minute'][$k] = sprintf('%02d', $v);
} }
$cron['minute'] = implode(',', $cron['minute']); $cron['minute'] = implode(',', $cron['minute']);
$cron['time'] .= $cron['minute'] . lang('point'); $cron['time'] .= $cron['minute'] . lang('point');
} else { } else {
$cron['time'] .= '00' . lang('point'); $cron['time'] .= '00' . lang('point');
} }
$cron['lastrun'] = $cron['lastrun'] ? dgmdate($cron['lastrun'], $_G['setting']['dateformat'] . "<\b\\r />" . $_G['setting']['timeformat']) : '<b>N/A</b>'; $cron['lastrun'] = $cron['lastrun'] ? dgmdate($cron['lastrun'], $_G['setting']['dateformat'] . "<\b\\r />" . $_G['setting']['timeformat']) : '<b>N/A</b>';
$cron['nextcolor'] = $cron['nextrun'] && $cron['nextrun'] + $_G['setting']['timeoffset'] * 3600 < TIMESTAMP ? 'style="color: #ff0000"' : ''; $cron['nextcolor'] = $cron['nextrun'] && $cron['nextrun'] + $_G['setting']['timeoffset'] * 3600 < TIMESTAMP ? 'style="color: #ff0000"' : '';
$cron['nextrun'] = $cron['nextrun'] ? dgmdate($cron['nextrun'], $_G['setting']['dateformat'] . "<\b\\r />" . $_G['setting']['timeformat']) : '<b>N/A</b>'; $cron['nextrun'] = $cron['nextrun'] ? dgmdate($cron['nextrun'], $_G['setting']['dateformat'] . "<\b\\r />" . $_G['setting']['timeformat']) : '<b>N/A</b>';
$cron['run'] = $cron['available']; $cron['run'] = $cron['available'];
$crons[] = $cron; $crons[] = $cron;
} }
} else { } else {
if ($ids = dimplode($_GET['delete'])) { if ($ids = dimplode($_GET['delete'])) {
DB::delete('cron', "cronid IN ($ids) AND type!='system'"); DB::delete('cron', "cronid IN ($ids) AND type!='system'");
} }
if (is_array($_GET['namenew'])) { if (is_array($_GET['namenew'])) {
foreach ($_GET['namenew'] as $id => $name) { foreach ($_GET['namenew'] as $id => $name) {
$newcron = array('name' => dhtmlspecialchars($_GET['namenew'][$id]), 'available' => $_GET['availablenew'][$id]); $newcron = array('name' => dhtmlspecialchars($_GET['namenew'][$id]), 'available' => $_GET['availablenew'][$id]);
if (empty($_GET['availablenew'][$id])) { if (empty($_GET['availablenew'][$id])) {
$newcron['nextrun'] = '0'; $newcron['nextrun'] = '0';
} }
DB::update('cron', $newcron, "cronid='{$id}'"); DB::update('cron', $newcron, "cronid='{$id}'");
} }
} }
if ($newname = trim($_GET['newname'])) { if ($newname = trim($_GET['newname'])) {
DB::insert('cron', array('name' => dhtmlspecialchars($newname), 'type' => 'user', 'available' => '0', 'weekday' => '-1', 'day' => '-1', 'hour' => '-1', 'minute' => '', 'nextrun' => $_G['timestamp'], )); DB::insert('cron', array('name' => dhtmlspecialchars($newname), 'type' => 'user', 'available' => '0', 'weekday' => '-1', 'day' => '-1', 'hour' => '-1', 'minute' => '', 'nextrun' => $_G['timestamp'], ));
} }
$query = DB::query("SELECT cronid, filename FROM " . DB::table('cron')); $query = DB::query("SELECT cronid, filename FROM " . DB::table('cron'));
while ($cron = DB::fetch($query)) { while ($cron = DB::fetch($query)) {
$efile = explode(':', $cron['filename']); $efile = explode(':', $cron['filename']);
if (count($efile) > 1) { if (count($efile) > 1) {
$filename = array_pop($efile); $filename = array_pop($efile);
$cronfile = DZZ_ROOT. ''.implode("/",$efile).'/cron/'.$filename; $cronfile = DZZ_ROOT. ''.implode("/",$efile).'/cron/'.$filename;
} else { } else {
$cronfile = DZZ_ROOT . './core/cron/' . $cron['filename']; $cronfile = DZZ_ROOT . './core/cron/' . $cron['filename'];
} }
if (!file_exists($cronfile)) { if (!file_exists($cronfile)) {
DB::update('cron', array('available' => '0', 'nextrun' => '0', ), "cronid='$cron[cronid]'"); DB::update('cron', array('available' => '0', 'nextrun' => '0', ), "cronid='$cron[cronid]'");
} }
} }
updatecache('setting'); updatecache('setting');
$msg = lang('crons_succeed'); $msg = lang('crons_succeed');
$redirecturl = BASESCRIPT . '?mod=system&op=cron'; $redirecturl = BASESCRIPT . '?mod=system&op=cron';
$msg_type = 'text-success'; $msg_type = 'text-success';
} }
} else { } else {
$cronid = empty($_GET['run']) ? $_GET['edit'] : $_GET['run']; $cronid = empty($_GET['run']) ? $_GET['edit'] : $_GET['run'];
$cron = DB::fetch_first("SELECT * FROM " . DB::table('cron') . " WHERE cronid='$cronid'"); $cron = DB::fetch_first("SELECT * FROM " . DB::table('cron') . " WHERE cronid='$cronid'");
if (!$cron) { if (!$cron) {
$msg = lang('cron_not_found'); $msg = lang('cron_not_found');
$redirecturl = BASESCRIPT . '?mod=system&op=cron'; $redirecturl = BASESCRIPT . '?mod=system&op=cron';
$msg_type = 'text-error'; $msg_type = 'text-error';
include template('cron'); include template('cron');
exit(); exit();
} }
$cron['filename'] = str_replace(array('..', '/', '\\'), array('', '', ''), $cron['filename']); $cron['filename'] = str_replace(array('..', '/', '\\'), array('', '', ''), $cron['filename']);
$cronminute = str_replace("\t", ',', $cron['minute']); $cronminute = str_replace("\t", ',', $cron['minute']);
$cron['minute'] = explode("\t", $cron['minute']); $cron['minute'] = explode("\t", $cron['minute']);
if (!empty($_GET['edit'])) { if (!empty($_GET['edit'])) {
if (!submitcheck('editsubmit')) { if (!submitcheck('editsubmit')) {
$navtitle = lang('misc_cron_edit') . ' - ' . lang('admin_navtitle'); $navtitle = lang('misc_cron_edit') . ' - ' . lang('admin_navtitle');
$weekdayselect = $dayselect = $hourselect = ''; $weekdayselect = $dayselect = $hourselect = '';
for ($i = 0; $i <= 6; $i++) { for ($i = 0; $i <= 6; $i++) {
$weekdayselect .= "<option value=\"$i\" " . ($cron['weekday'] == $i ? 'selected' : '') . ">" . lang('misc_cron_week_day_' . $i) . "</option>"; $weekdayselect .= "<option value=\"$i\" " . ($cron['weekday'] == $i ? 'selected' : '') . ">" . lang('misc_cron_week_day_' . $i) . "</option>";
} }
for ($i = 1; $i <= 31; $i++) { for ($i = 1; $i <= 31; $i++) {
$dayselect .= "<option value=\"$i\" " . ($cron['day'] == $i ? 'selected' : '') . ">$i " . lang('day') . "</option>"; $dayselect .= "<option value=\"$i\" " . ($cron['day'] == $i ? 'selected' : '') . ">$i " . lang('day') . "</option>";
} }
for ($i = 0; $i <= 23; $i++) { for ($i = 0; $i <= 23; $i++) {
$hourselect .= "<option value=\"$i\" " . ($cron['hour'] == $i ? 'selected' : '') . ">$i " . lang('timeliness') . "</option>"; $hourselect .= "<option value=\"$i\" " . ($cron['hour'] == $i ? 'selected' : '') . ">$i " . lang('timeliness') . "</option>";
} }
} else { } else {
$daynew = $_GET['weekdaynew'] != -1 ? -1 : $_GET['daynew']; $daynew = $_GET['weekdaynew'] != -1 ? -1 : $_GET['daynew'];
if (strpos($_GET['minutenew'], ',') !== FALSE) { if (strpos($_GET['minutenew'], ',') !== FALSE) {
$minutenew = explode(',', $_GET['minutenew']); $minutenew = explode(',', $_GET['minutenew']);
foreach ($minutenew as $key => $val) { foreach ($minutenew as $key => $val) {
$minutenew[$key] = $val = intval($val); $minutenew[$key] = $val = intval($val);
if ($val < 0 || $var > 59) { if ($val < 0 || $var > 59) {
unset($minutenew[$key]); unset($minutenew[$key]);
} }
} }
$minutenew = array_slice(array_unique($minutenew), 0, 12); $minutenew = array_slice(array_unique($minutenew), 0, 12);
$minutenew = implode("\t", $minutenew); $minutenew = implode("\t", $minutenew);
} else { } else {
$minutenew = intval($_GET['minutenew']); $minutenew = intval($_GET['minutenew']);
$minutenew = $minutenew >= 0 && $minutenew < 60 ? $minutenew : ''; $minutenew = $minutenew >= 0 && $minutenew < 60 ? $minutenew : '';
} }
$msg = ''; $msg = '';
$_GET['filenamenew'] = str_replace(array('..', '/', '\\'), '', $_GET['filenamenew']); $_GET['filenamenew'] = str_replace(array('..', '/', '\\'), '', $_GET['filenamenew']);
$efile = explode(':', $_GET['filenamenew']); $efile = explode(':', $_GET['filenamenew']);
if (count($efile) > 1) { if (count($efile) > 1) {
$filename = array_pop($efile); $filename = array_pop($efile);
$cronfile = DZZ_ROOT. ''.implode("/",$efile).'/cron/'.$filename; $cronfile = DZZ_ROOT. ''.implode("/",$efile).'/cron/'.$filename;
} else { } else {
$cronfile = DZZ_ROOT . './core/cron/' . $cron['filename']; $cronfile = DZZ_ROOT . './core/cron/' . $cron['filename'];
} }
if (preg_match("/[\\\\\/\*\?\"\<\>\|]+/", $_GET['filenamenew'])) { if (preg_match("/[\\\\\/\*\?\"\<\>\|]+/", $_GET['filenamenew'])) {
$msg = lang('crons_filename_illegal'); $msg = lang('crons_filename_illegal');
} elseif (!is_readable($cronfile)) { } elseif (!is_readable($cronfile)) {
$msg = lang('crons_filename_invalid', array('cronfile' => $cronfile)); $msg = lang('crons_filename_invalid', array('cronfile' => $cronfile));
} elseif ($_GET['weekdaynew'] == -1 && $daynew == -1 && $_GET['hournew'] == -1 && $minutenew === '') { } elseif ($_GET['weekdaynew'] == -1 && $daynew == -1 && $_GET['hournew'] == -1 && $minutenew === '') {
$msg = lang('crons_time_invalid'); $msg = lang('crons_time_invalid');
} }
if (!empty($msg)) { if (!empty($msg)) {
$msg_type = 'text-error'; $msg_type = 'text-error';
$redirecturl = dreferer(); $redirecturl = dreferer();
include template('cron'); include template('cron');
exit(); exit();
} }
DB::update('cron', array('weekday' => $_GET['weekdaynew'], 'day' => $daynew, 'hour' => $_GET['hournew'], 'minute' => $minutenew, 'filename' => trim($_GET['filenamenew']), ), "cronid='$cronid'"); DB::update('cron', array('weekday' => $_GET['weekdaynew'], 'day' => $daynew, 'hour' => $_GET['hournew'], 'minute' => $minutenew, 'filename' => trim($_GET['filenamenew']), ), "cronid='$cronid'");
dzz_cron::run($cronid); dzz_cron::run($cronid);
$msg = lang('crons_succeed'); $msg = lang('crons_succeed');
$msg_type = 'text-success'; $msg_type = 'text-success';
$redirecturl = BASESCRIPT . '?mod=system&op=cron'; $redirecturl = BASESCRIPT . '?mod=system&op=cron';
} }
} else { } else {
$cron['filename'] = str_replace(array('..', '/', '\\'), '', $cron['filename']); $cron['filename'] = str_replace(array('..', '/', '\\'), '', $cron['filename']);
$efile = explode(':', $cron['filename']); $efile = explode(':', $cron['filename']);
if (count($efile) > 1) { if (count($efile) > 1) {
$filename = array_pop($efile); $filename = array_pop($efile);
$cronfile = DZZ_ROOT. ''.implode("/",$efile).'/cron/'.$filename; $cronfile = DZZ_ROOT. ''.implode("/",$efile).'/cron/'.$filename;
} else { } else {
$cronfile = DZZ_ROOT . './core/cron/' . $cron['filename']; $cronfile = DZZ_ROOT . './core/cron/' . $cron['filename'];
} }
if (!file_exists($cronfile)) { if (!file_exists($cronfile)) {
$msg = lang('crons_run_invalid', array('cronfile' => $cronfile)); $msg = lang('crons_run_invalid', array('cronfile' => $cronfile));
$msg_type = 'text-error'; $msg_type = 'text-error';
} else { } else {
dzz_cron::run($cron['cronid']); dzz_cron::run($cron['cronid']);
$msg = lang('crons_run_succeed'); $msg = lang('crons_run_succeed');
$redirecturl = BASESCRIPT . '?mod=system&op=cron'; $redirecturl = BASESCRIPT . '?mod=system&op=cron';
$msg_type = 'text-success'; $msg_type = 'text-success';
} }
} }
} }
include template('cron'); include template('cron');
?> ?>

File diff suppressed because it is too large Load Diff

View File

@@ -1 +0,0 @@
.max-width[data-v-6168216d]{width:360px}

View File

@@ -1 +0,0 @@
.wait-files[data-v-00939ee2]{line-height:25px;border:1px solid #dcdfe6;margin-bottom:10px;padding:5px;font-size:14px}

View File

@@ -1 +1 @@
.el-avatar[data-v-6f47bc15]{float:left;cursor:pointer}.el-divider--horizontal.el-divider[data-v-6f47bc15]{margin:8px 0}.aboutPichome{padding:0;width:478px}.aboutPichome .el-message-box__btns,.aboutPichome .el-message-box__header{display:none}.aboutPichome .aboutlogo{text-align:center;line-height:0;padding-top:40px}.aboutPichome .aboutmessage{padding:65px 40px;font-size:19px;padding-bottom:15px}.aboutPichome .aboutmessage .aboutlist{margin-bottom:20px;overflow:hidden}.aboutPichome a{text-decoration:none}.aboutPichome .aboutmessage .aboutlist .title{float:left;width:95px}.aboutPichome .aboutmessage .aboutlist .mes{float:left;width:calc(100% - 95px)}.aboutPichome .aboutmessage .aboutlist .update{font-size:12px} .el-avatar[data-v-1aac96c1]{float:left;cursor:pointer}.el-divider--horizontal.el-divider[data-v-1aac96c1]{margin:8px 0}.aboutPichome{padding:0;width:478px}.aboutPichome .el-message-box__btns,.aboutPichome .el-message-box__header{display:none}.aboutPichome .aboutlogo{text-align:center;line-height:0;padding-top:40px}.aboutPichome .aboutmessage{padding:65px 40px;font-size:19px;padding-bottom:15px}.aboutPichome .aboutmessage .aboutlist{margin-bottom:20px;overflow:hidden}.aboutPichome a{text-decoration:none}.aboutPichome .aboutmessage .aboutlist .title{float:left;width:95px}.aboutPichome .aboutmessage .aboutlist .mes{float:left;width:calc(100% - 95px)}.aboutPichome .aboutmessage .aboutlist .update{font-size:12px}

View File

@@ -1 +1 @@
.el-container[data-v-6b6f1ca9],.el-main[data-v-6b6f1ca9]{height:100%}.el-main[data-v-6b6f1ca9]{padding:0}.top-title .el-steps[data-v-31baf320]{background:transparent;padding:0 25px}.top-title .el-steps[data-v-31baf320] .el-step__icon{vertical-align:middle}.el-progress[data-v-31baf320]{width:400px;display:inline-block}.content[data-v-31baf320]{padding:20px 25px}.help-inline li[data-v-31baf320]{margin-bottom:5px}.top-title .main-title[data-v-da54ce54]{font-size:14px;color:#909399;cursor:pointer;margin-right:20px;vertical-align:bottom}.top-title .main-title.is-active[data-v-da54ce54]{color:#369}.content[data-v-da54ce54]{padding:20px 25px}.systemExportNotify{width:auto}.help-inline li[data-v-174d5b16]{margin-bottom:5px;padding:0}.max-width[data-v-174d5b16]{width:260px}.custom-single[data-v-174d5b16]{height:40px;margin-bottom:5px}.custom-single .el-checkbox[data-v-174d5b16]{overflow:hidden}.custom-single .el-checkbox[data-v-174d5b16] .el-checkbox__input{vertical-align:text-top}.custom-single .el-checkbox[data-v-174d5b16] .el-checkbox__label{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-checkbox[data-v-174d5b16],.el-radio[data-v-174d5b16]{margin-bottom:5px;margin-left:0!important}.el-radio[data-v-174d5b16]{min-width:260px}.max-width[data-v-71031654]{width:50%}.content[data-v-24008314]{padding:20px 25px}.help-inline li[data-v-24008314]{margin-bottom:5px;padding:0}.help-inline[data-v-5e61246c]{display:block}.help-inline li[data-v-5e61246c]{margin-bottom:5px;padding:0}.max-width[data-v-5e61246c]{width:360px} .el-container[data-v-51d41a2c],.el-main[data-v-51d41a2c]{height:100%}.el-main[data-v-51d41a2c]{padding:0}.top-title .el-steps[data-v-31baf320]{background:transparent;padding:0 25px}.top-title .el-steps[data-v-31baf320] .el-step__icon{vertical-align:middle}.el-progress[data-v-31baf320]{width:400px;display:inline-block}.content[data-v-31baf320]{padding:20px 25px}.help-inline li[data-v-31baf320]{margin-bottom:5px}.top-title .main-title[data-v-da54ce54]{font-size:14px;color:#909399;cursor:pointer;margin-right:20px;vertical-align:bottom}.top-title .main-title.is-active[data-v-da54ce54]{color:#369}.content[data-v-da54ce54]{padding:20px 25px}.systemExportNotify{width:auto}.help-inline li[data-v-174d5b16]{margin-bottom:5px;padding:0}.max-width[data-v-174d5b16]{width:260px}.custom-single[data-v-174d5b16]{height:40px;margin-bottom:5px}.custom-single .el-checkbox[data-v-174d5b16]{overflow:hidden}.custom-single .el-checkbox[data-v-174d5b16] .el-checkbox__input{vertical-align:text-top}.custom-single .el-checkbox[data-v-174d5b16] .el-checkbox__label{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-checkbox[data-v-174d5b16],.el-radio[data-v-174d5b16]{margin-bottom:5px;margin-left:0!important}.el-radio[data-v-174d5b16]{min-width:260px}.max-width[data-v-71031654]{width:50%}.content[data-v-24008314]{padding:20px 25px}.help-inline li[data-v-24008314]{margin-bottom:5px;padding:0}.help-inline[data-v-5e61246c]{display:block}.help-inline li[data-v-5e61246c]{margin-bottom:5px;padding:0}.max-width[data-v-5e61246c]{width:360px}

View File

@@ -1 +1 @@
<!DOCTYPE html><html lang=zh><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1"><link rel=icon href=favicon.ico><title></title><link href=admin/system/dist/css/chunk-2b4f90f7.519dec70.css rel=prefetch><link href=admin/system/dist/css/chunk-494f643e.7502109f.css rel=prefetch><link href=admin/system/dist/css/chunk-5ae5cc35.d763cbce.css rel=prefetch><link href=admin/system/dist/css/chunk-5cdcd199.6f46c04d.css rel=prefetch><link href=admin/system/dist/css/chunk-74c32c70.4b7d665e.css rel=prefetch><link href=admin/system/dist/css/chunk-76f23146.6fc79cd8.css rel=prefetch><link href=admin/system/dist/css/chunk-7828662a.c81657ef.css rel=prefetch><link href=admin/system/dist/css/chunk-9f9c2568.5356ad7d.css rel=prefetch><link href=admin/system/dist/css/chunk-af3b1b98.b822363f.css rel=prefetch><link href=admin/system/dist/css/chunk-e730cc06.987283b7.css rel=prefetch><link href=admin/system/dist/css/system_temp.a56510eb.css rel=prefetch><link href=admin/system/dist/js/chunk-2b4f90f7.ec4ac270.js rel=prefetch><link href=admin/system/dist/js/chunk-2d0a3327.ad2684c9.js rel=prefetch><link href=admin/system/dist/js/chunk-2d0bdbc6.4ec7bc5e.js rel=prefetch><link href=admin/system/dist/js/chunk-2d0dd46d.e13ddeba.js rel=prefetch><link href=admin/system/dist/js/chunk-2d0efd3c.44a093d1.js rel=prefetch><link href=admin/system/dist/js/chunk-2d20fcd9.50f81306.js rel=prefetch><link href=admin/system/dist/js/chunk-2d21ddf7.9f7b329e.js rel=prefetch><link href=admin/system/dist/js/chunk-494f643e.77a11d42.js rel=prefetch><link href=admin/system/dist/js/chunk-5ae5cc35.25761a21.js rel=prefetch><link href=admin/system/dist/js/chunk-5cdcd199.070f9c94.js rel=prefetch><link href=admin/system/dist/js/chunk-74c32c70.1f5e9382.js rel=prefetch><link href=admin/system/dist/js/chunk-76f23146.0d2957ed.js rel=prefetch><link href=admin/system/dist/js/chunk-7828662a.e587f025.js rel=prefetch><link href=admin/system/dist/js/chunk-9f9c2568.538835dd.js rel=prefetch><link href=admin/system/dist/js/chunk-af3b1b98.850ec152.js rel=prefetch><link href=admin/system/dist/js/chunk-e730cc06.3ce9a994.js rel=prefetch><link href=admin/system/dist/js/system_temp.c7e32270.js rel=prefetch><link href=admin/system/dist/css/chunk-vendors.4d5d56a8.css rel=preload as=style><link href=admin/system/dist/css/index.7d0ec6bf.css rel=preload as=style><link href=admin/system/dist/js/chunk-vendors.3b95dfe3.js rel=preload as=script><link href=admin/system/dist/js/index.d36cff59.js rel=preload as=script><link href=admin/system/dist/css/chunk-vendors.4d5d56a8.css rel=stylesheet><link href=admin/system/dist/css/index.7d0ec6bf.css rel=stylesheet></head><body><div id=app></div><script src=admin/system/dist/js/chunk-vendors.3b95dfe3.js></script><script src=admin/system/dist/js/index.d36cff59.js></script></body></html> <!DOCTYPE html><html lang=zh><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1"><link rel=icon href=favicon.ico><title></title><link href=admin/system/dist/css/chunk-2b4f90f7.519dec70.css rel=prefetch><link href=admin/system/dist/css/chunk-494f643e.7502109f.css rel=prefetch><link href=admin/system/dist/css/chunk-5ae5cc35.d763cbce.css rel=prefetch><link href=admin/system/dist/css/chunk-74c32c70.4b7d665e.css rel=prefetch><link href=admin/system/dist/css/chunk-76f23146.6fc79cd8.css rel=prefetch><link href=admin/system/dist/css/chunk-7828662a.c81657ef.css rel=prefetch><link href=admin/system/dist/css/chunk-7aef2525.9e97ae28.css rel=prefetch><link href=admin/system/dist/css/chunk-9f9c2568.5356ad7d.css rel=prefetch><link href=admin/system/dist/css/chunk-af3b1b98.b822363f.css rel=prefetch><link href=admin/system/dist/css/chunk-e730cc06.987283b7.css rel=prefetch><link href=admin/system/dist/css/system_temp.abc9b69c.css rel=prefetch><link href=admin/system/dist/js/chunk-2b4f90f7.45b9151d.js rel=prefetch><link href=admin/system/dist/js/chunk-2d0a3327.ad2684c9.js rel=prefetch><link href=admin/system/dist/js/chunk-2d0bdbc6.4ec7bc5e.js rel=prefetch><link href=admin/system/dist/js/chunk-2d0dd46d.e13ddeba.js rel=prefetch><link href=admin/system/dist/js/chunk-2d0efd3c.44a093d1.js rel=prefetch><link href=admin/system/dist/js/chunk-2d20fcd9.50f81306.js rel=prefetch><link href=admin/system/dist/js/chunk-2d21ddf7.9f7b329e.js rel=prefetch><link href=admin/system/dist/js/chunk-494f643e.77a11d42.js rel=prefetch><link href=admin/system/dist/js/chunk-5ae5cc35.25761a21.js rel=prefetch><link href=admin/system/dist/js/chunk-74c32c70.1f5e9382.js rel=prefetch><link href=admin/system/dist/js/chunk-76f23146.0d2957ed.js rel=prefetch><link href=admin/system/dist/js/chunk-7828662a.e587f025.js rel=prefetch><link href=admin/system/dist/js/chunk-7aef2525.35b8efb8.js rel=prefetch><link href=admin/system/dist/js/chunk-9f9c2568.538835dd.js rel=prefetch><link href=admin/system/dist/js/chunk-af3b1b98.850ec152.js rel=prefetch><link href=admin/system/dist/js/chunk-e730cc06.3ce9a994.js rel=prefetch><link href=admin/system/dist/js/system_temp.b94f1119.js rel=prefetch><link href=admin/system/dist/css/chunk-vendors.4d5d56a8.css rel=preload as=style><link href=admin/system/dist/css/index.7d0ec6bf.css rel=preload as=style><link href=admin/system/dist/js/chunk-vendors.3b95dfe3.js rel=preload as=script><link href=admin/system/dist/js/index.b9edc49b.js rel=preload as=script><link href=admin/system/dist/css/chunk-vendors.4d5d56a8.css rel=stylesheet><link href=admin/system/dist/css/index.7d0ec6bf.css rel=stylesheet></head><body><div id=app></div><script src=admin/system/dist/js/chunk-vendors.3b95dfe3.js></script><script src=admin/system/dist/js/index.b9edc49b.js></script></body></html>

View File

@@ -1 +1 @@
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2b4f90f7"],{3685:function(t,e,a){},ec9e:function(t,e,a){"use strict";var n=a("3685"),i=a.n(n);i.a},fcc8f:function(t,e,a){"use strict";a.r(e);var n=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"resNav"},[a("div",{staticClass:"resNav-item resNav-left"},[a("a",{staticClass:"h-left",attrs:{href:"javascript:;"},on:{click:function(e){return t.goBack()}}},[a("el-image",{attrs:{src:"data/attachment/sitelogo/sitelogo.png",fit:"contain"}}),a("span",{staticClass:"text"},[t._v(t._s(t.navTitle))])],1)]),a("div",{staticClass:"resNav-item resNav-center"}),a("div",{staticClass:"resNav-item resNav-right"},[a("Mavatar")],1)])},i=[],c=(a("d3b7"),a("5530")),s=a("2f62"),r={props:["hideContent","apptype","hideBack"],data:function(){return{}},computed:Object(c["a"])(Object(c["a"])({},Object(s["c"])(["headerName","navTitle","IfuserAgent"])),Object(s["b"])(["GetNavMenu"])),methods:{handleClick:function(t){var e=this.GetNavMenu;for(var a in e)if(e[a].index==t){"admin"==e[a].type?window.location.href="admin.php?mod="+t:window.location.href="index.php?mod="+t;break}},goBack:function(){window.location.href="/"}},components:{Mavatar:function(){return a.e("chunk-5cdcd199").then(a.bind(null,"6254"))}}},o=r,d=(a("ec9e"),a("2877")),l=Object(d["a"])(o,n,i,!1,null,"b9d2b62e",null);e["default"]=l.exports}}]); (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2b4f90f7"],{3685:function(t,e,a){},ec9e:function(t,e,a){"use strict";var n=a("3685"),i=a.n(n);i.a},fcc8f:function(t,e,a){"use strict";a.r(e);var n=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"resNav"},[a("div",{staticClass:"resNav-item resNav-left"},[a("a",{staticClass:"h-left",attrs:{href:"javascript:;"},on:{click:function(e){return t.goBack()}}},[a("el-image",{attrs:{src:"data/attachment/sitelogo/sitelogo.png",fit:"contain"}}),a("span",{staticClass:"text"},[t._v(t._s(t.navTitle))])],1)]),a("div",{staticClass:"resNav-item resNav-center"}),a("div",{staticClass:"resNav-item resNav-right"},[a("Mavatar")],1)])},i=[],c=(a("d3b7"),a("5530")),s=a("2f62"),r={props:["hideContent","apptype","hideBack"],data:function(){return{}},computed:Object(c["a"])(Object(c["a"])({},Object(s["c"])(["headerName","navTitle","IfuserAgent"])),Object(s["b"])(["GetNavMenu"])),methods:{handleClick:function(t){var e=this.GetNavMenu;for(var a in e)if(e[a].index==t){"admin"==e[a].type?window.location.href="admin.php?mod="+t:window.location.href="index.php?mod="+t;break}},goBack:function(){window.location.href="/"}},components:{Mavatar:function(){return a.e("chunk-7aef2525").then(a.bind(null,"6254"))}}},o=r,l=(a("ec9e"),a("2877")),d=Object(l["a"])(o,n,i,!1,null,"b9d2b62e",null);e["default"]=d.exports}}]);

View File

@@ -1 +0,0 @@
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0bdbc6"],{"2ced":function(t,n,e){"use strict";e.r(n);var c=function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("el-card",{staticClass:"box-card",staticStyle:{background:"rgb(240, 249, 235)","text-align":"center"},attrs:{shadow:"hover"}},[e("p",[t._v(t._s(t.$t("upgrade_none")))])])},a=[],o={data:function(){return{}},created:function(){},methods:{},components:{},mounted:function(){}},r=o,s=e("2877"),u=Object(s["a"])(r,c,a,!1,null,null,null);n["default"]=u.exports}}]);

View File

@@ -1 +0,0 @@
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0dd46d"],{8164:function(e,t,a){"use strict";a.r(t);var s=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{directives:[{name:"loading",rawName:"v-loading",value:e.loading,expression:"loading"}]},[a("el-card",{staticClass:"box-card",staticStyle:{background:"rgb(240, 249, 235)","text-align":"center"},attrs:{shadow:"hover"}},[a("p",{staticStyle:{"margin-bottom":"0"}},[a("el-link",{attrs:{type:"success",underline:!1}},[e._v(e._s(e.$t("upgrade_successful1")))])],1),a("p",{staticStyle:{margin:"0"}},[a("el-link",{attrs:{type:"success",underline:!1}},[e._v(e._s(e.$t("upgrade_successful2",{msg:e.$route.params.version})))])],1),a("p",{staticStyle:{"margin-bottom":"0"}},[a("el-link",{attrs:{type:"success",underline:!1}},[e._v(e._s(e.$t("upgrade_successful3",{dir:e.dir})))])],1),a("p",{staticStyle:{margin:"0"}},[a("el-link",{attrs:{type:"success",underline:!1}},[e._v(e._s(e.$t("upgrade_successful4",{backdir:e.backdir})))])],1)])],1)},n=[],r=(a("96cf"),a("1da1")),i={data:function(){return{loading:!1,dir:"",backdir:""}},created:function(){this.getData()},methods:{getData:function(){var e=this;return Object(r["a"])(regeneratorRuntime.mark((function t(){var a,s;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return e.loading=!0,t.next=3,e.axios.post("admin.php?mod=system&op=intsystemupgrade&operation=patch&step=5",{version:e.$route.params.version});case 3:a=t.sent,s=a.data,e.dir=s.dir,e.backdir=s.backdir,e.loading=!1;case 8:case"end":return t.stop()}}),t)})))()}},components:{},mounted:function(){}},c=i,d=a("2877"),u=Object(d["a"])(c,s,n,!1,null,"f4790950",null);t["default"]=u.exports}}]);

View File

@@ -1 +0,0 @@
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0dd46d"],{8164:function(e,t,a){"use strict";a.r(t);var s=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{directives:[{name:"loading",rawName:"v-loading",value:e.loading,expression:"loading"}]},[a("el-card",{staticClass:"box-card",staticStyle:{background:"rgb(240, 249, 235)","text-align":"center"},attrs:{shadow:"hover"}},[a("p",{staticStyle:{"margin-bottom":"0"}},[a("el-link",{attrs:{type:"success",underline:!1}},[e._v(e._s(e.$t("upgrade_successful1")))])],1),a("p",{staticStyle:{margin:"0"}},[a("el-link",{attrs:{type:"success",underline:!1}},[e._v(e._s(e.$t("upgrade_successful2",{msg:e.$route.params.version})))])],1),a("p",{staticStyle:{"margin-bottom":"0"}},[a("el-link",{attrs:{type:"success",underline:!1}},[e._v(e._s(e.$t("upgrade_successful3",{dir:e.dir})))])],1),a("p",{staticStyle:{margin:"0"}},[a("el-link",{attrs:{type:"success",underline:!1}},[e._v(e._s(e.$t("upgrade_successful4",{backdir:e.backdir})))])],1)])],1)},n=[],r=(a("96cf"),a("1da1")),i={data:function(){return{loading:!1,dir:"",backdir:""}},created:function(){this.getData()},methods:{getData:function(){var e=this;return Object(r["a"])(regeneratorRuntime.mark((function t(){var a,s;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return e.loading=!0,t.next=3,e.axios.post("admin.php?mod=system&op=intsystemupgrade&operation=patch&step=5",{version:e.$route.params.version});case 3:a=t.sent,s=a.data,e.dir=s.dir,e.backdir=s.backdir,e.loading=!1;case 8:case"end":return t.stop()}}),t)})))()}},components:{},mounted:function(){}},c=i,d=a("2877"),u=Object(d["a"])(c,s,n,!1,null,"306dae10",null);t["default"]=u.exports}}]);

View File

@@ -1 +0,0 @@
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0efd3c"],{"9a86":function(e,t,a){"use strict";a.r(t);var r=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{directives:[{name:"loading",rawName:"v-loading",value:e.loading,expression:"loading"}]},[e.floading?a("div",[e.tableData.length?[a("el-card",{staticClass:"box-card",staticStyle:{background:"rgb(240, 249, 235)","margin-bottom":"25px"},attrs:{shadow:"hover"}},[a("ul",{staticClass:"help-inline",domProps:{innerHTML:e._s(e.$t("founder_upgrade_diff_show",{version:e.returnData.version,oldversion:e.oldversion}))}})]),a("el-table",{staticStyle:{width:"100%"},attrs:{data:e.tableData,border:""}},[a("el-table-column",{attrs:{prop:"name",label:"文件名"}}),a("el-table-column",{attrs:{align:"center",prop:"status",label:"状态",width:"120"},scopedSlots:e._u([{key:"default",fn:function(t){return[1==t.row.status?[a("el-link",{attrs:{underline:!1,type:"danger"}},[e._v(e._s(e.$t("founder_upgrade_diff")))])]:2==t.row.status?[a("el-link",{attrs:{underline:!1,type:"info"}},[e._v(e._s(e.$t("founder_upgrade_normal")))])]:3==t.row.status?[a("el-link",{attrs:{underline:!1,type:"primary"}},[e._v(e._s(e.$t("founder_upgrade_new")))])]:e._e()]}}],null,!1,3979069617)})],1),a("div",{staticStyle:{"margin-top":"10px"}},[a("el-button",{attrs:{size:"small",type:"primary"},on:{click:e.handleupdate}},[e._v(e._s(e.button))])],1)]:[a("el-card",{staticClass:"box-card",staticStyle:{background:"rgb(240, 249, 235)"},attrs:{shadow:"hover"}},[a("el-link",{attrs:{type:"success",underline:!1}},[e._v(e._s(e.$t("filecheck_nofound_md5file")))])],1)]],2):e._e()])},n=[],o=(a("96cf"),a("1da1")),s={props:["returnData"],data:function(){return{loading:!1,floading:!1,tableData:[],button:"",oldversion:""}},created:function(){this.getData()},methods:{getData:function(){var e=this;return Object(o["a"])(regeneratorRuntime.mark((function t(){var a,r,n,o,s;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return e.loading=!0,a={version:e.returnData.version?e.returnData.version:"",locale:e.returnData.locale?e.returnData.locale:"",charset:e.returnData.charset?e.returnData.charset:""},t.next=4,e.axios.post("admin.php?mod=system&op=intsystemupgrade&operation=patch&step=3",a);case 4:if(r=t.sent,n=r.data,!n.upgradeNone){t.next=12;break}return o={upgradeNone:!0},e.$emit("handleStep",o),t.abrupt("return",!1);case 12:if(!n.upgradeError){t.next=18;break}return o={upgradeError:!0},e.$emit("handleStep",o),t.abrupt("return",!1);case 18:if(!n.bbclosed){t.next=22;break}return s={template:"bbclosed"},e.$emit("handleStep",s),t.abrupt("return",!1);case 22:e.tableData=n.tableData,e.button=n.button,e.oldversion=n.oldversion,e.loading=!1,e.floading=!0;case 27:case"end":return t.stop()}}),t)})))()},handleupdate:function(){var e={template:4};return this.$emit("handleStep",e),!1}},components:{},mounted:function(){}},l=s,i=a("2877"),u=Object(i["a"])(l,r,n,!1,null,null,null);t["default"]=u.exports}}]);

View File

@@ -1 +0,0 @@
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d21ddf7"],{d2c6:function(t,e,a){"use strict";a.r(e);var r=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",[3==t.downloadstatus?[a("el-card",{staticClass:"box-card",staticStyle:{background:"rgb(240, 249, 235)","text-align":"center"},attrs:{shadow:"hover"}},[a("p",[t._v(t._s(t.$t("upgrade_redownload",{file:t.data.file})))]),a("el-button",{attrs:{type:"primary",size:"medium"},on:{click:t.handleretry}},[t._v(t._s(t.$t("retry")))])],1)]:[a("el-card",{staticClass:"box-card",staticStyle:{width:"600px",margin:"0 auto","margin-top":"50px"}},[a("div",{staticClass:"clearfix",staticStyle:{"text-align":"center"},attrs:{slot:"header"},slot:"header"},[a("span",[t._v(t._s(t.$t("upgrade_downloading_file")))])]),a("p",{staticStyle:{width:"100%",overflow:"hidden","white-space":"nowrap","text-overflow":"ellipsis","font-size":"14px"}},[4==t.downloadstatus?[t._v(t._s(t.$t("upgrade_download_complete_to_compare")))]:[t._v(t._s(t.data.file))]],2),a("el-progress",{staticStyle:{"margin-bottom":"20px"},attrs:{"text-inside":!0,"stroke-width":26,percentage:t.data.percent}})],1)]],2)},n=[],s=(a("96cf"),a("1da1")),o={props:["returnData"],data:function(){return{stepstatus:!0,downloadstatus:0,data:{file:"",fileseq:1,percent:0}}},created:function(){this.getData()},methods:{getData:function(){var t=this;return Object(s["a"])(regeneratorRuntime.mark((function e(){var a,r,n,s,o,d;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(t.stepstatus){e.next=2;break}return e.abrupt("return",!1);case 2:return a={version:t.returnData.version?t.returnData.version:"",locale:t.returnData.locale?t.returnData.locale:"",charset:t.returnData.charset?t.returnData.charset:"",fileseq:t.data.fileseq},e.next=5,t.axios.post("admin.php?mod=system&op=intsystemupgrade&operation=patch&step=2",a);case 5:if(r=e.sent,n=r.data,!n.upgradeNone){e.next=13;break}return s={upgradeNone:!0},t.$emit("handleStep",s),e.abrupt("return",!1);case 13:if(!n.upgradeError){e.next=19;break}return s={upgradeError:!0},t.$emit("handleStep",s),e.abrupt("return",!1);case 19:if(!n.bbclosed){e.next=23;break}return o={template:"bbclosed"},t.$emit("handleStep",o),e.abrupt("return",!1);case 23:return t.downloadstatus=n.downloadstatus,3==n.downloadstatus?t.data.file=n.data.file:4==n.downloadstatus?(t.data.percent=100,d={template:3},setTimeout((function(){t.$emit("handleStep",d)}),1e3)):(n.data.percent=parseInt(n.data.percent),t.data=n.data,t.getData()),e.abrupt("return",!1);case 26:case"end":return e.stop()}}),e)})))()},handleretry:function(){window.location.reload()}},components:{},mounted:function(){},destroyed:function(){this.stepstatus=!1}},d=o,i=a("2877"),u=Object(i["a"])(d,r,n,!1,null,null,null);e["default"]=u.exports}}]);

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-5cdcd199"],{6254:function(t,a,e){"use strict";e.r(a);var o=function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("div",{staticStyle:{"margin-left":"10px",display:"inherit"}},[e("el-dropdown",{staticStyle:{width:"35px",height:"35px"},attrs:{trigger:"click","hide-on-click":!1},on:{command:t.handleAvatar}},[t.GetUserData.icon?[e("el-tooltip",{staticClass:"item",attrs:{effect:"dark",content:t.GetUserData.username,placement:"left"}},[e("el-avatar",{attrs:{size:35,src:t.GetUserData.icon}})],1)]:[e("el-tooltip",{staticClass:"item",attrs:{effect:"dark",content:t.GetUserData.username,placement:"left"}},[e("el-avatar",{style:{background:t.GetUserData.headerColor},attrs:{size:35}},[t._v(t._s(t.GetUserData.firstword))])],1)],e("el-dropdown-menu",{staticClass:"avatar-dropdown",attrs:{slot:"dropdown"},slot:"dropdown"},[e("el-dropdown-item",{attrs:{command:"personal"}},[t._v("个人设置")]),e("el-dropdown-item",{attrs:{command:"help"}},[t._v("帮助文档")]),e("el-dropdown-item",{attrs:{command:"problem"}},[t._v("问题反馈")]),e("el-divider"),e("el-dropdown-item",{attrs:{command:"setting"}},[t._v("站点设置")]),e("el-dropdown-item",{attrs:{command:"library"}},[t._v("库设置")]),e("el-dropdown-item",{attrs:{command:"system"}},[e("span",{staticStyle:{position:"relative"}},[t._v(" 系统工具 "),t.GetUserData.upgrade?e("div",{staticClass:"tip",staticStyle:{width:"7px",height:"7px","border-radius":"50%",background:"red",position:"absolute",left:"-13px",top:"0",bottom:"0",margin:"auto"}}):t._e()])]),e("el-divider"),e("el-dropdown-item",{attrs:{command:"about"}},[t._v("关于PicHome")]),e("el-dropdown-item",{attrs:{command:"OutLogin"}},[t._v("退出站点")])],1)],2)],1)},s=[],n=(e("96cf"),e("1da1")),i=e("5530"),r=e("2f62"),c={data:function(){return{}},computed:Object(i["a"])({},Object(r["b"])(["GetUserData","GetFormHash","GetLanguage"])),methods:{handleAvatar:function(t){switch(t){case"personal":window.location.href="index.php?mod=pichome&op=user&do=personal";break;case"help":window.open("https://www.yuque.com/pichome");break;case"problem":window.open("https://support.qq.com/products/340252");break;case"setting":window.location.href="index.php?mod=pichome&op=admin&do=basic";break;case"library":window.location.href="index.php?mod=pichome&op=library";break;case"about":this.$alert('<div class="aboutlogo">\n \t\t\t<img src="dzz/pichome/image/phlogo.png" alt="">\n \t\t</div>\n \t\t<div class="aboutmessage">\n \t\t\t<div class="aboutlist">\n \t\t\t\t<span class="title">软件名称:</span><span class="mes">欧奥PicHome</span>\n \t\t\t</div>\n \t\t\t<div class="aboutlist">\n \t\t\t\t<span class="title">版本信息:</span><span class="mes">'+this.GetUserData.version+'</span>\n \t\t\t</div>\n \t\t\t<div class="aboutlist">\n \t\t\t\t<span class="title">版权信息:</span><span class="mes">Powered By oaooa PicHome © 2020-2021 欧奥图文</span>\n \t\t\t</div>\n \t\t\t<div class="aboutlist">\n \t\t\t\t<span class="title">网站地址:</span><span class="mes"><a class="address" href="https://oaooa.com/" target="_blank">oaooa.com</a></span>\n \t\t\t</div>\n \t\t</div>',"",{customClass:"aboutPichome",showClose:!1,showConfirmButton:!1,dangerouslyUseHTMLString:!0,closeOnClickModal:!0});break;case"OutLogin":this.outLogin();break;case"system":window.open("admin.php?mod=system");break}return!1},outLogin:function(){var t=this;return Object(n["a"])(regeneratorRuntime.mark((function a(){var e;return regeneratorRuntime.wrap((function(a){while(1)switch(a.prev=a.next){case 0:return a.next=2,t.axios.post(t.AxiosApi+"user.php?mod=login&op=logging&action=logout&formhash="+t.GetFormHash+"&t="+(new Date).getTime());case 2:e=a.sent,e.data,window.location.reload();case 5:case"end":return a.stop()}}),a)})))()}}},d=c,l=(e("d2ba"),e("9c24"),e("2877")),p=Object(l["a"])(d,o,s,!1,null,"6f47bc15",null);a["default"]=p.exports},"864f":function(t,a,e){},"9c24":function(t,a,e){"use strict";var o=e("864f"),s=e.n(o);s.a},ae63:function(t,a,e){},d2ba:function(t,a,e){"use strict";var o=e("ae63"),s=e.n(o);s.a}}]);

View File

@@ -1 +0,0 @@
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-77c8d08e"],{"1f5d":function(e,t,a){"use strict";a.r(t);var n=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{directives:[{name:"loading",rawName:"v-loading",value:e.loading,expression:"loading"}]},[a("el-card",{staticClass:"box-card",staticStyle:{background:"rgb(240, 249, 235)","margin-bottom":"25px"},attrs:{shadow:"hover"}},[a("ul",{staticClass:"help-inline",domProps:{innerHTML:e._s(e.$t("founder_upgrade_store_directory",{msg:e.returnData.version}))}})]),e._l(e.files,(function(t){return a("div",{staticClass:"wait-files"},[a("i",{staticClass:"el-icon-document"}),e._v(" "+e._s(t)+" ")])})),a("el-button",{attrs:{type:"primary",size:"medium"},on:{click:e.handleupdate}},[e._v(e._s(e.$t("founder_upgrade_download")))])],2)},r=[],o=(a("96cf"),a("1da1")),i={props:["returnData"],data:function(){return{files:[],loading:!1}},created:function(){this.getData()},methods:{getData:function(){var e=this;return Object(o["a"])(regeneratorRuntime.mark((function t(){var a,n,r,o,i;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return e.loading=!0,a={version:e.returnData.version?e.returnData.version:"",locale:e.returnData.locale?e.returnData.locale:"",charset:e.returnData.charset?e.returnData.charset:""},t.next=4,e.axios.post("admin.php?mod=system&op=intsystemupgrade&operation=patch&step=1",a);case 4:return n=t.sent,r=n.data,r.upgradeNone?(o={upgradeNone:!0},e.$emit("handleStep",o)):r.upgradeError?(o={upgradeError:!0},e.$emit("handleStep",o)):r.bbclosed?(i={bbclosed:!0},e.$emit("handleStep",i)):(e.files=r.data,e.loading=!1),t.abrupt("return",!1);case 8:case"end":return t.stop()}}),t)})))()},handleupdate:function(){var e={template:2};this.$emit("handleStep",e)}},components:{},mounted:function(){}},s=i,u=(a("7949"),a("2877")),d=Object(u["a"])(s,n,r,!1,null,"00939ee2",null);t["default"]=d.exports},7949:function(e,t,a){"use strict";var n=a("93b8"),r=a.n(n);r.a},"93b8":function(e,t,a){}}]);

View File

@@ -0,0 +1 @@
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-7aef2525"],{"3e42":function(t,e,a){},6254:function(t,e,a){"use strict";a.r(e);var o=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticStyle:{"margin-left":"10px",display:"inherit"}},[a("el-dropdown",{staticStyle:{width:"35px",height:"35px"},attrs:{trigger:"click","hide-on-click":!1},on:{command:t.handleAvatar}},[t.GetUserData.icon?[a("el-tooltip",{staticClass:"item",attrs:{effect:"dark",content:t.GetUserData.username,placement:"left"}},[a("el-avatar",{attrs:{size:35,src:t.GetUserData.icon}})],1)]:[a("el-tooltip",{staticClass:"item",attrs:{effect:"dark",content:t.GetUserData.username,placement:"left"}},[a("el-avatar",{style:{background:t.GetUserData.headerColor},attrs:{size:35}},[t._v(t._s(t.GetUserData.firstword))])],1)],a("el-dropdown-menu",{staticClass:"avatar-dropdown",attrs:{slot:"dropdown"},slot:"dropdown"},[a("el-dropdown-item",{attrs:{command:"personal"}},[t._v("个人设置")]),a("el-dropdown-item",{attrs:{command:"help"}},[t._v("帮助文档")]),a("el-dropdown-item",{attrs:{command:"problem"}},[t._v("问题反馈")]),a("el-divider"),a("el-dropdown-item",{attrs:{command:"setting"}},[t._v("站点设置")]),a("el-dropdown-item",{attrs:{command:"library"}},[t._v("库设置")]),a("el-dropdown-item",{attrs:{command:"system"}},[a("span",{staticStyle:{position:"relative"}},[t._v(" 系统工具 "),t.GetUserData.upgrade?a("div",{staticClass:"tip",staticStyle:{width:"7px",height:"7px","border-radius":"50%",background:"red",position:"absolute",left:"-13px",top:"0",bottom:"0",margin:"auto"}}):t._e()])]),a("el-divider"),a("el-dropdown-item",{attrs:{command:"about"}},[t._v("关于PicHome")]),a("el-dropdown-item",{attrs:{command:"OutLogin"}},[t._v("退出站点")])],1)],2)],1)},s=[],n=(a("96cf"),a("1da1")),i=a("5530"),r=a("2f62"),c={data:function(){return{}},computed:Object(i["a"])({},Object(r["b"])(["GetUserData","GetFormHash","GetLanguage"])),methods:{handleAvatar:function(t){switch(t){case"collection":window.location.href="index.php?mod=collection";break;case"personal":window.location.href="index.php?mod=pichome&op=user&do=personal";break;case"help":window.open("https://www.yuque.com/pichome");break;case"problem":window.open("https://support.qq.com/products/340252");break;case"setting":window.location.href="index.php?mod=pichome&op=admin&do=authorize";break;case"library":window.location.href="index.php?mod=pichome&op=library";break;case"about":this.$alert('<div class="aboutlogo">\n \t\t\t<img src="dzz/pichome/image/phlogo.png" alt="">\n \t\t</div>\n \t\t<div class="aboutmessage">\n \t\t\t<div class="aboutlist">\n \t\t\t\t<span class="title">软件名称:</span><span class="mes">欧奥PicHome</span>\n \t\t\t</div>\n \t\t\t<div class="aboutlist">\n \t\t\t\t<span class="title">版本信息:</span><span class="mes">'+this.GetUserData.version+'</span>\n \t\t\t</div>\n \t\t\t<div class="aboutlist">\n \t\t\t\t<span class="title">版权信息:</span><span class="mes">Powered By oaooa PicHome © 2020-2022 欧奥图文</span>\n \t\t\t</div>\n \t\t\t<div class="aboutlist">\n \t\t\t\t<span class="title">网站地址:</span><span class="mes"><a class="address" href="https://oaooa.com/" target="_blank">oaooa.com</a></span>\n \t\t\t</div>\n \t\t</div>',"",{customClass:"aboutPichome",showClose:!1,showConfirmButton:!1,dangerouslyUseHTMLString:!0,closeOnClickModal:!0});break;case"OutLogin":this.outLogin();break;case"system":window.open("admin.php?mod=system");break;case"orguser":window.open("admin.php?mod=orguser");break}return!1},outLogin:function(){var t=this;return Object(n["a"])(regeneratorRuntime.mark((function e(){var a;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,t.axios.post(t.AxiosApi+"user.php?mod=login&op=logging&action=logout&formhash="+t.GetFormHash+"&t="+(new Date).getTime());case 2:a=e.sent,a.data,window.location.reload();case 5:case"end":return e.stop()}}),e)})))()}}},d=c,l=(a("74bc"),a("9c24"),a("2877")),p=Object(l["a"])(d,o,s,!1,null,"1aac96c1",null);e["default"]=p.exports},"74bc":function(t,e,a){"use strict";var o=a("3e42"),s=a.n(o);s.a},"864f":function(t,e,a){},"9c24":function(t,e,a){"use strict";var o=a("864f"),s=a.n(o);s.a}}]);

View File

@@ -1 +0,0 @@
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-9f9c2568"],{"01e3":function(e,t,n){"use strict";n.r(t);var s=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"page-content"},[n("div",{staticClass:"top-title color-border",staticStyle:{display:"flex"}},[n("span",[e._v(e._s(e.$t("upgrade"))),e.elstep>0?n("span",{staticClass:"line"}):e._e()]),e.elstep>0?n("el-steps",{staticStyle:{flex:"1"},attrs:{active:e.elstep,"finish-status":"success",simple:""}},[n("el-step",{attrs:{title:e.$t("founder_upgrade_updatelist")}}),n("el-step",{attrs:{title:e.$t("founder_upgrade_download")}}),n("el-step",{attrs:{title:e.$t("founder_upgrade_compare")}}),n("el-step",{attrs:{title:e.$t("founder_upgrade_upgrading")}}),n("el-step",{attrs:{title:e.$t("founder_upgrade_complete")}})],1):e._e()],1),n("el-scrollbar",{staticClass:"page-component__scroll"},[n("div",{staticClass:"content",staticStyle:{padding:"25px"}},[n(e.template,{tag:"component",attrs:{returnData:e.returnData},on:{handleStep:e.handleStep}})],1)])],1)},a=[],r=(n("d3b7"),{props:["returnData"],data:function(){return{elstep:"",template:""}},watch:{elstep:{handler:function(e){this.handleTemplate()}},$route:{handler:function(e){e.params&&e.params.version&&(this.elstep=5)},deep:!0}},created:function(){this.returnData.iframes?this.elstep=4:(this.elstep=this.returnData.step?this.returnData.step:1,this.handleTemplate())},methods:{handleStep:function(e){e.upgradeNone?(this.template="upgradeNone",this.elstep=0):e.upgradeError?(this.template="upgradeError",this.elstep=0):e.bbclosed?(this.template="bbclosed",this.elstep=0):this.elstep=e.template},handleTemplate:function(){switch(this.elstep){case 1:this.template="step1";break;case 2:this.template="step2";break;case 3:this.template="step3";break;case 4:this.template="step4";break;case 5:this.template="step5";break}}},components:{upgradeError:function(){return n.e("chunk-2d20fcd9").then(n.bind(null,"b4d5"))},upgradeNone:function(){return n.e("chunk-2d0bdbc6").then(n.bind(null,"2ced"))},bbclosed:function(){return n.e("chunk-2d0a3327").then(n.bind(null,"00c4"))},step1:function(){return n.e("chunk-77c8d08e").then(n.bind(null,"1f5d"))},step2:function(){return n.e("chunk-2d21ddf7").then(n.bind(null,"d2c6"))},step3:function(){return n.e("chunk-2d0efd3c").then(n.bind(null,"9a86"))},step4:function(){return n.e("chunk-36bedb7f").then(n.bind(null,"4e68"))},step5:function(){return n.e("chunk-2d0dd46d").then(n.bind(null,"8164"))}},destroyed:function(){}}),l=r,p=(n("8dc4"),n("2877")),i=Object(p["a"])(l,s,a,!1,null,"0dbad62e",null);t["default"]=i.exports},"1a21":function(e,t,n){},"8dc4":function(e,t,n){"use strict";var s=n("1a21"),a=n.n(s);a.a}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@@ -1,18 +1,18 @@
<?php <?php
/* /*
* @copyright QiaoQiaoShiDai Internet Technology(Shanghai)Co.,Ltd * @copyright QiaoQiaoShiDai Internet Technology(Shanghai)Co.,Ltd
* @license https://www.oaooa.com/licenses/ * @license https://www.oaooa.com/licenses/
* *
* @link https://www.oaooa.com * @link https://www.oaooa.com
* @author zyx(zyx@oaooa.com) * @author zyx(zyx@oaooa.com)
*/ */
if (!defined('IN_OAOOA') || !defined('IN_ADMIN')) { if (!defined('IN_OAOOA') || !defined('IN_ADMIN')) {
exit('Access Denied'); exit('Access Denied');
} }
require_once(__DIR__.'/dist/index.html'); require_once(__DIR__.'/dist/index.html');
exit(); exit();
$operation = $_GET['operation'] ? $_GET['operation'] : 'updatecache'; $operation = $_GET['operation'] ? $_GET['operation'] : 'updatecache';
$url=getglobal('siteurl'). BASESCRIPT . '?mod=system&op=' . $operation; $url=getglobal('siteurl'). BASESCRIPT . '?mod=system&op=' . $operation;
$url = outputurl($url); $url = outputurl($url);
@header("location: $url"); @header("location: $url");
?> ?>

File diff suppressed because it is too large Load Diff

View File

@@ -24,7 +24,8 @@ $steplang = array('', lang('founder_upgrade_updatelist'), lang('founder_upgrade_
if ($operation == 'patch' || $operation == 'cross') { if ($operation == 'patch' || $operation == 'cross') {
if (!$_G['setting']['bbclosed']) { if (!$_G['setting']['bbclosed']) {
exit(json_encode(array('bbclosed'=>true))); C::t('setting')->update('bbclosed', 1);
updatecache('setting');
} }
$msg = ''; $msg = '';
@@ -227,6 +228,8 @@ if ($operation == 'patch' || $operation == 'cross') {
$file = DZZ_ROOT . './data/update/pichome' . $version . '/updatelist.tmp'; $file = DZZ_ROOT . './data/update/pichome' . $version . '/updatelist.tmp';
@unlink($file); @unlink($file);
@unlink(DZZ_ROOT . './install/update.php'); @unlink(DZZ_ROOT . './install/update.php');
//打开站点
C::t('setting')->update('bbclosed', 0);
C::t('cache') -> delete('upgrade_step'); C::t('cache') -> delete('upgrade_step');
C::t('cache') -> delete('upgrade_run'); C::t('cache') -> delete('upgrade_run');
C::t('setting') -> update('upgrade', ''); C::t('setting') -> update('upgrade', '');

View File

@@ -1,7 +1,7 @@
<?php <?php
$lang = array ( $lang = array (
'appname'=>'System Tool', 'appname'=>'System Tool',
'systemupgrade'=>'online upgrade', 'systemupgrade'=>'online upgrade',
'tools_updatecache_memory'=>'Memory Cache' 'tools_updatecache_memory'=>'Memory Cache'
); );
?> ?>

View File

@@ -1,7 +1,7 @@
<?php <?php
$lang = array ( $lang = array (
'appname'=>'系统工具', 'appname'=>'系统工具',
'systemupgrade'=>'在线升级', 'systemupgrade'=>'在线升级',
'tools_updatecache_memory'=>'内存缓存' 'tools_updatecache_memory'=>'内存缓存'
); );
?> ?>

View File

@@ -1,416 +1,416 @@
<?php <?php
/* /*
* @copyright QiaoQiaoShiDai Internet Technology(Shanghai)Co.,Ltd * @copyright QiaoQiaoShiDai Internet Technology(Shanghai)Co.,Ltd
* @license https://www.oaooa.com/licenses/ * @license https://www.oaooa.com/licenses/
* *
* @link https://www.oaooa.com * @link https://www.oaooa.com
* @author zyx(zyx@oaooa.com) * @author zyx(zyx@oaooa.com)
*/ */
if (!defined('IN_OAOOA') || !defined('IN_ADMIN')) { if (!defined('IN_OAOOA') || !defined('IN_ADMIN')) {
exit('Access Denied'); exit('Access Denied');
} }
$navtitle = lang('upgrade') . ' - ' . lang('admin_navtitle'); $navtitle = lang('upgrade') . ' - ' . lang('admin_navtitle');
@set_time_limit(0); @set_time_limit(0);
include_once DZZ_ROOT . './core/core_version.php'; include_once DZZ_ROOT . './core/core_version.php';
include_once libfile('function/admin'); include_once libfile('function/admin');
include_once libfile('function/cache'); include_once libfile('function/cache');
$dzz_upgrade = new dzz_upgrade(); $dzz_upgrade = new dzz_upgrade();
$step = intval($_GET['step']); $step = intval($_GET['step']);
$op = $_GET['op']; $op = $_GET['op'];
$step = $step ? $step : 1; $step = $step ? $step : 1;
$operation = $_GET['operation'] ? trim($_GET['operation']) : 'check'; $operation = $_GET['operation'] ? trim($_GET['operation']) : 'check';
$steplang = array('', lang('founder_upgrade_updatelist'), lang('founder_upgrade_download'), lang('founder_upgrade_compare'), lang('founder_upgrade_upgrading'), lang('founder_upgrade_complete'), 'dbupdate' => lang('founder_upgrade_dbupdate')); $steplang = array('', lang('founder_upgrade_updatelist'), lang('founder_upgrade_download'), lang('founder_upgrade_compare'), lang('founder_upgrade_upgrading'), lang('founder_upgrade_complete'), 'dbupdate' => lang('founder_upgrade_dbupdate'));
if ($operation == 'patch' || $operation == 'cross') { if ($operation == 'patch' || $operation == 'cross') {
if (!$_G['setting']['bbclosed']) { if (!$_G['setting']['bbclosed']) {
$msg = '<p style="margin:10px 0;color:red">' . lang('upgrade_close_site') . '</p>'; $msg = '<p style="margin:10px 0;color:red">' . lang('upgrade_close_site') . '</p>';
$msg .= '<p style="margin:10px 0"><input type="button" class="btn btn-primary" onclick="window.location.reload();" value="' . lang('founder_upgrade_reset') . '" /></p>'; $msg .= '<p style="margin:10px 0"><input type="button" class="btn btn-primary" onclick="window.location.reload();" value="' . lang('founder_upgrade_reset') . '" /></p>';
$msg .= "<p style=\"margin:10px 0\"><script type=\"text/javascript\">"; $msg .= "<p style=\"margin:10px 0\"><script type=\"text/javascript\">";
$msg .= "if(history.length > (BROWSER.ie ? 0 : 1)) document.write('<a href=\"javascript:history.go(-1);\" >" . lang('message_return') . "</a>');"; $msg .= "if(history.length > (BROWSER.ie ? 0 : 1)) document.write('<a href=\"javascript:history.go(-1);\" >" . lang('message_return') . "</a>');";
$msg .= "</script></p>"; $msg .= "</script></p>";
if (!$_GET['iframe']) { if (!$_GET['iframe']) {
include template('upgrade'); include template('upgrade');
exit(); exit();
} else { } else {
include template('upgrade_iframe'); include template('upgrade_iframe');
exit(); exit();
} }
} }
$msg = ''; $msg = '';
$version = trim($_GET['version']); $version = trim($_GET['version']);
//$release = trim($_GET['release']); //$release = trim($_GET['release']);
$locale = trim($_GET['locale']); $locale = trim($_GET['locale']);
$charset = trim($_GET['charset']); $charset = trim($_GET['charset']);
$upgradeinfo = $upgrade_step = array(); $upgradeinfo = $upgrade_step = array();
if ($_GET['ungetfrom']) { if ($_GET['ungetfrom']) {
if (md5($_GET['ungetfrom'] . $_G['config']['security']['authkey']) == $_GET['ungetfrommd5']) { if (md5($_GET['ungetfrom'] . $_G['config']['security']['authkey']) == $_GET['ungetfrommd5']) {
$dbreturnurl = $_G['siteurl'] . ADMINSCRIPT . '?mod=system&op=systemupgrade&operation=' . $operation . '&version=' . $version . '&step=5'; $dbreturnurl = $_G['siteurl'] . ADMINSCRIPT . '?mod=system&op=systemupgrade&operation=' . $operation . '&version=' . $version . '&step=5';
$url = outputurl( $_G['siteurl'] . 'install/update.php?step=prepare&from=' . rawurlencode($dbreturnurl) . '&frommd5=' . rawurlencode(md5($dbreturnurl . $_G['config']['security']['authkey'])) ); $url = outputurl( $_G['siteurl'] . 'install/update.php?step=prepare&from=' . rawurlencode($dbreturnurl) . '&frommd5=' . rawurlencode(md5($dbreturnurl . $_G['config']['security']['authkey'])) );
dheader('Location: ' . $url); dheader('Location: ' . $url);
} else { } else {
showmessage('upgrade_param_error'); showmessage('upgrade_param_error');
} }
} }
$upgrade_step = C::t('cache') -> fetch('upgrade_step'); $upgrade_step = C::t('cache') -> fetch('upgrade_step');
$upgrade_step = dunserialize($upgrade_step['cachevalue']); $upgrade_step = dunserialize($upgrade_step['cachevalue']);
$upgrade_step['step'] = $step; $upgrade_step['step'] = $step;
$upgrade_step['operation'] = $operation; $upgrade_step['operation'] = $operation;
$upgrade_step['version'] = $version; $upgrade_step['version'] = $version;
//$upgrade_step['release'] = $release; //$upgrade_step['release'] = $release;
$upgrade_step['charset'] = $charset; $upgrade_step['charset'] = $charset;
$upgrade_step['locale'] = $locale; $upgrade_step['locale'] = $locale;
C::t('cache') -> insert(array('cachekey' => 'upgrade_step', 'cachevalue' => serialize($upgrade_step), 'dateline' => $_G['timestamp'], ), false, true); C::t('cache') -> insert(array('cachekey' => 'upgrade_step', 'cachevalue' => serialize($upgrade_step), 'dateline' => $_G['timestamp'], ), false, true);
$upgrade_run = C::t('cache') -> fetch('upgrade_run'); $upgrade_run = C::t('cache') -> fetch('upgrade_run');
if (!$upgrade_run) { if (!$upgrade_run) {
C::t('cache') -> insert(array('cachekey' => 'upgrade_run', 'cachevalue' => serialize($_G['setting']['upgrade']), 'dateline' => $_G['timestamp'], ), false, true); C::t('cache') -> insert(array('cachekey' => 'upgrade_run', 'cachevalue' => serialize($_G['setting']['upgrade']), 'dateline' => $_G['timestamp'], ), false, true);
$upgrade_run = $_G['setting']['upgrade']; $upgrade_run = $_G['setting']['upgrade'];
} else { } else {
$upgrade_run = dunserialize($upgrade_run['cachevalue']); $upgrade_run = dunserialize($upgrade_run['cachevalue']);
} }
if ($step != 5) { if ($step != 5) {
foreach ($upgrade_run as $type => $list) { foreach ($upgrade_run as $type => $list) {
if ($type == $operation && $version == $list['latestversion']) { if ($type == $operation && $version == $list['latestversion']) {
$dzz_upgrade -> locale = $locale; $dzz_upgrade -> locale = $locale;
$dzz_upgrade -> charset = $charset; $dzz_upgrade -> charset = $charset;
$upgradeinfo = $list; $upgradeinfo = $list;
break; break;
} }
} }
if (!$upgradeinfo) { if (!$upgradeinfo) {
$msg = '<p style="margin:10px 0;color:red">' . lang('upgrade_none', array('upgradeurl' => upgradeinformation(-1))) . '</p>'; $msg = '<p style="margin:10px 0;color:red">' . lang('upgrade_none', array('upgradeurl' => upgradeinformation(-1))) . '</p>';
$msg .= "<p style=\"margin:10px 0\"><script type=\"text/javascript\">"; $msg .= "<p style=\"margin:10px 0\"><script type=\"text/javascript\">";
$msg .= "if(history.length > (BROWSER.ie ? 0 : 1)) document.write('<a href=\"javascript:history.go(-1);\" >" . lang('message_return') . "</a>');"; $msg .= "if(history.length > (BROWSER.ie ? 0 : 1)) document.write('<a href=\"javascript:history.go(-1);\" >" . lang('message_return') . "</a>');";
$msg .= "</script></p>"; $msg .= "</script></p>";
if (!$_GET['iframe']) { if (!$_GET['iframe']) {
include template('upgrade'); include template('upgrade');
exit(); exit();
} else { } else {
include template('upgrade_iframe'); include template('upgrade_iframe');
exit(); exit();
} }
} }
$updatefilelist = $dzz_upgrade -> fetch_updatefile_list($upgradeinfo); $updatefilelist = $dzz_upgrade -> fetch_updatefile_list($upgradeinfo);
$updatemd5filelist = $updatefilelist['md5']; $updatemd5filelist = $updatefilelist['md5'];
$updatefilelist = $updatefilelist['file']; $updatefilelist = $updatefilelist['file'];
$theurl = $_G['siteurl'].ADMINSCRIPT . '?mod=system&op=systemupgrade&operation=' . $operation . '&version=' . $version . '&locale=' . $locale . '&charset=' . $charset; $theurl = $_G['siteurl'].ADMINSCRIPT . '?mod=system&op=systemupgrade&operation=' . $operation . '&version=' . $version . '&locale=' . $locale . '&charset=' . $charset;
if (empty($updatefilelist)) { if (empty($updatefilelist)) {
$msg = '<p style="margin:10px 0;color:red">' . lang('upgrade_download_upgradelist_error', array('upgradeurl' => upgradeinformation(-2))) . '</p>'; $msg = '<p style="margin:10px 0;color:red">' . lang('upgrade_download_upgradelist_error', array('upgradeurl' => upgradeinformation(-2))) . '</p>';
$msg .= '<script type="text/JavaScript">setTimeout("location.href=\'' . ($thurl) . '\';", 1000);</script>'; $msg .= '<script type="text/JavaScript">setTimeout("location.href=\'' . ($thurl) . '\';", 1000);</script>';
$msg .= ' <p style="margin:10px 0"><a href="' . $thurl . '">' . lang('message_redirect') . '</p>'; $msg .= ' <p style="margin:10px 0"><a href="' . $thurl . '">' . lang('message_redirect') . '</p>';
if (!$_GET['iframe']) { if (!$_GET['iframe']) {
include template('upgrade'); include template('upgrade');
exit(); exit();
} else { } else {
include template('upgrade_iframe'); include template('upgrade_iframe');
exit(); exit();
} }
} }
} }
if ($step == 1) { if ($step == 1) {
$linkurl = $theurl . '&step=2'; $linkurl = $theurl . '&step=2';
include template('upgrade'); include template('upgrade');
exit(); exit();
} elseif ($step == 2) { } elseif ($step == 2) {
$fileseq = intval($_GET['fileseq']); $fileseq = intval($_GET['fileseq']);
$fileseq = $fileseq ? $fileseq : 1; $fileseq = $fileseq ? $fileseq : 1;
if ($fileseq > count($updatefilelist)) { if ($fileseq > count($updatefilelist)) {
$linkurl = $theurl . '&step=3'; $linkurl = $theurl . '&step=3';
$downloadstatus = 3; $downloadstatus = 3;
$msg = lang('upgrade_download_complete_to_compare', array('upgradeurl' => upgradeinformation(0))); $msg = lang('upgrade_download_complete_to_compare', array('upgradeurl' => upgradeinformation(0)));
if (!$_GET['iframe']) { if (!$_GET['iframe']) {
$msg .= '<script type="text/JavaScript">setTimeout("location.href=\'' . $linkurl . '\';", 1000);</script>'; $msg .= '<script type="text/JavaScript">setTimeout("location.href=\'' . $linkurl . '\';", 1000);</script>';
$msg .= ' <p><a href="' . $linkurl . '">' . lang('message_redirect') . '</a></p>'; $msg .= ' <p><a href="' . $linkurl . '">' . lang('message_redirect') . '</a></p>';
} else { } else {
$msg .= '<script type="text/JavaScript">setTimeout("parent.location.href=\'' . $linkurl . '\';", 1000);</script>'; $msg .= '<script type="text/JavaScript">setTimeout("parent.location.href=\'' . $linkurl . '\';", 1000);</script>';
$msg .= ' <p><a href="javascript:;" onclick="parent.location.href=\'' . $linkurl . '\';return false;">' . lang('message_redirect') . '</a></p>'; $msg .= ' <p><a href="javascript:;" onclick="parent.location.href=\'' . $linkurl . '\';return false;">' . lang('message_redirect') . '</a></p>';
include template('upgrade_iframe'); include template('upgrade_iframe');
exit(); exit();
} }
} else { } else {
if (!$_GET['iframe']) { if (!$_GET['iframe']) {
$linkurl = $theurl . '&step=2&fileseq=' . $fileseq . '&iframe=1'; $linkurl = $theurl . '&step=2&fileseq=' . $fileseq . '&iframe=1';
$msg = '<iframe id="downiframe" marginheight="0" marginwidth="0" allowtransparency="true" frameborder="0" src="' . $linkurl . '" style="width:100%;height:100%;"></iframe>'; $msg = '<iframe id="downiframe" marginheight="0" marginwidth="0" allowtransparency="true" frameborder="0" src="' . $linkurl . '" style="width:100%;height:100%;"></iframe>';
} else { } else {
$downloadstatus = $dzz_upgrade -> download_file($upgradeinfo, $updatefilelist[$fileseq - 1], 'upload', $updatemd5filelist[$fileseq - 1]); $downloadstatus = $dzz_upgrade -> download_file($upgradeinfo, $updatefilelist[$fileseq - 1], 'upload', $updatemd5filelist[$fileseq - 1]);
if ($downloadstatus == 1) { if ($downloadstatus == 1) {
$linkurl = $theurl . '&step=2&fileseq=' . $fileseq . '&iframe=1'; $linkurl = $theurl . '&step=2&fileseq=' . $fileseq . '&iframe=1';
$msg = lang('upgrade_downloading_file', array('file' => $updatefilelist[$fileseq - 1], 'percent' => sprintf("%2d", 100 * $fileseq / count($updatefilelist)) . '%', 'upgradeurl' => upgradeinformation(1))) . '<script type="text/JavaScript">setTimeout("location.href=\'' . $linkurl . '\';", 10);</script>'; $msg = lang('upgrade_downloading_file', array('file' => $updatefilelist[$fileseq - 1], 'percent' => sprintf("%2d", 100 * $fileseq / count($updatefilelist)) . '%', 'upgradeurl' => upgradeinformation(1))) . '<script type="text/JavaScript">setTimeout("location.href=\'' . $linkurl . '\';", 10);</script>';
$msg .= ' <p><a href="' . $linkurl . '">' . lang('message_redirect') . '</a></p>'; $msg .= ' <p><a href="' . $linkurl . '">' . lang('message_redirect') . '</a></p>';
} elseif ($downloadstatus == 2) { } elseif ($downloadstatus == 2) {
$linkurl = $theurl . '&step=2&fileseq=' . ($fileseq + 1) . '&iframe=1'; $linkurl = $theurl . '&step=2&fileseq=' . ($fileseq + 1) . '&iframe=1';
$msg = '<p style="margin:10px 0">' . lang('upgrade_downloading_file', array('file' => $updatefilelist[$fileseq - 1], 'percent' => sprintf("%2d", 100 * $fileseq / count($updatefilelist)) . '%', 'upgradeurl' => upgradeinformation(1))) . '<script type="text/JavaScript">setTimeout("location.href=\'' . $linkurl . '\';", 10);</script></p>'; $msg = '<p style="margin:10px 0">' . lang('upgrade_downloading_file', array('file' => $updatefilelist[$fileseq - 1], 'percent' => sprintf("%2d", 100 * $fileseq / count($updatefilelist)) . '%', 'upgradeurl' => upgradeinformation(1))) . '<script type="text/JavaScript">setTimeout("location.href=\'' . $linkurl . '\';", 10);</script></p>';
$msg .= ' <p><a href="' . $linkurl . '">' . lang('message_redirect') . '</a></p>'; $msg .= ' <p><a href="' . $linkurl . '">' . lang('message_redirect') . '</a></p>';
} else { } else {
$linkurl = $theurl . '&step=2&fileseq=' . ($fileseq) . '&iframe=1'; $linkurl = $theurl . '&step=2&fileseq=' . ($fileseq) . '&iframe=1';
$msg = '<p style="margin:10px 0">' . lang('upgrade_redownload', array('file' => $updatefilelist[$fileseq - 1], 'upgradeurl' => upgradeinformation(-3))) . '</p>'; $msg = '<p style="margin:10px 0">' . lang('upgrade_redownload', array('file' => $updatefilelist[$fileseq - 1], 'upgradeurl' => upgradeinformation(-3))) . '</p>';
$msg .= '<p style="margin:10px 0;"><input type="button" class="btn btn-success" value="'.lang('founder_upgrade_reset').'" onclick="location.href=\'' . $linkurl . '\'" />'; $msg .= '<p style="margin:10px 0;"><input type="button" class="btn btn-success" value="'.lang('founder_upgrade_reset').'" onclick="location.href=\'' . $linkurl . '\'" />';
} }
include template('upgrade_iframe'); include template('upgrade_iframe');
exit(); exit();
} }
} }
} elseif ($step == 3) { } elseif ($step == 3) {
list($modifylist, $showlist, $ignorelist,$newlist) = $dzz_upgrade -> compare_basefile($upgradeinfo, $updatefilelist,$updatemd5filelist); list($modifylist, $showlist, $ignorelist,$newlist) = $dzz_upgrade -> compare_basefile($upgradeinfo, $updatefilelist,$updatemd5filelist);
if (empty($modifylist) && empty($showlist) && empty($ignorelist) && empty($newlist)) { if (empty($modifylist) && empty($showlist) && empty($ignorelist) && empty($newlist)) {
$msg = lang('filecheck_nofound_md5file', array('upgradeurl' => upgradeinformation(-4))); $msg = lang('filecheck_nofound_md5file', array('upgradeurl' => upgradeinformation(-4)));
} }
$linkurl = $theurl . '&step=4'; $linkurl = $theurl . '&step=4';
} elseif ($step == 4) { } elseif ($step == 4) {
$confirm = $_GET['confirm']; $confirm = $_GET['confirm'];
if (!$confirm) { if (!$confirm) {
if ($_GET['siteftpsetting']) { if ($_GET['siteftpsetting']) {
$action = $theurl . '&step=4&confirm=ftp' . ($_GET['startupgrade'] ? '&startupgrade=1' : ''); $action = $theurl . '&step=4&confirm=ftp' . ($_GET['startupgrade'] ? '&startupgrade=1' : '');
include template('upgrade'); include template('upgrade');
exit(); exit();
} }
if ($upgradeinfo['isupdatedb']) { if ($upgradeinfo['isupdatedb']) {
$checkupdatefilelist = array('install/update.php', 'install/data/install.sql', 'install/data/install_data.sql'); $checkupdatefilelist = array('install/update.php', 'install/data/install.sql', 'install/data/install_data.sql');
$checkupdatefilelist = array_merge($checkupdatefilelist, $updatefilelist); $checkupdatefilelist = array_merge($checkupdatefilelist, $updatefilelist);
} else { } else {
$checkupdatefilelist = $updatefilelist; $checkupdatefilelist = $updatefilelist;
} }
if ($dzz_upgrade -> check_folder_perm($checkupdatefilelist)) { if ($dzz_upgrade -> check_folder_perm($checkupdatefilelist)) {
$confirm = 'file'; $confirm = 'file';
} else { } else {
$linkurl = $theurl . '&step=4'; $linkurl = $theurl . '&step=4';
$ftplinkurl = $linkurl . '&siteftpsetting=1'; $ftplinkurl = $linkurl . '&siteftpsetting=1';
$msg = '<p style="margin:10px 0">' . lang('upgrade_cannot_access_file') . '</p>'; $msg = '<p style="margin:10px 0">' . lang('upgrade_cannot_access_file') . '</p>';
$msg .= '<p style="margin:10px 0"><input type="button" class="btn btn-primary" onclick="window.location.href=\'' . $ftplinkurl . '\'" value="' . lang('founder_upgrade_set_ftp') . '" />'; $msg .= '<p style="margin:10px 0"><input type="button" class="btn btn-primary" onclick="window.location.href=\'' . $ftplinkurl . '\'" value="' . lang('founder_upgrade_set_ftp') . '" />';
$msg .= ' &nbsp; <input type="button" class="btn btn-default" onclick="window.location.href=\'' . $linkurl . '\'" value="' . lang('founder_upgrade_reset') . '" /></p>'; $msg .= ' &nbsp; <input type="button" class="btn btn-default" onclick="window.location.href=\'' . $linkurl . '\'" value="' . lang('founder_upgrade_reset') . '" /></p>';
$msg .= "<script type=\"text/javascript\">"; $msg .= "<script type=\"text/javascript\">";
$msg .= "if(history.length > (BROWSER.ie ? 0 : 1)) document.write('<a href=\"javascript:history.go(-1);\" class=\"lightlink\">" . lang('message_return') . "</a>');"; $msg .= "if(history.length > (BROWSER.ie ? 0 : 1)) document.write('<a href=\"javascript:history.go(-1);\" class=\"lightlink\">" . lang('message_return') . "</a>');";
$msg .= "</script>"; $msg .= "</script>";
include template('upgrade'); include template('upgrade');
exit(); exit();
} }
} }
$paraftp = ''; $paraftp = '';
if ($_GET['siteftp']) { if ($_GET['siteftp']) {
foreach ($_GET['siteftp'] as $k => $v) { foreach ($_GET['siteftp'] as $k => $v) {
$paraftp .= '&siteftp[' . $k . ']=' . $v; $paraftp .= '&siteftp[' . $k . ']=' . $v;
} }
} }
if (!$_GET['startupgrade']) { if (!$_GET['startupgrade']) {
if (!$_GET['backfile']) { if (!$_GET['backfile']) {
$linkurl = $theurl . '&step=4&backfile=1&confirm=' . $confirm . $paraftp; $linkurl = $theurl . '&step=4&backfile=1&confirm=' . $confirm . $paraftp;
$msg = '<p style="margin:10px 0">' . lang('upgrade_backuping', array('upgradeurl' => upgradeinformation(2))) . '</p>'; $msg = '<p style="margin:10px 0">' . lang('upgrade_backuping', array('upgradeurl' => upgradeinformation(2))) . '</p>';
$msg .= '<script type="text/JavaScript">setTimeout("location.href=\'' . ($linkurl) . '\';", 1000);</script>'; $msg .= '<script type="text/JavaScript">setTimeout("location.href=\'' . ($linkurl) . '\';", 1000);</script>';
$msg .= ' <p style="margin:10px 0"><a href="' . $linkurl . '">' . lang('message_redirect') . '</p>'; $msg .= ' <p style="margin:10px 0"><a href="' . $linkurl . '">' . lang('message_redirect') . '</p>';
include template('upgrade'); include template('upgrade');
exit(); exit();
} }
foreach ($updatefilelist as $updatefile) { foreach ($updatefilelist as $updatefile) {
$destfile = DZZ_ROOT . $updatefile; $destfile = DZZ_ROOT . $updatefile;
$backfile = DZZ_ROOT . './data/back/pichome' . CORE_VERSION . '/' . $updatefile; $backfile = DZZ_ROOT . './data/back/pichome' . CORE_VERSION . '/' . $updatefile;
if (is_file($destfile)) { if (is_file($destfile)) {
if (!$dzz_upgrade -> copy_file($destfile, $backfile, 'file')) { if (!$dzz_upgrade -> copy_file($destfile, $backfile, 'file')) {
$msg = '<p style="margin:10px 0">' . lang('upgrade_backup_error', array('upgradeurl' => upgradeinformation(-5))) . '</p>'; $msg = '<p style="margin:10px 0">' . lang('upgrade_backup_error', array('upgradeurl' => upgradeinformation(-5))) . '</p>';
$msg .= "<p style=\"margin:10px 0\"><script type=\"text/javascript\">"; $msg .= "<p style=\"margin:10px 0\"><script type=\"text/javascript\">";
$msg .= "if(history.length > (BROWSER.ie ? 0 : 1)) document.write('<a href=\"javascript:history.go(-1);\" >" . lang('message_return') . "</a>');"; $msg .= "if(history.length > (BROWSER.ie ? 0 : 1)) document.write('<a href=\"javascript:history.go(-1);\" >" . lang('message_return') . "</a>');";
$msg .= "</script></p>"; $msg .= "</script></p>";
include template('upgrade'); include template('upgrade');
exit(); exit();
} }
} }
} }
$msg = '<p style="margin:10px 0">' . lang('upgrade_backup_complete', array('upgradeurl' => upgradeinformation(3))) . '</p>'; $msg = '<p style="margin:10px 0">' . lang('upgrade_backup_complete', array('upgradeurl' => upgradeinformation(3))) . '</p>';
$msg .= '<script type="text/JavaScript">setTimeout("location.href=\'' . ($theurl . '&step=4&startupgrade=1&confirm=' . $confirm . $paraftp) . '\';", 1000);</script>'; $msg .= '<script type="text/JavaScript">setTimeout("location.href=\'' . ($theurl . '&step=4&startupgrade=1&confirm=' . $confirm . $paraftp) . '\';", 1000);</script>';
$msg .= ' <p><a href="' . ($theurl . '&step=4&startupgrade=1&confirm=' . $confirm . $paraftp) . '">' . lang('message_redirect') . '</p>'; $msg .= ' <p><a href="' . ($theurl . '&step=4&startupgrade=1&confirm=' . $confirm . $paraftp) . '">' . lang('message_redirect') . '</p>';
include template('upgrade'); include template('upgrade');
exit(); exit();
} }
$linkurl = $theurl . '&step=4&startupgrade=1&confirm=' . $confirm . $paraftp; $linkurl = $theurl . '&step=4&startupgrade=1&confirm=' . $confirm . $paraftp;
$ftplinkurl = $theurl . '&step=4&startupgrade=1&siteftpsetting=1'; $ftplinkurl = $theurl . '&step=4&startupgrade=1&siteftpsetting=1';
foreach ($updatefilelist as $updatefile) { foreach ($updatefilelist as $updatefile) {
$srcfile = DZZ_ROOT . './data/update/pichome' . $version . '/' . $updatefile; $srcfile = DZZ_ROOT . './data/update/pichome' . $version . '/' . $updatefile;
if ($confirm == 'ftp') { if ($confirm == 'ftp') {
$destfile = $updatefile; $destfile = $updatefile;
} else { } else {
$destfile = DZZ_ROOT . $updatefile; $destfile = DZZ_ROOT . $updatefile;
} }
if (!$dzz_upgrade -> copy_file($srcfile, $destfile, $confirm)) { if (!$dzz_upgrade -> copy_file($srcfile, $destfile, $confirm)) {
if ($confirm == 'ftp') { if ($confirm == 'ftp') {
$msg = '<p style="margin:10px 0">' . lang('upgrade_ftp_upload_error', array('file' => $updatefile, 'upgradeurl' => upgradeinformation(-6))) . '</p>'; $msg = '<p style="margin:10px 0">' . lang('upgrade_ftp_upload_error', array('file' => $updatefile, 'upgradeurl' => upgradeinformation(-6))) . '</p>';
$msg .= '<p style="margin:10px 0"><input type="button" class="btn btn-primary" onclick="window.location.href=\'' . $linkurl . '\'" value="' . lang('founder_upgrade_reupload') . '" />'; $msg .= '<p style="margin:10px 0"><input type="button" class="btn btn-primary" onclick="window.location.href=\'' . $linkurl . '\'" value="' . lang('founder_upgrade_reupload') . '" />';
$msg .= '&nbsp;<input type="button" class="btn btn-default" onclick="window.location.href=\'' . $ftplinkurl . '\'" value="' . lang('founder_upgrade_reset_ftp') . '" /></p>'; $msg .= '&nbsp;<input type="button" class="btn btn-default" onclick="window.location.href=\'' . $ftplinkurl . '\'" value="' . lang('founder_upgrade_reset_ftp') . '" /></p>';
$msg .= "<p style=\"margin:10px 0\"><script type=\"text/javascript\">"; $msg .= "<p style=\"margin:10px 0\"><script type=\"text/javascript\">";
$msg .= "if(history.length > (BROWSER.ie ? 0 : 1)) document.write('<a href=\"javascript:history.go(-1);\" class=\"lightlink\">" . lang('message_return') . "</a>');"; $msg .= "if(history.length > (BROWSER.ie ? 0 : 1)) document.write('<a href=\"javascript:history.go(-1);\" class=\"lightlink\">" . lang('message_return') . "</a>');";
$msg .= "</script></p>"; $msg .= "</script></p>";
include template('upgrade'); include template('upgrade');
exit(); exit();
} else { } else {
$msg = '<p style="margin:10px 0">' . lang('upgrade_copy_error', array('file' => $updatefile, 'upgradeurl' => upgradeinformation(-7))) . '</p>'; $msg = '<p style="margin:10px 0">' . lang('upgrade_copy_error', array('file' => $updatefile, 'upgradeurl' => upgradeinformation(-7))) . '</p>';
$msg .= '<p style="margin:10px 0"><input type="button" class="btn btn-primary" onclick="window.location.href=\'' . $linkurl . '\'" value="' . lang('founder_upgrade_recopy') . '" />'; $msg .= '<p style="margin:10px 0"><input type="button" class="btn btn-primary" onclick="window.location.href=\'' . $linkurl . '\'" value="' . lang('founder_upgrade_recopy') . '" />';
$msg .= '&nbsp;<input type="button" class="btn btn-default" onclick="window.location.href=\'' . $ftplinkurl . '\'" value="' . lang('founder_upgrade_set_ftp') . '" /></p>'; $msg .= '&nbsp;<input type="button" class="btn btn-default" onclick="window.location.href=\'' . $ftplinkurl . '\'" value="' . lang('founder_upgrade_set_ftp') . '" /></p>';
$msg .= "<p style=\"margin:10px 0\"><script type=\"text/javascript\">"; $msg .= "<p style=\"margin:10px 0\"><script type=\"text/javascript\">";
$msg .= "if(history.length > (BROWSER.ie ? 0 : 1)) document.write('<a href=\"javascript:history.go(-1);\" class=\"lightlink\">" . lang('message_return') . "</a>');"; $msg .= "if(history.length > (BROWSER.ie ? 0 : 1)) document.write('<a href=\"javascript:history.go(-1);\" class=\"lightlink\">" . lang('message_return') . "</a>');";
$msg .= "</script></p>"; $msg .= "</script></p>";
include template('upgrade'); include template('upgrade');
exit(); exit();
} }
} }
} }
if ($upgradeinfo['isupdatedb']) { if ($upgradeinfo['isupdatedb']) {
$upgrade_step['step'] = 'dbupdate'; $upgrade_step['step'] = 'dbupdate';
C::t('cache') -> insert(array('cachekey' => 'upgrade_step', 'cachevalue' => serialize($upgrade_step), 'dateline' => $_G['timestamp'], ), false, true); C::t('cache') -> insert(array('cachekey' => 'upgrade_step', 'cachevalue' => serialize($upgrade_step), 'dateline' => $_G['timestamp'], ), false, true);
$dbreturnurl = $_G['siteurl'] . ADMINSCRIPT . '?mod=system&op=systemupgrade&operation=' . $operation . '&version=' . $version . '&step=5'; $dbreturnurl = $_G['siteurl'] . ADMINSCRIPT . '?mod=system&op=systemupgrade&operation=' . $operation . '&version=' . $version . '&step=5';
$linkurl = $_G['siteurl'] . 'install/update.php?step=prepare&from=' . rawurlencode($dbreturnurl) . '&frommd5=' . rawurlencode(md5($dbreturnurl . $_G['config']['security']['authkey'])); $linkurl = $_G['siteurl'] . 'install/update.php?step=prepare&from=' . rawurlencode($dbreturnurl) . '&frommd5=' . rawurlencode(md5($dbreturnurl . $_G['config']['security']['authkey']));
$msg = '<p style="margin:10px 0">' . lang('upgrade_file_successful', array('upgradeurl' => upgradeinformation(4))) . '</p>'; $msg = '<p style="margin:10px 0">' . lang('upgrade_file_successful', array('upgradeurl' => upgradeinformation(4))) . '</p>';
$msg .= '<script type="text/JavaScript">setTimeout(function(){createIframe(\'' . $linkurl . '\');}, 1000);</script>'; $msg .= '<script type="text/JavaScript">setTimeout(function(){createIframe(\'' . $linkurl . '\');}, 1000);</script>';
$msg .= ' <p><a href="javascript:;" onclick="createIframe(\'' . $linkurl . '\');return false">' . lang('message_redirect') . '</p>'; $msg .= ' <p><a href="javascript:;" onclick="createIframe(\'' . $linkurl . '\');return false">' . lang('message_redirect') . '</p>';
include template('upgrade'); include template('upgrade');
exit(); exit();
} }
$url = outputurl( $_G['siteurl'].MOD_URL.'&op=systemupgrade&operation=' . $operation . '&version=' . $version . '&step=5' ); $url = outputurl( $_G['siteurl'].MOD_URL.'&op=systemupgrade&operation=' . $operation . '&version=' . $version . '&step=5' );
dheader('Location: ' . $url); dheader('Location: ' . $url);
} elseif ($step == 5) { } elseif ($step == 5) {
$file = DZZ_ROOT . './data/update/pichome' . $version . '/updatelist.tmp'; $file = DZZ_ROOT . './data/update/pichome' . $version . '/updatelist.tmp';
@unlink($file); @unlink($file);
@unlink(DZZ_ROOT . './install/update.php'); @unlink(DZZ_ROOT . './install/update.php');
C::t('cache') -> delete('upgrade_step'); C::t('cache') -> delete('upgrade_step');
C::t('cache') -> delete('upgrade_run'); C::t('cache') -> delete('upgrade_run');
C::t('setting') -> update('upgrade', ''); C::t('setting') -> update('upgrade', '');
updatecache('setting'); updatecache('setting');
$old_update_dir = './data/update/'; $old_update_dir = './data/update/';
$new_update_dir = './data/update' . md5('update' . $_G['config']['security']['authkey']) . '/'; $new_update_dir = './data/update' . md5('update' . $_G['config']['security']['authkey']) . '/';
$old_back_dir = './data/back/'; $old_back_dir = './data/back/';
$new_back_dir = './data/back' . md5('back' . $_G['config']['security']['authkey']) . '/'; $new_back_dir = './data/back' . md5('back' . $_G['config']['security']['authkey']) . '/';
$dzz_upgrade -> copy_dir(DZZ_ROOT . $old_update_dir, DZZ_ROOT . $new_update_dir); $dzz_upgrade -> copy_dir(DZZ_ROOT . $old_update_dir, DZZ_ROOT . $new_update_dir);
$dzz_upgrade -> copy_dir(DZZ_ROOT . $old_back_dir, DZZ_ROOT . $new_back_dir); $dzz_upgrade -> copy_dir(DZZ_ROOT . $old_back_dir, DZZ_ROOT . $new_back_dir);
$dzz_upgrade -> rmdirs(DZZ_ROOT . $old_update_dir); $dzz_upgrade -> rmdirs(DZZ_ROOT . $old_update_dir);
$dzz_upgrade -> rmdirs(DZZ_ROOT . $old_back_dir); $dzz_upgrade -> rmdirs(DZZ_ROOT . $old_back_dir);
$msg = lang('upgrade_successful', array('version' => $version, 'save_update_dir' => $new_update_dir, 'save_back_dir' => $new_back_dir, 'upgradeurl' => upgradeinformation(0))); $msg = lang('upgrade_successful', array('version' => $version, 'save_update_dir' => $new_update_dir, 'save_back_dir' => $new_back_dir, 'upgradeurl' => upgradeinformation(0)));
} }
} }
elseif ($operation == 'check') { elseif ($operation == 'check') {
$msg = ''; $msg = '';
if (!intval($_GET['rechecking'])) { if (!intval($_GET['rechecking'])) {
$upgrade_step = C::t('cache') -> fetch('upgrade_step'); $upgrade_step = C::t('cache') -> fetch('upgrade_step');
if (!empty($upgrade_step['cachevalue'])) { if (!empty($upgrade_step['cachevalue'])) {
$upgrade_step['cachevalue'] = dunserialize($upgrade_step['cachevalue']); $upgrade_step['cachevalue'] = dunserialize($upgrade_step['cachevalue']);
if (!empty($upgrade_step['cachevalue']['step'])) { if (!empty($upgrade_step['cachevalue']['step'])) {
$theurl = ADMINSCRIPT . '?mod=system&op=systemupgrade&operation=' . $upgrade_step['cachevalue']['operation'] . '&version=' . $upgrade_step['cachevalue']['version'] . '&locale=' . $upgrade_step['cachevalue']['locale'] . '&charset=' . $upgrade_step['cachevalue']['charset']; $theurl = ADMINSCRIPT . '?mod=system&op=systemupgrade&operation=' . $upgrade_step['cachevalue']['operation'] . '&version=' . $upgrade_step['cachevalue']['version'] . '&locale=' . $upgrade_step['cachevalue']['locale'] . '&charset=' . $upgrade_step['cachevalue']['charset'];
$recheckurl = ADMINSCRIPT . '?mod=system&op=systemupgrade&operation=recheck'; $recheckurl = ADMINSCRIPT . '?mod=system&op=systemupgrade&operation=recheck';
if ($upgrade_step['cachevalue']['step'] == 'dbupdate') { if ($upgrade_step['cachevalue']['step'] == 'dbupdate') {
$dbreturnurl = $_G['siteurl'] . $theurl . '&step=5'; $dbreturnurl = $_G['siteurl'] . $theurl . '&step=5';
$stepurl = $_G['siteurl'] . 'install/update.php?step=prepare&from=' . rawurlencode($dbreturnurl) . '&frommd5=' . rawurlencode(md5($dbreturnurl . $_G['config']['security']['authkey'])); $stepurl = $_G['siteurl'] . 'install/update.php?step=prepare&from=' . rawurlencode($dbreturnurl) . '&frommd5=' . rawurlencode(md5($dbreturnurl . $_G['config']['security']['authkey']));
$msg = '<p style="margin:10px 0;">' . lang('upgrade_continue_db', array('steplang' => $steplang['dbupdate'], 'stepurl' => $stepurl, 'recheckurl' => $recheckurl)) . '</p>'; $msg = '<p style="margin:10px 0;">' . lang('upgrade_continue_db', array('steplang' => $steplang['dbupdate'], 'stepurl' => $stepurl, 'recheckurl' => $recheckurl)) . '</p>';
} else { } else {
$stepurl = $theurl . '&step=' . $upgrade_step['cachevalue']['step']; $stepurl = $theurl . '&step=' . $upgrade_step['cachevalue']['step'];
$msg = '<p style="margin:10px 0;">' . lang('upgrade_continue', array('steplang' => $steplang[$upgrade_step['cachevalue']['step']], 'stepurl' => $stepurl, 'recheckurl' => $recheckurl)) . '</p>'; $msg = '<p style="margin:10px 0;">' . lang('upgrade_continue', array('steplang' => $steplang[$upgrade_step['cachevalue']['step']], 'stepurl' => $stepurl, 'recheckurl' => $recheckurl)) . '</p>';
} }
} }
} }
} else { } else {
C::t('cache') -> delete('upgrade_step'); C::t('cache') -> delete('upgrade_step');
} }
if (!intval($_GET['checking']) || $msg) { if (!intval($_GET['checking']) || $msg) {
} else { } else {
$dzz_upgrade -> check_upgrade(); $dzz_upgrade -> check_upgrade();
$url = outputurl( $_G['siteurl'].MOD_URL.'&op=systemupgrade&operation=showupgrade' ); $url = outputurl( $_G['siteurl'].MOD_URL.'&op=systemupgrade&operation=showupgrade' );
dheader('Location: ' . $url); dheader('Location: ' . $url);
} }
} }
elseif ($operation == 'showupgrade') { elseif ($operation == 'showupgrade') {
if ($_G['setting']['upgrade']) { if ($_G['setting']['upgrade']) {
C::t('cache') -> insert(array('cachekey' => 'upgrade_step', 'cachevalue' => serialize(array('curversion' => $dzz_upgrade -> versionpath())), 'dateline' => $_G['timestamp'], ), false, true); C::t('cache') -> insert(array('cachekey' => 'upgrade_step', 'cachevalue' => serialize(array('curversion' => $dzz_upgrade -> versionpath())), 'dateline' => $_G['timestamp'], ), false, true);
$upgraderow = $patchrow = array(); $upgraderow = $patchrow = array();
$charset = str_replace('-', '', strtoupper($_G['config']['output']['charset'])); $charset = str_replace('-', '', strtoupper($_G['config']['output']['charset']));
$dbversion = helper_dbtool::dbversion(); $dbversion = helper_dbtool::dbversion();
$locale = ''; $locale = '';
if ($charset == 'BIG5') { if ($charset == 'BIG5') {
$locale = 'TC'; $locale = 'TC';
} elseif ($charset == 'GBK') { } elseif ($charset == 'GBK') {
$locale = 'SC'; $locale = 'SC';
} elseif ($charset == 'UTF8') { } elseif ($charset == 'UTF8') {
if ($_G['config']['output']['language'] == 'zh-cn' || $_G['config']['output']['language'] == 'zh_cn') { if ($_G['config']['output']['language'] == 'zh-cn' || $_G['config']['output']['language'] == 'zh_cn') {
$locale = 'SC'; $locale = 'SC';
} elseif ($_G['config']['output']['language'] == 'zh-tw' || $_G['config']['output']['language'] == 'zh_tw') { } elseif ($_G['config']['output']['language'] == 'zh-tw' || $_G['config']['output']['language'] == 'zh_tw') {
$locale = 'TC'; $locale = 'TC';
}else{ }else{
$locale = 'SC'; $locale = 'SC';
} }
} }
if (!is_array($_G['setting']['upgrade'])) if (!is_array($_G['setting']['upgrade']))
$_G['setting']['upgrade'] = unserialize($_G['setting']['upgrade']); $_G['setting']['upgrade'] = unserialize($_G['setting']['upgrade']);
$list = array(); $list = array();
foreach ($_G['setting']['upgrade'] as $type => $upgrade) { foreach ($_G['setting']['upgrade'] as $type => $upgrade) {
$unupgrade = 0; $unupgrade = 0;
if (version_compare($upgrade['phpversion'], PHP_VERSION) > 0 || version_compare($upgrade['mysqlversion'], $dbversion) > 0) { if (version_compare($upgrade['phpversion'], PHP_VERSION) > 0 || version_compare($upgrade['mysqlversion'], $dbversion) > 0) {
$unupgrade = 1; $unupgrade = 1;
} }
$list[$type]['linkurl'] = $linkurl = ADMINSCRIPT . '?mod=system&op=systemupgrade&operation=' . $type . '&version=' . $upgrade['latestversion'] . '&locale=' . $locale . '&charset=' . $charset; $list[$type]['linkurl'] = $linkurl = ADMINSCRIPT . '?mod=system&op=systemupgrade&operation=' . $type . '&version=' . $upgrade['latestversion'] . '&locale=' . $locale . '&charset=' . $charset;
if ($unupgrade) { if ($unupgrade) {
$list[$type]['title'] = 'oaooa PicHome' . $upgrade['latestversion'] . '_' . $locale . '_' . $charset; $list[$type]['title'] = 'oaooa PicHome' . $upgrade['latestversion'] . '_' . $locale . '_' . $charset;
$list[$type]['btn1'] = lang('founder_upgrade_require_config') . ' php v' . PHP_VERSION . 'MYSQL v' . $dbversion; $list[$type]['btn1'] = lang('founder_upgrade_require_config') . ' php v' . PHP_VERSION . 'MYSQL v' . $dbversion;
} else { } else {
$list[$type]['title'] = 'oaooa PicHome' . $upgrade['latestversion'] . '_' . $locale . '_' . $charset; $list[$type]['title'] = 'oaooa PicHome' . $upgrade['latestversion'] . '_' . $locale . '_' . $charset;
$list[$type]['btn1'] = '<input type="button" class="btn btn-success" onclick="confirm(\'' . lang('founder_upgrade_backup_remind') . '\') ? window.location.href=\'' . $linkurl . '\' : \'\';" value="' . lang('founder_upgrade_automatically') . '">'; $list[$type]['btn1'] = '<input type="button" class="btn btn-success" onclick="confirm(\'' . lang('founder_upgrade_backup_remind') . '\') ? window.location.href=\'' . $linkurl . '\' : \'\';" value="' . lang('founder_upgrade_automatically') . '">';
$list[$type]['official'] = '<a class="btn btn-link" href="' . $upgrade['official'] . '" target="_blank">' . lang('founder_upgrade_manually') . '</a>'; $list[$type]['official'] = '<a class="btn btn-link" href="' . $upgrade['official'] . '" target="_blank">' . lang('founder_upgrade_manually') . '</a>';
} }
} }
} else { } else {
$msg = lang('upgrade_latest_version'); $msg = lang('upgrade_latest_version');
} }
} }
elseif ($operation == 'recheck') { elseif ($operation == 'recheck') {
$upgrade_step = C::t('cache') -> fetch('upgrade_step'); $upgrade_step = C::t('cache') -> fetch('upgrade_step');
$upgrade_step = dunserialize($upgrade_step['cachevalue']); $upgrade_step = dunserialize($upgrade_step['cachevalue']);
$file = DZZ_ROOT . './data/update/pichome' . $upgrade_step['version'] . '/updatelist.tmp'; $file = DZZ_ROOT . './data/update/pichome' . $upgrade_step['version'] . '/updatelist.tmp';
@unlink($file); @unlink($file);
@unlink(DZZ_ROOT . './install/update.php'); @unlink(DZZ_ROOT . './install/update.php');
C::t('cache') -> delete('upgrade_step'); C::t('cache') -> delete('upgrade_step');
C::t('cache') -> delete('upgrade_run'); C::t('cache') -> delete('upgrade_run');
C::t('setting') -> update('upgrade', ''); C::t('setting') -> update('upgrade', '');
updatecache('setting'); updatecache('setting');
$old_update_dir = './data/update/'; $old_update_dir = './data/update/';
$dzz_upgrade -> rmdirs(DZZ_ROOT . $old_update_dir); $dzz_upgrade -> rmdirs(DZZ_ROOT . $old_update_dir);
$url = outputurl($_G['siteurl'].MOD_URL.'&op=systemupgrade' ); $url = outputurl($_G['siteurl'].MOD_URL.'&op=systemupgrade' );
dheader('Location: ' . $url); dheader('Location: ' . $url);
} }
include template('upgrade'); include template('upgrade');
?> ?>

View File

@@ -1,188 +1,188 @@
<!--{template common/header_simple_start}--> <!--{template common/header_simple_start}-->
<link href="static/css/common.css?{VERHASH}" rel="stylesheet" media="all"> <link href="static/css/common.css?{VERHASH}" rel="stylesheet" media="all">
<script type="text/javascript" src="static/js/jquery.leftDrager.js?{VERHASH}"></script> <script type="text/javascript" src="static/js/jquery.leftDrager.js?{VERHASH}"></script>
<script src="admin/scripts/admin.js?{VERHASH}"></script> <script src="admin/scripts/admin.js?{VERHASH}"></script>
<style> <style>
input[type="text"] { input[type="text"] {
margin: 0; margin: 0;
} }
ul.help-block, ul.help-block li, .help-block li{ ul.help-block, ul.help-block li, .help-block li{
margin-bottom: 5px; margin-bottom: 5px;
} }
</style> </style>
<!--{template common/header_simple_end}--> <!--{template common/header_simple_end}-->
<!--{template common/commer_header}--> <!--{template common/commer_header}-->
<div class="bs-container clearfix"> <div class="bs-container clearfix">
<div class="bs-left-container clearfix"> <div class="bs-left-container clearfix">
<!--{template left}--> <!--{template left}-->
</div> </div>
<div class="left-drager"> <div class="left-drager">
</div> </div>
<div class="bs-main-container clearfix"> <div class="bs-main-container clearfix">
<div class="main-header clearfix"> <div class="main-header clearfix">
<ul class="nav nav-pills nav-pills-bottomguide"> <ul class="nav nav-pills nav-pills-bottomguide">
<li <!--{if empty($_GET[ 'edit']) && empty($_GET[ 'run'])}-->class="active"<!--{/if}-->> <li <!--{if empty($_GET[ 'edit']) && empty($_GET[ 'run'])}-->class="active"<!--{/if}-->>
<a hidefocus="true" href="{BASESCRIPT}?mod={MOD_NAME}&op=cron">{lang cron}</a> <a hidefocus="true" href="{BASESCRIPT}?mod={MOD_NAME}&op=cron">{lang cron}</a>
</li> </li>
<!--{if !empty($_GET['edit'])}--> <!--{if !empty($_GET['edit'])}-->
<li class="active"> <li class="active">
<a hidefocus="true" href="{BASESCRIPT}?mod={MOD_NAME}&op=cron&edit=$_GET[edit]">{lang misc_cron_edit}</a> <a hidefocus="true" href="{BASESCRIPT}?mod={MOD_NAME}&op=cron&edit=$_GET[edit]">{lang misc_cron_edit}</a>
</li> </li>
<!--{/if}--> <!--{/if}-->
<!--{if !empty($_GET['run'])}--> <!--{if !empty($_GET['run'])}-->
<li class="active"> <li class="active">
<a hidefocus="true" href="{BASESCRIPT}?mod={MOD_NAME}&op=cron&run=$_GET[run]">{lang misc_cron_operation}</a> <a hidefocus="true" href="{BASESCRIPT}?mod={MOD_NAME}&op=cron&run=$_GET[run]">{lang misc_cron_operation}</a>
</li> </li>
<!--{/if}--> <!--{/if}-->
</ul> </ul>
</div> </div>
<div class="main-content" style="padding:15px;border-top:1px solid #FFF"> <div class="main-content" style="padding:15px;border-top:1px solid #FFF">
<!--{if $msg}--> <!--{if $msg}-->
<div class="well"> <div class="well">
<p class="$msg_type">$msg</p> <p class="$msg_type">$msg</p>
<!--{if $redirecturl}--> <!--{if $redirecturl}-->
<p class="text-info"> <p class="text-info">
<a href="{$redirecturl}" class="lightlink">{lang message_redirect}</a> <a href="{$redirecturl}" class="lightlink">{lang message_redirect}</a>
</p> </p>
<script type="text/JavaScript">setTimeout(function(){location.href='{$redirecturl}';}, 2000);</script> <script type="text/JavaScript">setTimeout(function(){location.href='{$redirecturl}';}, 2000);</script>
<!--{/if}--> <!--{/if}-->
</div> </div>
<!--{else}--> <!--{else}-->
<!--{if $_GET['edit']>0}--> <!--{if $_GET['edit']>0}-->
<ul class="help-block"> <ul class="help-block">
<h4>{lang board_message}</h4> {lang misc_cron_edit_tips} <h4>{lang board_message}</h4> {lang misc_cron_edit_tips}
</ul> </ul>
<form id="cpform" action="{BASESCRIPT}?mod=system&op=cron&edit=$cronid" class="form-horizontal form-horizontal-left" method="post" name="cpform"> <form id="cpform" action="{BASESCRIPT}?mod=system&op=cron&edit=$cronid" class="form-horizontal form-horizontal-left" method="post" name="cpform">
<input type="hidden" value="{FORMHASH}" name="formhash"> <input type="hidden" value="{FORMHASH}" name="formhash">
<input type="hidden" value="true" name="editsubmit"> <input type="hidden" value="true" name="editsubmit">
<dl> <dl>
<dt>{lang weekly}:</dt> <dt>{lang weekly}:</dt>
<dd class="clearfix"> <dd class="clearfix">
<select name="weekdaynew" class="form-control"> <select name="weekdaynew" class="form-control">
<option value="-1" selected="selected">*</option> <option value="-1" selected="selected">*</option>
$weekdayselect $weekdayselect
</select> </select>
<span class="help-inline">{lang misc_cron_edit_weekday_comment}</span> <span class="help-inline">{lang misc_cron_edit_weekday_comment}</span>
</dd> </dd>
</dl> </dl>
<dl> <dl>
<dt>{lang everyday}:</dt> <dt>{lang everyday}:</dt>
<dd class="clearfix"> <dd class="clearfix">
<select name="daynew" class="form-control"> <select name="daynew" class="form-control">
<option value="-1" selected="selected">*</option> <option value="-1" selected="selected">*</option>
$dayselect $dayselect
</select> </select>
<span class="help-inline">{lang misc_cron_edit_day_comment}</span> <span class="help-inline">{lang misc_cron_edit_day_comment}</span>
</dd> </dd>
</dl> </dl>
<dl> <dl>
<dt>{lang hour}:</dt> <dt>{lang hour}:</dt>
<dd class="clearfix"> <dd class="clearfix">
<select name="hournew" class="form-control"> <select name="hournew" class="form-control">
<option value="-1" selected="selected">*</option> <option value="-1" selected="selected">*</option>
$hourselect $hourselect
</select> </select>
<span class="help-inline">{lang misc_cron_edit_hour_comment}</span> <span class="help-inline">{lang misc_cron_edit_hour_comment}</span>
</dd> </dd>
</dl> </dl>
<dl> <dl>
<dt>{lang minute}:</dt> <dt>{lang minute}:</dt>
<dd class="clearfix"> <dd class="clearfix">
<input name="minutenew" value="{eval echo implode(',',$cron[minute])}" type="text" class="form-control"> <input name="minutenew" value="{eval echo implode(',',$cron[minute])}" type="text" class="form-control">
<span class="help-inline">{lang misc_cron_edit_minute_comment}</span> <span class="help-inline">{lang misc_cron_edit_minute_comment}</span>
</dd> </dd>
</dl> </dl>
<dl> <dl>
<dt>{lang misc_cron_edit_filename}:</dt> <dt>{lang misc_cron_edit_filename}:</dt>
<dd class="clearfix"> <dd class="clearfix">
<input name="filenamenew" value="$cron[filename]" type="text" class="form-control"> <input name="filenamenew" value="$cron[filename]" type="text" class="form-control">
<span class="help-inline">{lang misc_cron_edit_filename_comment}</span> <span class="help-inline">{lang misc_cron_edit_filename_comment}</span>
</dd> </dd>
</dl> </dl>
<dl> <dl>
<dd class="clearfix"> <dd class="clearfix">
<button type="submit" class="btn btn-primary" name="exportsubmit" value="true">{lang blank_submit}</button> <button type="submit" class="btn btn-primary" name="exportsubmit" value="true">{lang blank_submit}</button>
</dd> </dd>
</dl> </dl>
</form> </form>
<!--{elseif $_GET['run']}--> <!--{elseif $_GET['run']}-->
<!--{else}--> <!--{else}-->
<ul class="help-block"> <ul class="help-block">
<h5>{lang board_message}</h5> {lang misc_cron_tips} <h5>{lang board_message}</h5> {lang misc_cron_tips}
<li class="text-danger mt10">计划任务默认通过用户访问触发。缺点是影响用户访问体验计划任务执行不及时。可以修改config.php文件设置参数 {eval echo '$_config[remote][on]=1; $_config[remote][cron]=1;';} 停止这种触发方式。</li> <li class="text-danger mt10">计划任务默认通过用户访问触发。缺点是影响用户访问体验计划任务执行不及时。可以修改config.php文件设置参数 {eval echo '$_config[remote][on]=1; $_config[remote][cron]=1;';} 停止这种触发方式。</li>
<li class="text-danger">推荐设置通过系统计划任务来触发。如linux系统可以修改/etc/crontab,加入一行 * * * * root php {eval echo DZZ_ROOT.'cron.php >>/dev/null 2>$1';}</li> <li class="text-danger">推荐设置通过系统计划任务来触发。如linux系统可以修改/etc/crontab,加入一行 * * * * root php {eval echo DZZ_ROOT.'cron.php >>/dev/null 2>$1';}</li>
<li>详细请查阅官方文档 <a href="http://help.oaooa.com/corpus/list?cid=24#fid_330" target="_blank">管理员手册-计划任务</a> 中的相关内容</li> <li>详细请查阅官方文档 <a href="http://help.oaooa.com/corpus/list?cid=24#fid_330" target="_blank">管理员手册-计划任务</a> 中的相关内容</li>
</ul> </ul>
<form id="cpform" action="{BASESCRIPT}?mod=system&op=cron" class="form-horizontal form-horizontal-left" method="post" name="cpform"> <form id="cpform" action="{BASESCRIPT}?mod=system&op=cron" class="form-horizontal form-horizontal-left" method="post" name="cpform">
<input type="hidden" value="{FORMHASH}" name="formhash"> <input type="hidden" value="{FORMHASH}" name="formhash">
<input type="hidden" value="true" name="cronssubmit"> <input type="hidden" value="true" name="cronssubmit">
<table class="table"> <table class="table">
<thead> <thead>
<th width="45"></th> <th width="45"></th>
<th>{lang name}</th> <th>{lang name}</th>
<th>{lang available}</th> <th>{lang available}</th>
<th>{lang type}</th> <th>{lang type}</th>
<th>{lang time}</th> <th>{lang time}</th>
<th>{lang misc_cron_last_run}</th> <th>{lang misc_cron_last_run}</th>
<th>{lang misc_cron_next_run}</th> <th>{lang misc_cron_next_run}</th>
<th></th> <th></th>
</thead> </thead>
<!--{loop $crons $cron}--> <!--{loop $crons $cron}-->
<tr> <tr>
<td align="right"><input type="checkbox" name="delete[]" value="$cron[cronid]" <!--{if $cron[type]=='system' }-->disabled <td align="right"><input type="checkbox" name="delete[]" value="$cron[cronid]" <!--{if $cron[type]=='system' }-->disabled
<!--{/if}-->></td> <!--{/if}-->></td>
<td> <td>
<p class="clearfix"> <p class="clearfix">
<input type="text" name="namenew[{$cron[cronid]}]" class="form-control" value="$cron[name]"></p> <input type="text" name="namenew[{$cron[cronid]}]" class="form-control" value="$cron[name]"></p>
<strong>$cron[filename]</strong> <strong>$cron[filename]</strong>
</td> </td>
<td><label class="checkbox-inline"><input type="checkbox" name="availablenew[{$cron[cronid]}]" value="1" <!--{if $cron[available]>0}-->checked="checked"<!--{/if}-->></label></td> <td><label class="checkbox-inline"><input type="checkbox" name="availablenew[{$cron[cronid]}]" value="1" <!--{if $cron[available]>0}-->checked="checked"<!--{/if}-->></label></td>
<td> <td>
<!--{if $cron['type'] == 'system'}--> <!--{if $cron['type'] == 'system'}-->
{lang inbuilt} {lang inbuilt}
<!--{elseif $cron['type'] == 'user'}--> <!--{elseif $cron['type'] == 'user'}-->
{lang custom} {lang custom}
<!--{/if}--> <!--{/if}-->
</td> </td>
<td>$cron[time]</td> <td>$cron[time]</td>
<td>$cron[lastrun]</td> <td>$cron[lastrun]</td>
<td>$cron[nextrun]</td> <td>$cron[nextrun]</td>
<td> <td>
<a href="{BASESCRIPT}?mod=system&op=cron&edit=$cron[cronid]">{lang edit}</a> <a href="{BASESCRIPT}?mod=system&op=cron&edit=$cron[cronid]">{lang edit}</a>
<br /> <br />
<!--{if $cron['run']}--> <!--{if $cron['run']}-->
<a href="{BASESCRIPT}?mod=system&op=cron&run=$cron[cronid]">{lang execute}</a> <a href="{BASESCRIPT}?mod=system&op=cron&run=$cron[cronid]">{lang execute}</a>
<!--{else}--> <!--{else}-->
<a href="javascript:;" class="text-muted">{lang execute}</a> <a href="javascript:;" class="text-muted">{lang execute}</a>
<!--{/if}--> <!--{/if}-->
</td> </td>
</tr> </tr>
<!--{/loop}--> <!--{/loop}-->
<tr> <tr>
<td>{lang add_new}</td> <td>{lang add_new}</td>
<td colspan="10"><input type="text" name="newname" value="" class="form-control"></td> <td colspan="10"><input type="text" name="newname" value="" class="form-control"></td>
</tr> </tr>
<tr> <tr>
<td colspan="15" style="border-bottom:none"><label class="checkbox-inline ml20"><input type="checkbox" name="chkall" id="chkallspKI" onclick="checkAll('prefix', this.form, 'delete')">{lang del}</label>&nbsp;&nbsp;<button type="submit" class="btn btn-primary" name="exportsubmit" value="true">{lang blank_submit}</button> <td colspan="15" style="border-bottom:none"><label class="checkbox-inline ml20"><input type="checkbox" name="chkall" id="chkallspKI" onclick="checkAll('prefix', this.form, 'delete')">{lang del}</label>&nbsp;&nbsp;<button type="submit" class="btn btn-primary" name="exportsubmit" value="true">{lang blank_submit}</button>
</td> </td>
</tr> </tr>
</table> </table>
</form> </form>
<!--{/if}--> <!--{/if}-->
<!--{/if}--> <!--{/if}-->
</div> </div>
</div> </div>
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
jQuery('.left-drager').leftDrager_layout(); jQuery('.left-drager').leftDrager_layout();
</script> </script>
<script src="static/bootstrap/js/bootstrap.min.js?{VERHASH}"></script> <script src="static/bootstrap/js/bootstrap.min.js?{VERHASH}"></script>
<!--{template common/footer_simple}--> <!--{template common/footer_simple}-->

View File

@@ -1,236 +1,236 @@
<!--{template common/header_simple_start}--> <!--{template common/header_simple_start}-->
<link href="static/css/common.css?{VERHASH}" rel="stylesheet" media="all"> <link href="static/css/common.css?{VERHASH}" rel="stylesheet" media="all">
<script type="text/javascript" src="static/js/jquery.leftDrager.js?{VERHASH}"></script> <script type="text/javascript" src="static/js/jquery.leftDrager.js?{VERHASH}"></script>
<script src="admin/scripts/admin.js?{VERHASH}"></script> <script src="admin/scripts/admin.js?{VERHASH}"></script>
<!--{template common/header_simple_end}--> <!--{template common/header_simple_end}-->
<!--{template common/commer_header}--> <!--{template common/commer_header}-->
<div class="bs-container clearfix"> <div class="bs-container clearfix">
<div class="bs-left-container clearfix"> <div class="bs-left-container clearfix">
<!--{template left}--> <!--{template left}-->
</div> </div>
<div class="left-drager"> <div class="left-drager">
</div> </div>
<div class="bs-main-container clearfix"> <div class="bs-main-container clearfix">
<div class="main-header clearfix"> <div class="main-header clearfix">
<ul class="nav nav-pills nav-pills-bottomguide"> <ul class="nav nav-pills nav-pills-bottomguide">
<li <!--{if $operation=='export' }-->class="active"<!--{/if}-->> <li <!--{if $operation=='export' }-->class="active"<!--{/if}-->>
<a hidefocus="true" href="{MOD_URL}&op=database&operation=export">{lang export}</a> <a hidefocus="true" href="{MOD_URL}&op=database&operation=export">{lang export}</a>
</li> </li>
<li <!--{if $operation=='import' }-->class="active"<!--{/if}-->> <li <!--{if $operation=='import' }-->class="active"<!--{/if}-->>
<a hidefocus="true" href="{MOD_URL}&op=database&operation=import">{lang nav_db_import}</a> <a hidefocus="true" href="{MOD_URL}&op=database&operation=import">{lang nav_db_import}</a>
</li> </li>
<li <!--{if $operation=='runquery' }-->class="active"<!--{/if}-->> <li <!--{if $operation=='runquery' }-->class="active"<!--{/if}-->>
<a hidefocus="true" href="{MOD_URL}&op=database&operation=runquery">{lang nav_db_runquery}</a> <a hidefocus="true" href="{MOD_URL}&op=database&operation=runquery">{lang nav_db_runquery}</a>
</li> </li>
</ul> </ul>
</div> </div>
<!--{if $operation=='export'}--> <!--{if $operation=='export'}-->
<ul class="help-block mt20"> <ul class="help-block mt20">
<h5>{lang board_message}</h5> {lang db_export_tips} <h5>{lang board_message}</h5> {lang db_export_tips}
</ul> </ul>
<div class="main-content"> <div class="main-content">
<!--{if !$submit}--> <!--{if !$submit}-->
<form id="cpform" action="{MOD_URL}&op=database&operation=export&setup=1" class="form-horizontal form-horizontal-left" method="post" name="cpform"> <form id="cpform" action="{MOD_URL}&op=database&operation=export&setup=1" class="form-horizontal form-horizontal-left" method="post" name="cpform">
<input type="hidden" value="{FORMHASH}" name="formhash"> <input type="hidden" value="{FORMHASH}" name="formhash">
<input type="hidden" value="true" name="exportsubmit"> <input type="hidden" value="true" name="exportsubmit">
<dl> <dl>
<dt>{lang db_export_type}:</dt> <dt>{lang db_export_type}:</dt>
<dd class="clearfix"><label class="radio radio-inline"><input type="radio" name="type" value="dzz" checked="" onclick="document.getElementById('showtables').style.display = 'none';">{lang all_data_table}</label></dd> <dd class="clearfix"><label class="radio radio-inline"><input type="radio" name="type" value="dzz" checked="" onclick="document.getElementById('showtables').style.display = 'none';">{lang all_data_table}</label></dd>
<dd class="clearfix"><label class="radio radio-inline"><input type="radio" name="type" value="custom" onclick="document.getElementById('showtables').style.display = '';">{lang db_export_custom}</label></dd> <dd class="clearfix"><label class="radio radio-inline"><input type="radio" name="type" value="custom" onclick="document.getElementById('showtables').style.display = '';">{lang db_export_custom}</label></dd>
<dd id="showtables" class="clearfix" style="display:none;border:1px solid #D2D2D2"> <dd id="showtables" class="clearfix" style="display:none;border:1px solid #D2D2D2">
<h4 class="clearfix ml20"> <label class="checkbox-inline" for ="chkalltables"><input name="chkall" onclick="checkAll('prefix', this.form, 'customtables', 'chkall', true)" checked="checked" type="checkbox" id="chkalltables">{lang check_all_data_table}</label></h4> <h4 class="clearfix ml20"> <label class="checkbox-inline" for ="chkalltables"><input name="chkall" onclick="checkAll('prefix', this.form, 'customtables', 'chkall', true)" checked="checked" type="checkbox" id="chkalltables">{lang check_all_data_table}</label></h4>
<ul class="list-unstyled"> <ul class="list-unstyled">
<!--{loop $dztables $value}--> <!--{loop $dztables $value}-->
<li class="col-xs-4"><label class="checkbox-inline"><input type="checkbox" name="customtables[]" value="$value" checked="checked">$value</label></li> <li class="col-xs-4"><label class="checkbox-inline"><input type="checkbox" name="customtables[]" value="$value" checked="checked">$value</label></li>
<!--{/loop}--> <!--{/loop}-->
</ul> </ul>
</dd> </dd>
</dl> </dl>
<div id="advanceoption" style="display:none"> <div id="advanceoption" style="display:none">
<dl> <dl>
<dt>{lang db_export_method}:</dt> <dt>{lang db_export_method}:</dt>
<dd class="clearfix"><label class="radio radio-inline"><input type="radio" name="method" value="shell" onclick="if('0') {if(this.form.sqlcompat[2].checked==true) this.form.sqlcompat[0].checked=true; this.form.sqlcompat[2].disabled=true; this.form.sizelimit.disabled=true;} else {this.form.sqlcharset[0].checked=true; for(var i=1; i&lt;=5; i++) {if(this.form.sqlcharset[i]) this.form.sqlcharset[i].disabled=true;}}" id="method_shell">{lang db_export_shell}</label></dd> <dd class="clearfix"><label class="radio radio-inline"><input type="radio" name="method" value="shell" onclick="if('0') {if(this.form.sqlcompat[2].checked==true) this.form.sqlcompat[0].checked=true; this.form.sqlcompat[2].disabled=true; this.form.sizelimit.disabled=true;} else {this.form.sqlcharset[0].checked=true; for(var i=1; i&lt;=5; i++) {if(this.form.sqlcharset[i]) this.form.sqlcharset[i].disabled=true;}}" id="method_shell">{lang db_export_shell}</label></dd>
<dd class="clearfix"><label class="radio radio-inline"><input type="radio" name="method" value="multivol" checked="checked" onclick="this.form.sqlcompat[2].disabled=false; this.form.sizelimit.disabled=false; for(var i=1; i<=5; i++) {if(this.form.sqlcharset[i]) this.form.sqlcharset[i].disabled=false;}" id="method_multivol">{lang db_export_multivol}</label> <dd class="clearfix"><label class="radio radio-inline"><input type="radio" name="method" value="multivol" checked="checked" onclick="this.form.sqlcompat[2].disabled=false; this.form.sizelimit.disabled=false; for(var i=1; i<=5; i++) {if(this.form.sqlcharset[i]) this.form.sqlcharset[i].disabled=false;}" id="method_multivol">{lang db_export_multivol}</label>
<input type="text" class="input-sm form-control" style="width:50px;" name="sizelimit" value="2048"> <input type="text" class="input-sm form-control" style="width:50px;" name="sizelimit" value="2048">
</dd> </dd>
</dl> </dl>
<dl> <dl>
<dt>{lang db_export_options_extended_insert}:</dt> <dt>{lang db_export_options_extended_insert}:</dt>
<dd class="clearfix"><label class="radio radio-inline"><input type="radio" name="extendins" value="1">{lang yes}</label><label class="radio radio-inline"><input type="radio" name="extendins" value="0" checked="checked">{lang no}</label></dd> <dd class="clearfix"><label class="radio radio-inline"><input type="radio" name="extendins" value="1">{lang yes}</label><label class="radio radio-inline"><input type="radio" name="extendins" value="0" checked="checked">{lang no}</label></dd>
</dl> </dl>
<dl> <dl>
<dt>{lang db_export_options_sql_compatible}:</dt> <dt>{lang db_export_options_sql_compatible}:</dt>
<dd class="clearfix"><label class="radio radio-inline"><input type="radio" name="sqlcompat" value="" checked="">{lang default}</label></dd> <dd class="clearfix"><label class="radio radio-inline"><input type="radio" name="sqlcompat" value="" checked="">{lang default}</label></dd>
<dd class="clearfix"><label class="radio radio-inline"><input type="radio" name="sqlcompat" value="MYSQL40"> MySQL 3.23/4.0.x</label></dd> <dd class="clearfix"><label class="radio radio-inline"><input type="radio" name="sqlcompat" value="MYSQL40"> MySQL 3.23/4.0.x</label></dd>
<dd class="clearfix"><label class="radio radio-inline"><input type="radio" name="sqlcompat" value="MYSQL41" disabled=""> MySQL 4.1.x/5.x</label></dd> <dd class="clearfix"><label class="radio radio-inline"><input type="radio" name="sqlcompat" value="MYSQL41" disabled=""> MySQL 4.1.x/5.x</label></dd>
</dl> </dl>
<dl> <dl>
<dt>{lang db_export_options_charset}:</dt> <dt>{lang db_export_options_charset}:</dt>
<dd class="clearfix"><label class="radio radio-inline"><input type="radio" name="sqlcharset" value="">{lang db_export_options_charset}</label> <dd class="clearfix"><label class="radio radio-inline"><input type="radio" name="sqlcharset" value="">{lang db_export_options_charset}</label>
<label class="radio radio-inline"><input type="radio" name="sqlcharset" value="utf8"> UTF8</label></dd> <label class="radio radio-inline"><input type="radio" name="sqlcharset" value="utf8"> UTF8</label></dd>
</dl> </dl>
<dl> <dl>
<dt>{lang db_export_usehex}:</dt> <dt>{lang db_export_usehex}:</dt>
<dd class="clearfix"><label class="radio radio-inline"><input type="radio" name="usehex" value="1" checked="checked">{lang yes}</label> <dd class="clearfix"><label class="radio radio-inline"><input type="radio" name="usehex" value="1" checked="checked">{lang yes}</label>
<label class="radio radio-inline"><input type="radio" name="usehex" value="0" >{lang no}</label></dd> <label class="radio radio-inline"><input type="radio" name="usehex" value="0" >{lang no}</label></dd>
</dl> </dl>
<dl> <dl>
<dt>{lang db_export_usezip}:</dt> <dt>{lang db_export_usezip}:</dt>
<dd class="clearfix"><label class="radio radio-inline"><input type="radio" name="usezip" value="1">{lang db_export_zip_1}</label></dd> <dd class="clearfix"><label class="radio radio-inline"><input type="radio" name="usezip" value="1">{lang db_export_zip_1}</label></dd>
<dd class="clearfix"><label class="radio radio-inline"><input type="radio" name="usezip" value="2">{lang db_export_zip_2}</label></dd> <dd class="clearfix"><label class="radio radio-inline"><input type="radio" name="usezip" value="2">{lang db_export_zip_2}</label></dd>
<dd class="clearfix"><label class="radio radio-inline"><input type="radio" name="usezip" value="0" checked>{lang db_export_zip_3}</label></dd> <dd class="clearfix"><label class="radio radio-inline"><input type="radio" name="usezip" value="0" checked>{lang db_export_zip_3}</label></dd>
</dl> </dl>
<dl> <dl>
<dt>{lang db_export_filename}:</dt> <dt>{lang db_export_filename}:</dt>
<dd class="clearfix"><input type="text" class="form-control" name="filename" value="$defaultfilename"></dd> <dd class="clearfix"><input type="text" class="form-control" name="filename" value="$defaultfilename"></dd>
</dl> </dl>
</div> </div>
<dl> <dl>
<dd class="clearfix"><button type="submit" class="btn btn-primary" name="exportsubmit" value="true" >{lang blank_submit}</button> <dd class="clearfix"><button type="submit" class="btn btn-primary" name="exportsubmit" value="true" >{lang blank_submit}</button>
&nbsp; &nbsp;<label class="checkbox inline"><input type="checkbox" value="1" onclick="document.getElementById('advanceoption').style.display = document.getElementById('advanceoption').style.display == 'none' ? '' : 'none'; this.value = this.value == 1 ? 0 : 1; this.checked = this.value == 1 ? false : true" id="btn_more">{lang more_options}</label></dd> &nbsp; &nbsp;<label class="checkbox inline"><input type="checkbox" value="1" onclick="document.getElementById('advanceoption').style.display = document.getElementById('advanceoption').style.display == 'none' ? '' : 'none'; this.value = this.value == 1 ? 0 : 1; this.checked = this.value == 1 ? false : true" id="btn_more">{lang more_options}</label></dd>
</dl> </dl>
</form> </form>
<!--{else}--> <!--{else}-->
<div class="well"> <div class="well">
<!--{if $msg}--> <!--{if $msg}-->
<p class="$msg_type">$msg</p> <p class="$msg_type">$msg</p>
<!--{/if}--> <!--{/if}-->
<!--{if $redirecturl}--> <!--{if $redirecturl}-->
<p class="text-info"> <p class="text-info">
<a href="{$redirecturl}" class="lightlink">{lang message_redirect}</a> <a href="{$redirecturl}" class="lightlink">{lang message_redirect}</a>
</p> </p>
<script type="text/JavaScript">setTimeout(function(){location.href='{$redirecturl}';}, 2000);</script> <script type="text/JavaScript">setTimeout(function(){location.href='{$redirecturl}';}, 2000);</script>
<!--{/if}--> <!--{/if}-->
</div> </div>
<!--{/if}--> <!--{/if}-->
</div> </div>
<!--{elseif $operation=='import'}--> <!--{elseif $operation=='import'}-->
<div class="main-content" style="border:1px solid #FFF"> <div class="main-content" style="border:1px solid #FFF">
<!--{if $msg}--> <!--{if $msg}-->
<div class="well"> <div class="well">
<p class="$msg_type">$msg</p> <p class="$msg_type">$msg</p>
<!--{if $redirecturl}--> <!--{if $redirecturl}-->
<p class="text-info"> <p class="text-info">
<a href="{$redirecturl}" class="lightlink">{lang message_redirect}</a> <a href="{$redirecturl}" class="lightlink">{lang message_redirect}</a>
</p> </p>
<script type="text/JavaScript">setTimeout(function(){location.href='{$redirecturl}';}, 2000);</script> <script type="text/JavaScript">setTimeout(function(){location.href='{$redirecturl}';}, 2000);</script>
<!--{/if}--> <!--{/if}-->
</div> </div>
<!--{else}--> <!--{else}-->
<ul class="help-block"> <ul class="help-block">
<h5>{lang board_message}</h5> {lang db_import_tips} <h5>{lang board_message}</h5> {lang db_import_tips}
</ul> </ul>
$do_import_option $do_import_option
<form id="cpform" action="{MOD_URL}&op=database&operation=import" class="form-horizontal form-horizontal-left " method="post" name="cpform"> <form id="cpform" action="{MOD_URL}&op=database&operation=import" class="form-horizontal form-horizontal-left " method="post" name="cpform">
<input type="hidden" value="{FORMHASH}" name="formhash"> <input type="hidden" value="{FORMHASH}" name="formhash">
<input type="hidden" value="true" name="deletesubmit"> <input type="hidden" value="true" name="deletesubmit">
<table class="table table-hover" style="border-top:1px solid #DDD"> <table class="table table-hover" style="border-top:1px solid #DDD">
<thead> <thead>
<th></th> <th></th>
<th>{lang filename}</th> <th>{lang filename}</th>
<th>{lang version}</th> <th>{lang version}</th>
<th>{lang time}</th> <th>{lang time}</th>
<th>{lang type}</th> <th>{lang type}</th>
<th>{lang big_small}</th> <th>{lang big_small}</th>
<th>{lang db_method}</th> <th>{lang db_method}</th>
<th>{lang db_volume}</th> <th>{lang db_volume}</th>
<th></th> <th></th>
</thead> </thead>
<!--{loop $list $key $val}--> <!--{loop $list $key $val}-->
<tr> <tr>
<td><input type="checkbox" name="delete[]" value="$key"></td> <td><input type="checkbox" name="delete[]" value="$key"></td>
<td> <td>
<!--{if $val['list']}--> <!--{if $val['list']}-->
<a href="javascript:;" onclick="jQuery('#exportlog_{$key}').toggle()">$key</a> <a href="javascript:;" onclick="jQuery('#exportlog_{$key}').toggle()">$key</a>
<!--{else}--> <!--{else}-->
<a href="$val[filename]">$key</a> <a href="$val[filename]">$key</a>
<!--{/if}--> <!--{/if}-->
</td> </td>
<td>$val[version]</td> <td>$val[version]</td>
<td>$val[dateline]</td> <td>$val[dateline]</td>
<td>$val[ftype]</td> <td>$val[ftype]</td>
<td>$val[size]</td> <td>$val[size]</td>
<td>$val[method]</td> <td>$val[method]</td>
<td>$val[volume]</td> <td>$val[volume]</td>
<td> <td>
<!--{if $val['list']}--> <!--{if $val['list']}-->
<a href="{$datasiteurl}restore.php?operation=import&from=server&datafile_server=$val[datafile_server]&importsubmit=yes" <!--{if $info[ 'version'] !=$_G[ 'setting'][ 'version']}--> onclick="return confirm('{lang db_import_confirm}');"<!--{else}-->onclick="return confirm('{lang db_import_confirm_sql}');"<!--{/if}-->target="_blank">{lang import}</a> <a href="{$datasiteurl}restore.php?operation=import&from=server&datafile_server=$val[datafile_server]&importsubmit=yes" <!--{if $info[ 'version'] !=$_G[ 'setting'][ 'version']}--> onclick="return confirm('{lang db_import_confirm}');"<!--{else}-->onclick="return confirm('{lang db_import_confirm_sql}');"<!--{/if}-->target="_blank">{lang import}</a>
<!--{else}--> <!--{else}-->
<a href="{$datasiteurl}restore.php?operation=importzip&datafile_server=$info[datafile_server]&importsubmit=yes" onclick="return confirm('{lang db_import_confirm_zip}');" target="_blank">{lang db_import_unzip}</a> <a href="{$datasiteurl}restore.php?operation=importzip&datafile_server=$info[datafile_server]&importsubmit=yes" onclick="return confirm('{lang db_import_confirm_zip}');" target="_blank">{lang db_import_unzip}</a>
<!--{/if}--> <!--{/if}-->
</td> </td>
</tr> </tr>
<thead id="exportlog_{$key}" style="display:none;"> <thead id="exportlog_{$key}" style="display:none;">
<!--{loop $val[list] $key1 $val1}--> <!--{loop $val[list] $key1 $val1}-->
<tr> <tr>
<td></td> <td></td>
<td> <td>
<a href="$val1[filename]">$val1[filename]</a> <a href="$val1[filename]">$val1[filename]</a>
</td> </td>
<td>$val1[version]</td> <td>$val1[version]</td>
<td>$val1[dateline]</td> <td>$val1[dateline]</td>
<td></td> <td></td>
<td>$val1[size]</td> <td>$val1[size]</td>
<td></td> <td></td>
<td>$val1[volume]</td> <td>$val1[volume]</td>
<td></td> <td></td>
</tr> </tr>
<!--{/loop}--> <!--{/loop}-->
</thead> </thead>
<!--{/loop}--> <!--{/loop}-->
<thead> <thead>
<tr> <tr>
<td colspan="15"><input type="checkbox" name="chkall" id="chkallspKI" onclick="checkAll('prefix', this.form, 'delete')">{lang del}&nbsp;&nbsp;<button type="submit" class="btn btn-primary" name="exportsubmit" value="true" >{lang blank_submit}</button> <td colspan="15"><input type="checkbox" name="chkall" id="chkallspKI" onclick="checkAll('prefix', this.form, 'delete')">{lang del}&nbsp;&nbsp;<button type="submit" class="btn btn-primary" name="exportsubmit" value="true" >{lang blank_submit}</button>
</td> </td>
</tr> </tr>
</thead> </thead>
</table> </table>
</form> </form>
<!--{/if}--> <!--{/if}-->
</div> </div>
<!--{elseif $operation=='runquery'}--> <!--{elseif $operation=='runquery'}-->
<div class="main-content"> <div class="main-content">
<ul class="help-block"> <ul class="help-block">
<h4>{lang board_message}</h4> <h4>{lang board_message}</h4>
{lang db_runquery_tips} {lang db_runquery_tips}
</ul> </ul>
<!--{if $msg}--> <!--{if $msg}-->
<div class="well"> <div class="well">
<p class="$msg_type">$msg</p> <p class="$msg_type">$msg</p>
<!--{if $redirecturl}--> <!--{if $redirecturl}-->
<p class="text-info"> <p class="text-info">
<a href="{$redirecturl}" class="lightlink">{lang message_redirect}</a> <a href="{$redirecturl}" class="lightlink">{lang message_redirect}</a>
</p> </p>
<script type="text/JavaScript">setTimeout(function(){location.href='{$redirecturl}';}, 5000);</script> <script type="text/JavaScript">setTimeout(function(){location.href='{$redirecturl}';}, 5000);</script>
<!--{/if}--> <!--{/if}-->
</div> </div>
<!--{else}--> <!--{else}-->
<form id="cpform" action="{MOD_URL}&op=database&operation=runquery" method="post" name="cpform"> <form id="cpform" action="{MOD_URL}&op=database&operation=runquery" method="post" name="cpform">
<input type="hidden" value="{FORMHASH}" name="formhash"> <input type="hidden" value="{FORMHASH}" name="formhash">
<input type="hidden" value="true" name="sqlsubmit"> <input type="hidden" value="true" name="sqlsubmit">
<dl> <dl>
<dt>{lang db_runquery_sql}</dt> <dt>{lang db_runquery_sql}</dt>
<dd class="clearfix"><textarea cols="85" rows="10" name="queries" style="width:500px;"></textarea></dd> <dd class="clearfix"><textarea cols="85" rows="10" name="queries" style="width:500px;"></textarea></dd>
<dd class="clearfix mt10"><label class="checkbox-inline"><input name="createcompatible" type="checkbox" value="1" checked="checked" />{lang db_runquery_createcompatible}</label></dd> <dd class="clearfix mt10"><label class="checkbox-inline"><input name="createcompatible" type="checkbox" value="1" checked="checked" />{lang db_runquery_createcompatible}</label></dd>
</dl> </dl>
<dl> <dl>
<dd class="clearfix"><button type="submit" class="btn btn-primary">{lang blank_submit}</button></dd> <dd class="clearfix"><button type="submit" class="btn btn-primary">{lang blank_submit}</button></dd>
</dl> </dl>
</form> </form>
<!--{/if}--> <!--{/if}-->
</div> </div>
<!--{/if}--> <!--{/if}-->
</div> </div>
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
jQuery('.left-drager').leftDrager_layout(); jQuery('.left-drager').leftDrager_layout();
</script> </script>
<script src="static/bootstrap/js/bootstrap.min.js?{VERHASH}"></script> <script src="static/bootstrap/js/bootstrap.min.js?{VERHASH}"></script>
<!--{template common/footer_simple}--> <!--{template common/footer_simple}-->

View File

@@ -1,12 +1,12 @@
{eval $oparr=array('updatecache','database','cron','systemupgrade' );} {eval $oparr=array('updatecache','database','cron','systemupgrade' );}
{eval $leftmenu=array();} {eval $leftmenu=array();}
{eval foreach($oparr as $key => $value){} {eval foreach($oparr as $key => $value){}
{eval $leftmenu[$value]=array('title'=>lang($value),'active'=>'');} {eval $leftmenu[$value]=array('title'=>lang($value),'active'=>'');}
{eval if($value==$op) $leftmenu[$value]['active']='class="active"';} {eval if($value==$op) $leftmenu[$value]['active']='class="active"';}
{eval }} {eval }}
<ul class="nav-stacked"> <ul class="nav-stacked">
<!--{loop $leftmenu $key $value}--> <!--{loop $leftmenu $key $value}-->
<li $value[active]><a hidefocus="true" href="{MOD_URL}&op=$key">$value[title]</a></li> <li $value[active]><a hidefocus="true" href="{MOD_URL}&op=$key">$value[title]</a></li>
<!--{/loop}--> <!--{/loop}-->
</ul> </ul>

View File

@@ -1,73 +1,73 @@
<!--{template common/header_simple_start}--> <!--{template common/header_simple_start}-->
<link href="static/css/common.css?{VERHASH}" rel="stylesheet" media="all"> <link href="static/css/common.css?{VERHASH}" rel="stylesheet" media="all">
<script type="text/javascript" src="static/js/jquery.leftDrager.js?{VERHASH}"></script> <script type="text/javascript" src="static/js/jquery.leftDrager.js?{VERHASH}"></script>
<!--{template common/header_simple_end}--> <!--{template common/header_simple_end}-->
<!--{template common/commer_header}--> <!--{template common/commer_header}-->
<div class="bs-container clearfix"> <div class="bs-container clearfix">
<div class="bs-left-container clearfix"> <div class="bs-left-container clearfix">
<!--{template left}--> <!--{template left}-->
</div> </div>
<div class="left-drager"> <div class="left-drager">
</div> </div>
<div class="bs-main-container clearfix"> <div class="bs-main-container clearfix">
<div class="main-header"> <div class="main-header">
<div class="clearfix" style="line-height:40px;padding:0 10px"> <div class="clearfix" style="line-height:40px;padding:0 10px">
<!-- <strong style="font-size:14px;">{lang updatecache}</strong>--> <!-- <strong style="font-size:14px;">{lang updatecache}</strong>-->
<span class="text-muted" id="step1" <!--{if $step==1}-->style="color:green"<!--{/if}-->>1.{lang nav_updatecache_confirm}</span> <span class="text-muted" id="step1" <!--{if $step==1}-->style="color:green"<!--{/if}-->>1.{lang nav_updatecache_confirm}</span>
<span class="text-muted" id="step2" <!--{if $step==2}-->style="color:green"<!--{/if}-->>2.{lang nav_updatecache_verify}</span> <span class="text-muted" id="step2" <!--{if $step==2}-->style="color:green"<!--{/if}-->>2.{lang nav_updatecache_verify}</span>
<span class="text-muted" id="step3" <!--{if $step==3}-->style="color:green"<!--{/if}-->>3.{lang nav_updatecache_completed}</span> <span class="text-muted" id="step3" <!--{if $step==3}-->style="color:green"<!--{/if}-->>3.{lang nav_updatecache_completed}</span>
</div> </div>
</div> </div>
<div class="main-content" style="padding:20px;border-top:1px solid #FFF"> <div class="main-content" style="padding:20px;border-top:1px solid #FFF">
<div class="well well-sm"> <div class="well well-sm">
<!--{if $step==1}--> <!--{if $step==1}-->
<form method="post" class="form-horizontal form-horizontal-left" action="{MOD_URL}&op=updatecache&step=2"> <form method="post" class="form-horizontal form-horizontal-left" action="{MOD_URL}&op=updatecache&step=2">
<input name="formhash" value="{VERHASH}" type="hidden"> <input name="formhash" value="{VERHASH}" type="hidden">
<p class="clearfix ml20"> <p class="clearfix ml20">
<label class="checkbox-inline"> <label class="checkbox-inline">
<input name="type[]" value="data" checked="" type="checkbox"> <input name="type[]" value="data" checked="" type="checkbox">
{lang tools_updatecache_data} {lang tools_updatecache_data}
</label> </label>
<label class="checkbox-inline"> <label class="checkbox-inline">
<input name="type[]" value="tpl" id="tplcache" checked="" type="checkbox"> <input name="type[]" value="tpl" id="tplcache" checked="" type="checkbox">
{lang tools_updatecache_tpl} {lang tools_updatecache_tpl}
</label> </label>
<label class="checkbox-inline"> <label class="checkbox-inline">
<input name="type[]" value="memory" id="momerycache" type="checkbox"> <input name="type[]" value="memory" id="momerycache" type="checkbox">
{lang tools_updatecache_memory} {lang tools_updatecache_memory}
</label> </label>
</p> </p>
<p class="clearfix ml20"> <p class="clearfix ml20">
<input class="btn btn-primary" name="confirmed" value="{lang confirms}" type="submit"> &nbsp; <input class="btn btn-primary" name="confirmed" value="{lang confirms}" type="submit"> &nbsp;
<script type="text/javascript"> <script type="text/javascript">
if(history.length > (BROWSER.ie ? 0 : 1)) document.write('<input type="button" class="btn btn-default" value="{lang cancel}" onClick="history.go(-1);">'); if(history.length > (BROWSER.ie ? 0 : 1)) document.write('<input type="button" class="btn btn-default" value="{lang cancel}" onClick="history.go(-1);">');
</script> </script>
</p> </p>
</form> </form>
<!--{elseif $step==2}--> <!--{elseif $step==2}-->
<p class="ml20">{lang tools_updatecache_waiting}</p> <p class="ml20">{lang tools_updatecache_waiting}</p>
<p class="text-success ml20"> <p class="text-success ml20">
<a href="{MOD_URL}&op=updatecache&step=3&type=$type" class="lightlink">{lang message_redirect}</a> <a href="{MOD_URL}&op=updatecache&step=3&type=$type" class="lightlink">{lang message_redirect}</a>
</p> </p>
<script type="text/JavaScript">setTimeout(function(){location.href='{MOD_URL}&op=updatecache&step=3&type=$type';}, 2000);</script> <script type="text/JavaScript">setTimeout(function(){location.href='{MOD_URL}&op=updatecache&step=3&type=$type';}, 2000);</script>
<!--{elseif $step==3}--> <!--{elseif $step==3}-->
<p class="text-success ml20" style="margin:10px;">{lang update_cache_succeed}</p> <p class="text-success ml20" style="margin:10px;">{lang update_cache_succeed}</p>
<script type="text/javascript"> <script type="text/javascript">
window.setTimeout(function() { location.href = '{MOD_URL}&op=updatecache'; }, 5000); window.setTimeout(function() { location.href = '{MOD_URL}&op=updatecache'; }, 5000);
</script> </script>
<!--{/if}--> <!--{/if}-->
</div> </div>
<ul class="help-block"> <ul class="help-block">
<h5>{lang board_message}</h5> {lang tools_updatecache_tips} <h5>{lang board_message}</h5> {lang tools_updatecache_tips}
</ul> </ul>
</div> </div>
</div> </div>
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
jQuery('.left-drager').leftDrager_layout(); jQuery('.left-drager').leftDrager_layout();
</script> </script>
<script src="static/bootstrap/js/bootstrap.min.js?{VERHASH}"></script> <script src="static/bootstrap/js/bootstrap.min.js?{VERHASH}"></script>
<!--{template common/footer_simple}--> <!--{template common/footer_simple}-->

View File

@@ -1,246 +1,246 @@
<!--{template common/header_simple_start}--> <!--{template common/header_simple_start}-->
<link href="static/css/common.css?{VERHASH}" rel="stylesheet" media="all"> <link href="static/css/common.css?{VERHASH}" rel="stylesheet" media="all">
<script type="text/javascript" src="static/js/jquery.leftDrager.js?{VERHASH}"></script> <script type="text/javascript" src="static/js/jquery.leftDrager.js?{VERHASH}"></script>
<script src="admin/scripts/admin.js?{VERHASH}"></script> <script src="admin/scripts/admin.js?{VERHASH}"></script>
<style> <style>
.progress.active .progress-bar { .progress.active .progress-bar {
-webkit-animation: none; -webkit-animation: none;
animation: none; animation: none;
transition: none; transition: none;
-webkit-box-shadow: none; -webkit-box-shadow: none;
box-shadow: none; box-shadow: none;
} }
</style> </style>
<!--{template common/header_simple_end}--> <!--{template common/header_simple_end}-->
<!--{template common/commer_header}--> <!--{template common/commer_header}-->
<div class="bs-container clearfix"> <div class="bs-container clearfix">
<div class="bs-left-container clearfix"> <div class="bs-left-container clearfix">
<!--{template left}--> <!--{template left}-->
</div> </div>
<div class="left-drager"> <div class="left-drager">
</div> </div>
<div class="bs-main-container clearfix"> <div class="bs-main-container clearfix">
<!--{if $operation == 'patch' || $operation == 'cross'}--> <!--{if $operation == 'patch' || $operation == 'cross'}-->
<div class="main-header"> <div class="main-header">
<div class="clearfix" style="line-height:40px;padding:0 10px;font-size:12px;"> <div class="clearfix" style="line-height:40px;padding:0 10px;font-size:12px;">
<strong style="font-size:14px;">{lang upgrade}</strong> <strong style="font-size:14px;">{lang upgrade}</strong>
<!--{loop $steplang $key $value}--> <!--{loop $steplang $key $value}-->
<!--{if $key>0 && $key<=5}--> <!--{if $key>0 && $key<=5}-->
<span class="text-muted" <!--{if $key==$step}-->style="color:green"<!--{/if}-->>{$key}.{$value}</span> <span class="text-muted" <!--{if $key==$step}-->style="color:green"<!--{/if}-->>{$key}.{$value}</span>
<!--{/if}--> <!--{/if}-->
<!--{/loop}--> <!--{/loop}-->
</div> </div>
</div> </div>
<!--{/if}--> <!--{/if}-->
<!--{if $operation=='check'}--> <!--{if $operation=='check'}-->
<div class="main-content" style="border-top:1px solid #FFF"> <div class="main-content" style="border-top:1px solid #FFF">
<!--{if $msg}--> <!--{if $msg}-->
<div id="step4" style="padding:20px;height:450px"> <div id="step4" style="padding:20px;height:450px">
<div class="alert alert-warning text-center"> <div class="alert alert-warning text-center">
$msg $msg
</div> </div>
</div> </div>
<!--{else}--> <!--{else}-->
<div style="padding:20px;"> <div style="padding:20px;">
<div class="text-center" style="width:300px;margin:0 auto"> <div class="text-center" style="width:300px;margin:0 auto">
<p style="margin:20px 0;">{lang upgrade_checking}</p> <p style="margin:20px 0;">{lang upgrade_checking}</p>
<div class="progress progress-striped active" style="border:1px solid #5bc0de"> <div class="progress progress-striped active" style="border:1px solid #5bc0de">
<div class="progress-bar progress-bar-info " role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width:0%"><span class="sr-only">100% Complete</span></div> <div class="progress-bar progress-bar-info " role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width:0%"><span class="sr-only">100% Complete</span></div>
</div> </div>
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
jQuery('.progress-bar').animate({ width: '100%' }, 3000, function() { jQuery('.progress-bar').animate({ width: '100%' }, 3000, function() {
window.location.href = '{MOD_URL}&op=systemupgrade&operation=check&checking=1'; window.location.href = '{MOD_URL}&op=systemupgrade&operation=check&checking=1';
}); });
</script> </script>
</div> </div>
<!--{/if}--> <!--{/if}-->
</div> </div>
<!--{elseif $operation=='showupgrade'}--> <!--{elseif $operation=='showupgrade'}-->
<div class="main-content" style="border-top:1px solid #FFF"> <div class="main-content" style="border-top:1px solid #FFF">
<!--{if $msg}--> <!--{if $msg}-->
<div id="step4" style="padding:20px;height:450px"> <div id="step4" style="padding:20px;height:450px">
<div class="alert alert-warning"> <div class="alert alert-warning">
$msg $msg
</div> </div>
</div> </div>
<!--{else}--> <!--{else}-->
<table class="table table-hover"> <table class="table table-hover">
<thead> <thead>
<th colspan="5">{lang founder_upgrade_select_version}</th> <th colspan="5">{lang founder_upgrade_select_version}</th>
</thead> </thead>
<!--{loop $list $value}--> <!--{loop $list $value}-->
<tr> <tr>
<td>$value[title]</td> <td>$value[title]</td>
<td>$value[btn1]</td> <td>$value[btn1]</td>
</tr> </tr>
<!--{/loop}--> <!--{/loop}-->
</table> </table>
<!--{/if}--> <!--{/if}-->
</div> </div>
<!--{elseif $operation=='patch' || $operation=='cross' }--> <!--{elseif $operation=='patch' || $operation=='cross' }-->
<div class="main-content" style="border-top:1px solid #FFF;"> <div class="main-content" style="border-top:1px solid #FFF;">
<!--{if !$_G['setting']['bbclosed']}--> <!--{if !$_G['setting']['bbclosed']}-->
<div style="padding:20px;height:450px"> <div style="padding:20px;height:450px">
<div class="alert alert-warning text-center"> <div class="alert alert-warning text-center">
$msg $msg
</div> </div>
</div> </div>
<!--{elseif $step==1}--> <!--{elseif $step==1}-->
<table class="table table-hover"> <table class="table table-hover">
<thead> <thead>
<th colspan="5">{lang founder_upgrade_preupdatelist}</th> <th colspan="5">{lang founder_upgrade_preupdatelist}</th>
</thead> </thead>
<!--{loop $updatefilelist $value}--> <!--{loop $updatefilelist $value}-->
<tr> <tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;<i class="glyphicon glyphicon-file"></i> $value</td> <td>&nbsp;&nbsp;&nbsp;&nbsp;<i class="glyphicon glyphicon-file"></i> $value</td>
</tr> </tr>
<!--{/loop}--> <!--{/loop}-->
<thead> <thead>
<th colspan="5">&nbsp;{lang founder_upgrade_store_directory} ./data/update/oaooa$version</th> <th colspan="5">&nbsp;{lang founder_upgrade_store_directory} ./data/update/oaooa$version</th>
</thead> </thead>
<thead> <thead>
<th colspan="5">&nbsp;<input type="button" class="btn btn-primary" onclick="window.location.href='$linkurl'" value="{lang founder_upgrade_download}">{eval echo upgradeinformation(0)}</th> <th colspan="5">&nbsp;<input type="button" class="btn btn-primary" onclick="window.location.href='$linkurl'" value="{lang founder_upgrade_download}">{eval echo upgradeinformation(0)}</th>
</thead> </thead>
</table> </table>
<!--{elseif $step==2}--> <!--{elseif $step==2}-->
<div style="padding:20px;">$msg</div> <div style="padding:20px;">$msg</div>
<!--{elseif $step==3}--> <!--{elseif $step==3}-->
<!--{if $msg}--> <!--{if $msg}-->
<div id="step4" style="padding:20px;"> <div id="step4" style="padding:20px;">
<div class="alert alert-warning text-center"> <div class="alert alert-warning text-center">
$msg $msg
</div> </div>
</div> </div>
<!--{else}--> <!--{else}-->
<table class="table table-hover"> <table class="table table-hover">
<thead> <thead>
<th colspan="5">{lang founder_upgrade_diff_show}</th> <th colspan="5">{lang founder_upgrade_diff_show}</th>
</thead> </thead>
<!--{loop $updatefilelist $v}--> <!--{loop $updatefilelist $v}-->
<!--{if isset($ignorelist[$v])}--> <!--{if isset($ignorelist[$v])}-->
<!--{elseif isset($modifylist[$v])}--> <!--{elseif isset($modifylist[$v])}-->
<tr> <tr>
<td class="text-danger">&nbsp;&nbsp;&nbsp;&nbsp;{lang founder_upgrade_diff} &nbsp;<i class="glyphicon glyphicon-exclamation-sign"></i> $v</td> <td class="text-danger">&nbsp;&nbsp;&nbsp;&nbsp;{lang founder_upgrade_diff} &nbsp;<i class="glyphicon glyphicon-exclamation-sign"></i> $v</td>
</tr> </tr>
<!--{elseif isset($showlist[$v])}--> <!--{elseif isset($showlist[$v])}-->
<tr> <tr>
<td class="text-success">&nbsp;&nbsp;&nbsp;&nbsp;{lang founder_upgrade_normal} &nbsp;<i class="glyphicon glyphicon-ok"></i> $v</td> <td class="text-success">&nbsp;&nbsp;&nbsp;&nbsp;{lang founder_upgrade_normal} &nbsp;<i class="glyphicon glyphicon-ok"></i> $v</td>
</tr> </tr>
<!--{elseif isset($newlist[$v])}--> <!--{elseif isset($newlist[$v])}-->
<tr> <tr>
<td class="text-info">&nbsp;&nbsp;&nbsp;&nbsp;{lang founder_upgrade_new} &nbsp;<i class="glyphicon glyphicon-plus"></i> $v</td> <td class="text-info">&nbsp;&nbsp;&nbsp;&nbsp;{lang founder_upgrade_new} &nbsp;<i class="glyphicon glyphicon-plus"></i> $v</td>
</tr> </tr>
<!--{/if}--> <!--{/if}-->
<!--{/loop}--> <!--{/loop}-->
<thead> <thead>
<th colspan="5">{lang founder_upgrade_download_file} ./data/update/oaooa{$version}</th> <th colspan="5">{lang founder_upgrade_download_file} ./data/update/oaooa{$version}</th>
</thead> </thead>
<thead> <thead>
<th colspan="5">&nbsp;{lang founder_upgrade_backup_file} ./data/back/oaooa{CORE_VERSION} {lang founder_upgrade_backup_file2} </th> <th colspan="5">&nbsp;{lang founder_upgrade_backup_file} ./data/back/oaooa{CORE_VERSION} {lang founder_upgrade_backup_file2} </th>
</thead> </thead>
<thead> <thead>
<th colspan="5">&nbsp;<input type="button" class="btn btn-primary" onclick="window.location.href='{$linkurl}';" value="<!--{if !empty($modifylist)}-->{lang founder_upgrade_force}<!--{else}-->{lang founder_upgrade_regular}<!--{/if}-->" /> {eval echo upgradeinformation(0)}</th> <th colspan="5">&nbsp;<input type="button" class="btn btn-primary" onclick="window.location.href='{$linkurl}';" value="<!--{if !empty($modifylist)}-->{lang founder_upgrade_force}<!--{else}-->{lang founder_upgrade_regular}<!--{/if}-->" /> {eval echo upgradeinformation(0)}</th>
</thead> </thead>
</table> </table>
<!--{/if}--> <!--{/if}-->
<!--{elseif $step==4}--> <!--{elseif $step==4}-->
<!--{if $msg}--> <!--{if $msg}-->
<div id="step4" style="padding:20px;height:450px"> <div id="step4" style="padding:20px;height:450px">
<div class="alert alert-warning text-center"> <div class="alert alert-warning text-center">
$msg $msg
</div> </div>
</div> </div>
<!--{elseif $_GET['siteftpsetting']}--> <!--{elseif $_GET['siteftpsetting']}-->
<form name="aliform" class="form-horizontal form-horizontal-left" action="$action" method="post" style="padding:20px;"> <form name="aliform" class="form-horizontal form-horizontal-left" action="$action" method="post" style="padding:20px;">
<input type="hidden" name="formhash" value="{FORMHASH}"> <input type="hidden" name="formhash" value="{FORMHASH}">
<p style="padding-left:20px;font-weight:bold;font-size:16px;padding-bottom:20px;">{lang upgrade_website_FTP_set}</p> <p style="padding-left:20px;font-weight:bold;font-size:16px;padding-bottom:20px;">{lang upgrade_website_FTP_set}</p>
<div class="form-group"> <div class="form-group">
<label class="control-label">FTP {lang server_address}</label> <label class="control-label">FTP {lang server_address}</label>
<input type="text" class="form-control required" name="siteftp[host]" value="" placeholder="{lang host_IP_address}"> <input type="text" class="form-control required" name="siteftp[host]" value="" placeholder="{lang host_IP_address}">
<span class="help-inline">{lang FTP_server_IP_site_domain}</span> <span class="help-inline">{lang FTP_server_IP_site_domain}</span>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="control-label">FTP {lang server_port}</label> <label class="control-label">FTP {lang server_port}</label>
<input type="text" class="form-control required" name="siteftp[port]" value="21" placeholder="{lang port}"> <input type="text" class="form-control required" name="siteftp[port]" value="21" placeholder="{lang port}">
<span class="help-inline">{lang default_for_the_21st}</span> <span class="help-inline">{lang default_for_the_21st}</span>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="control-label">FTP {lang account}</label> <label class="control-label">FTP {lang account}</label>
<input type="text" class="form-control required" name="siteftp[username]" value="" placeholder="{lang FTP_account_user_name}"> <input type="text" class="form-control required" name="siteftp[username]" value="" placeholder="{lang FTP_account_user_name}">
<span class="help-inline">{lang accounts_supreme_authority}</span> <span class="help-inline">{lang accounts_supreme_authority}</span>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="control-label">FTP {lang password}</label> <label class="control-label">FTP {lang password}</label>
<input type="password" class="form-control required" name="siteftp[password]" value="" placeholder="{lang FTP_account_user_password}"> <input type="password" class="form-control required" name="siteftp[password]" value="" placeholder="{lang FTP_account_user_password}">
</div> </div>
<!--<div class="form-group"> <!--<div class="form-group">
<label class="control-label">编码</label> <label class="control-label">编码</label>
<select class="form-control" name="siteftp[charset]"> <select class="form-control" name="siteftp[charset]">
<option value="GBK" selected="selected">GBK</option> <option value="GBK" selected="selected">GBK</option>
<option value="UTF-8">UTF-8</option> <option value="UTF-8">UTF-8</option>
<option value="BIG5">BIG5</option> <option value="BIG5">BIG5</option>
</select> </select>
<span class="help-inline">根据FTP服务器的编码设置不一致会导致乱码</span> <span class="help-inline">根据FTP服务器的编码设置不一致会导致乱码</span>
</div>--> </div>-->
<div class="form-group"> <div class="form-group">
<label class="control-label">{lang sitepath}</label> <label class="control-label">{lang sitepath}</label>
<input type="text" class="form-control required" name="siteftp[attachdir]" value=""> <input type="text" class="form-control required" name="siteftp[attachdir]" value="">
<span class="help-inline">{lang site_absolute_path_root_directory}</span> <span class="help-inline">{lang site_absolute_path_root_directory}</span>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="control-label"></label> <label class="control-label"></label>
<label class="checkbox-inline" style="width:180px;"><input type="checkbox" name="siteftp[pasv]" value="1">{lang use_Passive_Mode}</label> <label class="checkbox-inline" style="width:180px;"><input type="checkbox" name="siteftp[pasv]" value="1">{lang use_Passive_Mode}</label>
<span class="help-inline">{lang general_condition_passive_mode}</span> <span class="help-inline">{lang general_condition_passive_mode}</span>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="control-label"></label> <label class="control-label"></label>
<label class="checkbox-inline" style="width:180px;"><input type="checkbox" name="siteftp[ssl]" value="1">{lang enable_secure_link}</label> <label class="checkbox-inline" style="width:180px;"><input type="checkbox" name="siteftp[ssl]" value="1">{lang enable_secure_link}</label>
<span class="help-inline">{lang notice_FTP_open_SSL}</span> <span class="help-inline">{lang notice_FTP_open_SSL}</span>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="control-label"></label> <label class="control-label"></label>
<input type="submit" class="btn btn-primary" style="padding:6px 25px" value="{lang confirms}"> <input type="submit" class="btn btn-primary" style="padding:6px 25px" value="{lang confirms}">
</div> </div>
</form> </form>
<!--{/if}--> <!--{/if}-->
<!--{elseif $step==5}--> <!--{elseif $step==5}-->
<div style="padding:20px;"> <div style="padding:20px;">
<div class="alert alert-success text-center"> <div class="alert alert-success text-center">
$msg $msg
</div> </div>
</div> </div>
<!--{/if}--> <!--{/if}-->
</div> </div>
<!--{/if}--> <!--{/if}-->
</div> </div>
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
jQuery('.left-drager').leftDrager_layout(); jQuery('.left-drager').leftDrager_layout();
function createIframe(src) { function createIframe(src) {
document.getElementById('step4').innerHTML = '<iframe marginheight="0" marginwidth="0" allowtransparency="true" frameborder="0" src="' + src + '" style="width:100%;height:100%;"></iframe>'; document.getElementById('step4').innerHTML = '<iframe marginheight="0" marginwidth="0" allowtransparency="true" frameborder="0" src="' + src + '" style="width:100%;height:100%;"></iframe>';
} }
</script> </script>
<script src="static/bootstrap/js/bootstrap.min.js?{VERHASH}"></script> <script src="static/bootstrap/js/bootstrap.min.js?{VERHASH}"></script>
<!--{template common/footer_simple}--> <!--{template common/footer_simple}-->

View File

@@ -1,21 +1,21 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="static/bootstrap/css/bootstrap.min.css"> <link rel="stylesheet" type="text/css" href="static/bootstrap/css/bootstrap.min.css">
<link href="static/css/common.css" rel="stylesheet" media="all"> <link href="static/css/common.css" rel="stylesheet" media="all">
<style> <style>
body { body {
overflow: hidden; overflow: hidden;
} }
</style> </style>
</head> </head>
<body> <body>
<div class="alert alert-warning"> <div class="alert alert-warning">
$msg $msg
</div> </div>
</body> </body>
</html> </html>

View File

@@ -1,46 +1,46 @@
<?php <?php
/* /*
* @copyright QiaoQiaoShiDai Internet Technology(Shanghai)Co.,Ltd * @copyright QiaoQiaoShiDai Internet Technology(Shanghai)Co.,Ltd
* @license https://www.oaooa.com/licenses/ * @license https://www.oaooa.com/licenses/
* *
* @link https://www.oaooa.com * @link https://www.oaooa.com
* @author zyx(zyx@oaooa.com) * @author zyx(zyx@oaooa.com)
*/ */
if (!defined('IN_OAOOA') || !defined('IN_ADMIN')) { if (!defined('IN_OAOOA') || !defined('IN_ADMIN')) {
exit('Access Denied'); exit('Access Denied');
} }
$oparr = array('updatecache', 'database', /*'security','patch','update',*/ $oparr = array('updatecache', 'database', /*'security','patch','update',*/
'cron', 'log'); 'cron', 'log');
$leftmenu = array(); $leftmenu = array();
$op = $_GET['op']; $op = $_GET['op'];
foreach ($oparr as $key => $value) { foreach ($oparr as $key => $value) {
$leftmenu[$value] = array('title' => lang($value), 'active' => ''); $leftmenu[$value] = array('title' => lang($value), 'active' => '');
if ($value == $op) if ($value == $op)
$leftmenu[$value]['active'] = 'class="active"'; $leftmenu[$value]['active'] = 'class="active"';
} }
include libfile('function/cache'); include libfile('function/cache');
$navtitle = lang('updatecache') . ' - ' . lang('admin_navtitle'); $navtitle = lang('updatecache') . ' - ' . lang('admin_navtitle');
$step = max(1, intval($_GET['step'])); $step = max(1, intval($_GET['step']));
if ($step == 1) { if ($step == 1) {
} elseif ($step == 2) { } elseif ($step == 2) {
$type = implode('_', (array)$_GET['type']); $type = implode('_', (array)$_GET['type']);
} elseif ($step == 3) { } elseif ($step == 3) {
$type = explode('_', $_GET['type']); $type = explode('_', $_GET['type']);
if (in_array('data', $type)) { if (in_array('data', $type)) {
updatecache(); updatecache();
} }
if (in_array('tpl', $type) && $_G['config']['output']['tplrefresh']) { if (in_array('tpl', $type) && $_G['config']['output']['tplrefresh']) {
cleartemplatecache(); cleartemplatecache();
} }
if (in_array('memory', $type)) { if (in_array('memory', $type)) {
//清空内存缓存 //清空内存缓存
C::memory()->clear(); C::memory()->clear();
} }
} }
include template('updatecache'); include template('updatecache');
?> ?>

View File

@@ -1,51 +1,51 @@
<?php <?php
//error_reporting(E_ALL); //error_reporting(E_ALL);
if(!defined('IN_OAOOA')) { if(!defined('IN_OAOOA')) {
exit('Access Denied'); exit('Access Denied');
} }
define('NOROBOT', TRUE); define('NOROBOT', TRUE);
$returntype = isset($_GET['returnType']) ? $_GET['returnType']: 'json';//返回值方式 $returntype = isset($_GET['returnType']) ? $_GET['returnType']: 'json';//返回值方式
$checkLanguage = $_G['language']; $checkLanguage = $_G['language'];
if(file_exists (DZZ_ROOT.'./admin/language/'.$checkLanguage.'/'.'lang.php')){ if(file_exists (DZZ_ROOT.'./admin/language/'.$checkLanguage.'/'.'lang.php')){
include DZZ_ROOT.'./admin/language/'.$checkLanguage.'/'.'lang.php'; include DZZ_ROOT.'./admin/language/'.$checkLanguage.'/'.'lang.php';
$_G['lang']['template']=array_merge($_G['lang']['template'],$lang); $_G['lang']['template']=array_merge($_G['lang']['template'],$lang);
} }
//判断管理员登录 //判断管理员登录
//Hook::listen('adminlogin'); //Hook::listen('adminlogin');
//后台管理页面 //后台管理页面
if(submitcheck('settingsubmit')){ if(submitcheck('settingsubmit')){
if ($_G['adminid'] != 1){ if ($_G['adminid'] != 1){
showmessage( lang('no_privilege') ,$returntype); showmessage( lang('no_privilege') ,$returntype);
} }
$settingnew=$_GET["settingnew"]; $settingnew=$_GET["settingnew"];
$data=array(); $data=array();
foreach($settingnew["mark"] as $k=>$v){ foreach($settingnew["mark"] as $k=>$v){
if( isset($data[$v]) ){ if( isset($data[$v]) ){
showmessage( lang('Logtag').$v.lang('repeat') ,$returntype); showmessage( lang('Logtag').$v.lang('repeat') ,$returntype);
} }
$data[$v]=array( $data[$v]=array(
"title" => $settingnew["title"][$k], "title" => $settingnew["title"][$k],
"is_open" => intval($settingnew["is_open"][$k]), "is_open" => intval($settingnew["is_open"][$k]),
"issystem" => $settingnew["issystem"][$k] "issystem" => $settingnew["issystem"][$k]
); );
} }
$settingnew = serialize($data); $settingnew = serialize($data);
$update=array( $update=array(
"systemlog_open" =>$_GET["systemlog_open"], "systemlog_open" =>$_GET["systemlog_open"],
"systemlog_setting" =>$settingnew, "systemlog_setting" =>$settingnew,
); );
$result = C::t('setting') ->update_batch($update); $result = C::t('setting') ->update_batch($update);
if( $result ){ if( $result ){
include_once libfile('function/cache'); include_once libfile('function/cache');
updatecache('setting'); updatecache('setting');
} }
writelog('otherlog', lang('Update_setting')); writelog('otherlog', lang('Update_setting'));
showmessage('do_success', dreferer()); showmessage('do_success', dreferer());
} }
else{ else{
$systemlog_setting = ($_G["setting"]["systemlog_setting"]); $systemlog_setting = ($_G["setting"]["systemlog_setting"]);
$navtitle=lang('systemlog_setting').' - '.lang('appname'); $navtitle=lang('systemlog_setting').' - '.lang('appname');
include template("admin"); include template("admin");
} }

View File

@@ -1,63 +1,63 @@
<?php <?php
namespace admin\systemlog\classes; namespace admin\systemlog\classes;
class Systemlog{ class Systemlog{
//$arr 必须传入 level,content //$arr 必须传入 level,content
public function run( $arr=array() ){ public function run( $arr=array() ){
global $_G; global $_G;
if( $_G['setting']['systemlog_open'] > 0 ){ if( $_G['setting']['systemlog_open'] > 0 ){
$systemlog_setting = ($_G['setting']['systemlog_setting']); $systemlog_setting = ($_G['setting']['systemlog_setting']);
//判断是否开启该类型日志 //判断是否开启该类型日志
if(!isset($arr["mark"]) || (isset($systemlog_setting[$arr["mark"]]) && $systemlog_setting[$arr["mark"]]["is_open"]!=1) ){ if(!isset($arr["mark"]) || (isset($systemlog_setting[$arr["mark"]]) && $systemlog_setting[$arr["mark"]]["is_open"]!=1) ){
return; return;
} }
$file=$arr["mark"];//$arr["level"];//级别 $file=$arr["mark"];//$arr["level"];//级别
$log=$arr["content"]; $log=$arr["content"];
$yearmonth = "dzz";//dgmdate(TIMESTAMP, 'Ym', $_G['setting']['timeoffset']); $yearmonth = "dzz";//dgmdate(TIMESTAMP, 'Ym', $_G['setting']['timeoffset']);
$logdir = DZZ_ROOT.'./data/log/'; $logdir = DZZ_ROOT.'./data/log/';
$logfile = $logdir.$yearmonth.'_'.$file.'.php'; $logfile = $logdir.$yearmonth.'_'.$file.'.php';
//检查并返回当前log文件行数 //检查并返回当前log文件行数
$i=0; $i=0;
if( file_exists($logfile)){ if( file_exists($logfile)){
$fp=fopen($logfile, "r"); $fp=fopen($logfile, "r");
while(!feof($fp)) { while(!feof($fp)) {
//每次最多读取1M //每次最多读取1M
if($data=fread($fp,1024*1024*1)){ if($data=fread($fp,1024*1024*1)){
//计算读取到的行数 //计算读取到的行数
$num=substr_count($data,"\n"); $num=substr_count($data,"\n");
$i+=$num; $i+=$num;
} }
} }
fclose($fp); fclose($fp);
} }
//每4000行重新生成日志文件 //每4000行重新生成日志文件
if($i>=4000) { if($i>=4000) {
$dir = opendir($logdir); $dir = opendir($logdir);
$length = strlen($file); $length = strlen($file);
$maxid = $id = 0; $maxid = $id = 0;
while($entry = readdir($dir)) { while($entry = readdir($dir)) {
if(strpos($entry, $yearmonth.'_'.$file) !== false) { if(strpos($entry, $yearmonth.'_'.$file) !== false) {
$id = intval(substr($entry, $length + 8, -4)); $id = intval(substr($entry, $length + 8, -4));
$id > $maxid && $maxid = $id; $id > $maxid && $maxid = $id;
} }
} }
closedir($dir); closedir($dir);
$logfilebak = $logdir.$yearmonth.'_'.$file.'_'.($maxid + 1).'.php'; $logfilebak = $logdir.$yearmonth.'_'.$file.'_'.($maxid + 1).'.php';
@rename($logfile, $logfilebak); @rename($logfile, $logfilebak);
} }
if($fp = @fopen($logfile, 'a')) { if($fp = @fopen($logfile, 'a')) {
@flock($fp, 2); @flock($fp, 2);
if(!is_array($log)) { if(!is_array($log)) {
$log = array($log); $log = array($log);
} }
$cur_url = $_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']; $cur_url = $_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
$from_url = $_SERVER['HTTP_REFERER']; $from_url = $_SERVER['HTTP_REFERER'];
foreach($log as $tmp) { foreach($log as $tmp) {
$tmp=implode("\t", clearlogstring(array($_G['timestamp'], $_G['username'], $_G['groupid'], $_G['clientip'],$tmp,$cur_url,$from_url))) ; $tmp=implode("\t", clearlogstring(array($_G['timestamp'], $_G['username'], $_G['groupid'], $_G['clientip'],$tmp,$cur_url,$from_url))) ;
fwrite($fp, "<?PHP exit;?>\t".str_replace(array('<?', '?>'), '', $tmp)."\n"); fwrite($fp, "<?PHP exit;?>\t".str_replace(array('<?', '?>'), '', $tmp)."\n");
} }
fclose($fp); fclose($fp);
} }
} }
} }
} }

File diff suppressed because it is too large Load Diff

View File

@@ -1,177 +1,177 @@
<?php <?php
//error_reporting(E_ALL); //error_reporting(E_ALL);
if(!defined('IN_OAOOA')) { if(!defined('IN_OAOOA')) {
exit('Access Denied'); exit('Access Denied');
} }
define('NOROBOT', TRUE); define('NOROBOT', TRUE);
$returntype = isset($_GET['returnType']) ? $_GET['returnType']: 'json';//返回值方式 $returntype = isset($_GET['returnType']) ? $_GET['returnType']: 'json';//返回值方式
$type=$_GET['type']; $type=$_GET['type'];
if(!in_array($type, array('list'))) { if(!in_array($type, array('list'))) {
$type='list'; $type='list';
} }
$checkLanguage = $_G['language']; $checkLanguage = $_G['language'];
if(file_exists (DZZ_ROOT.'./admin/language/'.$checkLanguage.'/'.'lang.php')){ if(file_exists (DZZ_ROOT.'./admin/language/'.$checkLanguage.'/'.'lang.php')){
include DZZ_ROOT.'./admin/language/'.$checkLanguage.'/'.'lang.php'; include DZZ_ROOT.'./admin/language/'.$checkLanguage.'/'.'lang.php';
$_G['lang']['template']=array_merge($_G['lang']['template'],$lang); $_G['lang']['template']=array_merge($_G['lang']['template'],$lang);
} }
if($type=="list"){ if($type=="list"){
//Hook::listen('adminlogin'); //Hook::listen('adminlogin');
!isset($_GET['page']) && $_GET['page']=1; !isset($_GET['page']) && $_GET['page']=1;
$page=max(1,intval($_GET['page'])); $page=max(1,intval($_GET['page']));
$lpp = empty($_GET['lpp']) ? 15 : $_GET['lpp']; $lpp = empty($_GET['lpp']) ? 15 : $_GET['lpp'];
$checklpp = array(); $checklpp = array();
$checklpp[$lpp] = 'selected="selected"'; $checklpp[$lpp] = 'selected="selected"';
$extrainput = ''; $extrainput = '';
$systemlog_setting = is_serialized($_G["setting"]["systemlog_setting"])?unserialize($_G["setting"]["systemlog_setting"]):$_G["setting"]["systemlog_setting"]; $systemlog_setting = is_serialized($_G["setting"]["systemlog_setting"])?unserialize($_G["setting"]["systemlog_setting"]):$_G["setting"]["systemlog_setting"];
$operationarr = array_keys($systemlog_setting); $operationarr = array_keys($systemlog_setting);
$operation = in_array($_GET['operation'], $operationarr) ? $_GET['operation'] : "cplog"; $operation = in_array($_GET['operation'], $operationarr) ? $_GET['operation'] : "cplog";
$navtitle=$systemlog_setting[$operation]["title"].' - '.lang('appname');//lang('nav_logs_'.$operation).' - '.lang('admin_navtitle'); $navtitle=$systemlog_setting[$operation]["title"].' - '.lang('appname');//lang('nav_logs_'.$operation).' - '.lang('admin_navtitle');
$logdir = DZZ_ROOT.'./data/log/'; $logdir = DZZ_ROOT.'./data/log/';
$logfiles = get_log_files($logdir, $operation); $logfiles = get_log_files($logdir, $operation);
if($logfiles) $logfiles=array_reverse($logfiles); if($logfiles) $logfiles=array_reverse($logfiles);
//error_reporting(E_ALL); //error_reporting(E_ALL);
$firstlogs = file( $logdir.$logfiles[0] ) ; $firstlogs = file( $logdir.$logfiles[0] ) ;
$firstlogsnum = count($firstlogs); $firstlogsnum = count($firstlogs);
$countlogfile=count($logfiles); $countlogfile=count($logfiles);
$count = ($countlogfile-1)*4000+$firstlogsnum; $count = ($countlogfile-1)*4000+$firstlogsnum;
$multipage = multi($count, $lpp, $page, MOD_URL."&type=list&operation=$operation&lpp=$lpp",'pull-right' ); $multipage = multi($count, $lpp, $page, MOD_URL."&type=list&operation=$operation&lpp=$lpp",'pull-right' );
$logs = array(); $logs = array();
$jishu=4000;//每个日志文件最多行数 $jishu=4000;//每个日志文件最多行数
$start = ($page - 1) * $lpp; $start = ($page - 1) * $lpp;
$lastlog=$last_secondlog=""; $lastlog=$last_secondlog="";
$newdata=array(); $newdata=array();
foreach($logfiles as $k=>$v){ foreach($logfiles as $k=>$v){
$nowfilemaxnum=($jishu*($k+1))-($jishu-$firstlogsnum); $nowfilemaxnum=($jishu*($k+1))-($jishu-$firstlogsnum);
$startnum=($nowfilemaxnum-$jishu)<=0?0:($nowfilemaxnum-$jishu+1); $startnum=($nowfilemaxnum-$jishu)<=0?0:($nowfilemaxnum-$jishu+1);
$newdata[]=array("file"=>$v,"start"=>$startnum,"end"=>$nowfilemaxnum); $newdata[]=array("file"=>$v,"start"=>$startnum,"end"=>$nowfilemaxnum);
} }
//print_R($newdata); //print_R($newdata);
//查询当前分页数据位于哪个日志文件 //查询当前分页数据位于哪个日志文件
$lastlog=$last_secondlog=""; $lastlog=$last_secondlog="";
foreach($newdata as $k=>$v){ foreach($newdata as $k=>$v){
if( $start<=$v["end"]){ if( $start<=$v["end"]){
$lastlog=$v; $lastlog=$v;
if( ($start+$lpp)<$v["end"]){ if( ($start+$lpp)<$v["end"]){
}else{ }else{
if( isset($newdata[$k+1])){ if( isset($newdata[$k+1])){
$last_secondlog=$newdata[$k+1]; $last_secondlog=$newdata[$k+1];
} }
} }
break; break;
} }
} }
$j=0; $j=0;
for($i=$lastlog["start"];$i<$lastlog["end"];$i++){ for($i=$lastlog["start"];$i<$lastlog["end"];$i++){
if( $start<=($lastlog["start"]+$j) ){ if( $start<=($lastlog["start"]+$j) ){
break; break;
} }
$j++; $j++;
} }
//获取数据开始 //获取数据开始
$logs = file( $logdir.$lastlog["file"] ); $logs = file( $logdir.$lastlog["file"] );
$logs = array_reverse($logs); $logs = array_reverse($logs);
if( $lastlog["file"]!=$logfiles[0] ){ if( $lastlog["file"]!=$logfiles[0] ){
$j++; $j++;
} }
$logs = array_slice($logs, $j, $lpp); $logs = array_slice($logs, $j, $lpp);
$onecountget = count($logs); $onecountget = count($logs);
$jj=0; $jj=0;
if( $last_secondlog ){ if( $last_secondlog ){
for($i=$last_secondlog["start"];$i<$last_secondlog["end"];$i++){ for($i=$last_secondlog["start"];$i<$last_secondlog["end"];$i++){
if( ($jj)>= ($lpp-$onecountget) ){//$last_secondlog["start"] ){ if( ($jj)>= ($lpp-$onecountget) ){//$last_secondlog["start"] ){
break; break;
} }
$jj++; $jj++;
} }
} }
if($last_secondlog){ if($last_secondlog){
$logs2 = file( $logdir.$last_secondlog["file"] ); $logs2 = file( $logdir.$last_secondlog["file"] );
$logs2 = array_reverse($logs2); $logs2 = array_reverse($logs2);
$end=$lpp-count($logs); $end=$lpp-count($logs);
$logs2 = array_slice( $logs2, 0, $jj); $logs2 = array_slice( $logs2, 0, $jj);
$logs=array_merge($logs,$logs2); $logs=array_merge($logs,$logs2);
} }
//获取数据结束 //获取数据结束
$usergroup = array(); $usergroup = array();
foreach(C::t('usergroup')->range() as $group) { foreach(C::t('usergroup')->range() as $group) {
$usergroup[$group['groupid']] = $group['grouptitle']; $usergroup[$group['groupid']] = $group['grouptitle'];
} }
$list=array(); $list=array();
foreach($logs as $k => $logrow) { foreach($logs as $k => $logrow) {
$log = explode("\t", $logrow); $log = explode("\t", $logrow);
if(empty($log[1])) { if(empty($log[1])) {
continue; continue;
} }
$log[1] = dgmdate($log[1], 'y-n-j H:i'); $log[1] = dgmdate($log[1], 'y-n-j H:i');
$log[2] = $log[2]; $log[2] = $log[2];
$log[2] = ($log[2] != $_G['member']['username'] ? "<b>$log[2]</b>" : $log[2]); $log[2] = ($log[2] != $_G['member']['username'] ? "<b>$log[2]</b>" : $log[2]);
$log[3] = $usergroup[$log[3]]; $log[3] = $usergroup[$log[3]];
$list[$k]=$log; $list[$k]=$log;
} }
include template('list'); include template('list');
} }
function getactionarray() { function getactionarray() {
$isfounder = true; $isfounder = true;
unset($topmenu['index'], $menu['index']); unset($topmenu['index'], $menu['index']);
$actioncat = $actionarray = array(); $actioncat = $actionarray = array();
$actioncat[] = 'setting'; $actioncat[] = 'setting';
$actioncat = array_merge($actioncat, array_keys($topmenu)); $actioncat = array_merge($actioncat, array_keys($topmenu));
foreach($menu as $tkey => $items) { foreach($menu as $tkey => $items) {
foreach($items as $item) { foreach($items as $item) {
$actionarray[$tkey][] = $item; $actionarray[$tkey][] = $item;
} }
} }
return array('actions' => $actionarray, 'cats' => $actioncat); return array('actions' => $actionarray, 'cats' => $actioncat);
} }
function get_log_files($logdir = '', $action = 'action') { function get_log_files($logdir = '', $action = 'action') {
$dir = opendir($logdir); $dir = opendir($logdir);
$files = array(); $files = array();
while($entry = readdir($dir)) { while($entry = readdir($dir)) {
$files[] = $entry; $files[] = $entry;
} }
closedir($dir); closedir($dir);
if($files) { if($files) {
sort($files); sort($files);
$logfile = $action; $logfile = $action;
$logfiles = array(); $logfiles = array();
$ym = ''; $ym = '';
foreach($files as $file) { foreach($files as $file) {
if(strpos($file, $logfile) !== FALSE) { if(strpos($file, $logfile) !== FALSE) {
if(substr($file, 0, 6) != $ym) { if(substr($file, 0, 6) != $ym) {
$ym = substr($file, 0, 6); $ym = substr($file, 0, 6);
} }
$logfiles[$ym][] = $file; $logfiles[$ym][] = $file;
} }
} }
if($logfiles) { if($logfiles) {
$lfs = array(); $lfs = array();
foreach($logfiles as $ym => $lf) { foreach($logfiles as $ym => $lf) {
$lastlogfile = $lf[0]; $lastlogfile = $lf[0];
unset($lf[0]); unset($lf[0]);
$lf[] = $lastlogfile; $lf[] = $lastlogfile;
$lfs = array_merge($lfs, $lf); $lfs = array_merge($lfs, $lf);
} }
return $lfs; return $lfs;
} }
return array(); return array();
} }
return array(); return array();
} }

View File

@@ -1,33 +1,33 @@
<?php <?php
/* /*
* 应用安装文件; * 应用安装文件;
* @copyright QiaoQiaoShiDai Internet Technology(Shanghai)Co.,Ltd * @copyright QiaoQiaoShiDai Internet Technology(Shanghai)Co.,Ltd
* @license https://www.oaooa.com/licenses/ * @license https://www.oaooa.com/licenses/
* *
* @link https://www.oaooa.com * @link https://www.oaooa.com
* @author qchlian * @author qchlian
*/ */
if(!defined('IN_OAOOA') || !defined('IN_ADMIN')) { if(!defined('IN_OAOOA') || !defined('IN_ADMIN')) {
exit('Access Denied'); exit('Access Denied');
} }
/*以下配置初始化时已存入数据库配置表 /*以下配置初始化时已存入数据库配置表
*$systemlog_setting = array( *$systemlog_setting = array(
* 级别 名称 标记 是否开启 * 级别 名称 标记 是否开启
"errorlog"=>array("title"=>"系统错误","is_open"=>1,"issystem"=>1), "errorlog"=>array("title"=>"系统错误","is_open"=>1,"issystem"=>1),
"cplog"=>array("title"=>"后台访问","is_open"=>1,"issystem"=>1), "cplog"=>array("title"=>"后台访问","is_open"=>1,"issystem"=>1),
"deletelog"=>array("title"=>"数据删除","is_open"=>1,"issystem"=>1), "deletelog"=>array("title"=>"数据删除","is_open"=>1,"issystem"=>1),
"updatelog"=>array("title"=>"数据更新","is_open"=>1,"issystem"=>1), "updatelog"=>array("title"=>"数据更新","is_open"=>1,"issystem"=>1),
"loginlog"=>array("title"=>"用户登录","is_open"=>1,"issystem"=>1), "loginlog"=>array("title"=>"用户登录","is_open"=>1,"issystem"=>1),
"sendmail"=>array("title"=>"邮件发送","is_open"=>1,"issystem"=>1), "sendmail"=>array("title"=>"邮件发送","is_open"=>1,"issystem"=>1),
"otherlog"=>array("title"=>"其他信息","is_open"=>1,"issystem"=>1), "otherlog"=>array("title"=>"其他信息","is_open"=>1,"issystem"=>1),
); );
*/ */
$sql = <<<EOF $sql = <<<EOF
DELETE FROM `dzz_setting` WHERE `skey` = 'systemlog_open'; DELETE FROM `dzz_setting` WHERE `skey` = 'systemlog_open';
INSERT INTO `dzz_setting` (`skey`,`svalue`) VALUES ('systemlog_open', '1'); INSERT INTO `dzz_setting` (`skey`,`svalue`) VALUES ('systemlog_open', '1');
DELETE FROM `dzz_setting` WHERE `skey` = 'systemlog_setting'; DELETE FROM `dzz_setting` WHERE `skey` = 'systemlog_setting';
INSERT INTO `dzz_setting` (`skey`,`svalue`) VALUES ('systemlog_setting','a:7:{s:8:"errorlog";a:3:{s:5:"title";s:12:"系统错误";s:7:"is_open";i:1;s:8:"issystem";i:1;}s:5:"cplog";a:3:{s:5:"title";s:12:"后台访问";s:7:"is_open";i:1;s:8:"issystem";i:1;}s:9:"deletelog";a:3:{s:5:"title";s:12:"数据删除";s:7:"is_open";i:1;s:8:"issystem";i:1;}s:9:"updatelog";a:3:{s:5:"title";s:12:"数据更新";s:7:"is_open";i:1;s:8:"issystem";i:1;}s:8:"loginlog";a:3:{s:5:"title";s:12:"用户登录";s:7:"is_open";i:1;s:8:"issystem";i:1;}s:8:"sendmail";a:3:{s:5:"title";s:12:"邮件发送";s:7:"is_open";i:1;s:8:"issystem";i:1;}s:8:"otherlog";a:3:{s:5:"title";s:12:"其他信息";s:7:"is_open";i:1;s:8:"issystem";i:1;}}'); INSERT INTO `dzz_setting` (`skey`,`svalue`) VALUES ('systemlog_setting','a:7:{s:8:"errorlog";a:3:{s:5:"title";s:12:"系统错误";s:7:"is_open";i:1;s:8:"issystem";i:1;}s:5:"cplog";a:3:{s:5:"title";s:12:"后台访问";s:7:"is_open";i:1;s:8:"issystem";i:1;}s:9:"deletelog";a:3:{s:5:"title";s:12:"数据删除";s:7:"is_open";i:1;s:8:"issystem";i:1;}s:9:"updatelog";a:3:{s:5:"title";s:12:"数据更新";s:7:"is_open";i:1;s:8:"issystem";i:1;}s:8:"loginlog";a:3:{s:5:"title";s:12:"用户登录";s:7:"is_open";i:1;s:8:"issystem";i:1;}s:8:"sendmail";a:3:{s:5:"title";s:12:"邮件发送";s:7:"is_open";i:1;s:8:"issystem";i:1;}s:8:"otherlog";a:3:{s:5:"title";s:12:"其他信息";s:7:"is_open";i:1;s:8:"issystem";i:1;}}');
EOF; EOF;
runquery($sql); runquery($sql);
$finish = true; //结束时必须加入此句,告诉应用安装程序已经完成自定义的安装流程 $finish = true; //结束时必须加入此句,告诉应用安装程序已经完成自定义的安装流程

View File

@@ -1,21 +1,21 @@
<?php <?php
$lang = array ( $lang = array (
'appname'=>'系统日志', 'appname'=>'系统日志',
'logs' => '运行记录', 'logs' => '运行记录',
'systemlog_setting'=>'设置', 'systemlog_setting'=>'设置',
'systemlog_list'=>'日志列表', 'systemlog_list'=>'日志列表',
'info'=>'信息', 'info'=>'信息',
'loginfo'=>'日志信息', 'loginfo'=>'日志信息',
'visit'=>'访问页面', 'visit'=>'访问页面',
'from'=>'来源页面', 'from'=>'来源页面',
'logswitch'=>'日志开关', 'logswitch'=>'日志开关',
'logtype'=>'日志类型', 'logtype'=>'日志类型',
'logtypename'=>'日志类型名称', 'logtypename'=>'日志类型名称',
'logtype'=>'日志类型', 'logtype'=>'日志类型',
'logflag'=>'日志标识', 'logflag'=>'日志标识',
'Logtag'=>'日志标记', 'Logtag'=>'日志标记',
'repeat'=>'重复', 'repeat'=>'重复',
'Update_setting'=>'更新日志设置' 'Update_setting'=>'更新日志设置'
); );
?> ?>

View File

@@ -1,160 +1,160 @@
<!--{template common/header_simple_start}--> <!--{template common/header_simple_start}-->
<link href="static/css/common.css?{VERHASH}" rel="stylesheet" media="all"> <link href="static/css/common.css?{VERHASH}" rel="stylesheet" media="all">
<link href="static/icheck/skins/minimal/blue.css?{VERHASH}" rel="stylesheet" media="all"> <link href="static/icheck/skins/minimal/blue.css?{VERHASH}" rel="stylesheet" media="all">
<link rel="stylesheet" href="static/css/checkbox.css"> <link rel="stylesheet" href="static/css/checkbox.css">
<script type="text/javascript" src="static/js/jquery.leftDrager.js?{VERHASH}"></script> <script type="text/javascript" src="static/js/jquery.leftDrager.js?{VERHASH}"></script>
<style> <style>
html, body { html, body {
overflow: hidden; overflow: hidden;
background: #FFF; background: #FFF;
color: #4B4B4B; color: #4B4B4B;
} }
.form-horizontal-left .radio-inline { .form-horizontal-left .radio-inline {
padding: 5px 20px; padding: 5px 20px;
margin: 0; margin: 0;
} }
.loginset-template{ .loginset-template{
width: 100px; width: 100px;
height: 100px; height: 100px;
overflow: hidden; overflow: hidden;
float: left; float: left;
margin-right: 10px; margin-right: 10px;
display: block; display: block;
position: relative; position: relative;
} }
.loginset-template .loginset-template-icon{ .loginset-template .loginset-template-icon{
width: 20px; width: 20px;
height: 20px; height: 20px;
border: 1px solid #AAB479; border: 1px solid #AAB479;
position: absolute; position: absolute;
right: 1px; right: 1px;
top: 1px; top: 1px;
color: #DD4B39; color: #DD4B39;
font-size: 15px; font-size: 15px;
display: none; display: none;
} }
.loginset-template:hover .loginset-template-icon{ .loginset-template:hover .loginset-template-icon{
display: block; display: block;
} }
.loginset-template:hover .loginset-template-icon>span{ .loginset-template:hover .loginset-template-icon>span{
display: none; display: none;
} }
.loginset-template .loginset-template-icon1{ .loginset-template .loginset-template-icon1{
display: block!important; display: block!important;
} }
.loginset-template .loginset-template-icon1>span{ .loginset-template .loginset-template-icon1>span{
display: block!important; display: block!important;
} }
#cpform{ #cpform{
margin-top: 15px; margin-top: 15px;
} }
</style> </style>
<!--{template common/header_simple_end}--> <!--{template common/header_simple_end}-->
<!--{template common/commer_header}--> <!--{template common/commer_header}-->
<div class="bs-container clearfix"> <div class="bs-container clearfix">
<div class="bs-left-container clearfix"> <div class="bs-left-container clearfix">
<!--{template left}--> <!--{template left}-->
</div> </div>
<div class="left-drager"> <div class="left-drager">
<div class="left-drager-op"> <div class="left-drager-op">
<div class="left-drager-sub"></div> <div class="left-drager-sub"></div>
</div> </div>
</div> </div>
<div class="bs-main-container clearfix"> <div class="bs-main-container clearfix">
<div class="main-title clearfix"> <div class="main-title clearfix">
</div> </div>
<div class="main-content"> <div class="main-content">
<form id="cpform" action="{MOD_URL}&op=admin" class="form-horizontal-left" method="post" name="cpform"> <form id="cpform" action="{MOD_URL}&op=admin" class="form-horizontal-left" method="post" name="cpform">
<input type="hidden" value="{FORMHASH}" name="formhash"> <input type="hidden" value="{FORMHASH}" name="formhash">
<input type="hidden" value="basic" name="operation"> <input type="hidden" value="basic" name="operation">
<dl> <dl>
<dt>{lang logswitch}:</dt> <dt>{lang logswitch}:</dt>
<dd class="clearfix"> <dd class="clearfix">
<label class="radio-inline "><input type="radio" name="systemlog_open" value="1"<!--{if $_G[setting][systemlog_open]==1}-->checked<!--{/if}--> onclick="document.getElementById('hidden1').style.display='block';">{lang enable}</label> <label class="radio-inline "><input type="radio" name="systemlog_open" value="1"<!--{if $_G[setting][systemlog_open]==1}-->checked<!--{/if}--> onclick="document.getElementById('hidden1').style.display='block';">{lang enable}</label>
<label class="radio radio-inline"><input type="radio" name="systemlog_open" value="0"<!--{if $_G[setting][systemlog_open]==0}-->checked<!--{/if}--> onclick="document.getElementById('hidden1').style.display='none';">{lang forbidden}</label> <label class="radio radio-inline"><input type="radio" name="systemlog_open" value="0"<!--{if $_G[setting][systemlog_open]==0}-->checked<!--{/if}--> onclick="document.getElementById('hidden1').style.display='none';">{lang forbidden}</label>
</dd> </dd>
</dl> </dl>
<dl id="hidden1"> <dl id="hidden1">
<dt>{lang logtype}:</dt> <dt>{lang logtype}:</dt>
<dd class="clearfix"> <dd class="clearfix">
<table id="systemlogtable" class="table text-center" style="width: auto;margin-bottom:0; <!--{if $_G[setting][systemlog_open]==0}-->display:none<!--{/if}-->"> <table id="systemlogtable" class="table text-center" style="width: auto;margin-bottom:0; <!--{if $_G[setting][systemlog_open]==0}-->display:none<!--{/if}-->">
<thead> <thead>
<tr> <tr>
<th>{lang logtypename}</th> <th>{lang logtypename}</th>
<th>{lang logflag}</th> <th>{lang logflag}</th>
<th>{lang logswitch}</th> <th>{lang logswitch}</th>
<th>&nbsp;</th> <th>&nbsp;</th>
</tr> </tr>
</thead> </thead>
{eval $i=0;} {eval $i=0;}
<!--{loop $systemlog_setting $mark $info}--> <!--{loop $systemlog_setting $mark $info}-->
<tr> <tr>
<td> <td>
<input type="hidden" name="settingnew[issystem][$i]" value="$info[issystem]" /> <input type="hidden" name="settingnew[issystem][$i]" value="$info[issystem]" />
<input class="form-control" style="width:120px;" <!--{if $info[issystem]==1}-->readonly="readonly"<!--{/if}--> type="text" name="settingnew[title][$i]" value="$info[title]" /> <input class="form-control" style="width:120px;" <!--{if $info[issystem]==1}-->readonly="readonly"<!--{/if}--> type="text" name="settingnew[title][$i]" value="$info[title]" />
</td> </td>
<td><input class="form-control" style="width:100px;" <!--{if $info[issystem]==1}-->readonly="readonly"<!--{/if}--> type="text" name="settingnew[mark][$i]" value="$mark" /></td> <td><input class="form-control" style="width:100px;" <!--{if $info[issystem]==1}-->readonly="readonly"<!--{/if}--> type="text" name="settingnew[mark][$i]" value="$mark" /></td>
<td><input type="checkbox" name="settingnew[is_open][$i]" value="1" <!--{if $info[is_open]==1}-->checked<!--{/if}--> /></td> <td><input type="checkbox" name="settingnew[is_open][$i]" value="1" <!--{if $info[is_open]==1}-->checked<!--{/if}--> /></td>
<td> <td>
<!--{if $info[issystem]!=1}--> <!--{if $info[issystem]!=1}-->
<a href="javascript:;" class="col-xs-2 img_delete" onclick="deletesystem(this);"><span class="dzz dzz-delete" style="font-size:22px;"></span></a> <a href="javascript:;" class="col-xs-2 img_delete" onclick="deletesystem(this);"><span class="dzz dzz-delete" style="font-size:22px;"></span></a>
<!--{/if}--> <!--{/if}-->
</td> </td>
</tr> </tr>
{eval $i++;} {eval $i++;}
<!--{/loop}--> <!--{/loop}-->
<tr> <tr>
<td colspan="4" align="left"><a href="javascript:;" onclick="addsystemtype(this);"><i class="glyphicon glyphicon-plus"></i>{lang add}</a></td> <td colspan="4" align="left"><a href="javascript:;" onclick="addsystemtype(this);"><i class="glyphicon glyphicon-plus"></i>{lang add}</a></td>
</tr> </tr>
</table> </table>
</dd> </dd>
</dl> </dl>
<dl> <dl>
<dd> <dd>
<input class="btn btn-primary" id="submit_editsubmit" name="settingsubmit" value="{lang save_changes}" type="submit"> <input class="btn btn-primary" id="submit_editsubmit" name="settingsubmit" value="{lang save_changes}" type="submit">
</dd> </dd>
</dl> </dl>
</form> </form>
</div> </div>
</div> </div>
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
jQuery('.left-drager').leftDrager_layout(); jQuery('.left-drager').leftDrager_layout();
jQuery(document).ready(function(e) { jQuery(document).ready(function(e) {
jQuery('input').iCheck({ jQuery('input').iCheck({
checkboxClass: 'icheckbox_minimal-blue', checkboxClass: 'icheckbox_minimal-blue',
radioClass: 'iradio_minimal-blue', radioClass: 'iradio_minimal-blue',
}); });
jQuery('input').on('ifChecked', function(e) { jQuery('input').on('ifChecked', function(e) {
jQuery(this).trigger('click'); jQuery(this).trigger('click');
}); });
jQuery('input[required]').on('blur', function() { jQuery('input[required]').on('blur', function() {
if(this.value == '') { jQuery(this).addClass('input-error') } else { jQuery(this).removeClass('input-error'); } if(this.value == '') { jQuery(this).addClass('input-error') } else { jQuery(this).removeClass('input-error'); }
}); });
}); });
function addsystemtype( obj ){ function addsystemtype( obj ){
var num=jQuery("#systemlogtable").find("tr").length-1; var num=jQuery("#systemlogtable").find("tr").length-1;
var html='<tr><td><input type="hidden" name="settingnew[issystem]['+num+']" value="0" /><input class="form-control" style="width:120px;" type="text" name="settingnew[title]['+num+']" value="" /></td><td><input class="form-control" style="width:100px;" type="text" name="settingnew[mark]['+num+']" value="" /></td><td><input type="checkbox" name="settingnew[is_open]['+num+']" value="1" checked /></td><td><a class="col-xs-2 img_delete" onclick="deletesystem(this);" href="javascript:;"><span class="dzz dzz-delete" style="font-size:22px;"></span></a></td></tr>'; var html='<tr><td><input type="hidden" name="settingnew[issystem]['+num+']" value="0" /><input class="form-control" style="width:120px;" type="text" name="settingnew[title]['+num+']" value="" /></td><td><input class="form-control" style="width:100px;" type="text" name="settingnew[mark]['+num+']" value="" /></td><td><input type="checkbox" name="settingnew[is_open]['+num+']" value="1" checked /></td><td><a class="col-xs-2 img_delete" onclick="deletesystem(this);" href="javascript:;"><span class="dzz dzz-delete" style="font-size:22px;"></span></a></td></tr>';
jQuery(obj).parents("tr").before(html); jQuery(obj).parents("tr").before(html);
jQuery("#systemlogtable").iCheck({ jQuery("#systemlogtable").iCheck({
checkboxClass: 'icheckbox_minimal-blue', checkboxClass: 'icheckbox_minimal-blue',
radioClass: 'iradio_minimal-blue', radioClass: 'iradio_minimal-blue',
}); });
return false; return false;
} }
function deletesystem( obj ){ function deletesystem( obj ){
jQuery(obj).parents("tr").remove(); jQuery(obj).parents("tr").remove();
return false; return false;
} }
</script> </script>
<script src="static/bootstrap/js/bootstrap.min.js?{VERHASH}"></script> <script src="static/bootstrap/js/bootstrap.min.js?{VERHASH}"></script>
<script type="text/javascript" src="static/icheck/icheck.min.js?{VERHASH}"></script> <script type="text/javascript" src="static/icheck/icheck.min.js?{VERHASH}"></script>
<!--{template common/footer_simple}--> <!--{template common/footer_simple}-->

View File

@@ -1,4 +1,4 @@
<ul class="nav-stacked"> <ul class="nav-stacked">
<li <!--{if $_GET[op]!="admin" }--> class="active" <!--{/if}-->><a hidefocus="true" href="{MOD_URL}">{lang systemlog_list}</a></li> <li <!--{if $_GET[op]!="admin" }--> class="active" <!--{/if}-->><a hidefocus="true" href="{MOD_URL}">{lang systemlog_list}</a></li>
<li <!--{if $_GET[op]=="admin" }--> class="active" <!--{/if}-->><a hidefocus="true" href="{MOD_URL}&op=admin">{lang systemlog_setting}</a></li> <li <!--{if $_GET[op]=="admin" }--> class="active" <!--{/if}-->><a hidefocus="true" href="{MOD_URL}&op=admin">{lang systemlog_setting}</a></li>
</ul> </ul>

View File

@@ -1,110 +1,110 @@
<!--{template common/header_simple_start}--> <!--{template common/header_simple_start}-->
<link href="static/css/common.css?{VERHASH}" rel="stylesheet" media="all"> <link href="static/css/common.css?{VERHASH}" rel="stylesheet" media="all">
<link href="static/select2/select2.css?{VERHASH}" rel="stylesheet" media="all"> <link href="static/select2/select2.css?{VERHASH}" rel="stylesheet" media="all">
<link href="static/select2/select2-bootstrap.css?{VERHASH}" rel="stylesheet" media="all"> <link href="static/select2/select2-bootstrap.css?{VERHASH}" rel="stylesheet" media="all">
<script type="text/javascript" src="static/js/jquery.leftDrager.js?{VERHASH}"></script> <script type="text/javascript" src="static/js/jquery.leftDrager.js?{VERHASH}"></script>
<style> <style>
input[type="text"] { input[type="text"] {
margin: 0; margin: 0;
} }
</style> </style>
<!--{template common/header_simple_end}--> <!--{template common/header_simple_end}-->
<!--{template common/commer_header}--> <!--{template common/commer_header}-->
<div class="bs-container clearfix"> <div class="bs-container clearfix">
<div class="bs-left-container clearfix"> <div class="bs-left-container clearfix">
<!--{template left}--> <!--{template left}-->
</div> </div>
<div class="left-drager"> <div class="left-drager">
</div> </div>
<div class="bs-main-container clearfix"> <div class="bs-main-container clearfix">
<div class="main-header clearfix" style="border-bottom:1px solid #e1e1e1;padding-top: 15px;"> <div class="main-header clearfix" style="border-bottom:1px solid #e1e1e1;padding-top: 15px;">
<ul class="nav nav-pills nav-pills-bottomguide"> <ul class="nav nav-pills nav-pills-bottomguide">
<!--{loop $systemlog_setting $mark $info}--> <!--{loop $systemlog_setting $mark $info}-->
<!--{if $info[is_open]==1 }--> <!--{if $info[is_open]==1 }-->
<li <!--{if $operation==$mark }-->class="active"<!--{/if}-->> <li <!--{if $operation==$mark }-->class="active"<!--{/if}-->>
<a hidefocus="true" href="{BASESCRIPT}?mod=systemlog&type=list&operation=$mark">{$info['title']}</a> <a hidefocus="true" href="{BASESCRIPT}?mod=systemlog&type=list&operation=$mark">{$info['title']}</a>
</li> </li>
<!--{/if}--> <!--{/if}-->
<!--{/loop}--> <!--{/loop}-->
</ul> </ul>
</div> </div>
<div class="main-content" style="border-top:1px solid #FFF"> <div class="main-content" style="border-top:1px solid #FFF">
<form id="cpform" action="{BASESCRIPT}?mod=systemlog&type=list&operation=$operation" class="form-horizontal form-horizontal-left" method="post" name="cpform"> <form id="cpform" action="{BASESCRIPT}?mod=systemlog&type=list&operation=$operation" class="form-horizontal form-horizontal-left" method="post" name="cpform">
<input type="hidden" value="{FORMHASH}" name="formhash"> <input type="hidden" value="{FORMHASH}" name="formhash">
<input type="hidden" name="lpp" value="20"> <input type="hidden" name="lpp" value="20">
<table class="table"> <table class="table">
<thead> <thead>
<th width="80">{lang operator}</th> <th width="80">{lang operator}</th>
<th width="80">{lang usergroup}</th> <th width="80">{lang usergroup}</th>
<th width="120">{lang ip}</th> <th width="120">{lang ip}</th>
<th width="120">{lang time}</th> <th width="120">{lang time}</th>
<th>{lang info}</th> <th>{lang info}</th>
</thead> </thead>
<!--{if $list}--> <!--{if $list}-->
<!--{loop $list $key $log}--> <!--{loop $list $key $log}-->
<tr> <tr>
<td>$log[2]</td> <td>$log[2]</td>
<td>$log[3]</td> <td>$log[3]</td>
<td>$log[4]</td> <td>$log[4]</td>
<td>$log[1]</td> <td>$log[1]</td>
<td> <td>
<a href="javascript:;" onclick="togglecplog('{$key}')">{eval echo cutstr($log[5], 200)}</a> <a href="javascript:;" onclick="togglecplog('{$key}')">{eval echo cutstr($log[5], 200)}</a>
</td> </td>
</tr> </tr>
<thead id="cplog_{$key}" style="display:none"> <thead id="cplog_{$key}" style="display:none">
<td colspan="10"> <td colspan="10">
{lang loginfo}: $log[5] {lang loginfo}: $log[5]
<br/>{lang visit}: $log[6] <br/>{lang visit}: $log[6]
<br/>{lang from}: $log[7]</td> <br/>{lang from}: $log[7]</td>
</thead> </thead>
<!--{/loop}--> <!--{/loop}-->
<tr> <tr>
<td colspan="15"> <td colspan="15">
<div class="pull-left input-group" style="width:100px;"> <div class="pull-left input-group" style="width:100px;">
<span class="input-group-addon">{lang logs_lpp}</span> <span class="input-group-addon">{lang logs_lpp}</span>
<select class="input-sm form-control" style="margin:0;width:60px;" onchange="if(this.options[this.selectedIndex].value != '') {this.form.lpp.value = this.options[this.selectedIndex].value;this.form.submit(); }"> <select class="input-sm form-control" style="margin:0;width:60px;" onchange="if(this.options[this.selectedIndex].value != '') {this.form.lpp.value = this.options[this.selectedIndex].value;this.form.submit(); }">
<option value="20" $checklpp[20]> 20 </option> <option value="20" $checklpp[20]> 20 </option>
<option value="40" $checklpp[40]> 40 </option> <option value="40" $checklpp[40]> 40 </option>
<option value="80" $checklpp[80]> 80 </option> <option value="80" $checklpp[80]> 80 </option>
</select> </select>
</div> </div>
<div class="pull-left input-group" style="width:128px;"> <div class="pull-left input-group" style="width:128px;">
<input type="text" class="input-sm form-control" style="width:90px;border-left:0" name="keyword" value="$_GET[keyword]"> <input type="text" class="input-sm form-control" style="width:90px;border-left:0" name="keyword" value="$_GET[keyword]">
<a href="javascript:;" class="input-group-addon" onclick="document.getElementById('cpform').submit();return false"><i class="glyphicon glyphicon-search"></i></a> <a href="javascript:;" class="input-group-addon" onclick="document.getElementById('cpform').submit();return false"><i class="glyphicon glyphicon-search"></i></a>
</div> </div>
$multipage $multipage
</td> </td>
</tr> </tr>
<!--{else}--> <!--{else}-->
<tr> <tr>
<td colspan="5">{lang there_no_such_results}</td> <td colspan="5">{lang there_no_such_results}</td>
</tr> </tr>
<!--{/if}--> <!--{/if}-->
</table> </table>
</form> </form>
<script type="text/javascript"> <script type="text/javascript">
function togglecplog(k) { function togglecplog(k) {
var cplogobj = document.getElementById('cplog_' + k); var cplogobj = document.getElementById('cplog_' + k);
if(cplogobj.style.display == 'none') { if(cplogobj.style.display == 'none') {
cplogobj.style.display = ''; cplogobj.style.display = '';
} else { } else {
cplogobj.style.display = 'none'; cplogobj.style.display = 'none';
} }
} }
</script> </script>
</div> </div>
</div> </div>
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
jQuery('.left-drager').leftDrager_layout(); jQuery('.left-drager').leftDrager_layout();
</script> </script>
<script src="static/bootstrap/js/bootstrap.min.js?{VERHASH}"></script> <script src="static/bootstrap/js/bootstrap.min.js?{VERHASH}"></script>
<!--{template common/footer_simple}--> <!--{template common/footer_simple}-->

View File

@@ -1,18 +1,18 @@
<?php <?php
/* /*
* 应用卸载文件; * 应用卸载文件;
* @copyright QiaoQiaoShiDai Internet Technology(Shanghai)Co.,Ltd * @copyright QiaoQiaoShiDai Internet Technology(Shanghai)Co.,Ltd
* @license https://www.oaooa.com/licenses/ * @license https://www.oaooa.com/licenses/
* *
* @link https://www.oaooa.com * @link https://www.oaooa.com
* @author qchlian * @author qchlian
*/ */
if(!defined('IN_OAOOA') || !defined('IN_ADMIN')) { if(!defined('IN_OAOOA') || !defined('IN_ADMIN')) {
exit('Access Denied'); exit('Access Denied');
} }
$sql = <<<EOF $sql = <<<EOF
DELETE FROM `dzz_setting` WHERE `dzz_setting`.`skey` = 'systemlog_setting'; DELETE FROM `dzz_setting` WHERE `dzz_setting`.`skey` = 'systemlog_setting';
DELETE FROM `dzz_setting` WHERE `dzz_setting`.`skey` = 'systemlog_open'; DELETE FROM `dzz_setting` WHERE `dzz_setting`.`skey` = 'systemlog_open';
EOF; EOF;
runquery($sql); runquery($sql);
$finish = true; $finish = true;

View File

@@ -1,8 +1,8 @@
<ul class="nav navbar-nav navbar-nav-left" style="min-width:168px"> <ul class="nav navbar-nav navbar-nav-left" style="min-width:168px">
<li> <li>
<a class="leftTopmenu" href="index.php?mod=appmanagement" style="padding:8px"><div class="gb_fc"><span class="dzz dzz-chevron-left" style="display:block"></span></div></a> <a class="leftTopmenu" href="index.php?mod=appmanagement" style="padding:8px"><div class="gb_fc"><span class="dzz dzz-chevron-left" style="display:block"></span></div></a>
</li> </li>
<li> <li>
<a href="{MOD_URL}">{lang appname}</a> <a href="{MOD_URL}">{lang appname}</a>
</li> </li>
</ul> </ul>

View File

@@ -1,55 +1,55 @@
<?php <?php
/* /*
* @copyright QiaoQiaoShiDai Internet Technology(Shanghai)Co.,Ltd * @copyright QiaoQiaoShiDai Internet Technology(Shanghai)Co.,Ltd
* @license https://www.oaooa.com/licenses/ * @license https://www.oaooa.com/licenses/
* *
* @link https://www.oaooa.com * @link https://www.oaooa.com
* @author zyx(zyx@oaooa.com) * @author zyx(zyx@oaooa.com)
*/ */
error_reporting(0); error_reporting(0);
define('SITEURL', strtolower(($_SERVER['HTTPS'] == 'on' ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/')))); define('SITEURL', strtolower(($_SERVER['HTTPS'] == 'on' ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'))));
$uid = isset($_GET['uid']) ? $_GET['uid'] : 0; $uid = isset($_GET['uid']) ? $_GET['uid'] : 0;
$size = isset($_GET['size']) ? $_GET['size'] : ''; $size = isset($_GET['size']) ? $_GET['size'] : '';
$random = isset($_GET['random']) ? $_GET['random'] : ''; $random = isset($_GET['random']) ? $_GET['random'] : '';
$type = isset($_GET['type']) ? $_GET['type'] : ''; $type = isset($_GET['type']) ? $_GET['type'] : '';
$check = isset($_GET['check_file_exists']) ? $_GET['check_file_exists'] : ''; $check = isset($_GET['check_file_exists']) ? $_GET['check_file_exists'] : '';
$avatar = './data/avatar/'.get_avatar($uid, $size, $type); $avatar = './data/avatar/'.get_avatar($uid, $size, $type);
if(file_exists(dirname(__FILE__).'/'.$avatar)) { if(file_exists(dirname(__FILE__).'/'.$avatar)) {
if($check) { if($check) {
echo 1; echo 1;
exit; exit;
} }
$random = !empty($random) ? rand(1000, 9999) : ''; $random = !empty($random) ? rand(1000, 9999) : '';
$avatar_url = empty($random) ? $avatar : $avatar.'?random='.$random; $avatar_url = empty($random) ? $avatar : $avatar.'?random='.$random;
} else { } else {
if($check) { if($check) {
echo 0; echo 0;
exit; exit;
} }
$size = in_array($size, array('big', 'middle', 'small')) ? $size : 'middle'; $size = in_array($size, array('big', 'middle', 'small')) ? $size : 'middle';
$avatar_url = 'data/avatar/noavatar_'.$size.'.gif'; $avatar_url = 'data/avatar/noavatar_'.$size.'.gif';
} }
if(empty($random)) { if(empty($random)) {
header("HTTP/1.1 301 Moved Permanently"); header("HTTP/1.1 301 Moved Permanently");
header("Last-Modified:".date('r')); header("Last-Modified:".date('r'));
header("Expires: ".date('r', time() + 86400)); header("Expires: ".date('r', time() + 86400));
} }
header('Location: '.SITEURL.'/'.$avatar_url); header('Location: '.SITEURL.'/'.$avatar_url);
exit; exit;
function get_avatar($uid, $size = 'middle', $type = '') { function get_avatar($uid, $size = 'middle', $type = '') {
$size = in_array($size, array('big', 'middle', 'small')) ? $size : 'middle'; $size = in_array($size, array('big', 'middle', 'small')) ? $size : 'middle';
$uid = abs(intval($uid)); $uid = abs(intval($uid));
$uid = sprintf("%09d", $uid); $uid = sprintf("%09d", $uid);
$dir1 = substr($uid, 0, 3); $dir1 = substr($uid, 0, 3);
$dir2 = substr($uid, 3, 2); $dir2 = substr($uid, 3, 2);
$dir3 = substr($uid, 5, 2); $dir3 = substr($uid, 5, 2);
$typeadd = $type == 'real' ? '_real' : ''; $typeadd = $type == 'real' ? '_real' : '';
return $dir1.'/'.$dir2.'/'.$dir3.'/'.substr($uid, -2).$typeadd."_avatar_$size.jpg"; return $dir1.'/'.$dir2.'/'.$dir3.'/'.substr($uid, -2).$typeadd."_avatar_$size.jpg";
} }
?> ?>

View File

@@ -1,37 +1,37 @@
<?php <?php
$_config = array(); $_config = array();
$_config['namespacelist'] = array( $_config['namespacelist'] = array(
'root' =>DZZ_ROOT, 'root' =>DZZ_ROOT,
'coreroot' => DZZ_ROOT.'core', 'coreroot' => DZZ_ROOT.'core',
'admin' => DZZ_ROOT.'admin', 'admin' => DZZ_ROOT.'admin',
'core' => CORE_PATH, 'core' => CORE_PATH,
'dzz' => DZZ_ROOT.APP_DIRNAME, 'dzz' => DZZ_ROOT.APP_DIRNAME,
'user' => DZZ_ROOT.'user', 'user' => DZZ_ROOT.'user',
'misc' => DZZ_ROOT.'misc' 'misc' => DZZ_ROOT.'misc'
); );
$_config['default_mod'] = 'index'; $_config['default_mod'] = 'index';
$_config['default_op'] = 'index'; $_config['default_op'] = 'index';
$_config['default_action'] = 'index'; $_config['default_action'] = 'index';
/** /**
* 其它配置 * 其它配置
*/ */
$_config['allow_robot'] = false; $_config['allow_robot'] = false;
$_config['allow_view'] = 0;//(0=>所有人,1=>用户,2=>管理员,3=>创始人) $_config['allow_view'] = 0;//(0=>所有人,1=>用户,2=>管理员,3=>创始人)
$_config['libfile'] = ''; $_config['libfile'] = '';
$_config['language'] = ''; $_config['language'] = '';
$_config['mod_view_perm'] = ''; $_config['mod_view_perm'] = '';
$_config['action_name'] = 'do'; $_config['action_name'] = 'do';
$_config['do_name'] = 'action'; $_config['do_name'] = 'action';
$_config['profile']['privacy'] = array( $_config['profile']['privacy'] = array(
'-1'=>'私密', '-1'=>'私密',
'0'=>'公开', '0'=>'公开',
'1'=>'本部门可见', '1'=>'本部门可见',
'2'=>'本机构可见', '2'=>'本机构可见',
); );
return $_config; return $_config;

View File

@@ -1,22 +1,22 @@
<?php <?php
/* /*
* @copyright QiaoQiaoShiDai Internet Technology(Shanghai)Co.,Ltd * @copyright QiaoQiaoShiDai Internet Technology(Shanghai)Co.,Ltd
* @license https://www.oaooa.com/licenses/ * @license https://www.oaooa.com/licenses/
* *
* @link https://www.oaooa.com * @link https://www.oaooa.com
* @author zyx(zyx@oaooa.com) * @author zyx(zyx@oaooa.com)
*/ */
require __DIR__.'/coreBase.php'; require __DIR__.'/coreBase.php';
$dzz = C::app(); $dzz = C::app();
Hook::listen('dzz_initbefore');//初始化前钩子 Hook::listen('dzz_initbefore');//初始化前钩子
$dzz->init(); $dzz->init();
$admincp = new dzz_admincp(); $admincp = new dzz_admincp();
$admincp->core = $dzz; $admincp->core = $dzz;
$admincp->init(); $admincp->init();
Hook::listen('dzz_initafter');//初始化后钩子 Hook::listen('dzz_initafter');//初始化后钩子
$files = Hook::listen('dzz_route',$_GET);//路由钩子,返回文件路径 $files = Hook::listen('dzz_route',$_GET);//路由钩子,返回文件路径
foreach($files as $v){ foreach($files as $v){
require $v;//包含文件 require $v;//包含文件
} }

View File

@@ -1,77 +1,77 @@
<?php <?php
if(!defined('IN_OAOOA')) { if(!defined('IN_OAOOA')) {
exit('Access Denied'); exit('Access Denied');
} }
class ultrax_cache { class ultrax_cache {
function ultrax_cache($conf) { function ultrax_cache($conf) {
$this->conf = $conf; $this->conf = $conf;
} }
function get_cache($key) { function get_cache($key) {
if($this->cache_exists($key)) { if($this->cache_exists($key)) {
$data = $this->_get_cache($key); $data = $this->_get_cache($key);
return $data['data']; return $data['data'];
} }
return false; return false;
} }
function set_cache($key, $value, $life) { function set_cache($key, $value, $life) {
global $_G; global $_G;
$data = array($key => array('data' => $value, 'life' => $life)); $data = array($key => array('data' => $value, 'life' => $life));
require_once libfile('function/cache'); require_once libfile('function/cache');
$cache_file = $this->get_cache_file_path($key); $cache_file = $this->get_cache_file_path($key);
dmkdir(dirname($cache_file)); dmkdir(dirname($cache_file));
$cachedata = "\$data = ".arrayeval($data).";\n"; $cachedata = "\$data = ".arrayeval($data).";\n";
if($fp = @fopen($cache_file, 'wb')) { if($fp = @fopen($cache_file, 'wb')) {
fwrite($fp, "<?php\n//Dzz! cache file, DO NOT modify me!". fwrite($fp, "<?php\n//Dzz! cache file, DO NOT modify me!".
"\n//Created: ".date("M j, Y, G:i"). "\n//Created: ".date("M j, Y, G:i").
"\n//Identify: ".md5($cache_file.$cachedata.$_G['config']['security']['authkey'])."\n\nif(!defined('IN_OAOOA')) {\n\texit('Access Denied');\n}\n\n$cachedata?>"); "\n//Identify: ".md5($cache_file.$cachedata.$_G['config']['security']['authkey'])."\n\nif(!defined('IN_OAOOA')) {\n\texit('Access Denied');\n}\n\n$cachedata?>");
fclose($fp); fclose($fp);
} else { } else {
exit('Can not write to cache files, please check directory ./data/ and ./data/ultraxcache/ .'); exit('Can not write to cache files, please check directory ./data/ and ./data/ultraxcache/ .');
} }
return true; return true;
} }
function del_cache($key) { function del_cache($key) {
$cache_file = $this->get_cache_file_path($key); $cache_file = $this->get_cache_file_path($key);
if(file_exists($cache_file)) { if(file_exists($cache_file)) {
return @unlink($cache_file); return @unlink($cache_file);
} }
return true; return true;
} }
function _get_cache($key) { function _get_cache($key) {
static $data = null; static $data = null;
if(!isset($data[$key])) { if(!isset($data[$key])) {
include $this->get_cache_file_path($key); include $this->get_cache_file_path($key);
} }
return $data[$key]; return $data[$key];
} }
function cache_exists($key) { function cache_exists($key) {
$cache_file = $this->get_cache_file_path($key); $cache_file = $this->get_cache_file_path($key);
if(!file_exists($cache_file)) { if(!file_exists($cache_file)) {
return false; return false;
} }
$data = $this->_get_cache($key); $data = $this->_get_cache($key);
if($data['life'] && (filemtime($cache_file) < time() - $data['life'])) { if($data['life'] && (filemtime($cache_file) < time() - $data['life'])) {
return false; return false;
} }
return true; return true;
} }
function get_cache_file_path($key) { function get_cache_file_path($key) {
static $cache_path = null; static $cache_path = null;
if(!isset($cache_path[$key])) { if(!isset($cache_path[$key])) {
$dir = hexdec($key{0}.$key{1}.$key{2}) % 1000; $dir = hexdec($key{0}.$key{1}.$key{2}) % 1000;
$cache_path[$key] = $this->conf['path'].'/'.$dir.'/'.$key.'.php'; $cache_path[$key] = $this->conf['path'].'/'.$dir.'/'.$key.'.php';
} }
return $cache_path[$key]; return $cache_path[$key];
} }
} }
?> ?>

View File

@@ -1,41 +1,41 @@
<?php <?php
if(!defined('IN_OAOOA')) { if(!defined('IN_OAOOA')) {
exit('Access Denied'); exit('Access Denied');
} }
class ultrax_cache { class ultrax_cache {
function ultrax_cache($conf) { function ultrax_cache($conf) {
$this->conf = $conf; $this->conf = $conf;
} }
function get_cache($key) { function get_cache($key) {
static $data = null; static $data = null;
if(!isset($data[$key])) { if(!isset($data[$key])) {
$cache = C::t('cache')->fetch($key); $cache = C::t('cache')->fetch($key);
if(!$cache) { if(!$cache) {
return false; return false;
} }
$data[$key] = unserialize($cache['cachevalue']); $data[$key] = unserialize($cache['cachevalue']);
if($cache['life'] && ($cache['dateline'] < time() - $data[$key]['life'])) { if($cache['life'] && ($cache['dateline'] < time() - $data[$key]['life'])) {
return false; return false;
} }
} }
return $data[$key]['data']; return $data[$key]['data'];
} }
function set_cache($key, $value, $life) { function set_cache($key, $value, $life) {
$data = array( $data = array(
'cachekey' => $key, 'cachekey' => $key,
'cachevalue' => serialize(array('data' => $value, 'life' => $life)), 'cachevalue' => serialize(array('data' => $value, 'life' => $life)),
'dateline' => time(), 'dateline' => time(),
); );
return C::t('cache')->insert($data); return C::t('cache')->insert($data);
} }
function del_cache($key) { function del_cache($key) {
return C::t('cache')->delete($key); return C::t('cache')->delete($key);
} }
} }
?> ?>

View File

@@ -1,9 +1,9 @@
<?php <?php
if(!defined('IN_OAOOA')) { if(!defined('IN_OAOOA')) {
exit('Access Denied'); exit('Access Denied');
} }
class CException extends Exception{ class CException extends Exception{
} }
?> ?>

View File

@@ -1,239 +1,239 @@
<?php <?php
if(!defined('IN_OAOOA')) { if(!defined('IN_OAOOA')) {
exit('Access Denied'); exit('Access Denied');
} }
define('CODETABLE_DIR', DZZ_ROOT.'./core/class/chinesetable/'); define('CODETABLE_DIR', DZZ_ROOT.'./core/class/chinesetable/');
class Chinese { class Chinese {
var $table = ''; var $table = '';
var $iconv_enabled = false; var $iconv_enabled = false;
var $convertbig5 = false; var $convertbig5 = false;
var $unicode_table = array(); var $unicode_table = array();
var $config = array ( var $config = array (
'SourceLang' => '', 'SourceLang' => '',
'TargetLang' => '', 'TargetLang' => '',
'GBtoUnicode_table' => 'gb-unicode.table', 'GBtoUnicode_table' => 'gb-unicode.table',
'BIG5toUnicode_table' => 'big5-unicode.table', 'BIG5toUnicode_table' => 'big5-unicode.table',
'GBtoBIG5_table' => 'gb-big5.table', 'GBtoBIG5_table' => 'gb-big5.table',
); );
function Chinese($SourceLang, $TargetLang, $ForceTable = FALSE) { function Chinese($SourceLang, $TargetLang, $ForceTable = FALSE) {
$this->config['SourceLang'] = $this->_lang($SourceLang); $this->config['SourceLang'] = $this->_lang($SourceLang);
$this->config['TargetLang'] = $this->_lang($TargetLang); $this->config['TargetLang'] = $this->_lang($TargetLang);
if(ICONV_ENABLE && $this->config['TargetLang'] != 'BIG5' && !$ForceTable) { if(ICONV_ENABLE && $this->config['TargetLang'] != 'BIG5' && !$ForceTable) {
$this->iconv_enabled = true; $this->iconv_enabled = true;
} else { } else {
$this->iconv_enabled = false; $this->iconv_enabled = false;
$this->OpenTable(); $this->OpenTable();
} }
} }
function _lang($LangCode) { function _lang($LangCode) {
$LangCode = strtoupper($LangCode); $LangCode = strtoupper($LangCode);
if(substr($LangCode, 0, 2) == 'GB') { if(substr($LangCode, 0, 2) == 'GB') {
return 'GBK'; return 'GBK';
} elseif(substr($LangCode, 0, 3) == 'BIG') { } elseif(substr($LangCode, 0, 3) == 'BIG') {
return 'BIG5'; return 'BIG5';
} elseif(substr($LangCode, 0, 3) == 'UTF') { } elseif(substr($LangCode, 0, 3) == 'UTF') {
return 'UTF-8'; return 'UTF-8';
} elseif(substr($LangCode, 0, 3) == 'UNI') { } elseif(substr($LangCode, 0, 3) == 'UNI') {
return 'UNICODE'; return 'UNICODE';
} }
} }
function _hex2bin($hexdata) { function _hex2bin($hexdata) {
for($i=0; $i < strlen($hexdata); $i += 2) { for($i=0; $i < strlen($hexdata); $i += 2) {
$bindata .= chr(hexdec(substr($hexdata, $i, 2))); $bindata .= chr(hexdec(substr($hexdata, $i, 2)));
} }
return $bindata; return $bindata;
} }
function OpenTable() { function OpenTable() {
$this->unicode_table = array(); $this->unicode_table = array();
if(!$this->iconv_enabled && $this->config['TargetLang'] == 'BIG5') { if(!$this->iconv_enabled && $this->config['TargetLang'] == 'BIG5') {
$this->config['TargetLang'] = 'GBK'; $this->config['TargetLang'] = 'GBK';
$this->convertbig5 = TRUE; $this->convertbig5 = TRUE;
} }
if($this->config['SourceLang'] == 'GBK' || $this->config['TargetLang'] == 'GBK') { if($this->config['SourceLang'] == 'GBK' || $this->config['TargetLang'] == 'GBK') {
$this->table = CODETABLE_DIR.$this->config['GBtoUnicode_table']; $this->table = CODETABLE_DIR.$this->config['GBtoUnicode_table'];
} elseif($this->config['SourceLang'] == 'BIG5' || $this->config['TargetLang'] == 'BIG5') { } elseif($this->config['SourceLang'] == 'BIG5' || $this->config['TargetLang'] == 'BIG5') {
$this->table = CODETABLE_DIR.$this->config['BIG5toUnicode_table']; $this->table = CODETABLE_DIR.$this->config['BIG5toUnicode_table'];
} }
$fp = fopen($this->table, 'rb'); $fp = fopen($this->table, 'rb');
$tabletmp = fread($fp, filesize($this->table)); $tabletmp = fread($fp, filesize($this->table));
for($i = 0; $i < strlen($tabletmp); $i += 4) { for($i = 0; $i < strlen($tabletmp); $i += 4) {
$tmp = unpack('nkey/nvalue', substr($tabletmp, $i, 4)); $tmp = unpack('nkey/nvalue', substr($tabletmp, $i, 4));
if($this->config['TargetLang'] == 'UTF-8') { if($this->config['TargetLang'] == 'UTF-8') {
$this->unicode_table[$tmp['key']] = '0x'.dechex($tmp['value']); $this->unicode_table[$tmp['key']] = '0x'.dechex($tmp['value']);
} elseif($this->config['SourceLang'] == 'UTF-8') { } elseif($this->config['SourceLang'] == 'UTF-8') {
$this->unicode_table[$tmp['value']] = '0x'.dechex($tmp['key']); $this->unicode_table[$tmp['value']] = '0x'.dechex($tmp['key']);
} elseif($this->config['TargetLang'] == 'UNICODE') { } elseif($this->config['TargetLang'] == 'UNICODE') {
$this->unicode_table[$tmp['key']] = dechex($tmp['value']); $this->unicode_table[$tmp['key']] = dechex($tmp['value']);
} }
} }
} }
function CHSUtoUTF8($c) { function CHSUtoUTF8($c) {
$str = ''; $str = '';
if($c < 0x80) { if($c < 0x80) {
$str .= $c; $str .= $c;
} elseif($c < 0x800) { } elseif($c < 0x800) {
$str .= (0xC0 | $c >> 6); $str .= (0xC0 | $c >> 6);
$str .= (0x80 | $c & 0x3F); $str .= (0x80 | $c & 0x3F);
} elseif($c < 0x10000) { } elseif($c < 0x10000) {
$str .= (0xE0 | $c >> 12); $str .= (0xE0 | $c >> 12);
$str .= (0x80 | $c >> 6 & 0x3F); $str .= (0x80 | $c >> 6 & 0x3F);
$str .=( 0x80 | $c & 0x3F); $str .=( 0x80 | $c & 0x3F);
} elseif($c < 0x200000) { } elseif($c < 0x200000) {
$str .= (0xF0 | $c >> 18); $str .= (0xF0 | $c >> 18);
$str .= (0x80 | $c >> 12 & 0x3F); $str .= (0x80 | $c >> 12 & 0x3F);
$str .= (0x80 | $c >> 6 & 0x3F); $str .= (0x80 | $c >> 6 & 0x3F);
$str .= (0x80 | $c & 0x3F); $str .= (0x80 | $c & 0x3F);
} }
return $str; return $str;
} }
function GB2312toBIG5($c) { function GB2312toBIG5($c) {
$f = fopen(CODETABLE_DIR.$this->config['GBtoBIG5_table'], 'r'); $f = fopen(CODETABLE_DIR.$this->config['GBtoBIG5_table'], 'r');
$max=strlen($c)-1; $max=strlen($c)-1;
for($i = 0;$i < $max;$i++){ for($i = 0;$i < $max;$i++){
$h=ord($c[$i]); $h=ord($c[$i]);
if($h>=160) { if($h>=160) {
$l=ord($c[$i+1]); $l=ord($c[$i+1]);
if($h==161 && $l==64){ if($h==161 && $l==64){
$gb=" "; $gb=" ";
} else{ } else{
fseek($f,($h-160)*510+($l-1)*2); fseek($f,($h-160)*510+($l-1)*2);
$gb=fread($f,2); $gb=fread($f,2);
} }
$c[$i]=$gb[0]; $c[$i]=$gb[0];
$c[$i+1]=$gb[1]; $c[$i+1]=$gb[1];
$i++; $i++;
} }
} }
$result = $c; $result = $c;
return $result; return $result;
} }
function Convert($SourceText) { function Convert($SourceText) {
if($this->config['SourceLang'] == $this->config['TargetLang']) { if($this->config['SourceLang'] == $this->config['TargetLang']) {
return $SourceText; return $SourceText;
} elseif($this->iconv_enabled) { } elseif($this->iconv_enabled) {
if($this->config['TargetLang'] <> 'UNICODE') { if($this->config['TargetLang'] <> 'UNICODE') {
return iconv($this->config['SourceLang'], $this->config['TargetLang'], $SourceText); return iconv($this->config['SourceLang'], $this->config['TargetLang'], $SourceText);
} else { } else {
$return = ''; $return = '';
while($SourceText != '') { while($SourceText != '') {
if(ord(substr($SourceText, 0, 1)) > 127) { if(ord(substr($SourceText, 0, 1)) > 127) {
$return .= "&#x".dechex($this->Utf8_Unicode(iconv($this->config['SourceLang'],"UTF-8", substr($SourceText, 0, 2)))).";"; $return .= "&#x".dechex($this->Utf8_Unicode(iconv($this->config['SourceLang'],"UTF-8", substr($SourceText, 0, 2)))).";";
$SourceText = substr($SourceText, 2, strlen($SourceText)); $SourceText = substr($SourceText, 2, strlen($SourceText));
} else { } else {
$return .= substr($SourceText, 0, 1); $return .= substr($SourceText, 0, 1);
$SourceText = substr($SourceText, 1, strlen($SourceText)); $SourceText = substr($SourceText, 1, strlen($SourceText));
} }
} }
return $return; return $return;
} }
} elseif($this->config['TargetLang'] == 'UNICODE') { } elseif($this->config['TargetLang'] == 'UNICODE') {
$utf = ''; $utf = '';
while($SourceText != '') { while($SourceText != '') {
if(ord(substr($SourceText, 0, 1)) > 127) { if(ord(substr($SourceText, 0, 1)) > 127) {
if($this->config['SourceLang'] == 'GBK') { if($this->config['SourceLang'] == 'GBK') {
$utf .= '&#x'.$this->unicode_table[hexdec(bin2hex(substr($SourceText, 0, 2))) - 0x8080].';'; $utf .= '&#x'.$this->unicode_table[hexdec(bin2hex(substr($SourceText, 0, 2))) - 0x8080].';';
} elseif($this->config['SourceLang'] == 'BIG5') { } elseif($this->config['SourceLang'] == 'BIG5') {
$utf .= '&#x'.$this->unicode_table[hexdec(bin2hex(substr($SourceText, 0, 2)))].';'; $utf .= '&#x'.$this->unicode_table[hexdec(bin2hex(substr($SourceText, 0, 2)))].';';
} }
$SourceText = substr($SourceText, 2, strlen($SourceText)); $SourceText = substr($SourceText, 2, strlen($SourceText));
} else { } else {
$utf .= substr($SourceText, 0, 1); $utf .= substr($SourceText, 0, 1);
$SourceText = substr($SourceText, 1, strlen($SourceText)); $SourceText = substr($SourceText, 1, strlen($SourceText));
} }
} }
return $utf; return $utf;
} else { } else {
$ret = ''; $ret = '';
if($this->config['SourceLang'] == 'UTF-8') { if($this->config['SourceLang'] == 'UTF-8') {
$out = ''; $out = '';
$len = strlen($SourceText); $len = strlen($SourceText);
$i = 0; $i = 0;
while($i < $len) { while($i < $len) {
$c = ord(substr($SourceText, $i++, 1)); $c = ord(substr($SourceText, $i++, 1));
switch($c >> 4) { switch($c >> 4) {
case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:
$out .= substr($SourceText, $i - 1, 1); $out .= substr($SourceText, $i - 1, 1);
break; break;
case 12: case 13: case 12: case 13:
$char2 = ord(substr($SourceText, $i++, 1)); $char2 = ord(substr($SourceText, $i++, 1));
$char3 = $this->unicode_table[(($c & 0x1F) << 6) | ($char2 & 0x3F)]; $char3 = $this->unicode_table[(($c & 0x1F) << 6) | ($char2 & 0x3F)];
if($this->config['TargetLang'] == 'GBK') { if($this->config['TargetLang'] == 'GBK') {
$out .= $this->_hex2bin(dechex($char3 + 0x8080)); $out .= $this->_hex2bin(dechex($char3 + 0x8080));
} elseif($this->config['TargetLang'] == 'BIG5') { } elseif($this->config['TargetLang'] == 'BIG5') {
$out .= $this->_hex2bin($char3); $out .= $this->_hex2bin($char3);
} }
break; break;
case 14: case 14:
$char2 = ord(substr($SourceText, $i++, 1)); $char2 = ord(substr($SourceText, $i++, 1));
$char3 = ord(substr($SourceText, $i++, 1)); $char3 = ord(substr($SourceText, $i++, 1));
$char4 = $this->unicode_table[(($c & 0x0F) << 12) | (($char2 & 0x3F) << 6) | (($char3 & 0x3F) << 0)]; $char4 = $this->unicode_table[(($c & 0x0F) << 12) | (($char2 & 0x3F) << 6) | (($char3 & 0x3F) << 0)];
if($this->config['TargetLang'] == 'GBK') { if($this->config['TargetLang'] == 'GBK') {
$out .= $this->_hex2bin(dechex($char4 + 0x8080)); $out .= $this->_hex2bin(dechex($char4 + 0x8080));
} elseif($this->config['TargetLang'] == 'BIG5') { } elseif($this->config['TargetLang'] == 'BIG5') {
$out .= $this->_hex2bin($char4); $out .= $this->_hex2bin($char4);
} }
break; break;
} }
} }
return !$this->convertbig5 ? $out : $this->GB2312toBIG5($out); return !$this->convertbig5 ? $out : $this->GB2312toBIG5($out);
} else { } else {
while($SourceText != '') { while($SourceText != '') {
if(ord(substr($SourceText, 0, 1)) > 127) { if(ord(substr($SourceText, 0, 1)) > 127) {
if($this->config['SourceLang'] == 'BIG5') { if($this->config['SourceLang'] == 'BIG5') {
$utf8 = $this->CHSUtoUTF8(hexdec($this->unicode_table[hexdec(bin2hex(substr($SourceText, 0, 2)))])); $utf8 = $this->CHSUtoUTF8(hexdec($this->unicode_table[hexdec(bin2hex(substr($SourceText, 0, 2)))]));
} elseif($this->config['SourceLang'] == 'GBK') { } elseif($this->config['SourceLang'] == 'GBK') {
$utf8=$this->CHSUtoUTF8(hexdec($this->unicode_table[hexdec(bin2hex(substr($SourceText, 0, 2))) - 0x8080])); $utf8=$this->CHSUtoUTF8(hexdec($this->unicode_table[hexdec(bin2hex(substr($SourceText, 0, 2))) - 0x8080]));
} }
for($i = 0; $i < strlen($utf8); $i += 3) { for($i = 0; $i < strlen($utf8); $i += 3) {
$ret .= chr(substr($utf8, $i, 3)); $ret .= chr(substr($utf8, $i, 3));
} }
$SourceText = substr($SourceText, 2, strlen($SourceText)); $SourceText = substr($SourceText, 2, strlen($SourceText));
} else { } else {
$ret .= substr($SourceText, 0, 1); $ret .= substr($SourceText, 0, 1);
$SourceText = substr($SourceText, 1, strlen($SourceText)); $SourceText = substr($SourceText, 1, strlen($SourceText));
} }
} }
$SourceText = ''; $SourceText = '';
return $ret; return $ret;
} }
} }
} }
function Utf8_Unicode($char) { function Utf8_Unicode($char) {
switch(strlen($char)) { switch(strlen($char)) {
case 1: case 1:
return ord($char); return ord($char);
case 2: case 2:
$n = (ord($char[0]) & 0x3f) << 6; $n = (ord($char[0]) & 0x3f) << 6;
$n += ord($char[1]) & 0x3f; $n += ord($char[1]) & 0x3f;
return $n; return $n;
case 3: case 3:
$n = (ord($char[0]) & 0x1f) << 12; $n = (ord($char[0]) & 0x1f) << 12;
$n += (ord($char[1]) & 0x3f) << 6; $n += (ord($char[1]) & 0x3f) << 6;
$n += ord($char[2]) & 0x3f; $n += ord($char[2]) & 0x3f;
return $n; return $n;
case 4: case 4:
$n = (ord($char[0]) & 0x0f) << 18; $n = (ord($char[0]) & 0x0f) << 18;
$n += (ord($char[1]) & 0x3f) << 12; $n += (ord($char[1]) & 0x3f) << 12;
$n += (ord($char[2]) & 0x3f) << 6; $n += (ord($char[2]) & 0x3f) << 6;
$n += ord($char[3]) & 0x3f; $n += ord($char[3]) & 0x3f;
return $n; return $n;
} }
} }
} }
?> ?>

View File

@@ -1,262 +1,262 @@
<?php <?php
/** /**
* This file is part of the ImagePalette package. * This file is part of the ImagePalette package.
* *
* (c) Brian McDonald <brian@brianmcdonald.io> * (c) Brian McDonald <brian@brianmcdonald.io>
* (c) gandalfx - https://github.com/gandalfx * (c) gandalfx - https://github.com/gandalfx
* *
* For the full copyright and license information, please view the LICENSE * For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code. * file that was distributed with this source code.
*/ */
/** /**
* *
* Represents an argb color * Represents an argb color
* *
* @author Gandalfx * @author Gandalfx
* @package BrianMcdo\ImagePalette * @package BrianMcdo\ImagePalette
* *
*/ */
class Color { class Color {
/** /**
* Red value * Red value
* @var int * @var int
*/ */
public $r; public $r;
/** /**
* Green value * Green value
* @var int * @var int
*/ */
public $g; public $g;
/** /**
* Blue value * Blue value
* @var int * @var int
*/ */
public $b; public $b;
/** /**
* Alpha value * Alpha value
* @var int * @var int
*/ */
public $a; public $a;
/** /**
* Construct new Color * Construct new Color
* *
* @param int|array $color * @param int|array $color
* @param bool $short * @param bool $short
*/ */
//颜色16进制转RGB //颜色16进制转RGB
static function hex2rgb($color){ static function hex2rgb($color){
if ( $color[0] == '#' ) { if ( $color[0] == '#' ) {
$color = substr( $color, 1 ); $color = substr( $color, 1 );
} }
if ( strlen( $color ) == 6 ) { if ( strlen( $color ) == 6 ) {
list( $r, $g, $b ) = array( $color[0] . $color[1], $color[2] . $color[3], $color[4] . $color[5] ); list( $r, $g, $b ) = array( $color[0] . $color[1], $color[2] . $color[3], $color[4] . $color[5] );
} elseif ( strlen( $color ) == 3 ) { } elseif ( strlen( $color ) == 3 ) {
list( $r, $g, $b ) = array( $color[0] . $color[0], $color[1] . $color[1], $color[2] . $color[2] ); list( $r, $g, $b ) = array( $color[0] . $color[0], $color[1] . $color[1], $color[2] . $color[2] );
} else { } else {
return false; return false;
} }
$r = hexdec( $r ); $r = hexdec( $r );
$g = hexdec( $g ); $g = hexdec( $g );
$b = hexdec( $b ); $b = hexdec( $b );
$a = hexdec( $b ); $a = hexdec( $b );
return array( $r, $g, $b ); return array( $r, $g, $b );
} }
public function __construct($color = 0x000000, $short = false) public function __construct($color = 0x000000, $short = false)
{ {
if (is_numeric($color)) { if (is_numeric($color)) {
if ($short) { if ($short) {
$this->r = (($color >> 8) & 0xf) * 0x11; $this->r = (($color >> 8) & 0xf) * 0x11;
$this->g = (($color >> 4) & 0xf) * 0x11; $this->g = (($color >> 4) & 0xf) * 0x11;
$this->b = ($color & 0xf) * 0x11; $this->b = ($color & 0xf) * 0x11;
$this->a = (($color >> 12) & 0xf) * 0x11; $this->a = (($color >> 12) & 0xf) * 0x11;
} else { } else {
$this->r = ($color >> 16) & 0xff; $this->r = ($color >> 16) & 0xff;
$this->g = ($color >> 8) & 0xff; $this->g = ($color >> 8) & 0xff;
$this->b = $color & 0xff; $this->b = $color & 0xff;
$this->a = ($color >> 24) & 0xff; $this->a = ($color >> 24) & 0xff;
} }
} elseif (is_array($color)) { } elseif (is_array($color)) {
list($this->r, $this->g, $this->b) = $color; list($this->r, $this->g, $this->b) = $color;
if (count($color) > 3) if (count($color) > 3)
$this->a = $color[3]; $this->a = $color[3];
} }
} }
/** /**
* Some useful magic getters * Some useful magic getters
* *
* @param string $property * @param string $property
* @throws \Exception * @throws \Exception
* @return mixed * @return mixed
*/ */
public function __get($property) public function __get($property)
{ {
$method = 'to' . ucfirst($property); $method = 'to' . ucfirst($property);
if (method_exists($this, $method)) if (method_exists($this, $method))
return $this->$method(); return $this->$method();
switch ($property) { switch ($property) {
case 'red': case 'getRed': case 'red': case 'getRed':
return $this->r; return $this->r;
case 'green': case 'getGreen': case 'green': case 'getGreen':
return $this->g; return $this->g;
case 'blue': case 'getBlue': case 'blue': case 'getBlue':
return $this->b; return $this->b;
case 'alpha': case 'getAlpha': case 'alpha': case 'getAlpha':
return $this->a; return $this->a;
} }
throw new \Exception("Property $property does not exist"); throw new \Exception("Property $property does not exist");
} }
/** /**
* Magic method, alias for toHexString * Magic method, alias for toHexString
* *
* @see toHexString() * @see toHexString()
* @return string * @return string
*/ */
public function __toString() public function __toString()
{ {
return $this->toHexString(); return $this->toHexString();
} }
/** /**
* Returns the difference between this color * Returns the difference between this color
* and the provided color * and the provided color
* using simple pythagoras *without* sqrt * using simple pythagoras *without* sqrt
* *
* @param int|Color * @param int|Color
* @return int * @return int
*/ */
public function getDiff($color) public function getDiff($color)
{ {
if (!$color instanceof Color) { if (!$color instanceof Color) {
$color = new Color($color); $color = new Color($color);
} }
return pow($this->r - $color->r, 2) return pow($this->r - $color->r, 2)
+ pow($this->g - $color->g, 2) + pow($this->g - $color->g, 2)
+ pow($this->b - $color->b, 2); + pow($this->b - $color->b, 2);
} }
/** /**
* Whether or not this color has an alpha value > 0 * Whether or not this color has an alpha value > 0
* *
* @see isTransparent for full transparency * @see isTransparent for full transparency
* @return boolean * @return boolean
*/ */
public function hasAlpha() public function hasAlpha()
{ {
return (boolean) $this->a; return (boolean) $this->a;
} }
/** /**
* Detect Transparency using GD * Detect Transparency using GD
* Returns true if the provided color has zero opacity * Returns true if the provided color has zero opacity
* *
* @return bool * @return bool
*/ */
public function isTransparent() public function isTransparent()
{ {
return $this->a === 127; return $this->a === 127;
} }
/** /**
* Returns an array containing int values for * Returns an array containing int values for
* red, green, blue and alpha * red, green, blue and alpha
* *
* @return array * @return array
*/ */
public function toArray() public function toArray()
{ {
return array($this->r, $this->g, $this->b, $this->a); return array($this->r, $this->g, $this->b, $this->a);
} }
/** /**
* Returns an array containing int values for * Returns an array containing int values for
* red, green and blue * red, green and blue
* *
* @return array * @return array
*/ */
public function toRgb() public function toRgb()
{ {
return array($this->r, $this->g, $this->b); return array($this->r, $this->g, $this->b);
} }
/** /**
* Returns an array containing int values for * Returns an array containing int values for
* red, green and blue and a double for alpha * red, green and blue and a double for alpha
* *
* @return array * @return array
*/ */
public function toRgba() public function toRgba()
{ {
return array($this->r, $this->g, $this->b, 1 - $this->a / 0x100); return array($this->r, $this->g, $this->b, 1 - $this->a / 0x100);
} }
/** /**
* Returns an int representing the color * Returns an int representing the color
* defined by the red, green and blue values * defined by the red, green and blue values
* *
* @return int * @return int
*/ */
public function toInt() public function toInt()
{ {
return ($this->r << 16) | ($this->g << 8) | $this->b; return ($this->r << 16) | ($this->g << 8) | $this->b;
} }
/** /**
* Render 6-digit hexadecimal string representation * Render 6-digit hexadecimal string representation
* like '#abcdef' * like '#abcdef'
* *
* @param string $prefix defaults to '#' * @param string $prefix defaults to '#'
* @return string * @return string
*/ */
public function toHexString($prefix = '#') public function toHexString($prefix = '#')
{ {
return $prefix . str_pad(dechex($this->toInt()), 6, '0', STR_PAD_LEFT); return $prefix . str_pad(dechex($this->toInt()), 6, '0', STR_PAD_LEFT);
} }
/** /**
* Render 3-integer decimal string representation * Render 3-integer decimal string representation
* like 'rgb(123,0,20)' * like 'rgb(123,0,20)'
* *
* @param string $prefix defaults to 'rgb' * @param string $prefix defaults to 'rgb'
* @return string * @return string
*/ */
public function toRgbString($prefix = 'rgb') public function toRgbString($prefix = 'rgb')
{ {
return $prefix . '(' return $prefix . '('
. $this->r . ',' . $this->r . ','
. $this->g . ',' . $this->g . ','
. $this->b . ')'; . $this->b . ')';
} }
/** /**
* Render 3-integer decimal string representation * Render 3-integer decimal string representation
* like 'rgba(123,0,20,0.5)' * like 'rgba(123,0,20,0.5)'
* *
* @param string $prefix defaults to 'argb' * @param string $prefix defaults to 'argb'
* @param int $alphaPrecision max alpha digits, default 2 * @param int $alphaPrecision max alpha digits, default 2
* @return string * @return string
*/ */
public function toRgbaString($prefix = 'rgba', $alphaPrecision = 2) public function toRgbaString($prefix = 'rgba', $alphaPrecision = 2)
{ {
return $prefix . '(' return $prefix . '('
. $this->r . ',' . $this->r . ','
. $this->g . ',' . $this->g . ','
. $this->b . ',' . $this->b . ','
. round(1 - $this->a / 0x100, $alphaPrecision) . ')'; . round(1 - $this->a / 0x100, $alphaPrecision) . ')';
} }
} }

View File

@@ -1,20 +1,20 @@
<?php <?php
if(!defined('IN_OAOOA')) { if(!defined('IN_OAOOA')) {
exit('Access Denied'); exit('Access Denied');
} }
class DbException extends Exception{ class DbException extends Exception{
public $sql; public $sql;
public function __construct($message, $code = 0, $sql = '') { public function __construct($message, $code = 0, $sql = '') {
$this->sql = $sql; $this->sql = $sql;
parent::__construct($message, $code); parent::__construct($message, $code);
} }
public function getSql() { public function getSql() {
return $this->sql; return $this->sql;
} }
} }
?> ?>

View File

@@ -1,198 +1,198 @@
<?php <?php
class Des class Des
{ {
/** /**
* 加密方法 * 加密方法
* *
* @param string $str 需要加密的内容 * @param string $str 需要加密的内容
* @param string $key 密钥 * @param string $key 密钥
* @param bool $toBase64 是否base64 * @param bool $toBase64 是否base64
* return string * return string
*/ */
public function encrypt($str, $key, $toBase64=true) public function encrypt($str, $key, $toBase64=true)
{ {
if ($str == "") { if ($str == "") {
return ""; return "";
} }
if ($toBase64) { if ($toBase64) {
return base64_encode(self::_des($key,$str,1)); return base64_encode(self::_des($key,$str,1));
} }
return self::_des($key,$str,1); return self::_des($key,$str,1);
} }
/** /**
* 解密方法 * 解密方法
* *
* @param string $str 需要加密的内容 * @param string $str 需要加密的内容
* @param string $key 密钥 * @param string $key 密钥
* @param bool $toBase64 是否base64 * @param bool $toBase64 是否base64
* return string * return string
*/ */
public function decrypt($str, $key, $toBase64=true) public function decrypt($str, $key, $toBase64=true)
{ {
if ($str == "") { if ($str == "") {
return ""; return "";
} }
if ($toBase64) { if ($toBase64) {
return self::_des($key,base64_decode($str),0); return self::_des($key,base64_decode($str),0);
} }
return self::_des($key,$str,0); return self::_des($key,$str,0);
} }
private function _des($key, $message, $encrypt, $mode=0, $iv=null) { private function _des($key, $message, $encrypt, $mode=0, $iv=null) {
$spfunction1 = array (0x1010400,0,0x10000,0x1010404,0x1010004,0x10404,0x4,0x10000,0x400,0x1010400,0x1010404,0x400,0x1000404,0x1010004,0x1000000,0x4,0x404,0x1000400,0x1000400,0x10400,0x10400,0x1010000,0x1010000,0x1000404,0x10004,0x1000004,0x1000004,0x10004,0,0x404,0x10404,0x1000000,0x10000,0x1010404,0x4,0x1010000,0x1010400,0x1000000,0x1000000,0x400,0x1010004,0x10000,0x10400,0x1000004,0x400,0x4,0x1000404,0x10404,0x1010404,0x10004,0x1010000,0x1000404,0x1000004,0x404,0x10404,0x1010400,0x404,0x1000400,0x1000400,0,0x10004,0x10400,0,0x1010004); $spfunction1 = array (0x1010400,0,0x10000,0x1010404,0x1010004,0x10404,0x4,0x10000,0x400,0x1010400,0x1010404,0x400,0x1000404,0x1010004,0x1000000,0x4,0x404,0x1000400,0x1000400,0x10400,0x10400,0x1010000,0x1010000,0x1000404,0x10004,0x1000004,0x1000004,0x10004,0,0x404,0x10404,0x1000000,0x10000,0x1010404,0x4,0x1010000,0x1010400,0x1000000,0x1000000,0x400,0x1010004,0x10000,0x10400,0x1000004,0x400,0x4,0x1000404,0x10404,0x1010404,0x10004,0x1010000,0x1000404,0x1000004,0x404,0x10404,0x1010400,0x404,0x1000400,0x1000400,0,0x10004,0x10400,0,0x1010004);
$spfunction2 = array (-0x7fef7fe0,-0x7fff8000,0x8000,0x108020,0x100000,0x20,-0x7fefffe0,-0x7fff7fe0,-0x7fffffe0,-0x7fef7fe0,-0x7fef8000,-0x80000000,-0x7fff8000,0x100000,0x20,-0x7fefffe0,0x108000,0x100020,-0x7fff7fe0,0,-0x80000000,0x8000,0x108020,-0x7ff00000,0x100020,-0x7fffffe0,0,0x108000,0x8020,-0x7fef8000,-0x7ff00000,0x8020,0,0x108020,-0x7fefffe0,0x100000,-0x7fff7fe0,-0x7ff00000,-0x7fef8000,0x8000,-0x7ff00000,-0x7fff8000,0x20,-0x7fef7fe0,0x108020,0x20,0x8000,-0x80000000,0x8020,-0x7fef8000,0x100000,-0x7fffffe0,0x100020,-0x7fff7fe0,-0x7fffffe0,0x100020,0x108000,0,-0x7fff8000,0x8020,-0x80000000,-0x7fefffe0,-0x7fef7fe0,0x108000); $spfunction2 = array (-0x7fef7fe0,-0x7fff8000,0x8000,0x108020,0x100000,0x20,-0x7fefffe0,-0x7fff7fe0,-0x7fffffe0,-0x7fef7fe0,-0x7fef8000,-0x80000000,-0x7fff8000,0x100000,0x20,-0x7fefffe0,0x108000,0x100020,-0x7fff7fe0,0,-0x80000000,0x8000,0x108020,-0x7ff00000,0x100020,-0x7fffffe0,0,0x108000,0x8020,-0x7fef8000,-0x7ff00000,0x8020,0,0x108020,-0x7fefffe0,0x100000,-0x7fff7fe0,-0x7ff00000,-0x7fef8000,0x8000,-0x7ff00000,-0x7fff8000,0x20,-0x7fef7fe0,0x108020,0x20,0x8000,-0x80000000,0x8020,-0x7fef8000,0x100000,-0x7fffffe0,0x100020,-0x7fff7fe0,-0x7fffffe0,0x100020,0x108000,0,-0x7fff8000,0x8020,-0x80000000,-0x7fefffe0,-0x7fef7fe0,0x108000);
$spfunction3 = array (0x208,0x8020200,0,0x8020008,0x8000200,0,0x20208,0x8000200,0x20008,0x8000008,0x8000008,0x20000,0x8020208,0x20008,0x8020000,0x208,0x8000000,0x8,0x8020200,0x200,0x20200,0x8020000,0x8020008,0x20208,0x8000208,0x20200,0x20000,0x8000208,0x8,0x8020208,0x200,0x8000000,0x8020200,0x8000000,0x20008,0x208,0x20000,0x8020200,0x8000200,0,0x200,0x20008,0x8020208,0x8000200,0x8000008,0x200,0,0x8020008,0x8000208,0x20000,0x8000000,0x8020208,0x8,0x20208,0x20200,0x8000008,0x8020000,0x8000208,0x208,0x8020000,0x20208,0x8,0x8020008,0x20200); $spfunction3 = array (0x208,0x8020200,0,0x8020008,0x8000200,0,0x20208,0x8000200,0x20008,0x8000008,0x8000008,0x20000,0x8020208,0x20008,0x8020000,0x208,0x8000000,0x8,0x8020200,0x200,0x20200,0x8020000,0x8020008,0x20208,0x8000208,0x20200,0x20000,0x8000208,0x8,0x8020208,0x200,0x8000000,0x8020200,0x8000000,0x20008,0x208,0x20000,0x8020200,0x8000200,0,0x200,0x20008,0x8020208,0x8000200,0x8000008,0x200,0,0x8020008,0x8000208,0x20000,0x8000000,0x8020208,0x8,0x20208,0x20200,0x8000008,0x8020000,0x8000208,0x208,0x8020000,0x20208,0x8,0x8020008,0x20200);
$spfunction4 = array (0x802001,0x2081,0x2081,0x80,0x802080,0x800081,0x800001,0x2001,0,0x802000,0x802000,0x802081,0x81,0,0x800080,0x800001,0x1,0x2000,0x800000,0x802001,0x80,0x800000,0x2001,0x2080,0x800081,0x1,0x2080,0x800080,0x2000,0x802080,0x802081,0x81,0x800080,0x800001,0x802000,0x802081,0x81,0,0,0x802000,0x2080,0x800080,0x800081,0x1,0x802001,0x2081,0x2081,0x80,0x802081,0x81,0x1,0x2000,0x800001,0x2001,0x802080,0x800081,0x2001,0x2080,0x800000,0x802001,0x80,0x800000,0x2000,0x802080); $spfunction4 = array (0x802001,0x2081,0x2081,0x80,0x802080,0x800081,0x800001,0x2001,0,0x802000,0x802000,0x802081,0x81,0,0x800080,0x800001,0x1,0x2000,0x800000,0x802001,0x80,0x800000,0x2001,0x2080,0x800081,0x1,0x2080,0x800080,0x2000,0x802080,0x802081,0x81,0x800080,0x800001,0x802000,0x802081,0x81,0,0,0x802000,0x2080,0x800080,0x800081,0x1,0x802001,0x2081,0x2081,0x80,0x802081,0x81,0x1,0x2000,0x800001,0x2001,0x802080,0x800081,0x2001,0x2080,0x800000,0x802001,0x80,0x800000,0x2000,0x802080);
$spfunction5 = array (0x100,0x2080100,0x2080000,0x42000100,0x80000,0x100,0x40000000,0x2080000,0x40080100,0x80000,0x2000100,0x40080100,0x42000100,0x42080000,0x80100,0x40000000,0x2000000,0x40080000,0x40080000,0,0x40000100,0x42080100,0x42080100,0x2000100,0x42080000,0x40000100,0,0x42000000,0x2080100,0x2000000,0x42000000,0x80100,0x80000,0x42000100,0x100,0x2000000,0x40000000,0x2080000,0x42000100,0x40080100,0x2000100,0x40000000,0x42080000,0x2080100,0x40080100,0x100,0x2000000,0x42080000,0x42080100,0x80100,0x42000000,0x42080100,0x2080000,0,0x40080000,0x42000000,0x80100,0x2000100,0x40000100,0x80000,0,0x40080000,0x2080100,0x40000100); $spfunction5 = array (0x100,0x2080100,0x2080000,0x42000100,0x80000,0x100,0x40000000,0x2080000,0x40080100,0x80000,0x2000100,0x40080100,0x42000100,0x42080000,0x80100,0x40000000,0x2000000,0x40080000,0x40080000,0,0x40000100,0x42080100,0x42080100,0x2000100,0x42080000,0x40000100,0,0x42000000,0x2080100,0x2000000,0x42000000,0x80100,0x80000,0x42000100,0x100,0x2000000,0x40000000,0x2080000,0x42000100,0x40080100,0x2000100,0x40000000,0x42080000,0x2080100,0x40080100,0x100,0x2000000,0x42080000,0x42080100,0x80100,0x42000000,0x42080100,0x2080000,0,0x40080000,0x42000000,0x80100,0x2000100,0x40000100,0x80000,0,0x40080000,0x2080100,0x40000100);
$spfunction6 = array (0x20000010,0x20400000,0x4000,0x20404010,0x20400000,0x10,0x20404010,0x400000,0x20004000,0x404010,0x400000,0x20000010,0x400010,0x20004000,0x20000000,0x4010,0,0x400010,0x20004010,0x4000,0x404000,0x20004010,0x10,0x20400010,0x20400010,0,0x404010,0x20404000,0x4010,0x404000,0x20404000,0x20000000,0x20004000,0x10,0x20400010,0x404000,0x20404010,0x400000,0x4010,0x20000010,0x400000,0x20004000,0x20000000,0x4010,0x20000010,0x20404010,0x404000,0x20400000,0x404010,0x20404000,0,0x20400010,0x10,0x4000,0x20400000,0x404010,0x4000,0x400010,0x20004010,0,0x20404000,0x20000000,0x400010,0x20004010); $spfunction6 = array (0x20000010,0x20400000,0x4000,0x20404010,0x20400000,0x10,0x20404010,0x400000,0x20004000,0x404010,0x400000,0x20000010,0x400010,0x20004000,0x20000000,0x4010,0,0x400010,0x20004010,0x4000,0x404000,0x20004010,0x10,0x20400010,0x20400010,0,0x404010,0x20404000,0x4010,0x404000,0x20404000,0x20000000,0x20004000,0x10,0x20400010,0x404000,0x20404010,0x400000,0x4010,0x20000010,0x400000,0x20004000,0x20000000,0x4010,0x20000010,0x20404010,0x404000,0x20400000,0x404010,0x20404000,0,0x20400010,0x10,0x4000,0x20400000,0x404010,0x4000,0x400010,0x20004010,0,0x20404000,0x20000000,0x400010,0x20004010);
$spfunction7 = array (0x200000,0x4200002,0x4000802,0,0x800,0x4000802,0x200802,0x4200800,0x4200802,0x200000,0,0x4000002,0x2,0x4000000,0x4200002,0x802,0x4000800,0x200802,0x200002,0x4000800,0x4000002,0x4200000,0x4200800,0x200002,0x4200000,0x800,0x802,0x4200802,0x200800,0x2,0x4000000,0x200800,0x4000000,0x200800,0x200000,0x4000802,0x4000802,0x4200002,0x4200002,0x2,0x200002,0x4000000,0x4000800,0x200000,0x4200800,0x802,0x200802,0x4200800,0x802,0x4000002,0x4200802,0x4200000,0x200800,0,0x2,0x4200802,0,0x200802,0x4200000,0x800,0x4000002,0x4000800,0x800,0x200002); $spfunction7 = array (0x200000,0x4200002,0x4000802,0,0x800,0x4000802,0x200802,0x4200800,0x4200802,0x200000,0,0x4000002,0x2,0x4000000,0x4200002,0x802,0x4000800,0x200802,0x200002,0x4000800,0x4000002,0x4200000,0x4200800,0x200002,0x4200000,0x800,0x802,0x4200802,0x200800,0x2,0x4000000,0x200800,0x4000000,0x200800,0x200000,0x4000802,0x4000802,0x4200002,0x4200002,0x2,0x200002,0x4000000,0x4000800,0x200000,0x4200800,0x802,0x200802,0x4200800,0x802,0x4000002,0x4200802,0x4200000,0x200800,0,0x2,0x4200802,0,0x200802,0x4200000,0x800,0x4000002,0x4000800,0x800,0x200002);
$spfunction8 = array (0x10001040,0x1000,0x40000,0x10041040,0x10000000,0x10001040,0x40,0x10000000,0x40040,0x10040000,0x10041040,0x41000,0x10041000,0x41040,0x1000,0x40,0x10040000,0x10000040,0x10001000,0x1040,0x41000,0x40040,0x10040040,0x10041000,0x1040,0,0,0x10040040,0x10000040,0x10001000,0x41040,0x40000,0x41040,0x40000,0x10041000,0x1000,0x40,0x10040040,0x1000,0x41040,0x10001000,0x40,0x10000040,0x10040000,0x10040040,0x10000000,0x40000,0x10001040,0,0x10041040,0x40040,0x10000040,0x10040000,0x10001000,0x10001040,0,0x10041040,0x41000,0x41000,0x1040,0x1040,0x40040,0x10000000,0x10041000); $spfunction8 = array (0x10001040,0x1000,0x40000,0x10041040,0x10000000,0x10001040,0x40,0x10000000,0x40040,0x10040000,0x10041040,0x41000,0x10041000,0x41040,0x1000,0x40,0x10040000,0x10000040,0x10001000,0x1040,0x41000,0x40040,0x10040040,0x10041000,0x1040,0,0,0x10040040,0x10000040,0x10001000,0x41040,0x40000,0x41040,0x40000,0x10041000,0x1000,0x40,0x10040040,0x1000,0x41040,0x10001000,0x40,0x10000040,0x10040000,0x10040040,0x10000000,0x40000,0x10001040,0,0x10041040,0x40040,0x10000040,0x10040000,0x10001000,0x10001040,0,0x10041040,0x41000,0x41000,0x1040,0x1040,0x40040,0x10000000,0x10041000);
$masks = array (4294967295,2147483647,1073741823,536870911,268435455,134217727,67108863,33554431,16777215,8388607,4194303,2097151,1048575,524287,262143,131071,65535,32767,16383,8191,4095,2047,1023,511,255,127,63,31,15,7,3,1,0); $masks = array (4294967295,2147483647,1073741823,536870911,268435455,134217727,67108863,33554431,16777215,8388607,4194303,2097151,1048575,524287,262143,131071,65535,32767,16383,8191,4095,2047,1023,511,255,127,63,31,15,7,3,1,0);
$keys = self::_createKeys ($key); $keys = self::_createKeys ($key);
$m=0; $m=0;
$len = strlen($message); $len = strlen($message);
$chunk = 0; $chunk = 0;
$iterations = ((count($keys) == 32) ? 3 : 9); $iterations = ((count($keys) == 32) ? 3 : 9);
if ($iterations == 3) {$looping = (($encrypt) ? array (0, 32, 2) : array (30, -2, -2));} if ($iterations == 3) {$looping = (($encrypt) ? array (0, 32, 2) : array (30, -2, -2));}
else {$looping = (($encrypt) ? array (0, 32, 2, 62, 30, -2, 64, 96, 2) : array (94, 62, -2, 32, 64, 2, 30, -2, -2));} else {$looping = (($encrypt) ? array (0, 32, 2, 62, 30, -2, 64, 96, 2) : array (94, 62, -2, 32, 64, 2, 30, -2, -2));}
$message .= (chr(0) . chr(0) . chr(0) . chr(0) . chr(0) . chr(0) . chr(0) . chr(0)); $message .= (chr(0) . chr(0) . chr(0) . chr(0) . chr(0) . chr(0) . chr(0) . chr(0));
$result = ""; $result = "";
$tempresult = ""; $tempresult = "";
if ($mode == 1) { if ($mode == 1) {
$cbcleft = (ord($iv{$m++}) << 24) | (ord($iv{$m++}) << 16) | (ord($iv{$m++}) << 8) | ord($iv{$m++}); $cbcleft = (ord($iv{$m++}) << 24) | (ord($iv{$m++}) << 16) | (ord($iv{$m++}) << 8) | ord($iv{$m++});
$cbcright = (ord($iv{$m++}) << 24) | (ord($iv{$m++}) << 16) | (ord($iv{$m++}) << 8) | ord($iv{$m++}); $cbcright = (ord($iv{$m++}) << 24) | (ord($iv{$m++}) << 16) | (ord($iv{$m++}) << 8) | ord($iv{$m++});
$m=0; $m=0;
} }
while ($m < $len) { while ($m < $len) {
$left = (ord($message{$m++}) << 24) | (ord($message{$m++}) << 16) | (ord($message{$m++}) << 8) | ord($message{$m++}); $left = (ord($message{$m++}) << 24) | (ord($message{$m++}) << 16) | (ord($message{$m++}) << 8) | ord($message{$m++});
$right = (ord($message{$m++}) << 24) | (ord($message{$m++}) << 16) | (ord($message{$m++}) << 8) | ord($message{$m++}); $right = (ord($message{$m++}) << 24) | (ord($message{$m++}) << 16) | (ord($message{$m++}) << 8) | ord($message{$m++});
if ($mode == 1) {if ($encrypt) {$left ^= $cbcleft; $right ^= $cbcright;} else {$cbcleft2 = $cbcleft; $cbcright2 = $cbcright; $cbcleft = $left; $cbcright = $right;}} if ($mode == 1) {if ($encrypt) {$left ^= $cbcleft; $right ^= $cbcright;} else {$cbcleft2 = $cbcleft; $cbcright2 = $cbcright; $cbcleft = $left; $cbcright = $right;}}
$temp = (($left >> 4 & $masks[4]) ^ $right) & 0x0f0f0f0f; $right ^= $temp; $left ^= ($temp << 4); $temp = (($left >> 4 & $masks[4]) ^ $right) & 0x0f0f0f0f; $right ^= $temp; $left ^= ($temp << 4);
$temp = (($left >> 16 & $masks[16]) ^ $right) & 0x0000ffff; $right ^= $temp; $left ^= ($temp << 16); $temp = (($left >> 16 & $masks[16]) ^ $right) & 0x0000ffff; $right ^= $temp; $left ^= ($temp << 16);
$temp = (($right >> 2 & $masks[2]) ^ $left) & 0x33333333; $left ^= $temp; $right ^= ($temp << 2); $temp = (($right >> 2 & $masks[2]) ^ $left) & 0x33333333; $left ^= $temp; $right ^= ($temp << 2);
$temp = (($right >> 8 & $masks[8]) ^ $left) & 0x00ff00ff; $left ^= $temp; $right ^= ($temp << 8); $temp = (($right >> 8 & $masks[8]) ^ $left) & 0x00ff00ff; $left ^= $temp; $right ^= ($temp << 8);
$temp = (($left >> 1 & $masks[1]) ^ $right) & 0x55555555; $right ^= $temp; $left ^= ($temp << 1); $temp = (($left >> 1 & $masks[1]) ^ $right) & 0x55555555; $right ^= $temp; $left ^= ($temp << 1);
$left = (($left << 1) | ($left >> 31 & $masks[31])); $left = (($left << 1) | ($left >> 31 & $masks[31]));
$right = (($right << 1) | ($right >> 31 & $masks[31])); $right = (($right << 1) | ($right >> 31 & $masks[31]));
for ($j=0; $j<$iterations; $j+=3) { for ($j=0; $j<$iterations; $j+=3) {
$endloop = $looping[$j+1]; $endloop = $looping[$j+1];
$loopinc = $looping[$j+2]; $loopinc = $looping[$j+2];
for ($i=$looping[$j]; $i!=$endloop; $i+=$loopinc) { for ($i=$looping[$j]; $i!=$endloop; $i+=$loopinc) {
$right1 = $right ^ $keys[$i]; $right1 = $right ^ $keys[$i];
$right2 = (($right >> 4 & $masks[4]) | ($right << 28)) ^ $keys[$i+1]; $right2 = (($right >> 4 & $masks[4]) | ($right << 28)) ^ $keys[$i+1];
$temp = $left; $temp = $left;
$left = $right; $left = $right;
$right = $temp ^ ($spfunction2[($right1 >> 24 & $masks[24]) & 0x3f] | $spfunction4[($right1 >> 16 & $masks[16]) & 0x3f] $right = $temp ^ ($spfunction2[($right1 >> 24 & $masks[24]) & 0x3f] | $spfunction4[($right1 >> 16 & $masks[16]) & 0x3f]
| $spfunction6[($right1 >> 8 & $masks[8]) & 0x3f] | $spfunction8[$right1 & 0x3f] | $spfunction6[($right1 >> 8 & $masks[8]) & 0x3f] | $spfunction8[$right1 & 0x3f]
| $spfunction1[($right2 >> 24 & $masks[24]) & 0x3f] | $spfunction3[($right2 >> 16 & $masks[16]) & 0x3f] | $spfunction1[($right2 >> 24 & $masks[24]) & 0x3f] | $spfunction3[($right2 >> 16 & $masks[16]) & 0x3f]
| $spfunction5[($right2 >> 8 & $masks[8]) & 0x3f] | $spfunction7[$right2 & 0x3f]); | $spfunction5[($right2 >> 8 & $masks[8]) & 0x3f] | $spfunction7[$right2 & 0x3f]);
} }
$temp = $left; $left = $right; $right = $temp; $temp = $left; $left = $right; $right = $temp;
} }
$left = (($left >> 1 & $masks[1]) | ($left << 31)); $left = (($left >> 1 & $masks[1]) | ($left << 31));
$right = (($right >> 1 & $masks[1]) | ($right << 31)); $right = (($right >> 1 & $masks[1]) | ($right << 31));
$temp = (($left >> 1 & $masks[1]) ^ $right) & 0x55555555; $right ^= $temp; $left ^= ($temp << 1); $temp = (($left >> 1 & $masks[1]) ^ $right) & 0x55555555; $right ^= $temp; $left ^= ($temp << 1);
$temp = (($right >> 8 & $masks[8]) ^ $left) & 0x00ff00ff; $left ^= $temp; $right ^= ($temp << 8); $temp = (($right >> 8 & $masks[8]) ^ $left) & 0x00ff00ff; $left ^= $temp; $right ^= ($temp << 8);
$temp = (($right >> 2 & $masks[2]) ^ $left) & 0x33333333; $left ^= $temp; $right ^= ($temp << 2); $temp = (($right >> 2 & $masks[2]) ^ $left) & 0x33333333; $left ^= $temp; $right ^= ($temp << 2);
$temp = (($left >> 16 & $masks[16]) ^ $right) & 0x0000ffff; $right ^= $temp; $left ^= ($temp << 16); $temp = (($left >> 16 & $masks[16]) ^ $right) & 0x0000ffff; $right ^= $temp; $left ^= ($temp << 16);
$temp = (($left >> 4 & $masks[4]) ^ $right) & 0x0f0f0f0f; $right ^= $temp; $left ^= ($temp << 4); $temp = (($left >> 4 & $masks[4]) ^ $right) & 0x0f0f0f0f; $right ^= $temp; $left ^= ($temp << 4);
if ($mode == 1) {if ($encrypt) {$cbcleft = $left; $cbcright = $right;} else {$left ^= $cbcleft2; $right ^= $cbcright2;}} if ($mode == 1) {if ($encrypt) {$cbcleft = $left; $cbcright = $right;} else {$left ^= $cbcleft2; $right ^= $cbcright2;}}
$tempresult .= (chr($left>>24 & $masks[24]) . chr(($left>>16 & $masks[16]) & 0xff) . chr(($left>>8 & $masks[8]) & 0xff) . chr($left & 0xff) . chr($right>>24 & $masks[24]) . chr(($right>>16 & $masks[16]) & 0xff) . chr(($right>>8 & $masks[8]) & 0xff) . chr($right & 0xff)); $tempresult .= (chr($left>>24 & $masks[24]) . chr(($left>>16 & $masks[16]) & 0xff) . chr(($left>>8 & $masks[8]) & 0xff) . chr($left & 0xff) . chr($right>>24 & $masks[24]) . chr(($right>>16 & $masks[16]) & 0xff) . chr(($right>>8 & $masks[8]) & 0xff) . chr($right & 0xff));
$chunk += 8; $chunk += 8;
if ($chunk == 512) {$result .= $tempresult; $tempresult = ""; $chunk = 0;} if ($chunk == 512) {$result .= $tempresult; $tempresult = ""; $chunk = 0;}
} }
return ($result . $tempresult); return ($result . $tempresult);
} }
private function _createKeys ($key) { private function _createKeys ($key) {
$pc2bytes0 = array (0,0x4,0x20000000,0x20000004,0x10000,0x10004,0x20010000,0x20010004,0x200,0x204,0x20000200,0x20000204,0x10200,0x10204,0x20010200,0x20010204); $pc2bytes0 = array (0,0x4,0x20000000,0x20000004,0x10000,0x10004,0x20010000,0x20010004,0x200,0x204,0x20000200,0x20000204,0x10200,0x10204,0x20010200,0x20010204);
$pc2bytes1 = array (0,0x1,0x100000,0x100001,0x4000000,0x4000001,0x4100000,0x4100001,0x100,0x101,0x100100,0x100101,0x4000100,0x4000101,0x4100100,0x4100101); $pc2bytes1 = array (0,0x1,0x100000,0x100001,0x4000000,0x4000001,0x4100000,0x4100001,0x100,0x101,0x100100,0x100101,0x4000100,0x4000101,0x4100100,0x4100101);
$pc2bytes2 = array (0,0x8,0x800,0x808,0x1000000,0x1000008,0x1000800,0x1000808,0,0x8,0x800,0x808,0x1000000,0x1000008,0x1000800,0x1000808); $pc2bytes2 = array (0,0x8,0x800,0x808,0x1000000,0x1000008,0x1000800,0x1000808,0,0x8,0x800,0x808,0x1000000,0x1000008,0x1000800,0x1000808);
$pc2bytes3 = array (0,0x200000,0x8000000,0x8200000,0x2000,0x202000,0x8002000,0x8202000,0x20000,0x220000,0x8020000,0x8220000,0x22000,0x222000,0x8022000,0x8222000); $pc2bytes3 = array (0,0x200000,0x8000000,0x8200000,0x2000,0x202000,0x8002000,0x8202000,0x20000,0x220000,0x8020000,0x8220000,0x22000,0x222000,0x8022000,0x8222000);
$pc2bytes4 = array (0,0x40000,0x10,0x40010,0,0x40000,0x10,0x40010,0x1000,0x41000,0x1010,0x41010,0x1000,0x41000,0x1010,0x41010); $pc2bytes4 = array (0,0x40000,0x10,0x40010,0,0x40000,0x10,0x40010,0x1000,0x41000,0x1010,0x41010,0x1000,0x41000,0x1010,0x41010);
$pc2bytes5 = array (0,0x400,0x20,0x420,0,0x400,0x20,0x420,0x2000000,0x2000400,0x2000020,0x2000420,0x2000000,0x2000400,0x2000020,0x2000420); $pc2bytes5 = array (0,0x400,0x20,0x420,0,0x400,0x20,0x420,0x2000000,0x2000400,0x2000020,0x2000420,0x2000000,0x2000400,0x2000020,0x2000420);
$pc2bytes6 = array (0,0x10000000,0x80000,0x10080000,0x2,0x10000002,0x80002,0x10080002,0,0x10000000,0x80000,0x10080000,0x2,0x10000002,0x80002,0x10080002); $pc2bytes6 = array (0,0x10000000,0x80000,0x10080000,0x2,0x10000002,0x80002,0x10080002,0,0x10000000,0x80000,0x10080000,0x2,0x10000002,0x80002,0x10080002);
$pc2bytes7 = array (0,0x10000,0x800,0x10800,0x20000000,0x20010000,0x20000800,0x20010800,0x20000,0x30000,0x20800,0x30800,0x20020000,0x20030000,0x20020800,0x20030800); $pc2bytes7 = array (0,0x10000,0x800,0x10800,0x20000000,0x20010000,0x20000800,0x20010800,0x20000,0x30000,0x20800,0x30800,0x20020000,0x20030000,0x20020800,0x20030800);
$pc2bytes8 = array (0,0x40000,0,0x40000,0x2,0x40002,0x2,0x40002,0x2000000,0x2040000,0x2000000,0x2040000,0x2000002,0x2040002,0x2000002,0x2040002); $pc2bytes8 = array (0,0x40000,0,0x40000,0x2,0x40002,0x2,0x40002,0x2000000,0x2040000,0x2000000,0x2040000,0x2000002,0x2040002,0x2000002,0x2040002);
$pc2bytes9 = array (0,0x10000000,0x8,0x10000008,0,0x10000000,0x8,0x10000008,0x400,0x10000400,0x408,0x10000408,0x400,0x10000400,0x408,0x10000408); $pc2bytes9 = array (0,0x10000000,0x8,0x10000008,0,0x10000000,0x8,0x10000008,0x400,0x10000400,0x408,0x10000408,0x400,0x10000400,0x408,0x10000408);
$pc2bytes10 = array (0,0x20,0,0x20,0x100000,0x100020,0x100000,0x100020,0x2000,0x2020,0x2000,0x2020,0x102000,0x102020,0x102000,0x102020); $pc2bytes10 = array (0,0x20,0,0x20,0x100000,0x100020,0x100000,0x100020,0x2000,0x2020,0x2000,0x2020,0x102000,0x102020,0x102000,0x102020);
$pc2bytes11 = array (0,0x1000000,0x200,0x1000200,0x200000,0x1200000,0x200200,0x1200200,0x4000000,0x5000000,0x4000200,0x5000200,0x4200000,0x5200000,0x4200200,0x5200200); $pc2bytes11 = array (0,0x1000000,0x200,0x1000200,0x200000,0x1200000,0x200200,0x1200200,0x4000000,0x5000000,0x4000200,0x5000200,0x4200000,0x5200000,0x4200200,0x5200200);
$pc2bytes12 = array (0,0x1000,0x8000000,0x8001000,0x80000,0x81000,0x8080000,0x8081000,0x10,0x1010,0x8000010,0x8001010,0x80010,0x81010,0x8080010,0x8081010); $pc2bytes12 = array (0,0x1000,0x8000000,0x8001000,0x80000,0x81000,0x8080000,0x8081000,0x10,0x1010,0x8000010,0x8001010,0x80010,0x81010,0x8080010,0x8081010);
$pc2bytes13 = array (0,0x4,0x100,0x104,0,0x4,0x100,0x104,0x1,0x5,0x101,0x105,0x1,0x5,0x101,0x105); $pc2bytes13 = array (0,0x4,0x100,0x104,0,0x4,0x100,0x104,0x1,0x5,0x101,0x105,0x1,0x5,0x101,0x105);
$masks = array (4294967295,2147483647,1073741823,536870911,268435455,134217727,67108863,33554431,16777215,8388607,4194303,2097151,1048575,524287,262143,131071,65535,32767,16383,8191,4095,2047,1023,511,255,127,63,31,15,7,3,1,0); $masks = array (4294967295,2147483647,1073741823,536870911,268435455,134217727,67108863,33554431,16777215,8388607,4194303,2097151,1048575,524287,262143,131071,65535,32767,16383,8191,4095,2047,1023,511,255,127,63,31,15,7,3,1,0);
$iterations = ((strlen($key) >= 24) ? 3 : 1); $iterations = ((strlen($key) >= 24) ? 3 : 1);
$keys = array (); $keys = array ();
$shifts = array (0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0); $shifts = array (0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0);
$m=0; $m=0;
$n=0; $n=0;
for ($j=0; $j<$iterations; $j++) { for ($j=0; $j<$iterations; $j++) {
$left = (ord($key{$m++}) << 24) | (ord($key{$m++}) << 16) | (ord($key{$m++}) << 8) | ord($key{$m++}); $left = (ord($key{$m++}) << 24) | (ord($key{$m++}) << 16) | (ord($key{$m++}) << 8) | ord($key{$m++});
$right = (ord($key{$m++}) << 24) | (ord($key{$m++}) << 16) | (ord($key{$m++}) << 8) | ord($key{$m++}); $right = (ord($key{$m++}) << 24) | (ord($key{$m++}) << 16) | (ord($key{$m++}) << 8) | ord($key{$m++});
$temp = (($left >> 4 & $masks[4]) ^ $right) & 0x0f0f0f0f; $right ^= $temp; $left ^= ($temp << 4); $temp = (($left >> 4 & $masks[4]) ^ $right) & 0x0f0f0f0f; $right ^= $temp; $left ^= ($temp << 4);
$temp = (($right >> 16 & $masks[16]) ^ $left) & 0x0000ffff; $left ^= $temp; $right ^= ($temp << -16); $temp = (($right >> 16 & $masks[16]) ^ $left) & 0x0000ffff; $left ^= $temp; $right ^= ($temp << -16);
$temp = (($left >> 2 & $masks[2]) ^ $right) & 0x33333333; $right ^= $temp; $left ^= ($temp << 2); $temp = (($left >> 2 & $masks[2]) ^ $right) & 0x33333333; $right ^= $temp; $left ^= ($temp << 2);
$temp = (($right >> 16 & $masks[16]) ^ $left) & 0x0000ffff; $left ^= $temp; $right ^= ($temp << -16); $temp = (($right >> 16 & $masks[16]) ^ $left) & 0x0000ffff; $left ^= $temp; $right ^= ($temp << -16);
$temp = (($left >> 1 & $masks[1]) ^ $right) & 0x55555555; $right ^= $temp; $left ^= ($temp << 1); $temp = (($left >> 1 & $masks[1]) ^ $right) & 0x55555555; $right ^= $temp; $left ^= ($temp << 1);
$temp = (($right >> 8 & $masks[8]) ^ $left) & 0x00ff00ff; $left ^= $temp; $right ^= ($temp << 8); $temp = (($right >> 8 & $masks[8]) ^ $left) & 0x00ff00ff; $left ^= $temp; $right ^= ($temp << 8);
$temp = (($left >> 1 & $masks[1]) ^ $right) & 0x55555555; $right ^= $temp; $left ^= ($temp << 1); $temp = (($left >> 1 & $masks[1]) ^ $right) & 0x55555555; $right ^= $temp; $left ^= ($temp << 1);
$temp = ($left << 8) | (($right >> 20 & $masks[20]) & 0x000000f0); $temp = ($left << 8) | (($right >> 20 & $masks[20]) & 0x000000f0);
$left = ($right << 24) | (($right << 8) & 0xff0000) | (($right >> 8 & $masks[8]) & 0xff00) | (($right >> 24 & $masks[24]) & 0xf0); $left = ($right << 24) | (($right << 8) & 0xff0000) | (($right >> 8 & $masks[8]) & 0xff00) | (($right >> 24 & $masks[24]) & 0xf0);
$right = $temp; $right = $temp;
for ($i=0; $i < count($shifts); $i++) { for ($i=0; $i < count($shifts); $i++) {
if ($shifts[$i] > 0) { if ($shifts[$i] > 0) {
$left = (($left << 2) | ($left >> 26 & $masks[26])); $left = (($left << 2) | ($left >> 26 & $masks[26]));
$right = (($right << 2) | ($right >> 26 & $masks[26])); $right = (($right << 2) | ($right >> 26 & $masks[26]));
} else { } else {
$left = (($left << 1) | ($left >> 27 & $masks[27])); $left = (($left << 1) | ($left >> 27 & $masks[27]));
$right = (($right << 1) | ($right >> 27 & $masks[27])); $right = (($right << 1) | ($right >> 27 & $masks[27]));
} }
$left = $left & -0xf; $left = $left & -0xf;
$right = $right & -0xf; $right = $right & -0xf;
$lefttemp = $pc2bytes0[$left >> 28 & $masks[28]] | $pc2bytes1[($left >> 24 & $masks[24]) & 0xf] $lefttemp = $pc2bytes0[$left >> 28 & $masks[28]] | $pc2bytes1[($left >> 24 & $masks[24]) & 0xf]
| $pc2bytes2[($left >> 20 & $masks[20]) & 0xf] | $pc2bytes3[($left >> 16 & $masks[16]) & 0xf] | $pc2bytes2[($left >> 20 & $masks[20]) & 0xf] | $pc2bytes3[($left >> 16 & $masks[16]) & 0xf]
| $pc2bytes4[($left >> 12 & $masks[12]) & 0xf] | $pc2bytes5[($left >> 8 & $masks[8]) & 0xf] | $pc2bytes4[($left >> 12 & $masks[12]) & 0xf] | $pc2bytes5[($left >> 8 & $masks[8]) & 0xf]
| $pc2bytes6[($left >> 4 & $masks[4]) & 0xf]; | $pc2bytes6[($left >> 4 & $masks[4]) & 0xf];
$righttemp = $pc2bytes7[$right >> 28 & $masks[28]] | $pc2bytes8[($right >> 24 & $masks[24]) & 0xf] $righttemp = $pc2bytes7[$right >> 28 & $masks[28]] | $pc2bytes8[($right >> 24 & $masks[24]) & 0xf]
| $pc2bytes9[($right >> 20 & $masks[20]) & 0xf] | $pc2bytes10[($right >> 16 & $masks[16]) & 0xf] | $pc2bytes9[($right >> 20 & $masks[20]) & 0xf] | $pc2bytes10[($right >> 16 & $masks[16]) & 0xf]
| $pc2bytes11[($right >> 12 & $masks[12]) & 0xf] | $pc2bytes12[($right >> 8 & $masks[8]) & 0xf] | $pc2bytes11[($right >> 12 & $masks[12]) & 0xf] | $pc2bytes12[($right >> 8 & $masks[8]) & 0xf]
| $pc2bytes13[($right >> 4 & $masks[4]) & 0xf]; | $pc2bytes13[($right >> 4 & $masks[4]) & 0xf];
$temp = (($righttemp >> 16 & $masks[16]) ^ $lefttemp) & 0x0000ffff; $temp = (($righttemp >> 16 & $masks[16]) ^ $lefttemp) & 0x0000ffff;
$keys[$n++] = $lefttemp ^ $temp; $keys[$n++] = $righttemp ^ ($temp << 16); $keys[$n++] = $lefttemp ^ $temp; $keys[$n++] = $righttemp ^ ($temp << 16);
} }
} }
return $keys; return $keys;
} }
} }
// 使用方式 // 使用方式
//$Des = new Des(); //$Des = new Des();
/*$string = 'hello leven'; /*$string = 'hello leven';
$key = '123456'; $key = '123456';
$encode = $Des->encrypt($string,$key,true); $encode = $Des->encrypt($string,$key,true);
$decode = $Des->decrypt($encode,$key,true); $decode = $Des->decrypt($encode,$key,true);
echo $encode; echo $encode;
echo "<br />"; echo "<br />";
echo $decode;*/ echo $decode;*/
?> ?>

View File

@@ -1,321 +1,321 @@
<?php <?php
if(!defined('IN_OAOOA')) { if(!defined('IN_OAOOA')) {
exit('Access Denied'); exit('Access Denied');
} }
class GifMerge { class GifMerge {
var $ver = '1.1'; var $ver = '1.1';
var $dly = 50; var $dly = 50;
var $mod = 'C_FILE'; var $mod = 'C_FILE';
var $first = true; var $first = true;
var $use_loop = false; var $use_loop = false;
var $transparent = false; var $transparent = false;
var $use_global_in = false; var $use_global_in = false;
var $x = 0; var $x = 0;
var $y = 0; var $y = 0;
var $ch = 0; var $ch = 0;
var $fin = 0; var $fin = 0;
var $fout = ''; var $fout = '';
var $loop = 0; var $loop = 0;
var $delay = 0; var $delay = 0;
var $width = 0; var $width = 0;
var $height = 0; var $height = 0;
var $trans1 = 255; var $trans1 = 255;
var $trans2 = 255; var $trans2 = 255;
var $trans3 = 255; var $trans3 = 255;
var $disposal = 2; var $disposal = 2;
var $out_color_table_size = 0; var $out_color_table_size = 0;
var $local_color_table_flag = 0; var $local_color_table_flag = 0;
var $global_color_table_size = 0; var $global_color_table_size = 0;
var $out_color_table_sizecode = 0; var $out_color_table_sizecode = 0;
var $global_color_table_sizecode= 0; var $global_color_table_sizecode= 0;
var $gif = array(0x47, 0x49, 0x46); var $gif = array(0x47, 0x49, 0x46);
var $buffer = array(); var $buffer = array();
var $local_in = array(); var $local_in = array();
var $global_in = array(); var $global_in = array();
var $global_out = array(); var $global_out = array();
var $logical_screen_descriptor = array(); var $logical_screen_descriptor = array();
function GifMerge($images, $t1, $t2, $t3, $loop, $dl, $xpos, $ypos, $model) { function GifMerge($images, $t1, $t2, $t3, $loop, $dl, $xpos, $ypos, $model) {
if($model) { if($model) {
$this->mod = $model; $this->mod = $model;
} }
if($loop > -1) { if($loop > -1) {
$this->loop = floor($loop - 1); $this->loop = floor($loop - 1);
$this->use_loop = true; $this->use_loop = true;
} }
if($t1 > -1 && $t2 > -1 && $t3 > -1) { if($t1 > -1 && $t2 > -1 && $t3 > -1) {
$this->trans1 = $t1; $this->trans1 = $t1;
$this->trans2 = $t2; $this->trans2 = $t2;
$this->trans3 = $t3; $this->trans3 = $t3;
$this->transparent = true; $this->transparent = true;
} }
for($i = 0; $i < count($images); $i++) { for($i = 0; $i < count($images); $i++) {
$dl[$i] ? $this->delay = $dl[$i] : $this->delay = $this->dly; $dl[$i] ? $this->delay = $dl[$i] : $this->delay = $this->dly;
$xpos[$i] ? $this->x = $xpos[$i] : $this->x = 0; $xpos[$i] ? $this->x = $xpos[$i] : $this->x = 0;
$ypos[$i] ? $this->y = $ypos[$i] : $this->y = 0; $ypos[$i] ? $this->y = $ypos[$i] : $this->y = 0;
$this->start_gifmerge_process($images[$i]); $this->start_gifmerge_process($images[$i]);
} }
$this->fout .= "\x3b"; $this->fout .= "\x3b";
} }
function start_gifmerge_process($fp) { function start_gifmerge_process($fp) {
if($this->mod == 'C_FILE') { if($this->mod == 'C_FILE') {
if(!$this->fin = fopen($fp, 'rb')) { if(!$this->fin = fopen($fp, 'rb')) {
return; return;
} }
} elseif($this->mod == 'C_MEMORY') { } elseif($this->mod == 'C_MEMORY') {
$this->ch = 0; $this->ch = 0;
$this->fin = $fp; $this->fin = $fp;
} }
$this->getbytes(6); $this->getbytes(6);
if(!$this->arrcmp($this->buffer, $this->gif, 3)) { if(!$this->arrcmp($this->buffer, $this->gif, 3)) {
return; return;
} }
$this->getbytes(7); $this->getbytes(7);
if($this->first) $this->logical_screen_descriptor = $this->buffer; if($this->first) $this->logical_screen_descriptor = $this->buffer;
$this->global_color_table_sizecode = $this->buffer[4] & 0x07; $this->global_color_table_sizecode = $this->buffer[4] & 0x07;
$this->global_color_table_size = 2 << $this->global_color_table_sizecode; $this->global_color_table_size = 2 << $this->global_color_table_sizecode;
if($this->buffer[4] & 0x80) { if($this->buffer[4] & 0x80) {
$this->getbytes((3 * $this->global_color_table_size)); $this->getbytes((3 * $this->global_color_table_size));
for($i = 0; $i < ((3 * $this->global_color_table_size)); $i++) { for($i = 0; $i < ((3 * $this->global_color_table_size)); $i++) {
$this->global_in[$i] = $this->buffer[$i]; $this->global_in[$i] = $this->buffer[$i];
} }
if($this->out_color_table_size == 0) { if($this->out_color_table_size == 0) {
$this->out_color_table_size = $this->global_color_table_size; $this->out_color_table_size = $this->global_color_table_size;
$this->out_color_table_sizecode = $this->global_color_table_sizecode; $this->out_color_table_sizecode = $this->global_color_table_sizecode;
$this->global_out = $this->global_in; $this->global_out = $this->global_in;
} }
if($this->global_color_table_size != $this->out_color_table_size || $this->arrcmp($this->global_out, $this->global_in, (3 * $this->global_color_table_size))) { if($this->global_color_table_size != $this->out_color_table_size || $this->arrcmp($this->global_out, $this->global_in, (3 * $this->global_color_table_size))) {
$this->use_global_in = true; $this->use_global_in = true;
} }
} }
for($loop = true; $loop;) { for($loop = true; $loop;) {
$this->getbytes(1); $this->getbytes(1);
switch($this->buffer[0]) { switch($this->buffer[0]) {
case 0x21: case 0x21:
$this->read_extension(); $this->read_extension();
break; break;
case 0x2c: case 0x2c:
$this->read_image_descriptor(); $this->read_image_descriptor();
break; break;
case 0x3b: case 0x3b:
$loop = false; $loop = false;
break; break;
default: default:
$loop = false; $loop = false;
} }
} }
if($this->mod == 'C_FILE') { if($this->mod == 'C_FILE') {
fclose($this->fin); fclose($this->fin);
} }
} }
function read_image_descriptor() { function read_image_descriptor() {
$this->getbytes(9); $this->getbytes(9);
$head = $this->buffer; $head = $this->buffer;
$this->local_color_table_flag = ($this->buffer[8] & 0x80) ? true : false; $this->local_color_table_flag = ($this->buffer[8] & 0x80) ? true : false;
if($this->local_color_table_flag) { if($this->local_color_table_flag) {
$sizecode = $this->buffer[8] & 0x07; $sizecode = $this->buffer[8] & 0x07;
$size = 2 << $sizecode; $size = 2 << $sizecode;
$this->getbytes(3 * $size); $this->getbytes(3 * $size);
for($i = 0; $i < (3 * $size); $i++) { for($i = 0; $i < (3 * $size); $i++) {
$this->local_in[$i] = $this->buffer[$i]; $this->local_in[$i] = $this->buffer[$i];
} }
if($this->out_color_table_size == 0) { if($this->out_color_table_size == 0) {
$this->out_color_table_size = $size; $this->out_color_table_size = $size;
$this->out_color_table_sizecode = $sizecode; $this->out_color_table_sizecode = $sizecode;
for($i = 0; $i < (3 * $size); $i++) { for($i = 0; $i < (3 * $size); $i++) {
$this->global_out[$i] = $this->local_in[$i]; $this->global_out[$i] = $this->local_in[$i];
} }
} }
} }
if($this->first) { if($this->first) {
$this->first = false; $this->first = false;
$this->fout .= "\x47\x49\x46\x38\x39\x61"; $this->fout .= "\x47\x49\x46\x38\x39\x61";
if($this->width && $this->height) { if($this->width && $this->height) {
$this->logical_screen_descriptor[0] = $this->width & 0xFF; $this->logical_screen_descriptor[0] = $this->width & 0xFF;
$this->logical_screen_descriptor[1] = ($this->width & 0xFF00) >> 8; $this->logical_screen_descriptor[1] = ($this->width & 0xFF00) >> 8;
$this->logical_screen_descriptor[2] = $this->height & 0xFF; $this->logical_screen_descriptor[2] = $this->height & 0xFF;
$this->logical_screen_descriptor[3] = ($this->height & 0xFF00) >> 8; $this->logical_screen_descriptor[3] = ($this->height & 0xFF00) >> 8;
} }
$this->logical_screen_descriptor[4] |= 0x80; $this->logical_screen_descriptor[4] |= 0x80;
$this->logical_screen_descriptor[5] &= 0xF0; $this->logical_screen_descriptor[5] &= 0xF0;
$this->logical_screen_descriptor[6] |= $this->out_color_table_sizecode; $this->logical_screen_descriptor[6] |= $this->out_color_table_sizecode;
$this->putbytes($this->logical_screen_descriptor, 7); $this->putbytes($this->logical_screen_descriptor, 7);
$this->putbytes($this->global_out, ($this->out_color_table_size * 3)); $this->putbytes($this->global_out, ($this->out_color_table_size * 3));
if($this->use_loop) { if($this->use_loop) {
$ns[0] = 0x21; $ns[0] = 0x21;
$ns[1] = 0xFF; $ns[1] = 0xFF;
$ns[2] = 0x0B; $ns[2] = 0x0B;
$ns[3] = 0x4e; $ns[3] = 0x4e;
$ns[4] = 0x45; $ns[4] = 0x45;
$ns[5] = 0x54; $ns[5] = 0x54;
$ns[6] = 0x53; $ns[6] = 0x53;
$ns[7] = 0x43; $ns[7] = 0x43;
$ns[8] = 0x41; $ns[8] = 0x41;
$ns[9] = 0x50; $ns[9] = 0x50;
$ns[10] = 0x45; $ns[10] = 0x45;
$ns[11] = 0x32; $ns[11] = 0x32;
$ns[12] = 0x2e; $ns[12] = 0x2e;
$ns[13] = 0x30; $ns[13] = 0x30;
$ns[14] = 0x03; $ns[14] = 0x03;
$ns[15] = 0x01; $ns[15] = 0x01;
$ns[16] = $this->loop & 255; $ns[16] = $this->loop & 255;
$ns[17] = $this->loop >> 8; $ns[17] = $this->loop >> 8;
$ns[18] = 0x00; $ns[18] = 0x00;
$this->putbytes($ns, 19); $this->putbytes($ns, 19);
} }
} }
if($this->use_global_in) { if($this->use_global_in) {
$outtable = $this->global_in; $outtable = $this->global_in;
$outsize = $this->global_color_table_size; $outsize = $this->global_color_table_size;
$outsizecode = $this->global_color_table_sizecode; $outsizecode = $this->global_color_table_sizecode;
} else { } else {
$outtable = $this->global_out; $outtable = $this->global_out;
$outsize = $this->out_color_table_size; $outsize = $this->out_color_table_size;
} }
if($this->local_color_table_flag) { if($this->local_color_table_flag) {
if($size == $this->out_color_table_size && !$this->arrcmp($this->local_in, $this->global_out, $size)) { if($size == $this->out_color_table_size && !$this->arrcmp($this->local_in, $this->global_out, $size)) {
$outtable = $this->global_out; $outtable = $this->global_out;
$outsize = $this->out_color_table_size; $outsize = $this->out_color_table_size;
} else { } else {
$outtable = $this->local_in; $outtable = $this->local_in;
$outsize = $size; $outsize = $size;
$outsizecode = $sizecode; $outsizecode = $sizecode;
} }
} }
$use_trans = false; $use_trans = false;
if($this->transparent) { if($this->transparent) {
for($i = 0; $i < $outsize; $i++) { for($i = 0; $i < $outsize; $i++) {
if($outtable[3 * $i] == $this->trans1 && $outtable [3 * $i + 1] == $this->trans2 && $outtable [3 * $i + 2] == $this->trans3) { if($outtable[3 * $i] == $this->trans1 && $outtable [3 * $i + 1] == $this->trans2 && $outtable [3 * $i + 2] == $this->trans3) {
break; break;
} }
} }
if($i < $outsize) { if($i < $outsize) {
$transindex = $i; $transindex = $i;
$use_trans = true; $use_trans = true;
} }
} }
if($this->delay || $use_trans) { if($this->delay || $use_trans) {
$this->buffer[0] = 0x21; $this->buffer[0] = 0x21;
$this->buffer[1] = 0xf9; $this->buffer[1] = 0xf9;
$this->buffer[2] = 0x04; $this->buffer[2] = 0x04;
$this->buffer[3] = ($this->disposal << 2) + ($use_trans ? 1 : 0); $this->buffer[3] = ($this->disposal << 2) + ($use_trans ? 1 : 0);
$this->buffer[4] = $this->delay & 0xff; $this->buffer[4] = $this->delay & 0xff;
$this->buffer[5] = ($this->delay & 0xff00) >> 8; $this->buffer[5] = ($this->delay & 0xff00) >> 8;
$this->buffer[6] = $use_trans ? $transindex : 0; $this->buffer[6] = $use_trans ? $transindex : 0;
$this->buffer[7] = 0x00; $this->buffer[7] = 0x00;
$this->putbytes($this->buffer,8); $this->putbytes($this->buffer,8);
} }
$this->buffer[0] = 0x2c; $this->buffer[0] = 0x2c;
$this->putbytes($this->buffer,1); $this->putbytes($this->buffer,1);
$head[0] = $this->x & 0xff; $head[0] = $this->x & 0xff;
$head[1] = ($this->x & 0xff00) >> 8; $head[1] = ($this->x & 0xff00) >> 8;
$head[2] = $this->y & 0xff; $head[2] = $this->y & 0xff;
$head[3] = ($this->y & 0xff00) >> 8; $head[3] = ($this->y & 0xff00) >> 8;
$head[8] &= 0x40; $head[8] &= 0x40;
if($outtable != $this->global_out) { if($outtable != $this->global_out) {
$head[8] |= 0x80; $head[8] |= 0x80;
$head[8] |= $outsizecode; $head[8] |= $outsizecode;
} }
$this->putbytes($head,9); $this->putbytes($head,9);
if($outtable != $this->global_out) { if($outtable != $this->global_out) {
$this->putbytes($outtable, (3 * $outsize)); $this->putbytes($outtable, (3 * $outsize));
} }
$this->getbytes(1); $this->getbytes(1);
$this->putbytes($this->buffer,1); $this->putbytes($this->buffer,1);
for(;;) { for(;;) {
$this->getbytes(1); $this->getbytes(1);
$this->putbytes($this->buffer,1); $this->putbytes($this->buffer,1);
if(($u = $this->buffer[0]) == 0) { if(($u = $this->buffer[0]) == 0) {
break; break;
} }
$this->getbytes($u); $this->getbytes($u);
$this->putbytes($this->buffer, $u); $this->putbytes($this->buffer, $u);
} }
} }
function read_extension() { function read_extension() {
$this->getbytes(1); $this->getbytes(1);
switch($this->buffer[0]) { switch($this->buffer[0]) {
case 0xf9: case 0xf9:
$this->getbytes(6); $this->getbytes(6);
break; break;
case 0xfe: case 0xfe:
for(;;) { for(;;) {
$this->getbytes(1); $this->getbytes(1);
if(($u = $this->buffer[0]) == 0) { if(($u = $this->buffer[0]) == 0) {
break; break;
} }
$this->getbytes($u); $this->getbytes($u);
} }
break; break;
case 0x01: case 0x01:
$this->getbytes(13); $this->getbytes(13);
for(;;) { for(;;) {
$this->getbytes(0); $this->getbytes(0);
if(($u = $this->buffer[0]) == 0) { if(($u = $this->buffer[0]) == 0) {
break; break;
} }
$this->getbytes($u); $this->getbytes($u);
} }
break; break;
case 0xff: case 0xff:
$this->getbytes(9); $this->getbytes(9);
$this->getbytes(3); $this->getbytes(3);
for(;;) { for(;;) {
$this->getbytes(1); $this->getbytes(1);
if(!$this->buffer[0]) { if(!$this->buffer[0]) {
break; break;
} }
$this->getbytes($this->buffer[0]); $this->getbytes($this->buffer[0]);
} }
break; break;
default: default:
for(;;) { for(;;) {
$this->getbytes(1); $this->getbytes(1);
if(!$this->buffer[0]) { if(!$this->buffer[0]) {
break; break;
} }
$this->getbytes($this->buffer[0]); $this->getbytes($this->buffer[0]);
} }
} }
} }
function arrcmp($b, $s, $l) { function arrcmp($b, $s, $l) {
for($i = 0; $i < $l; $i++) { for($i = 0; $i < $l; $i++) {
if($s{$i} != $b{$i}) { if($s{$i} != $b{$i}) {
return false; return false;
} }
} }
return true; return true;
} }
function getbytes($l) { function getbytes($l) {
for($i = 0; $i < $l; $i++) { for($i = 0; $i < $l; $i++) {
if($this->mod == 'C_FILE') { if($this->mod == 'C_FILE') {
$bin = unpack('C*', fread($this->fin, 1)); $bin = unpack('C*', fread($this->fin, 1));
$this->buffer[$i] = $bin[1]; $this->buffer[$i] = $bin[1];
} elseif($this->mod == 'C_MEMORY') { } elseif($this->mod == 'C_MEMORY') {
$bin = unpack('C*', substr($this->fin, $this->ch, 1)); $bin = unpack('C*', substr($this->fin, $this->ch, 1));
$this->buffer[$i] = $bin[1]; $this->buffer[$i] = $bin[1];
$this->ch++; $this->ch++;
} }
} }
return $this->buffer; return $this->buffer;
} }
function putbytes($s, $l) { function putbytes($s, $l) {
for($i = 0; $i < $l; $i++) { for($i = 0; $i < $l; $i++) {
$this->fout .= pack('C*', $s[$i]); $this->fout .= pack('C*', $s[$i]);
} }
} }
function getAnimation() { function getAnimation() {
return $this->fout; return $this->fout;
} }
} }
?> ?>

View File

@@ -1,99 +1,99 @@
<?php <?php
class JSSDK { class JSSDK {
private $appId; private $appId;
private $appSecret; private $appSecret;
private $qy; private $qy;
public function __construct($appId, $appSecret,$qy=1) { public function __construct($appId, $appSecret,$qy=1) {
$this->appId = $appId; $this->appId = $appId;
$this->appSecret = $appSecret; $this->appSecret = $appSecret;
$this->qy=$qy; $this->qy=$qy;
} }
public function getSignPackage() { public function getSignPackage() {
$jsapiTicket = $this->getJsApiTicket(); $jsapiTicket = $this->getJsApiTicket();
// 注意 URL 一定要动态获取,不能 hardcode. // 注意 URL 一定要动态获取,不能 hardcode.
$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://"; $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
$url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; $url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$timestamp = time(); $timestamp = time();
$nonceStr = $this->createNonceStr(); $nonceStr = $this->createNonceStr();
// 这里参数的顺序要按照 key 值 ASCII 码升序排序 // 这里参数的顺序要按照 key 值 ASCII 码升序排序
$string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr&timestamp=$timestamp&url=$url"; $string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr&timestamp=$timestamp&url=$url";
$signature = sha1($string); $signature = sha1($string);
$signPackage = array( $signPackage = array(
"appId" => $this->appId, "appId" => $this->appId,
"nonceStr" => $nonceStr, "nonceStr" => $nonceStr,
"timestamp" => $timestamp, "timestamp" => $timestamp,
"url" => $url, "url" => $url,
"signature" => $signature, "signature" => $signature,
"rawString" => $string "rawString" => $string
); );
return $signPackage; return $signPackage;
} }
private function createNonceStr($length = 16) { private function createNonceStr($length = 16) {
$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
$str = ""; $str = "";
for ($i = 0; $i < $length; $i++) { for ($i = 0; $i < $length; $i++) {
$str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1); $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
} }
return $str; return $str;
} }
private function getJsApiTicket() { private function getJsApiTicket() {
// jsapi_ticket 应该全局存储与更新 // jsapi_ticket 应该全局存储与更新
if(loadcache('qy_jsapi_ticket') && ($ticket=authcode(getglobal('cache/qy_jsapi_ticket'),'DECODE',getglobal('setting/authkey')))){ if(loadcache('qy_jsapi_ticket') && ($ticket=authcode(getglobal('cache/qy_jsapi_ticket'),'DECODE',getglobal('setting/authkey')))){
return $ticket; return $ticket;
} }
$accessToken = $this->getAccessToken(); $accessToken = $this->getAccessToken();
// 如果是企业号用以下 URL 获取 ticket // 如果是企业号用以下 URL 获取 ticket
if($this->qy) $url = "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=$accessToken"; if($this->qy) $url = "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=$accessToken";
else $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=$accessToken"; else $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=$accessToken";
$res = json_decode($this->httpGet($url)); $res = json_decode($this->httpGet($url));
$ticket = $res->ticket; $ticket = $res->ticket;
if ($ticket) { if ($ticket) {
$expire = $res->expires_in ? intval($res->expires_in)-200 : 7000; $expire = $res->expires_in ? intval($res->expires_in)-200 : 7000;
savecache('qy_jsapi_ticket',authcode($ticket,'ENCODE',getglobal('setting/authkey'),$expire)); savecache('qy_jsapi_ticket',authcode($ticket,'ENCODE',getglobal('setting/authkey'),$expire));
return $ticket; return $ticket;
} }
return false; return false;
} }
private function getAccessToken() { private function getAccessToken() {
// access_token 应该全局存储与更新 // access_token 应该全局存储与更新
if(loadcache('qy_access_token') && ($token=authcode(getglobal('cache/qy_access_token'),'DECODE',getglobal('setting/authkey')))){ if(loadcache('qy_access_token') && ($token=authcode(getglobal('cache/qy_access_token'),'DECODE',getglobal('setting/authkey')))){
return $token; return $token;
} }
// 如果是企业号用以下URL获取access_token // 如果是企业号用以下URL获取access_token
if($this->qy) $url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$this->appId&corpsecret=$this->appSecret"; if($this->qy) $url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$this->appId&corpsecret=$this->appSecret";
else $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$this->appId&secret=$this->appSecret"; else $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$this->appId&secret=$this->appSecret";
$res = json_decode($this->httpGet($url)); $res = json_decode($this->httpGet($url));
$access_token = $res->access_token; $access_token = $res->access_token;
if ($access_token) { if ($access_token) {
$expire = $res->expires_in ? intval($res->expires_in)-200 : 7000; $expire = $res->expires_in ? intval($res->expires_in)-200 : 7000;
//TODO: cache access_token //TODO: cache access_token
savecache('qy_access_token',authcode($access_token,'ENCODE',getglobal('setting/authkey'),$expire)); savecache('qy_access_token',authcode($access_token,'ENCODE',getglobal('setting/authkey'),$expire));
} }
return $access_token; return $access_token;
} }
private function httpGet($url) { private function httpGet($url) {
$curl = curl_init(); $curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 500); curl_setopt($curl, CURLOPT_TIMEOUT, 500);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_URL, $url);
$res = curl_exec($curl); $res = curl_exec($curl);
curl_close($curl); curl_close($curl);
return $res; return $res;
} }
} }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,109 +1,109 @@
<?php <?php
if(!defined('IN_OAOOA')) { if(!defined('IN_OAOOA')) {
exit('Access Denied'); exit('Access Denied');
} }
class bbcode { class bbcode {
var $search_exp = array(); var $search_exp = array();
var $replace_exp = array(); var $replace_exp = array();
var $search_str = array(); var $search_str = array();
var $replace_str = array(); var $replace_str = array();
var $html_s_exp = array(); var $html_s_exp = array();
var $html_r_exp = array(); var $html_r_exp = array();
var $html_s_str = array(); var $html_s_str = array();
var $html_r_str = array(); var $html_r_str = array();
function &instance() { function &instance() {
static $object; static $object;
if(empty($object)) { if(empty($object)) {
$object = new bbcode(); $object = new bbcode();
} }
return $object; return $object;
} }
function bbcode() { function bbcode() {
} }
function bbcode2html($message, $parseurl=0) { function bbcode2html($message, $parseurl=0) {
if(empty($this->search_exp)) { if(empty($this->search_exp)) {
$this->search_exp = array( $this->search_exp = array(
"/\s*\[quote\][\n\r]*(.+?)[\n\r]*\[\/quote\]\s*/is", "/\s*\[quote\][\n\r]*(.+?)[\n\r]*\[\/quote\]\s*/is",
"/\[url\]\s*(https?:\/\/|ftp:\/\/|gopher:\/\/|news:\/\/|telnet:\/\/|rtsp:\/\/|mms:\/\/|callto:\/\/|ed2k:\/\/){1}([^\[\"']+?)\s*\[\/url\]/i", "/\[url\]\s*(https?:\/\/|ftp:\/\/|gopher:\/\/|news:\/\/|telnet:\/\/|rtsp:\/\/|mms:\/\/|callto:\/\/|ed2k:\/\/){1}([^\[\"']+?)\s*\[\/url\]/i",
"/\[em:([0-9]+):\]/i", "/\[em:([0-9]+):\]/i",
); );
$this->replace_exp = array( $this->replace_exp = array(
"<div class=\"quote\"><blockquote>\\1</blockquote></div>", "<div class=\"quote\"><blockquote>\\1</blockquote></div>",
"<a href=\"\\1\\2\" target=\"_blank\">\\1\\2</a>", "<a href=\"\\1\\2\" target=\"_blank\">\\1\\2</a>",
" <img src=\"".STATICURL."image/smiley/comcom/\\1.gif\" class=\"vm\"> " " <img src=\"".STATICURL."image/smiley/comcom/\\1.gif\" class=\"vm\"> "
); );
$this->replace_exp[] = '$this->bb_img(\'\\1\')'; $this->replace_exp[] = '$this->bb_img(\'\\1\')';
$this->search_str = array('[b]', '[/b]','[i]', '[/i]', '[u]', '[/u]'); $this->search_str = array('[b]', '[/b]','[i]', '[/i]', '[u]', '[/u]');
$this->replace_str = array('<b>', '</b>', '<i>','</i>', '<u>', '</u>'); $this->replace_str = array('<b>', '</b>', '<i>','</i>', '<u>', '</u>');
} }
if($parseurl==2) { if($parseurl==2) {
$message = bbcode::parseurl($message); $message = bbcode::parseurl($message);
} }
@$message = preg_replace($this->search_exp, $this->replace_exp, $message, 20); @$message = preg_replace($this->search_exp, $this->replace_exp, $message, 20);
if($parseurl==2) { if($parseurl==2) {
@$message = preg_replace_callback("/\[img\]\s*([^\[\<\r\n]+?)\s*\[\/img\]/is", array($this, 'bbcode2html_callback_bb_img_1'), $message, 20); @$message = preg_replace_callback("/\[img\]\s*([^\[\<\r\n]+?)\s*\[\/img\]/is", array($this, 'bbcode2html_callback_bb_img_1'), $message, 20);
} }
@$message = str_replace($this->search_str, $this->replace_str, $message); @$message = str_replace($this->search_str, $this->replace_str, $message);
return nl2br(str_replace(array("\t", ' ', ' '), array('&nbsp; &nbsp; &nbsp; &nbsp; ', '&nbsp; &nbsp;', '&nbsp;&nbsp;'), $message)); return nl2br(str_replace(array("\t", ' ', ' '), array('&nbsp; &nbsp; &nbsp; &nbsp; ', '&nbsp; &nbsp;', '&nbsp;&nbsp;'), $message));
} }
function bbcode2html_callback_bb_img_1($matches) { function bbcode2html_callback_bb_img_1($matches) {
return $this->bb_img($matches[1]); return $this->bb_img($matches[1]);
} }
function parseurl($message) { function parseurl($message) {
return preg_replace("/(?<=[^\]a-z0-9-=\"'\\/])((https?|ftp|gopher|news|telnet|mms|rtsp):\/\/)([a-z0-9\/\-_+=.~!%@?#%&;:$\\()|]+)/i", "[url]\\1\\3[/url]", ' '.$message); return preg_replace("/(?<=[^\]a-z0-9-=\"'\\/])((https?|ftp|gopher|news|telnet|mms|rtsp):\/\/)([a-z0-9\/\-_+=.~!%@?#%&;:$\\()|]+)/i", "[url]\\1\\3[/url]", ' '.$message);
} }
function html2bbcode($message) { function html2bbcode($message) {
if(empty($this->html_s_exp)) { if(empty($this->html_s_exp)) {
$this->html_s_exp = array( $this->html_s_exp = array(
"/\<div class=\"quote\"\>\<blockquote\>(.*?)\<\/blockquote\>\<\/div\>/is", "/\<div class=\"quote\"\>\<blockquote\>(.*?)\<\/blockquote\>\<\/div\>/is",
"/\<a href=\"(.+?)\".*?\<\/a\>/is", "/\<a href=\"(.+?)\".*?\<\/a\>/is",
"/(\r\n|\n|\r)/", "/(\r\n|\n|\r)/",
"/<br.*>/siU", "/<br.*>/siU",
"/[ \t]*\<img src=\"static\/image\/smiley\/comcom\/(.+?).gif\".*?\>[ \t]*/is", "/[ \t]*\<img src=\"static\/image\/smiley\/comcom\/(.+?).gif\".*?\>[ \t]*/is",
"/\s*\<img src=\"(.+?)\".*?\>\s*/is" "/\s*\<img src=\"(.+?)\".*?\>\s*/is"
); );
$this->html_r_exp = array( $this->html_r_exp = array(
"[quote]\\1[/quote]", "[quote]\\1[/quote]",
"\\1", "\\1",
'', '',
"\n", "\n",
"[em:\\1:]", "[em:\\1:]",
"\n[img]\\1[/img]\n" "\n[img]\\1[/img]\n"
); );
$this->html_s_str = array('<b>', '</b>', '<i>','</i>', '<u>', '</u>', '&nbsp; &nbsp; &nbsp; &nbsp; ', '&nbsp; &nbsp;', '&nbsp;&nbsp;', '&lt;', '&gt;', '&amp;'); $this->html_s_str = array('<b>', '</b>', '<i>','</i>', '<u>', '</u>', '&nbsp; &nbsp; &nbsp; &nbsp; ', '&nbsp; &nbsp;', '&nbsp;&nbsp;', '&lt;', '&gt;', '&amp;');
$this->html_r_str = array('[b]', '[/b]','[i]', '[/i]', '[u]', '[/u]', "\t", ' ', ' ', '<', '>', '&'); $this->html_r_str = array('[b]', '[/b]','[i]', '[/i]', '[u]', '[/u]', "\t", ' ', ' ', '<', '>', '&');
} }
@$message = str_replace($this->html_s_str, $this->html_r_str, @$message = str_replace($this->html_s_str, $this->html_r_str,
preg_replace($this->html_s_exp, $this->html_r_exp, $message)); preg_replace($this->html_s_exp, $this->html_r_exp, $message));
$message = dhtmlspecialchars($message); $message = dhtmlspecialchars($message);
return trim($message); return trim($message);
} }
function bb_img($url) { function bb_img($url) {
global $_G; global $_G;
if(!in_array(strtolower(substr($url, 0, 6)), array('http:/', 'https:', 'ftp://', 'rtsp:/', 'mms://'))) { if(!in_array(strtolower(substr($url, 0, 6)), array('http:/', 'https:', 'ftp://', 'rtsp:/', 'mms://'))) {
$url = isset($_G['siteurl']) && !empty($_G['siteurl']) ? $_G['siteurl'].$url : 'http://'.$url; $url = isset($_G['siteurl']) && !empty($_G['siteurl']) ? $_G['siteurl'].$url : 'http://'.$url;
} }
$url = addslashes($url); $url = addslashes($url);
return "<img src=\"$url\" class=\"vm\">"; return "<img src=\"$url\" class=\"vm\">";
} }
} }
?> ?>

View File

@@ -1,323 +1,323 @@
<?php <?php
/** /**
* Command * Command
* *
* This class represents a shell command. * This class represents a shell command.
* *
* @author Michael Härtl <haertl.mike@gmail.com> * @author Michael Härtl <haertl.mike@gmail.com>
* @version 1.0.5 * @version 1.0.5
* @license http://www.opensource.org/licenses/MIT * @license http://www.opensource.org/licenses/MIT
*/ */
class command class command
{ {
/** /**
* @var bool whether to escape any argument passed through addArg(). Default is true. * @var bool whether to escape any argument passed through addArg(). Default is true.
*/ */
public $escapeArgs = true; public $escapeArgs = true;
/** /**
* @var bool whether to escape the command passed to setCommand() or the constructor. * @var bool whether to escape the command passed to setCommand() or the constructor.
* This is only useful if $escapeArgs is false. Default is false. * This is only useful if $escapeArgs is false. Default is false.
*/ */
public $escapeCommand = false; public $escapeCommand = false;
/** /**
* @var bool whether to use `exec()` instead of `proc_open()`. This can be used on Windows system * @var bool whether to use `exec()` instead of `proc_open()`. This can be used on Windows system
* to workaround some quirks there. Note, that any errors from your command will be output directly * to workaround some quirks there. Note, that any errors from your command will be output directly
* to the PHP output stream. `getStdErr()` will also not work anymore and thus you also won't get * to the PHP output stream. `getStdErr()` will also not work anymore and thus you also won't get
* the error output from `getError()` in this case. You also can't pass any environment * the error output from `getError()` in this case. You also can't pass any environment
* variables to the command if this is enabled. Default is false. * variables to the command if this is enabled. Default is false.
*/ */
public $useExec = false; public $useExec = false;
/** /**
* @var bool whether to capture stderr (2>&1) when `useExec` is true. This will try to redirect the * @var bool whether to capture stderr (2>&1) when `useExec` is true. This will try to redirect the
* stderr to stdout and provide the complete output of both in `getStdErr()` and `getError()`. * stderr to stdout and provide the complete output of both in `getStdErr()` and `getError()`.
* Default is `true`. * Default is `true`.
*/ */
public $captureStdErr = true; public $captureStdErr = true;
/** /**
* @var string|null the initial working dir for proc_open(). Default is null for current PHP working dir. * @var string|null the initial working dir for proc_open(). Default is null for current PHP working dir.
*/ */
public $procCwd; public $procCwd;
/** /**
* @var array|null an array with environment variables to pass to proc_open(). Default is null for none. * @var array|null an array with environment variables to pass to proc_open(). Default is null for none.
*/ */
public $procEnv; public $procEnv;
/** /**
* @var array|null an array of other_options for proc_open(). Default is null for none. * @var array|null an array of other_options for proc_open(). Default is null for none.
*/ */
public $procOptions; public $procOptions;
/** /**
* @var string the command to execute * @var string the command to execute
*/ */
protected $_command; protected $_command;
/** /**
* @var array the list of command arguments * @var array the list of command arguments
*/ */
protected $_args = array(); protected $_args = array();
/** /**
* @var string the full command string to execute * @var string the full command string to execute
*/ */
protected $_execCommand; protected $_execCommand;
/** /**
* @var string the stdout output * @var string the stdout output
*/ */
protected $_stdOut = ''; protected $_stdOut = '';
/** /**
* @var string the stderr output * @var string the stderr output
*/ */
protected $_stdErr = ''; protected $_stdErr = '';
/** /**
* @var int the exit code * @var int the exit code
*/ */
protected $_exitCode; protected $_exitCode;
/** /**
* @var string the error message * @var string the error message
*/ */
protected $_error = ''; protected $_error = '';
/** /**
* @var bool whether the command was successfully executed * @var bool whether the command was successfully executed
*/ */
protected $_executed = false; protected $_executed = false;
/** /**
* @param string|array $options either a command string or an options array (see setOptions()) * @param string|array $options either a command string or an options array (see setOptions())
*/ */
public function __construct($options = null) public function __construct($options = null)
{ {
if (is_array($options)) { if (is_array($options)) {
$this->setOptions($options); $this->setOptions($options);
} elseif (is_string($options)) { } elseif (is_string($options)) {
$this->setCommand($options); $this->setCommand($options);
} }
} }
/** /**
* @param array $options array of name => value options that should be applied to the object * @param array $options array of name => value options that should be applied to the object
* You can also pass options that use a setter, e.g. you can pass a 'fileName' option which * You can also pass options that use a setter, e.g. you can pass a 'fileName' option which
* will be passed to setFileName(). * will be passed to setFileName().
* @return Command for method chaining * @return Command for method chaining
*/ */
public function setOptions($options) public function setOptions($options)
{ {
foreach ($options as $key => $value) { foreach ($options as $key => $value) {
if (property_exists($this, $key)) { if (property_exists($this, $key)) {
$this->$key = $value; $this->$key = $value;
} else { } else {
$method = 'set'.ucfirst($key); $method = 'set'.ucfirst($key);
if (method_exists($this, $method)) { if (method_exists($this, $method)) {
call_user_func(array($this,$method), $value); call_user_func(array($this,$method), $value);
} else { } else {
throw new \Exception("Unknown configuration option '$key'"); throw new \Exception("Unknown configuration option '$key'");
} }
} }
} }
return $this; return $this;
} }
/** /**
* @param string $command the command or full command string to execute, like 'gzip' or 'gzip -d'. * @param string $command the command or full command string to execute, like 'gzip' or 'gzip -d'.
* You can still call addArg() to add more arguments to the command. If $escapeCommand was set to true, * You can still call addArg() to add more arguments to the command. If $escapeCommand was set to true,
* the command gets escaped through escapeshellcmd(). * the command gets escaped through escapeshellcmd().
* @return Command for method chaining * @return Command for method chaining
*/ */
public function setCommand($command) public function setCommand($command)
{ {
$this->_command = $this->escapeCommand ? escapeshellcmd($command) : $command; $this->_command = $this->escapeCommand ? escapeshellcmd($command) : $command;
return $this; return $this;
} }
/** /**
* @return string|null the command that was set through setCommand() or passed to the constructor. Null if none. * @return string|null the command that was set through setCommand() or passed to the constructor. Null if none.
*/ */
public function getCommand() public function getCommand()
{ {
return $this->_command; return $this->_command;
} }
/** /**
* @return string|bool the full command string to execute. If no command was set with setCommand() * @return string|bool the full command string to execute. If no command was set with setCommand()
* or passed to the constructor it will return false. * or passed to the constructor it will return false.
*/ */
public function getExecCommand() public function getExecCommand()
{ {
if ($this->_execCommand===null) { if ($this->_execCommand===null) {
$command = $this->getCommand(); $command = $this->getCommand();
if (!$command) { if (!$command) {
$this->_error = 'Could not locate any executable command'; $this->_error = 'Could not locate any executable command';
return false; return false;
} }
$args = $this->getArgs(); $args = $this->getArgs();
$this->_execCommand = $args ? $command.' '.$args : $command; $this->_execCommand = $args ? $command.' '.$args : $command;
} }
return $this->_execCommand; return $this->_execCommand;
} }
/** /**
* @param string $args the command arguments as string. Note that these will not get escaped! * @param string $args the command arguments as string. Note that these will not get escaped!
* @return Command for method chaining * @return Command for method chaining
*/ */
public function setArgs($args) public function setArgs($args)
{ {
$this->_args = array($args); $this->_args = array($args);
return $this; return $this;
} }
/** /**
* @return string the command args that where set through setArgs() or added with addArg() separated by spaces * @return string the command args that where set through setArgs() or added with addArg() separated by spaces
*/ */
public function getArgs() public function getArgs()
{ {
return implode(' ', $this->_args); return implode(' ', $this->_args);
} }
/** /**
* @param string $key the argument key to add e.g. `--feature` or `--name=`. If the key does not end with * @param string $key the argument key to add e.g. `--feature` or `--name=`. If the key does not end with
* and `=`, the $value will be separated by a space, if any. Keys are not escaped unless $value is null * and `=`, the $value will be separated by a space, if any. Keys are not escaped unless $value is null
* and $escape is `true`. * and $escape is `true`.
* @param string|array|null $value the optional argument value which will get escaped if $escapeArgs is true. * @param string|array|null $value the optional argument value which will get escaped if $escapeArgs is true.
* An array can be passed to add more than one value for a key, e.g. `addArg('--exclude', array('val1','val2'))` * An array can be passed to add more than one value for a key, e.g. `addArg('--exclude', array('val1','val2'))`
* which will create the option `--exclude 'val1' 'val2'`. * which will create the option `--exclude 'val1' 'val2'`.
* @param bool|null $escape if set, this overrides the $escapeArgs setting and enforces escaping/no escaping * @param bool|null $escape if set, this overrides the $escapeArgs setting and enforces escaping/no escaping
* @return Command for method chaining * @return Command for method chaining
*/ */
public function addArg($key, $value = null, $escape = null) public function addArg($key, $value = null, $escape = null)
{ {
$old=setlocale(LC_ALL,0); $old=setlocale(LC_ALL,0);
setlocale(LC_ALL,'us'); setlocale(LC_ALL,'us');
$doEscape = $escape!==null ? $escape : $this->escapeArgs; $doEscape = $escape!==null ? $escape : $this->escapeArgs;
if ($value===null) { if ($value===null) {
// Only escape single arguments if explicitely requested // Only escape single arguments if explicitely requested
$this->_args[] = $escape ? escapeshellarg($key) : $key; $this->_args[] = $escape ? escapeshellarg($key) : $key;
} else { } else {
$separator = substr($key, -1)==='=' ? '' : ' '; $separator = substr($key, -1)==='=' ? '' : ' ';
if (is_array($value)) { if (is_array($value)) {
$params = array(); $params = array();
foreach ($value as $v) { foreach ($value as $v) {
$params[] = $doEscape ? escapeshellarg($v) : $v; $params[] = $doEscape ? escapeshellarg($v) : $v;
} }
$this->_args[] = $key.$separator.implode(' ',$params); $this->_args[] = $key.$separator.implode(' ',$params);
} else { } else {
$this->_args[] = $key.$separator.($doEscape ? escapeshellarg($value) : $value); $this->_args[] = $key.$separator.($doEscape ? escapeshellarg($value) : $value);
} }
} }
//print_r($old); //print_r($old);
setlocale(LC_ALL,$old); setlocale(LC_ALL,$old);
return $this; return $this;
} }
/** /**
* @return string the command output (stdout). Empty if none. * @return string the command output (stdout). Empty if none.
*/ */
public function getOutput() public function getOutput()
{ {
return $this->_stdOut; return $this->_stdOut;
} }
/** /**
* @return string the error message, either stderr or internal message. Empty if none. * @return string the error message, either stderr or internal message. Empty if none.
*/ */
public function getError() public function getError()
{ {
return $this->_error; return $this->_error;
} }
/** /**
* @return string the stderr output. Empty if none. * @return string the stderr output. Empty if none.
*/ */
public function getStdErr() public function getStdErr()
{ {
return $this->_stdErr; return $this->_stdErr;
} }
/** /**
* @return int|null the exit code or null if command was not executed yet * @return int|null the exit code or null if command was not executed yet
*/ */
public function getExitCode() public function getExitCode()
{ {
return $this->_exitCode; return $this->_exitCode;
} }
/** /**
* @return string whether the command was successfully executed * @return string whether the command was successfully executed
*/ */
public function getExecuted() public function getExecuted()
{ {
return $this->_executed; return $this->_executed;
} }
/** /**
* Execute the command * Execute the command
* *
* @return bool whether execution was successful. If false, error details can be obtained through * @return bool whether execution was successful. If false, error details can be obtained through
* getError(), getStdErr() and getExitCode(). * getError(), getStdErr() and getExitCode().
*/ */
public function execute() public function execute()
{ {
$command = $this->getExecCommand(); $command = $this->getExecCommand();
if (!$command) { if (!$command) {
return false; return false;
} }
if ($this->useExec) { if ($this->useExec) {
$execCommand = $this->captureStdErr ? "$command 2>&1" : $command; $execCommand = $this->captureStdErr ? "$command 2>&1" : $command;
exec($execCommand, $output, $this->_exitCode); exec($execCommand, $output, $this->_exitCode);
$this->_stdOut = trim(implode("\n", $output)); $this->_stdOut = trim(implode("\n", $output));
if ($this->_exitCode!==0) { if ($this->_exitCode!==0) {
$this->_stdErr = $this->_stdOut; $this->_stdErr = $this->_stdOut;
$this->_error = empty($this->_stdErr) ? 'Command failed' : $this->_stdErr; $this->_error = empty($this->_stdErr) ? 'Command failed' : $this->_stdErr;
return false; return false;
} }
} else { } else {
$descriptors = array( $descriptors = array(
1 => array('pipe','w'), 1 => array('pipe','w'),
2 => array('pipe','a'), 2 => array('pipe','a'),
); );
$process = proc_open($command, $descriptors, $pipes, $this->procCwd, $this->procEnv, $this->procOptions); $process = proc_open($command, $descriptors, $pipes, $this->procCwd, $this->procEnv, $this->procOptions);
if (is_resource($process)) { if (is_resource($process)) {
$this->_stdOut = trim(stream_get_contents($pipes[1])); $this->_stdOut = trim(stream_get_contents($pipes[1]));
$this->_stdErr = trim(stream_get_contents($pipes[2])); $this->_stdErr = trim(stream_get_contents($pipes[2]));
fclose($pipes[1]); fclose($pipes[1]);
fclose($pipes[2]); fclose($pipes[2]);
$this->_exitCode = proc_close($process); $this->_exitCode = proc_close($process);
if ($this->_exitCode!==0) { if ($this->_exitCode!==0) {
$this->_error = $this->_stdErr ? $this->_stdErr : "Failed without error message: $command"; $this->_error = $this->_stdErr ? $this->_stdErr : "Failed without error message: $command";
return false; return false;
} }
} else { } else {
$this->_error = "Could not run command $command"; $this->_error = "Could not run command $command";
return false; return false;
} }
} }
$this->_executed = true; $this->_executed = true;
return true; return true;
} }
/** /**
* @return string the current command string to execute * @return string the current command string to execute
*/ */
public function __toString() public function __toString()
{ {
return (string)$this->getExecCommand(); return (string)$this->getExecCommand();
} }
} }

View File

@@ -1,393 +1,393 @@
<?php <?php
if(!defined('IN_OAOOA')) { if(!defined('IN_OAOOA')) {
exit('Access Denied'); exit('Access Denied');
} }
class core class core
{ {
private static $_tables; private static $_tables;
private static $_tptables; private static $_tptables;
private static $_imports; private static $_imports;
private static $_app; private static $_app;
private static $_memory; private static $_memory;
// 类名映射 // 类名映射
protected static $map = array(); protected static $map = array();
//psr4 //psr4
private static $prefixLengthsPsr4 = array(); private static $prefixLengthsPsr4 = array();
private static $prefixDirsPsr4 = array(); private static $prefixDirsPsr4 = array();
private static $fallbackDirsPsr4 = array(); private static $fallbackDirsPsr4 = array();
public static function app($params=array()) { public static function app($params=array()) {
if(!is_object(self::$_app)) { if(!is_object(self::$_app)) {
self::$_app = dzz_app::instance($params); self::$_app = dzz_app::instance($params);
} }
return self::$_app; return self::$_app;
} }
public static function creatapp() { public static function creatapp() {
if(!is_object(self::$_app)) { if(!is_object(self::$_app)) {
self::$_app = dzz_app::instance(); self::$_app = dzz_app::instance();
} }
return self::$_app; return self::$_app;
} }
public static function t($name) { public static function t($name) {
return self::_make_obj($name, 'table', DZZ_TABLE_EXTENDABLE); return self::_make_obj($name, 'table', DZZ_TABLE_EXTENDABLE);
} }
public static function tp_t($name) { public static function tp_t($name) {
return self::_tp_make_obj($name, 'table', DZZ_TABLE_EXTENDABLE); return self::_tp_make_obj($name, 'table', DZZ_TABLE_EXTENDABLE);
} }
public static function m($name) { public static function m($name) {
$args = array(); $args = array();
if(func_num_args() > 1) { if(func_num_args() > 1) {
$args = func_get_args(); $args = func_get_args();
unset($args[0]); unset($args[0]);
} }
return self::_make_obj($name, 'model', true, $args); return self::_make_obj($name, 'model', true, $args);
} }
protected static function _make_obj($name, $type, $extendable = true, $p = array()) { protected static function _make_obj($name, $type, $extendable = true, $p = array()) {
$folder = null; $folder = null;
if($name[0] === '#') { if($name[0] === '#') {
list(, $folder, $name) = explode('#', $name); list(, $folder, $name) = explode('#', $name);
} }
$cname = $type.'_'.$name; $cname = $type.'_'.$name;
if(!isset(self::$_tables[$cname])) { if(!isset(self::$_tables[$cname])) {
if(!class_exists($cname, false)) { if(!class_exists($cname, false)) {
self::import('class'.'/'.$type.'/'.$name,$folder); self::import('class'.'/'.$type.'/'.$name,$folder);
} }
if($extendable) { if($extendable) {
self::$_tables[$cname] = new dzz_container(); self::$_tables[$cname] = new dzz_container();
switch (count($p)) { switch (count($p)) {
case 0: self::$_tables[$cname]->obj = new $cname();break; case 0: self::$_tables[$cname]->obj = new $cname();break;
case 1: self::$_tables[$cname]->obj = new $cname($p[1]);break; case 1: self::$_tables[$cname]->obj = new $cname($p[1]);break;
case 2: self::$_tables[$cname]->obj = new $cname($p[1], $p[2]);break; case 2: self::$_tables[$cname]->obj = new $cname($p[1], $p[2]);break;
case 3: self::$_tables[$cname]->obj = new $cname($p[1], $p[2], $p[3]);break; case 3: self::$_tables[$cname]->obj = new $cname($p[1], $p[2], $p[3]);break;
case 4: self::$_tables[$cname]->obj = new $cname($p[1], $p[2], $p[3], $p[4]);break; case 4: self::$_tables[$cname]->obj = new $cname($p[1], $p[2], $p[3], $p[4]);break;
case 5: self::$_tables[$cname]->obj = new $cname($p[1], $p[2], $p[3], $p[4], $p[5]);break; case 5: self::$_tables[$cname]->obj = new $cname($p[1], $p[2], $p[3], $p[4], $p[5]);break;
default: $ref = new ReflectionClass($cname);self::$_tables[$cname]->obj = $ref->newInstanceArgs($p);unset($ref);break; default: $ref = new ReflectionClass($cname);self::$_tables[$cname]->obj = $ref->newInstanceArgs($p);unset($ref);break;
} }
} else { } else {
self::$_tables[$cname] = new $cname(); self::$_tables[$cname] = new $cname();
} }
} }
return self::$_tables[$cname]; return self::$_tables[$cname];
} }
protected static function _tp_make_obj($name, $type, $extendable = true, $p = array()) { protected static function _tp_make_obj($name, $type, $extendable = true, $p = array()) {
$folder = null; $folder = null;
if($name[0] === '#') { if($name[0] === '#') {
list(, $folder, $name) = explode('#', $name); list(, $folder, $name) = explode('#', $name);
} }
$cname = $type.'_'.$name; $cname = $type.'_'.$name;
if(!isset(self::$_tptables[$cname])) { if(!isset(self::$_tptables[$cname])) {
/*if(!class_exists($cname, false)) { /*if(!class_exists($cname, false)) {
self::import('class'.'/'.$type.'/'.$name,$folder); self::import('class'.'/'.$type.'/'.$name,$folder);
}*/ }*/
self::$_tptables[$cname] = new dzz_mode($name); self::$_tptables[$cname] = new dzz_mode($name);
} }
return self::$_tptables[$cname]; return self::$_tptables[$cname];
} }
public static function memory() { public static function memory() {
if(!self::$_memory) { if(!self::$_memory) {
self::$_memory = new dzz_memory(); self::$_memory = new dzz_memory();
self::$_memory->init(self::app()->config['memory']); self::$_memory->init(self::app()->config['memory']);
} }
return self::$_memory; return self::$_memory;
} }
public static function import($name, $folder = '', $force = true) { public static function import($name, $folder = '', $force = true) {
//如果文件名为空或者false阻止向下进行 //如果文件名为空或者false阻止向下进行
if(preg_match('/^\s*$/',$name) || $name == false){ if(preg_match('/^\s*$/',$name) || $name == false){
return false; return false;
} }
$key = $folder.$name; $key = $folder.$name;
if(!isset(self::$_imports[$key])) { if(!isset(self::$_imports[$key])) {
if($folder){ if($folder){
$path = DZZ_ROOT.'./dzz/'.$folder.'/'; $path = DZZ_ROOT.'./dzz/'.$folder.'/';
}else{ }else{
$path = DZZ_ROOT.'./core/'; $path = DZZ_ROOT.'./core/';
if(defined('CURSCRIPT')) { if(defined('CURSCRIPT')) {
$path1= DZZ_ROOT.'./'.CURSCRIPT.'/'; $path1= DZZ_ROOT.'./'.CURSCRIPT.'/';
if(defined('CURMODULE')) $path2=DZZ_ROOT.'/'.CURSCRIPT.'/'.CURMODULE.'/'; if(defined('CURMODULE')) $path2=DZZ_ROOT.'/'.CURSCRIPT.'/'.CURMODULE.'/';
} }
} }
if(strpos($name, '/') !== false) { if(strpos($name, '/') !== false) {
$pre = basename(dirname($name)); $pre = basename(dirname($name));
$filename = dirname($name).'/'.$pre.'_'.basename($name).'.php'; $filename = dirname($name).'/'.$pre.'_'.basename($name).'.php';
} else { } else {
$filename = $name.'.php'; $filename = $name.'.php';
} }
if(isset($path2) && is_file($path2.$filename)) { if(isset($path2) && is_file($path2.$filename)) {
self::$_imports[$key] = true; self::$_imports[$key] = true;
$rt = include $path2.$filename; $rt = include $path2.$filename;
return $rt; return $rt;
}elseif(isset($path1) && is_file($path1.$filename)) { }elseif(isset($path1) && is_file($path1.$filename)) {
self::$_imports[$key] = true; self::$_imports[$key] = true;
$rt = include $path1.$filename; $rt = include $path1.$filename;
return $rt; return $rt;
}elseif(is_file($path.$filename)) { }elseif(is_file($path.$filename)) {
self::$_imports[$key] = true; self::$_imports[$key] = true;
$rt = include $path.$filename; $rt = include $path.$filename;
return $rt; return $rt;
} elseif(!$force) { } elseif(!$force) {
return false; return false;
} else { } else {
//throw new Exception('Oops! System file lost: '.$filename); //throw new Exception('Oops! System file lost: '.$filename);
} }
} }
return true; return true;
} }
public static function handleException($exception) { public static function handleException($exception) {
global $_config; global $_config;
if($_config['debug']>0){ if($_config['debug']>0){
dzz_error::exception_error($exception); dzz_error::exception_error($exception);
} }
} }
public static function handleError($errno, $errstr, $errfile, $errline) { public static function handleError($errno, $errstr, $errfile, $errline) {
if($errno & DZZ_CORE_DEBUG) { if($errno & DZZ_CORE_DEBUG) {
dzz_error::system_error($errstr, false, true, false); dzz_error::system_error($errstr, false, true, false);
} }
} }
public static function handleShutdown() { public static function handleShutdown() {
if(($error = error_get_last()) && $error['type'] & DZZ_CORE_DEBUG) { if(($error = error_get_last()) && $error['type'] & DZZ_CORE_DEBUG) {
dzz_error::system_error($error['message'], false, true, false); dzz_error::system_error($error['message'], false, true, false);
} }
} }
public static function autoload($class) { public static function autoload($class) {
$module=''; $module='';
if($class[0] === '#') { if($class[0] === '#') {
list(, $module, $class) = explode('#', $class); list(, $module, $class) = explode('#', $class);
} }
$class = ($class); $class = ($class);
$namespaceArr = explode('\\',$class); $namespaceArr = explode('\\',$class);
$namesapce = $namespaceArr[0].'\\'; $namesapce = $namespaceArr[0].'\\';
if(array_key_exists($namesapce,self::$prefixDirsPsr4)){ if(array_key_exists($namesapce,self::$prefixDirsPsr4)){
$file = self::findFile($class); $file = self::findFile($class);
if(file_exists($file)){ if(file_exists($file)){
include_once $file; include_once $file;
return true; return true;
} }
} elseif(strpos($class, '_') !== false) { } elseif(strpos($class, '_') !== false) {
list($folder) = explode('_', $class); list($folder) = explode('_', $class);
$file = 'class/'.$folder.BS.substr($class, strlen($folder) + 1); $file = 'class/'.$folder.BS.substr($class, strlen($folder) + 1);
} else { } else {
$file = 'class/'.$class; $file = 'class/'.$class;
} }
try { try {
self::import($file,$module); self::import($file,$module);
return true; return true;
} catch (Exception $exc) { } catch (Exception $exc) {
$trace = $exc->getTrace(); $trace = $exc->getTrace();
foreach ($trace as $log) { foreach ($trace as $log) {
if(empty($log['class']) && $log['function'] == 'class_exists') { if(empty($log['class']) && $log['function'] == 'class_exists') {
return false; return false;
} }
} }
dzz_error::exception_error($exc); dzz_error::exception_error($exc);
} }
} }
//查找文件 //查找文件
private static function findFile($class) private static function findFile($class)
{ {
if (!empty(self::$map[$class])) { if (!empty(self::$map[$class])) {
// 类库映射 // 类库映射
return self::$map[$class]; return self::$map[$class];
} }
// 查找 PSR-4 // 查找 PSR-4
$logicalPathPsr4 = strtr($class, '\\', '/') . EXT; $logicalPathPsr4 = strtr($class, '\\', '/') . EXT;
$first = $class[0]; $first = $class[0];
if (isset(self::$prefixLengthsPsr4[$first])) { if (isset(self::$prefixLengthsPsr4[$first])) {
foreach (self::$prefixLengthsPsr4[$first] as $prefix => $length) { foreach (self::$prefixLengthsPsr4[$first] as $prefix => $length) {
if (0 === strpos($class, $prefix)) { if (0 === strpos($class, $prefix)) {
foreach (self::$prefixDirsPsr4[$prefix] as $dir) { foreach (self::$prefixDirsPsr4[$prefix] as $dir) {
if (is_file($file = $dir .BS .substr($logicalPathPsr4, $length))) { if (is_file($file = $dir .BS .substr($logicalPathPsr4, $length))) {
return $file; return $file;
} }
} }
} }
} }
} }
// 查找 PSR-4 fallback dirs // 查找 PSR-4 fallback dirs
foreach (self::$fallbackDirsPsr4 as $dir) { foreach (self::$fallbackDirsPsr4 as $dir) {
if (is_file($file = $dir . $logicalPathPsr4)) { if (is_file($file = $dir . $logicalPathPsr4)) {
return $file; return $file;
} }
} }
return self::$map[$class] = false; return self::$map[$class] = false;
} }
// 注册命名空间 // 注册命名空间
public static function addNamespace($namespace, $path = '') public static function addNamespace($namespace, $path = '')
{ {
if (is_array($namespace)) { if (is_array($namespace)) {
foreach ($namespace as $prefix => $paths) { foreach ($namespace as $prefix => $paths) {
self::addPsr4($prefix . '\\', rtrim($paths, '/'), true); self::addPsr4($prefix . '\\', rtrim($paths, '/'), true);
} }
} else { } else {
self::addPsr4($namespace . '\\', rtrim($path, '/'), true); self::addPsr4($namespace . '\\', rtrim($path, '/'), true);
} }
} }
// 添加Psr4空间 // 添加Psr4空间
private static function addPsr4($prefix, $paths, $prepend = false) private static function addPsr4($prefix, $paths, $prepend = false)
{ {
if (!$prefix) { if (!$prefix) {
// Register directories for the root namespace. // Register directories for the root namespace.
if ($prepend) { if ($prepend) {
self::$fallbackDirsPsr4 = array_merge( self::$fallbackDirsPsr4 = array_merge(
(array) $paths, (array) $paths,
self::$fallbackDirsPsr4 self::$fallbackDirsPsr4
); );
} else { } else {
self::$fallbackDirsPsr4 = array_merge( self::$fallbackDirsPsr4 = array_merge(
self::$fallbackDirsPsr4, self::$fallbackDirsPsr4,
(array) $paths (array) $paths
); );
} }
} elseif (!isset(self::$prefixDirsPsr4[$prefix])) { } elseif (!isset(self::$prefixDirsPsr4[$prefix])) {
// Register directories for a new namespace. // Register directories for a new namespace.
$length = strlen($prefix); $length = strlen($prefix);
if ('\\' !== $prefix[$length - 1]) { if ('\\' !== $prefix[$length - 1]) {
throw dzz_error::system_error("A non-empty PSR-4 prefix must end with a namespace separator."); throw dzz_error::system_error("A non-empty PSR-4 prefix must end with a namespace separator.");
} }
self::$prefixLengthsPsr4[$prefix[0]][$prefix] = $length; self::$prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
self::$prefixDirsPsr4[$prefix] = (array) $paths; self::$prefixDirsPsr4[$prefix] = (array) $paths;
} elseif ($prepend) { } elseif ($prepend) {
// Prepend directories for an already registered namespace. // Prepend directories for an already registered namespace.
self::$prefixDirsPsr4[$prefix] = array_merge( self::$prefixDirsPsr4[$prefix] = array_merge(
(array) $paths, (array) $paths,
self::$prefixDirsPsr4[$prefix] self::$prefixDirsPsr4[$prefix]
); );
} else { } else {
// Append directories for an already registered namespace. // Append directories for an already registered namespace.
self::$prefixDirsPsr4[$prefix] = array_merge( self::$prefixDirsPsr4[$prefix] = array_merge(
self::$prefixDirsPsr4[$prefix], self::$prefixDirsPsr4[$prefix],
(array) $paths (array) $paths
); );
} }
} }
public static function analysisStart($name){ public static function analysisStart($name){
$key = 'other'; $key = 'other';
if($name[0] === '#') { if($name[0] === '#') {
list(, $key, $name) = explode('#', $name); list(, $key, $name) = explode('#', $name);
} }
if(!isset($_ENV['analysis'])) { if(!isset($_ENV['analysis'])) {
$_ENV['analysis'] = array(); $_ENV['analysis'] = array();
} }
if(!isset($_ENV['analysis'][$key])) { if(!isset($_ENV['analysis'][$key])) {
$_ENV['analysis'][$key] = array(); $_ENV['analysis'][$key] = array();
$_ENV['analysis'][$key]['sum'] = 0; $_ENV['analysis'][$key]['sum'] = 0;
} }
$_ENV['analysis'][$key][$name]['start'] = microtime(TRUE); $_ENV['analysis'][$key][$name]['start'] = microtime(TRUE);
$_ENV['analysis'][$key][$name]['start_memory_get_usage'] = memory_get_usage(); $_ENV['analysis'][$key][$name]['start_memory_get_usage'] = memory_get_usage();
$_ENV['analysis'][$key][$name]['start_memory_get_real_usage'] = memory_get_usage(true); $_ENV['analysis'][$key][$name]['start_memory_get_real_usage'] = memory_get_usage(true);
$_ENV['analysis'][$key][$name]['start_memory_get_peak_usage'] = memory_get_peak_usage(); $_ENV['analysis'][$key][$name]['start_memory_get_peak_usage'] = memory_get_peak_usage();
$_ENV['analysis'][$key][$name]['start_memory_get_peak_real_usage'] = memory_get_peak_usage(true); $_ENV['analysis'][$key][$name]['start_memory_get_peak_real_usage'] = memory_get_peak_usage(true);
} }
public static function analysisStop($name) { public static function analysisStop($name) {
$key = 'other'; $key = 'other';
if($name[0] === '#') { if($name[0] === '#') {
list(, $key, $name) = explode('#', $name); list(, $key, $name) = explode('#', $name);
} }
if(isset($_ENV['analysis'][$key][$name]['start'])) { if(isset($_ENV['analysis'][$key][$name]['start'])) {
$diff = round((microtime(TRUE) - $_ENV['analysis'][$key][$name]['start']) * 1000, 5); $diff = round((microtime(TRUE) - $_ENV['analysis'][$key][$name]['start']) * 1000, 5);
$_ENV['analysis'][$key][$name]['time'] = $diff; $_ENV['analysis'][$key][$name]['time'] = $diff;
$_ENV['analysis'][$key]['sum'] = $_ENV['analysis'][$key]['sum'] + $diff; $_ENV['analysis'][$key]['sum'] = $_ENV['analysis'][$key]['sum'] + $diff;
unset($_ENV['analysis'][$key][$name]['start']); unset($_ENV['analysis'][$key][$name]['start']);
$_ENV['analysis'][$key][$name]['stop_memory_get_usage'] = memory_get_usage(); $_ENV['analysis'][$key][$name]['stop_memory_get_usage'] = memory_get_usage();
$_ENV['analysis'][$key][$name]['stop_memory_get_real_usage'] = memory_get_usage(true); $_ENV['analysis'][$key][$name]['stop_memory_get_real_usage'] = memory_get_usage(true);
$_ENV['analysis'][$key][$name]['stop_memory_get_peak_usage'] = memory_get_peak_usage(); $_ENV['analysis'][$key][$name]['stop_memory_get_peak_usage'] = memory_get_peak_usage();
$_ENV['analysis'][$key][$name]['stop_memory_get_peak_real_usage'] = memory_get_peak_usage(true); $_ENV['analysis'][$key][$name]['stop_memory_get_peak_real_usage'] = memory_get_peak_usage(true);
} }
return $_ENV['analysis'][$key][$name]; return $_ENV['analysis'][$key][$name];
} }
public static function loadConfig($file = null){ public static function loadConfig($file = null){
if($file && file_exists($file)){ if($file && file_exists($file)){
return include $file; return include $file;
}else{ }else{
return false; return false;
} }
} }
public static function getConfig($name){ public static function getConfig($name){
global $_config; global $_config;
return $_config[$name]; return $_config[$name];
} }
public static function setConfig($name,$value = null){ public static function setConfig($name,$value = null){
global $_config; global $_config;
if(is_string($name)){//单个设置 if(is_string($name)){//单个设置
$name = strtolower($name); $name = strtolower($name);
$_config[$name] = $value; $_config[$name] = $value;
}elseif(is_array($name)){//批量设置 }elseif(is_array($name)){//批量设置
$name = array_change_key_case($name,CASE_LOWER); $name = array_change_key_case($name,CASE_LOWER);
foreach($name as $k=>$v){ foreach($name as $k=>$v){
$_config[$k] = $v; $_config[$k] = $v;
} }
}else{ }else{
return false; return false;
} }
} }
public static function getNamespaceDir($namespace = null){ public static function getNamespaceDir($namespace = null){
// 查找 PSR-4 // 查找 PSR-4
$logicalPathPsr4 = strtr($namespace, '\\', '/'); $logicalPathPsr4 = strtr($namespace, '\\', '/');
$first = $namespace[0]; $first = $namespace[0];
if (isset(self::$prefixLengthsPsr4[$first])) { if (isset(self::$prefixLengthsPsr4[$first])) {
foreach (self::$prefixLengthsPsr4[$first] as $prefix => $length) { foreach (self::$prefixLengthsPsr4[$first] as $prefix => $length) {
if (0 === strpos($namespace, $prefix)) { if (0 === strpos($namespace, $prefix)) {
foreach (self::$prefixDirsPsr4[$prefix] as $dir) { foreach (self::$prefixDirsPsr4[$prefix] as $dir) {
if (is_dir($realdir = $dir .BS .substr($logicalPathPsr4, $length))) { if (is_dir($realdir = $dir .BS .substr($logicalPathPsr4, $length))) {
return $realdir; return $realdir;
} }
} }
} }
} }
} }
} }
} }

View File

@@ -245,6 +245,11 @@ class image {
$w = ceil($y_ratio * $this->imginfo['width']); $w = ceil($y_ratio * $this->imginfo['width']);
$h = $this->param['thumbheight']; $h = $this->param['thumbheight'];
} }
if($w < 242){
$w = $this->param['thumbwidth'] = 242;
$x_ratio = $this->param['thumbwidth'] / $this->imginfo['width'];
$h = ceil($x_ratio*$this->imginfo['height']);
}
} }
return array($x, $y, $w, $h); return array($x, $y, $w, $h);
} }
@@ -356,6 +361,10 @@ class image {
}else{ }else{
$width=ceil($height*$or); $width=ceil($height*$or);
if($width < 242){
$width = 242;
$height = ceil($width/$or);
}
} }
}else{ }else{
@@ -364,6 +373,11 @@ class image {
$width=$owidth; $width=$owidth;
}else{ }else{
$height=ceil($width/$or); $height=ceil($width/$or);
$width = ceil($height*$or);
if($width < 242){
$width = 242;
$height = ceil($width/$or);
}
} }
} }

View File

@@ -1,82 +1,82 @@
<?php <?php
/** /**
* PHP 汉字转拼音 * PHP 汉字转拼音
* @example * @example
* echo pinyin::encode('乐云网络'); //编码为拼音首字母 * echo pinyin::encode('乐云网络'); //编码为拼音首字母
* echo pinyin::encode('乐云网络', 'all'); //编码为全拼音 * echo pinyin::encode('乐云网络', 'all'); //编码为全拼音
*/ */
class pinyin { class pinyin {
/** /**
* 拼音字符转换图 * 拼音字符转换图
* @var array * @var array
*/ */
private static $_aMaps = array( private static $_aMaps = array(
'a'=>-20319,'ai'=>-20317,'an'=>-20304,'ang'=>-20295,'ao'=>-20292, 'a'=>-20319,'ai'=>-20317,'an'=>-20304,'ang'=>-20295,'ao'=>-20292,
'ba'=>-20283,'bai'=>-20265,'ban'=>-20257,'bang'=>-20242,'bao'=>-20230,'bei'=>-20051,'ben'=>-20036,'beng'=>-20032,'bi'=>-20026,'bian'=>-20002,'biao'=>-19990,'bie'=>-19986,'bin'=>-19982,'bing'=>-19976,'bo'=>-19805,'bu'=>-19784, 'ba'=>-20283,'bai'=>-20265,'ban'=>-20257,'bang'=>-20242,'bao'=>-20230,'bei'=>-20051,'ben'=>-20036,'beng'=>-20032,'bi'=>-20026,'bian'=>-20002,'biao'=>-19990,'bie'=>-19986,'bin'=>-19982,'bing'=>-19976,'bo'=>-19805,'bu'=>-19784,
'ca'=>-19775,'cai'=>-19774,'can'=>-19763,'cang'=>-19756,'cao'=>-19751,'ce'=>-19746,'ceng'=>-19741,'cha'=>-19739,'chai'=>-19728,'chan'=>-19725,'chang'=>-19715,'chao'=>-19540,'che'=>-19531,'chen'=>-19525,'cheng'=>-19515,'chi'=>-19500,'chong'=>-19484,'chou'=>-19479,'chu'=>-19467,'chuai'=>-19289,'chuan'=>-19288,'chuang'=>-19281,'chui'=>-19275,'chun'=>-19270,'chuo'=>-19263,'ci'=>-19261,'cong'=>-19249,'cou'=>-19243,'cu'=>-19242,'cuan'=>-19238,'cui'=>-19235,'cun'=>-19227,'cuo'=>-19224, 'ca'=>-19775,'cai'=>-19774,'can'=>-19763,'cang'=>-19756,'cao'=>-19751,'ce'=>-19746,'ceng'=>-19741,'cha'=>-19739,'chai'=>-19728,'chan'=>-19725,'chang'=>-19715,'chao'=>-19540,'che'=>-19531,'chen'=>-19525,'cheng'=>-19515,'chi'=>-19500,'chong'=>-19484,'chou'=>-19479,'chu'=>-19467,'chuai'=>-19289,'chuan'=>-19288,'chuang'=>-19281,'chui'=>-19275,'chun'=>-19270,'chuo'=>-19263,'ci'=>-19261,'cong'=>-19249,'cou'=>-19243,'cu'=>-19242,'cuan'=>-19238,'cui'=>-19235,'cun'=>-19227,'cuo'=>-19224,
'da'=>-19218,'dai'=>-19212,'dan'=>-19038,'dang'=>-19023,'dao'=>-19018,'de'=>-19006,'deng'=>-19003,'di'=>-18996,'dian'=>-18977,'diao'=>-18961,'die'=>-18952,'ding'=>-18783,'diu'=>-18774,'dong'=>-18773,'dou'=>-18763,'du'=>-18756,'duan'=>-18741,'dui'=>-18735,'dun'=>-18731,'duo'=>-18722, 'da'=>-19218,'dai'=>-19212,'dan'=>-19038,'dang'=>-19023,'dao'=>-19018,'de'=>-19006,'deng'=>-19003,'di'=>-18996,'dian'=>-18977,'diao'=>-18961,'die'=>-18952,'ding'=>-18783,'diu'=>-18774,'dong'=>-18773,'dou'=>-18763,'du'=>-18756,'duan'=>-18741,'dui'=>-18735,'dun'=>-18731,'duo'=>-18722,
'e'=>-18710,'en'=>-18697,'er'=>-18696, 'e'=>-18710,'en'=>-18697,'er'=>-18696,
'fa'=>-18526,'fan'=>-18518,'fang'=>-18501,'fei'=>-18490,'fen'=>-18478,'feng'=>-18463,'fo'=>-18448,'fou'=>-18447,'fu'=>-18446, 'fa'=>-18526,'fan'=>-18518,'fang'=>-18501,'fei'=>-18490,'fen'=>-18478,'feng'=>-18463,'fo'=>-18448,'fou'=>-18447,'fu'=>-18446,
'ga'=>-18239,'gai'=>-18237,'gan'=>-18231,'gang'=>-18220,'gao'=>-18211,'ge'=>-18201,'gei'=>-18184,'gen'=>-18183,'geng'=>-18181,'gong'=>-18012,'gou'=>-17997,'gu'=>-17988,'gua'=>-17970,'guai'=>-17964,'guan'=>-17961,'guang'=>-17950,'gui'=>-17947,'gun'=>-17931,'guo'=>-17928, 'ga'=>-18239,'gai'=>-18237,'gan'=>-18231,'gang'=>-18220,'gao'=>-18211,'ge'=>-18201,'gei'=>-18184,'gen'=>-18183,'geng'=>-18181,'gong'=>-18012,'gou'=>-17997,'gu'=>-17988,'gua'=>-17970,'guai'=>-17964,'guan'=>-17961,'guang'=>-17950,'gui'=>-17947,'gun'=>-17931,'guo'=>-17928,
'ha'=>-17922,'hai'=>-17759,'han'=>-17752,'hang'=>-17733,'hao'=>-17730,'he'=>-17721,'hei'=>-17703,'hen'=>-17701,'heng'=>-17697,'hong'=>-17692,'hou'=>-17683,'hu'=>-17676,'hua'=>-17496,'huai'=>-17487,'huan'=>-17482,'huang'=>-17468,'hui'=>-17454,'hun'=>-17433,'huo'=>-17427, 'ha'=>-17922,'hai'=>-17759,'han'=>-17752,'hang'=>-17733,'hao'=>-17730,'he'=>-17721,'hei'=>-17703,'hen'=>-17701,'heng'=>-17697,'hong'=>-17692,'hou'=>-17683,'hu'=>-17676,'hua'=>-17496,'huai'=>-17487,'huan'=>-17482,'huang'=>-17468,'hui'=>-17454,'hun'=>-17433,'huo'=>-17427,
'ji'=>-17417,'jia'=>-17202,'jian'=>-17185,'jiang'=>-16983,'jiao'=>-16970,'jie'=>-16942,'jin'=>-16915,'jing'=>-16733,'jiong'=>-16708,'jiu'=>-16706,'ju'=>-16689,'juan'=>-16664,'jue'=>-16657,'jun'=>-16647, 'ji'=>-17417,'jia'=>-17202,'jian'=>-17185,'jiang'=>-16983,'jiao'=>-16970,'jie'=>-16942,'jin'=>-16915,'jing'=>-16733,'jiong'=>-16708,'jiu'=>-16706,'ju'=>-16689,'juan'=>-16664,'jue'=>-16657,'jun'=>-16647,
'ka'=>-16474,'kai'=>-16470,'kan'=>-16465,'kang'=>-16459,'kao'=>-16452,'ke'=>-16448,'ken'=>-16433,'keng'=>-16429,'kong'=>-16427,'kou'=>-16423,'ku'=>-16419,'kua'=>-16412,'kuai'=>-16407,'kuan'=>-16403,'kuang'=>-16401,'kui'=>-16393,'kun'=>-16220,'kuo'=>-16216, 'ka'=>-16474,'kai'=>-16470,'kan'=>-16465,'kang'=>-16459,'kao'=>-16452,'ke'=>-16448,'ken'=>-16433,'keng'=>-16429,'kong'=>-16427,'kou'=>-16423,'ku'=>-16419,'kua'=>-16412,'kuai'=>-16407,'kuan'=>-16403,'kuang'=>-16401,'kui'=>-16393,'kun'=>-16220,'kuo'=>-16216,
'la'=>-16212,'lai'=>-16205,'lan'=>-16202,'lang'=>-16187,'lao'=>-16180,'le'=>-16171,'lei'=>-16169,'leng'=>-16158,'li'=>-16155,'lia'=>-15959,'lian'=>-15958,'liang'=>-15944,'liao'=>-15933,'lie'=>-15920,'lin'=>-15915,'ling'=>-15903,'liu'=>-15889,'long'=>-15878,'lou'=>-15707,'lu'=>-15701,'lv'=>-15681,'luan'=>-15667,'lue'=>-15661,'lun'=>-15659,'luo'=>-15652, 'la'=>-16212,'lai'=>-16205,'lan'=>-16202,'lang'=>-16187,'lao'=>-16180,'le'=>-16171,'lei'=>-16169,'leng'=>-16158,'li'=>-16155,'lia'=>-15959,'lian'=>-15958,'liang'=>-15944,'liao'=>-15933,'lie'=>-15920,'lin'=>-15915,'ling'=>-15903,'liu'=>-15889,'long'=>-15878,'lou'=>-15707,'lu'=>-15701,'lv'=>-15681,'luan'=>-15667,'lue'=>-15661,'lun'=>-15659,'luo'=>-15652,
'ma'=>-15640,'mai'=>-15631,'man'=>-15625,'mang'=>-15454,'mao'=>-15448,'me'=>-15436,'mei'=>-15435,'men'=>-15419,'meng'=>-15416,'mi'=>-15408,'mian'=>-15394,'miao'=>-15385,'mie'=>-15377,'min'=>-15375,'ming'=>-15369,'miu'=>-15363,'mo'=>-15362,'mou'=>-15183,'mu'=>-15180, 'ma'=>-15640,'mai'=>-15631,'man'=>-15625,'mang'=>-15454,'mao'=>-15448,'me'=>-15436,'mei'=>-15435,'men'=>-15419,'meng'=>-15416,'mi'=>-15408,'mian'=>-15394,'miao'=>-15385,'mie'=>-15377,'min'=>-15375,'ming'=>-15369,'miu'=>-15363,'mo'=>-15362,'mou'=>-15183,'mu'=>-15180,
'na'=>-15165,'nai'=>-15158,'nan'=>-15153,'nang'=>-15150,'nao'=>-15149,'ne'=>-15144,'nei'=>-15143,'nen'=>-15141,'neng'=>-15140,'ni'=>-15139,'nian'=>-15128,'niang'=>-15121,'niao'=>-15119,'nie'=>-15117,'nin'=>-15110,'ning'=>-15109,'niu'=>-14941,'nong'=>-14937,'nu'=>-14933,'nv'=>-14930,'nuan'=>-14929,'nue'=>-14928,'nuo'=>-14926, 'na'=>-15165,'nai'=>-15158,'nan'=>-15153,'nang'=>-15150,'nao'=>-15149,'ne'=>-15144,'nei'=>-15143,'nen'=>-15141,'neng'=>-15140,'ni'=>-15139,'nian'=>-15128,'niang'=>-15121,'niao'=>-15119,'nie'=>-15117,'nin'=>-15110,'ning'=>-15109,'niu'=>-14941,'nong'=>-14937,'nu'=>-14933,'nv'=>-14930,'nuan'=>-14929,'nue'=>-14928,'nuo'=>-14926,
'o'=>-14922,'ou'=>-14921, 'o'=>-14922,'ou'=>-14921,
'pa'=>-14914,'pai'=>-14908,'pan'=>-14902,'pang'=>-14894,'pao'=>-14889,'pei'=>-14882,'pen'=>-14873,'peng'=>-14871,'pi'=>-14857,'pian'=>-14678,'piao'=>-14674,'pie'=>-14670,'pin'=>-14668,'ping'=>-14663,'po'=>-14654,'pu'=>-14645, 'pa'=>-14914,'pai'=>-14908,'pan'=>-14902,'pang'=>-14894,'pao'=>-14889,'pei'=>-14882,'pen'=>-14873,'peng'=>-14871,'pi'=>-14857,'pian'=>-14678,'piao'=>-14674,'pie'=>-14670,'pin'=>-14668,'ping'=>-14663,'po'=>-14654,'pu'=>-14645,
'qi'=>-14630,'qia'=>-14594,'qian'=>-14429,'qiang'=>-14407,'qiao'=>-14399,'qie'=>-14384,'qin'=>-14379,'qing'=>-14368,'qiong'=>-14355,'qiu'=>-14353,'qu'=>-14345,'quan'=>-14170,'que'=>-14159,'qun'=>-14151, 'qi'=>-14630,'qia'=>-14594,'qian'=>-14429,'qiang'=>-14407,'qiao'=>-14399,'qie'=>-14384,'qin'=>-14379,'qing'=>-14368,'qiong'=>-14355,'qiu'=>-14353,'qu'=>-14345,'quan'=>-14170,'que'=>-14159,'qun'=>-14151,
'ran'=>-14149,'rang'=>-14145,'rao'=>-14140,'re'=>-14137,'ren'=>-14135,'reng'=>-14125,'ri'=>-14123,'rong'=>-14122,'rou'=>-14112,'ru'=>-14109,'ruan'=>-14099,'rui'=>-14097,'run'=>-14094,'ruo'=>-14092, 'ran'=>-14149,'rang'=>-14145,'rao'=>-14140,'re'=>-14137,'ren'=>-14135,'reng'=>-14125,'ri'=>-14123,'rong'=>-14122,'rou'=>-14112,'ru'=>-14109,'ruan'=>-14099,'rui'=>-14097,'run'=>-14094,'ruo'=>-14092,
'sa'=>-14090,'sai'=>-14087,'san'=>-14083,'sang'=>-13917,'sao'=>-13914,'se'=>-13910,'sen'=>-13907,'seng'=>-13906,'sha'=>-13905,'shai'=>-13896,'shan'=>-13894,'shang'=>-13878,'shao'=>-13870,'she'=>-13859,'shen'=>-13847,'sheng'=>-13831,'shi'=>-13658,'shou'=>-13611,'shu'=>-13601,'shua'=>-13406,'shuai'=>-13404,'shuan'=>-13400,'shuang'=>-13398,'shui'=>-13395,'shun'=>-13391,'shuo'=>-13387,'si'=>-13383,'song'=>-13367,'sou'=>-13359,'su'=>-13356,'suan'=>-13343,'sui'=>-13340,'sun'=>-13329,'suo'=>-13326, 'sa'=>-14090,'sai'=>-14087,'san'=>-14083,'sang'=>-13917,'sao'=>-13914,'se'=>-13910,'sen'=>-13907,'seng'=>-13906,'sha'=>-13905,'shai'=>-13896,'shan'=>-13894,'shang'=>-13878,'shao'=>-13870,'she'=>-13859,'shen'=>-13847,'sheng'=>-13831,'shi'=>-13658,'shou'=>-13611,'shu'=>-13601,'shua'=>-13406,'shuai'=>-13404,'shuan'=>-13400,'shuang'=>-13398,'shui'=>-13395,'shun'=>-13391,'shuo'=>-13387,'si'=>-13383,'song'=>-13367,'sou'=>-13359,'su'=>-13356,'suan'=>-13343,'sui'=>-13340,'sun'=>-13329,'suo'=>-13326,
'ta'=>-13318,'tai'=>-13147,'tan'=>-13138,'tang'=>-13120,'tao'=>-13107,'te'=>-13096,'teng'=>-13095,'ti'=>-13091,'tian'=>-13076,'tiao'=>-13068,'tie'=>-13063,'ting'=>-13060,'tong'=>-12888,'tou'=>-12875,'tu'=>-12871,'tuan'=>-12860,'tui'=>-12858,'tun'=>-12852,'tuo'=>-12849, 'ta'=>-13318,'tai'=>-13147,'tan'=>-13138,'tang'=>-13120,'tao'=>-13107,'te'=>-13096,'teng'=>-13095,'ti'=>-13091,'tian'=>-13076,'tiao'=>-13068,'tie'=>-13063,'ting'=>-13060,'tong'=>-12888,'tou'=>-12875,'tu'=>-12871,'tuan'=>-12860,'tui'=>-12858,'tun'=>-12852,'tuo'=>-12849,
'wa'=>-12838,'wai'=>-12831,'wan'=>-12829,'wang'=>-12812,'wei'=>-12802,'wen'=>-12607,'weng'=>-12597,'wo'=>-12594,'wu'=>-12585, 'wa'=>-12838,'wai'=>-12831,'wan'=>-12829,'wang'=>-12812,'wei'=>-12802,'wen'=>-12607,'weng'=>-12597,'wo'=>-12594,'wu'=>-12585,
'xi'=>-12556,'xia'=>-12359,'xian'=>-12346,'xiang'=>-12320,'xiao'=>-12300,'xie'=>-12120,'xin'=>-12099,'xing'=>-12089,'xiong'=>-12074,'xiu'=>-12067,'xu'=>-12058,'xuan'=>-12039,'xue'=>-11867,'xun'=>-11861, 'xi'=>-12556,'xia'=>-12359,'xian'=>-12346,'xiang'=>-12320,'xiao'=>-12300,'xie'=>-12120,'xin'=>-12099,'xing'=>-12089,'xiong'=>-12074,'xiu'=>-12067,'xu'=>-12058,'xuan'=>-12039,'xue'=>-11867,'xun'=>-11861,
'ya'=>-11847,'yan'=>-11831,'yang'=>-11798,'yao'=>-11781,'ye'=>-11604,'yi'=>-11589,'yin'=>-11536,'ying'=>-11358,'yo'=>-11340,'yong'=>-11339,'you'=>-11324,'yu'=>-11303,'yuan'=>-11097,'yue'=>-11077,'yun'=>-11067, 'ya'=>-11847,'yan'=>-11831,'yang'=>-11798,'yao'=>-11781,'ye'=>-11604,'yi'=>-11589,'yin'=>-11536,'ying'=>-11358,'yo'=>-11340,'yong'=>-11339,'you'=>-11324,'yu'=>-11303,'yuan'=>-11097,'yue'=>-11077,'yun'=>-11067,
'za'=>-11055,'zai'=>-11052,'zan'=>-11045,'zang'=>-11041,'zao'=>-11038,'ze'=>-11024,'zei'=>-11020,'zen'=>-11019,'zeng'=>-11018,'zha'=>-11014,'zhai'=>-10838,'zhan'=>-10832,'zhang'=>-10815,'zhao'=>-10800,'zhe'=>-10790,'zhen'=>-10780,'zheng'=>-10764,'zhi'=>-10587,'zhong'=>-10544,'zhou'=>-10533,'zhu'=>-10519,'zhua'=>-10331,'zhuai'=>-10329,'zhuan'=>-10328,'zhuang'=>-10322,'zhui'=>-10315,'zhun'=>-10309,'zhuo'=>-10307,'zi'=>-10296,'zong'=>-10281,'zou'=>-10274,'zu'=>-10270,'zuan'=>-10262,'zui'=>-10260,'zun'=>-10256,'zuo'=>-10254 'za'=>-11055,'zai'=>-11052,'zan'=>-11045,'zang'=>-11041,'zao'=>-11038,'ze'=>-11024,'zei'=>-11020,'zen'=>-11019,'zeng'=>-11018,'zha'=>-11014,'zhai'=>-10838,'zhan'=>-10832,'zhang'=>-10815,'zhao'=>-10800,'zhe'=>-10790,'zhen'=>-10780,'zheng'=>-10764,'zhi'=>-10587,'zhong'=>-10544,'zhou'=>-10533,'zhu'=>-10519,'zhua'=>-10331,'zhuai'=>-10329,'zhuan'=>-10328,'zhuang'=>-10322,'zhui'=>-10315,'zhun'=>-10309,'zhuo'=>-10307,'zi'=>-10296,'zong'=>-10281,'zou'=>-10274,'zu'=>-10270,'zuan'=>-10262,'zui'=>-10260,'zun'=>-10256,'zuo'=>-10254
); );
/** /**
* 将中文编码成拼音 * 将中文编码成拼音
* @param string $utf8Data utf8字符集数据 * @param string $utf8Data utf8字符集数据
* @param string $sRetFormat 返回格式 [head:首字母|all:全拼音] * @param string $sRetFormat 返回格式 [head:首字母|all:全拼音]
* @return string * @return string
*/ */
public static function encode($utf8Data, $sRetFormat='head'){ public static function encode($utf8Data, $sRetFormat='head'){
$sGBK = iconv('UTF-8', 'GBK', $utf8Data); $sGBK = iconv('UTF-8', 'GBK', $utf8Data);
$aBuf = array(); $aBuf = array();
for ($i=0, $iLoop=strlen($sGBK); $i<$iLoop; $i++) { for ($i=0, $iLoop=strlen($sGBK); $i<$iLoop; $i++) {
$iChr = ord($sGBK{$i}); $iChr = ord($sGBK{$i});
if ($iChr>160) if ($iChr>160)
$iChr = ($iChr<<8) + ord($sGBK{++$i}) - 65536; $iChr = ($iChr<<8) + ord($sGBK{++$i}) - 65536;
if ('head' === $sRetFormat) if ('head' === $sRetFormat)
$aBuf[] = substr(self::zh2py($iChr),0,1); $aBuf[] = substr(self::zh2py($iChr),0,1);
else else
$aBuf[] = self::zh2py($iChr); $aBuf[] = self::zh2py($iChr);
} }
if ('head' === $sRetFormat) if ('head' === $sRetFormat)
return implode('', $aBuf); return implode('', $aBuf);
else else
return implode(' ', $aBuf); return implode(' ', $aBuf);
} }
/** /**
* 中文转换到拼音(每次处理一个字符) * 中文转换到拼音(每次处理一个字符)
* @param number $iWORD 待处理字符双字节 * @param number $iWORD 待处理字符双字节
* @return string 拼音 * @return string 拼音
*/ */
private static function zh2py($iWORD) { private static function zh2py($iWORD) {
if($iWORD>0 && $iWORD<160 ) { if($iWORD>0 && $iWORD<160 ) {
return chr($iWORD); return chr($iWORD);
} elseif ($iWORD<-20319||$iWORD>-10247) { } elseif ($iWORD<-20319||$iWORD>-10247) {
return ''; return '';
} else { } else {
foreach (self::$_aMaps as $py => $code) { foreach (self::$_aMaps as $py => $code) {
if($code > $iWORD) break; if($code > $iWORD) break;
$result = $py; $result = $py;
} }
return $result; return $result;
} }
} }
} }
?> ?>

File diff suppressed because it is too large Load Diff

View File

@@ -1,459 +1,459 @@
<?php <?php
if(!defined('IN_OAOOA')) { if(!defined('IN_OAOOA')) {
exit('Access Denied'); exit('Access Denied');
} }
class seccode { class seccode {
var $code; var $code;
var $type = 0; var $type = 0;
var $width = 150; var $width = 150;
var $height = 60; var $height = 60;
var $background = 1; var $background = 1;
var $adulterate = 1; var $adulterate = 1;
var $ttf = 0; var $ttf = 0;
var $angle = 0; var $angle = 0;
var $warping = 0; var $warping = 0;
var $scatter = 0; var $scatter = 0;
var $color = 1; var $color = 1;
var $size = 0; var $size = 0;
var $shadow = 1; var $shadow = 1;
var $animator = 0; var $animator = 0;
var $fontpath = ''; var $fontpath = '';
var $datapath = ''; var $datapath = '';
var $includepath= ''; var $includepath= '';
var $fontcolor; var $fontcolor;
var $im; var $im;
function display() { function display() {
$this->type == 2 && !extension_loaded('ming') && $this->type = 0; $this->type == 2 && !extension_loaded('ming') && $this->type = 0;
if($this->type < 2 && function_exists('imagecreate') && function_exists('imagecolorset') && function_exists('imagecopyresized') && if($this->type < 2 && function_exists('imagecreate') && function_exists('imagecolorset') && function_exists('imagecopyresized') &&
function_exists('imagecolorallocate') && function_exists('imagechar') && function_exists('imagecolorsforindex') && function_exists('imagecolorallocate') && function_exists('imagechar') && function_exists('imagecolorsforindex') &&
function_exists('imageline') && function_exists('imagecreatefromstring') && (function_exists('imagegif') || function_exists('imagepng') || function_exists('imagejpeg'))) { function_exists('imageline') && function_exists('imagecreatefromstring') && (function_exists('imagegif') || function_exists('imagepng') || function_exists('imagejpeg'))) {
$this->image(); $this->image();
} elseif($this->type == 2 && extension_loaded('ming')) { } elseif($this->type == 2 && extension_loaded('ming')) {
$this->flash(); $this->flash();
} elseif($this->type == 3) { } elseif($this->type == 3) {
$this->audio(); $this->audio();
} else { } else {
$this->bitmap(); $this->bitmap();
} }
} }
function image() { function image() {
$bgcontent = $this->background(); $bgcontent = $this->background();
if($this->animator == 1 && function_exists('imagegif')) { if($this->animator == 1 && function_exists('imagegif')) {
include_once $this->includepath.'class_gifmerge.php'; include_once $this->includepath.'class_gifmerge.php';
$trueframe = mt_rand(1, 9); $trueframe = mt_rand(1, 9);
for($i = 0; $i <= 9; $i++) { for($i = 0; $i <= 9; $i++) {
$this->im = imagecreatefromstring($bgcontent); $this->im = imagecreatefromstring($bgcontent);
$x[$i] = $y[$i] = 0; $x[$i] = $y[$i] = 0;
$this->adulterate && $this->adulterate(); $this->adulterate && $this->adulterate();
if($i == $trueframe) { if($i == $trueframe) {
$this->ttf && function_exists('imagettftext') || $this->type == 1 ? $this->ttffont() : $this->giffont(); $this->ttf && function_exists('imagettftext') || $this->type == 1 ? $this->ttffont() : $this->giffont();
$d[$i] = mt_rand(250, 400); $d[$i] = mt_rand(250, 400);
$this->scatter && $this->scatter($this->im); $this->scatter && $this->scatter($this->im);
} else { } else {
$this->adulteratefont(); $this->adulteratefont();
$d[$i] = mt_rand(5, 15); $d[$i] = mt_rand(5, 15);
$this->scatter && $this->scatter($this->im, 1); $this->scatter && $this->scatter($this->im, 1);
} }
ob_start(); ob_start();
imagegif($this->im); imagegif($this->im);
imagedestroy($this->im); imagedestroy($this->im);
$frame[$i] = ob_get_contents(); $frame[$i] = ob_get_contents();
ob_end_clean(); ob_end_clean();
} }
$anim = new GifMerge($frame, 255, 255, 255, 0, $d, $x, $y, 'C_MEMORY'); $anim = new GifMerge($frame, 255, 255, 255, 0, $d, $x, $y, 'C_MEMORY');
header('Content-type: image/gif'); header('Content-type: image/gif');
echo $anim->getAnimation(); echo $anim->getAnimation();
} else { } else {
$this->im = imagecreatefromstring($bgcontent); $this->im = imagecreatefromstring($bgcontent);
$this->adulterate && $this->adulterate(); $this->adulterate && $this->adulterate();
$this->ttf && function_exists('imagettftext') || $this->type == 1 ? $this->ttffont() : $this->giffont(); $this->ttf && function_exists('imagettftext') || $this->type == 1 ? $this->ttffont() : $this->giffont();
$this->scatter && $this->scatter($this->im); $this->scatter && $this->scatter($this->im);
if(function_exists('imagepng')) { if(function_exists('imagepng')) {
header('Content-type: image/png'); header('Content-type: image/png');
imagepng($this->im); imagepng($this->im);
} else { } else {
header('Content-type: image/jpeg'); header('Content-type: image/jpeg');
imagejpeg($this->im, '', 100); imagejpeg($this->im, '', 100);
} }
imagedestroy($this->im); imagedestroy($this->im);
} }
} }
function background() { function background() {
$this->im = imagecreatetruecolor($this->width, $this->height); $this->im = imagecreatetruecolor($this->width, $this->height);
$backgrounds = $c = array(); $backgrounds = $c = array();
if($this->background && function_exists('imagecreatefromjpeg') && function_exists('imagecolorat') && function_exists('imagecopymerge') && if($this->background && function_exists('imagecreatefromjpeg') && function_exists('imagecolorat') && function_exists('imagecopymerge') &&
function_exists('imagesetpixel') && function_exists('imageSX') && function_exists('imageSY')) { function_exists('imagesetpixel') && function_exists('imageSX') && function_exists('imageSY')) {
if($handle = @opendir($this->datapath.'background/')) { if($handle = @opendir($this->datapath.'background/')) {
while($bgfile = @readdir($handle)) { while($bgfile = @readdir($handle)) {
if(preg_match('/\.jpg$/i', $bgfile)) { if(preg_match('/\.jpg$/i', $bgfile)) {
$backgrounds[] = $this->datapath.'background/'.$bgfile; $backgrounds[] = $this->datapath.'background/'.$bgfile;
} }
} }
@closedir($handle); @closedir($handle);
} }
if($backgrounds) { if($backgrounds) {
$imwm = imagecreatefromjpeg($backgrounds[array_rand($backgrounds)]); $imwm = imagecreatefromjpeg($backgrounds[array_rand($backgrounds)]);
$colorindex = imagecolorat($imwm, 0, 0); $colorindex = imagecolorat($imwm, 0, 0);
$c = imagecolorsforindex($imwm, $colorindex); $c = imagecolorsforindex($imwm, $colorindex);
$colorindex = imagecolorat($imwm, 1, 0); $colorindex = imagecolorat($imwm, 1, 0);
imagesetpixel($imwm, 0, 0, $colorindex); imagesetpixel($imwm, 0, 0, $colorindex);
$c[0] = $c['red'];$c[1] = $c['green'];$c[2] = $c['blue']; $c[0] = $c['red'];$c[1] = $c['green'];$c[2] = $c['blue'];
imagecopymerge($this->im, $imwm, 0, 0, mt_rand(0, 200 - $this->width), mt_rand(0, 80 - $this->height), imageSX($imwm), imageSY($imwm), 100); imagecopymerge($this->im, $imwm, 0, 0, mt_rand(0, 200 - $this->width), mt_rand(0, 80 - $this->height), imageSX($imwm), imageSY($imwm), 100);
imagedestroy($imwm); imagedestroy($imwm);
} }
} }
if(!$this->background || !$backgrounds) { if(!$this->background || !$backgrounds) {
for($i = 0;$i < 3;$i++) { for($i = 0;$i < 3;$i++) {
$start[$i] = mt_rand(200, 255);$end[$i] = mt_rand(100, 150);$step[$i] = ($end[$i] - $start[$i]) / $this->width;$c[$i] = $start[$i]; $start[$i] = mt_rand(200, 255);$end[$i] = mt_rand(100, 150);$step[$i] = ($end[$i] - $start[$i]) / $this->width;$c[$i] = $start[$i];
} }
for($i = 0;$i < $this->width;$i++) { for($i = 0;$i < $this->width;$i++) {
$color = imagecolorallocate($this->im, $c[0], $c[1], $c[2]); $color = imagecolorallocate($this->im, $c[0], $c[1], $c[2]);
imageline($this->im, $i, 0, $i, $this->height, $color); imageline($this->im, $i, 0, $i, $this->height, $color);
$c[0] += $step[0];$c[1] += $step[1];$c[2] += $step[2]; $c[0] += $step[0];$c[1] += $step[1];$c[2] += $step[2];
} }
$c[0] -= 20;$c[1] -= 20;$c[2] -= 20; $c[0] -= 20;$c[1] -= 20;$c[2] -= 20;
} }
ob_start(); ob_start();
if(function_exists('imagepng')) { if(function_exists('imagepng')) {
imagepng($this->im); imagepng($this->im);
} else { } else {
imagejpeg($this->im, '', 100); imagejpeg($this->im, '', 100);
} }
imagedestroy($this->im); imagedestroy($this->im);
$bgcontent = ob_get_contents(); $bgcontent = ob_get_contents();
ob_end_clean(); ob_end_clean();
$this->fontcolor = $c; $this->fontcolor = $c;
return $bgcontent; return $bgcontent;
} }
function adulterate() { function adulterate() {
$linenums = $this->height / 10; $linenums = $this->height / 10;
for($i = 0; $i <= $linenums;$i++) { for($i = 0; $i <= $linenums;$i++) {
$color = $this->color ? imagecolorallocate($this->im, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255)) : imagecolorallocate($this->im, $this->fontcolor[0], $this->fontcolor[1], $this->fontcolor[2]); $color = $this->color ? imagecolorallocate($this->im, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255)) : imagecolorallocate($this->im, $this->fontcolor[0], $this->fontcolor[1], $this->fontcolor[2]);
$x = mt_rand(0, $this->width); $x = mt_rand(0, $this->width);
$y = mt_rand(0, $this->height); $y = mt_rand(0, $this->height);
if(mt_rand(0, 1)) { if(mt_rand(0, 1)) {
$w = mt_rand(0, $this->width); $w = mt_rand(0, $this->width);
$h = mt_rand(0, $this->height); $h = mt_rand(0, $this->height);
$s = mt_rand(0, 360); $s = mt_rand(0, 360);
$e = mt_rand(0, 360); $e = mt_rand(0, 360);
for($j = 0;$j < 3;$j++) { for($j = 0;$j < 3;$j++) {
imagearc($this->im, $x + $j, $y, $w, $h, $s, $e, $color); imagearc($this->im, $x + $j, $y, $w, $h, $s, $e, $color);
} }
} else { } else {
$xe = mt_rand(0, $this->width); $xe = mt_rand(0, $this->width);
$ye = mt_rand(0, $this->height); $ye = mt_rand(0, $this->height);
imageline($this->im, $x, $y, $xe, $ye, $color); imageline($this->im, $x, $y, $xe, $ye, $color);
for($j = 0;$j < 3;$j++) { for($j = 0;$j < 3;$j++) {
imageline($this->im, $x + $j, $y, $xe, $ye, $color); imageline($this->im, $x + $j, $y, $xe, $ye, $color);
} }
} }
} }
} }
function adulteratefont() { function adulteratefont() {
$seccodeunits = 'BCEFGHJKMPQRTVWXY2346789'; $seccodeunits = 'BCEFGHJKMPQRTVWXY2346789';
$x = $this->width / 4; $x = $this->width / 4;
$y = $this->height / 10; $y = $this->height / 10;
$text_color = imagecolorallocate($this->im, $this->fontcolor[0], $this->fontcolor[1], $this->fontcolor[2]); $text_color = imagecolorallocate($this->im, $this->fontcolor[0], $this->fontcolor[1], $this->fontcolor[2]);
for($i = 0; $i <= 3; $i++) { for($i = 0; $i <= 3; $i++) {
$adulteratecode = $seccodeunits[mt_rand(0, 23)]; $adulteratecode = $seccodeunits[mt_rand(0, 23)];
imagechar($this->im, 5, $x * $i + mt_rand(0, $x - 10), mt_rand($y, $this->height - 10 - $y), $adulteratecode, $text_color); imagechar($this->im, 5, $x * $i + mt_rand(0, $x - 10), mt_rand($y, $this->height - 10 - $y), $adulteratecode, $text_color);
} }
} }
function ttffont() { function ttffont() {
$seccode = $this->code; $seccode = $this->code;
$seccoderoot = $this->type ? $this->fontpath.'ch/' : $this->fontpath.'en/'; $seccoderoot = $this->type ? $this->fontpath.'ch/' : $this->fontpath.'en/';
$dirs = opendir($seccoderoot); $dirs = opendir($seccoderoot);
$seccodettf = array(); $seccodettf = array();
while($entry = readdir($dirs)) { while($entry = readdir($dirs)) {
if($entry != '.' && $entry != '..' && in_array(strtolower(fileext($entry)), array('ttf', 'ttc'))) { if($entry != '.' && $entry != '..' && in_array(strtolower(fileext($entry)), array('ttf', 'ttc'))) {
$seccodettf[] = $entry; $seccodettf[] = $entry;
} }
} }
if(empty($seccodettf)) { if(empty($seccodettf)) {
$this->giffont(); $this->giffont();
return; return;
} }
$seccodelength = 4; $seccodelength = 4;
if($this->type && !empty($seccodettf)) { if($this->type && !empty($seccodettf)) {
if(strtoupper(CHARSET) != 'UTF-8') { if(strtoupper(CHARSET) != 'UTF-8') {
include $this->includepath.'class_chinese.php'; include $this->includepath.'class_chinese.php';
$cvt = new Chinese(CHARSET, 'utf8'); $cvt = new Chinese(CHARSET, 'utf8');
$seccode = $cvt->Convert($seccode); $seccode = $cvt->Convert($seccode);
} }
$seccode = array(substr($seccode, 0, 3), substr($seccode, 3, 3)); $seccode = array(substr($seccode, 0, 3), substr($seccode, 3, 3));
$seccodelength = 2; $seccodelength = 2;
} }
$widthtotal = 0; $widthtotal = 0;
for($i = 0; $i < $seccodelength; $i++) { for($i = 0; $i < $seccodelength; $i++) {
$font[$i]['font'] = $seccoderoot.$seccodettf[array_rand($seccodettf)]; $font[$i]['font'] = $seccoderoot.$seccodettf[array_rand($seccodettf)];
$font[$i]['angle'] = $this->angle ? mt_rand(-30, 30) : 0; $font[$i]['angle'] = $this->angle ? mt_rand(-30, 30) : 0;
$font[$i]['size'] = $this->type ? $this->width / 7 : $this->width / 6; $font[$i]['size'] = $this->type ? $this->width / 7 : $this->width / 6;
$this->size && $font[$i]['size'] = mt_rand($font[$i]['size'] - $this->width / 40, $font[$i]['size'] + $this->width / 20); $this->size && $font[$i]['size'] = mt_rand($font[$i]['size'] - $this->width / 40, $font[$i]['size'] + $this->width / 20);
$box = imagettfbbox($font[$i]['size'], 0, $font[$i]['font'], $seccode[$i]); $box = imagettfbbox($font[$i]['size'], 0, $font[$i]['font'], $seccode[$i]);
$font[$i]['zheight'] = max($box[1], $box[3]) - min($box[5], $box[7]); $font[$i]['zheight'] = max($box[1], $box[3]) - min($box[5], $box[7]);
$box = imagettfbbox($font[$i]['size'], $font[$i]['angle'], $font[$i]['font'], $seccode[$i]); $box = imagettfbbox($font[$i]['size'], $font[$i]['angle'], $font[$i]['font'], $seccode[$i]);
$font[$i]['height'] = max($box[1], $box[3]) - min($box[5], $box[7]); $font[$i]['height'] = max($box[1], $box[3]) - min($box[5], $box[7]);
$font[$i]['hd'] = $font[$i]['height'] - $font[$i]['zheight']; $font[$i]['hd'] = $font[$i]['height'] - $font[$i]['zheight'];
$font[$i]['width'] = (max($box[2], $box[4]) - min($box[0], $box[6])) + mt_rand(0, $this->width / 8); $font[$i]['width'] = (max($box[2], $box[4]) - min($box[0], $box[6])) + mt_rand(0, $this->width / 8);
$font[$i]['width'] = $font[$i]['width'] > $this->width / $seccodelength ? $this->width / $seccodelength : $font[$i]['width']; $font[$i]['width'] = $font[$i]['width'] > $this->width / $seccodelength ? $this->width / $seccodelength : $font[$i]['width'];
$widthtotal += $font[$i]['width']; $widthtotal += $font[$i]['width'];
} }
$x = mt_rand($font[0]['angle'] > 0 ? cos(deg2rad(90 - $font[0]['angle'])) * $font[0]['zheight'] : 1, $this->width - $widthtotal); $x = mt_rand($font[0]['angle'] > 0 ? cos(deg2rad(90 - $font[0]['angle'])) * $font[0]['zheight'] : 1, $this->width - $widthtotal);
!$this->color && $text_color = imagecolorallocate($this->im, $this->fontcolor[0], $this->fontcolor[1], $this->fontcolor[2]); !$this->color && $text_color = imagecolorallocate($this->im, $this->fontcolor[0], $this->fontcolor[1], $this->fontcolor[2]);
for($i = 0; $i < $seccodelength; $i++) { for($i = 0; $i < $seccodelength; $i++) {
if($this->color) { if($this->color) {
$this->fontcolor = array(mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255)); $this->fontcolor = array(mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
$this->shadow && $text_shadowcolor = imagecolorallocate($this->im, 0, 0, 0); $this->shadow && $text_shadowcolor = imagecolorallocate($this->im, 0, 0, 0);
$text_color = imagecolorallocate($this->im, $this->fontcolor[0], $this->fontcolor[1], $this->fontcolor[2]); $text_color = imagecolorallocate($this->im, $this->fontcolor[0], $this->fontcolor[1], $this->fontcolor[2]);
} elseif($this->shadow) { } elseif($this->shadow) {
$text_shadowcolor = imagecolorallocate($this->im, 0, 0, 0); $text_shadowcolor = imagecolorallocate($this->im, 0, 0, 0);
} }
$y = $font[0]['angle'] > 0 ? mt_rand($font[$i]['height'], $this->height) : mt_rand($font[$i]['height'] - $font[$i]['hd'], $this->height - $font[$i]['hd']); $y = $font[0]['angle'] > 0 ? mt_rand($font[$i]['height'], $this->height) : mt_rand($font[$i]['height'] - $font[$i]['hd'], $this->height - $font[$i]['hd']);
$this->shadow && imagettftext($this->im, $font[$i]['size'], $font[$i]['angle'], $x + 1, $y + 1, $text_shadowcolor, $font[$i]['font'], $seccode[$i]); $this->shadow && imagettftext($this->im, $font[$i]['size'], $font[$i]['angle'], $x + 1, $y + 1, $text_shadowcolor, $font[$i]['font'], $seccode[$i]);
imagettftext($this->im, $font[$i]['size'], $font[$i]['angle'], $x, $y, $text_color, $font[$i]['font'], $seccode[$i]); imagettftext($this->im, $font[$i]['size'], $font[$i]['angle'], $x, $y, $text_color, $font[$i]['font'], $seccode[$i]);
$x += $font[$i]['width']; $x += $font[$i]['width'];
} }
$this->warping && $this->warping($this->im); $this->warping && $this->warping($this->im);
} }
function warping(&$obj) { function warping(&$obj) {
$rgb = array(); $rgb = array();
$direct = rand(0, 1); $direct = rand(0, 1);
$width = imagesx($obj); $width = imagesx($obj);
$height = imagesy($obj); $height = imagesy($obj);
$level = $width / 20; $level = $width / 20;
for($j = 0;$j < $height;$j++) { for($j = 0;$j < $height;$j++) {
for($i = 0;$i < $width;$i++) { for($i = 0;$i < $width;$i++) {
$rgb[$i] = imagecolorat($obj, $i , $j); $rgb[$i] = imagecolorat($obj, $i , $j);
} }
for($i = 0;$i < $width;$i++) { for($i = 0;$i < $width;$i++) {
$r = sin($j / $height * 2 * M_PI - M_PI * 0.5) * ($direct ? $level : -$level); $r = sin($j / $height * 2 * M_PI - M_PI * 0.5) * ($direct ? $level : -$level);
imagesetpixel($obj, $i + $r , $j , $rgb[$i]); imagesetpixel($obj, $i + $r , $j , $rgb[$i]);
} }
} }
} }
function scatter(&$obj, $level = 0) { function scatter(&$obj, $level = 0) {
$rgb = array(); $rgb = array();
$this->scatter = $level ? $level : $this->scatter; $this->scatter = $level ? $level : $this->scatter;
$width = imagesx($obj); $width = imagesx($obj);
$height = imagesy($obj); $height = imagesy($obj);
for($j = 0;$j < $height;$j++) { for($j = 0;$j < $height;$j++) {
for($i = 0;$i < $width;$i++) { for($i = 0;$i < $width;$i++) {
$rgb[$i] = imagecolorat($obj, $i , $j); $rgb[$i] = imagecolorat($obj, $i , $j);
} }
for($i = 0;$i < $width;$i++) { for($i = 0;$i < $width;$i++) {
$r = rand(-$this->scatter, $this->scatter); $r = rand(-$this->scatter, $this->scatter);
imagesetpixel($obj, $i + $r , $j , $rgb[$i]); imagesetpixel($obj, $i + $r , $j , $rgb[$i]);
} }
} }
} }
function giffont() { function giffont() {
$seccode = $this->code; $seccode = $this->code;
$seccodedir = array(); $seccodedir = array();
if(function_exists('imagecreatefromgif')) { if(function_exists('imagecreatefromgif')) {
$seccoderoot = $this->datapath.'gif/'; $seccoderoot = $this->datapath.'gif/';
$dirs = opendir($seccoderoot); $dirs = opendir($seccoderoot);
while($dir = readdir($dirs)) { while($dir = readdir($dirs)) {
if($dir != '.' && $dir != '..' && file_exists($seccoderoot.$dir.'/9.gif')) { if($dir != '.' && $dir != '..' && file_exists($seccoderoot.$dir.'/9.gif')) {
$seccodedir[] = $dir; $seccodedir[] = $dir;
} }
} }
} }
$widthtotal = 0; $widthtotal = 0;
for($i = 0; $i <= 3; $i++) { for($i = 0; $i <= 3; $i++) {
$this->imcodefile = $seccodedir ? $seccoderoot.$seccodedir[array_rand($seccodedir)].'/'.strtolower($seccode[$i]).'.gif' : ''; $this->imcodefile = $seccodedir ? $seccoderoot.$seccodedir[array_rand($seccodedir)].'/'.strtolower($seccode[$i]).'.gif' : '';
if(!empty($this->imcodefile) && file_exists($this->imcodefile)) { if(!empty($this->imcodefile) && file_exists($this->imcodefile)) {
$font[$i]['file'] = $this->imcodefile; $font[$i]['file'] = $this->imcodefile;
$font[$i]['data'] = getimagesize($this->imcodefile); $font[$i]['data'] = getimagesize($this->imcodefile);
$font[$i]['width'] = $font[$i]['data'][0] + mt_rand(0, 6) - 4; $font[$i]['width'] = $font[$i]['data'][0] + mt_rand(0, 6) - 4;
$font[$i]['height'] = $font[$i]['data'][1] + mt_rand(0, 6) - 4; $font[$i]['height'] = $font[$i]['data'][1] + mt_rand(0, 6) - 4;
$font[$i]['width'] += mt_rand(0, $this->width / 5 - $font[$i]['width']); $font[$i]['width'] += mt_rand(0, $this->width / 5 - $font[$i]['width']);
$widthtotal += $font[$i]['width']; $widthtotal += $font[$i]['width'];
} else { } else {
$font[$i]['file'] = ''; $font[$i]['file'] = '';
$font[$i]['width'] = 8 + mt_rand(0, $this->width / 5 - 5); $font[$i]['width'] = 8 + mt_rand(0, $this->width / 5 - 5);
$widthtotal += $font[$i]['width']; $widthtotal += $font[$i]['width'];
} }
} }
$x = mt_rand(1, $this->width - $widthtotal); $x = mt_rand(1, $this->width - $widthtotal);
for($i = 0; $i <= 3; $i++) { for($i = 0; $i <= 3; $i++) {
$this->color && $this->fontcolor = array(mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255)); $this->color && $this->fontcolor = array(mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
if($font[$i]['file']) { if($font[$i]['file']) {
$this->imcode = imagecreatefromgif($font[$i]['file']); $this->imcode = imagecreatefromgif($font[$i]['file']);
if($this->size) { if($this->size) {
$font[$i]['width'] = mt_rand($font[$i]['width'] - $this->width / 20, $font[$i]['width'] + $this->width / 20); $font[$i]['width'] = mt_rand($font[$i]['width'] - $this->width / 20, $font[$i]['width'] + $this->width / 20);
$font[$i]['height'] = mt_rand($font[$i]['height'] - $this->width / 20, $font[$i]['height'] + $this->width / 20); $font[$i]['height'] = mt_rand($font[$i]['height'] - $this->width / 20, $font[$i]['height'] + $this->width / 20);
} }
$y = mt_rand(0, $this->height - $font[$i]['height']); $y = mt_rand(0, $this->height - $font[$i]['height']);
if($this->shadow) { if($this->shadow) {
$this->imcodeshadow = $this->imcode; $this->imcodeshadow = $this->imcode;
imagecolorset($this->imcodeshadow, 0, 0, 0, 0); imagecolorset($this->imcodeshadow, 0, 0, 0, 0);
imagecopyresized($this->im, $this->imcodeshadow, $x + 1, $y + 1, 0, 0, $font[$i]['width'], $font[$i]['height'], $font[$i]['data'][0], $font[$i]['data'][1]); imagecopyresized($this->im, $this->imcodeshadow, $x + 1, $y + 1, 0, 0, $font[$i]['width'], $font[$i]['height'], $font[$i]['data'][0], $font[$i]['data'][1]);
} }
imagecolorset($this->imcode, 0 , $this->fontcolor[0], $this->fontcolor[1], $this->fontcolor[2]); imagecolorset($this->imcode, 0 , $this->fontcolor[0], $this->fontcolor[1], $this->fontcolor[2]);
imagecopyresized($this->im, $this->imcode, $x, $y, 0, 0, $font[$i]['width'], $font[$i]['height'], $font[$i]['data'][0], $font[$i]['data'][1]); imagecopyresized($this->im, $this->imcode, $x, $y, 0, 0, $font[$i]['width'], $font[$i]['height'], $font[$i]['data'][0], $font[$i]['data'][1]);
} else { } else {
$y = mt_rand(0, $this->height - 20); $y = mt_rand(0, $this->height - 20);
if($this->shadow) { if($this->shadow) {
$text_shadowcolor = imagecolorallocate($this->im, 0, 0, 0); $text_shadowcolor = imagecolorallocate($this->im, 0, 0, 0);
imagechar($this->im, 5, $x + 1, $y + 1, $seccode[$i], $text_shadowcolor); imagechar($this->im, 5, $x + 1, $y + 1, $seccode[$i], $text_shadowcolor);
} }
$text_color = imagecolorallocate($this->im, $this->fontcolor[0], $this->fontcolor[1], $this->fontcolor[2]); $text_color = imagecolorallocate($this->im, $this->fontcolor[0], $this->fontcolor[1], $this->fontcolor[2]);
imagechar($this->im, 5, $x, $y, $seccode[$i], $text_color); imagechar($this->im, 5, $x, $y, $seccode[$i], $text_color);
} }
$x += $font[$i]['width']; $x += $font[$i]['width'];
} }
} }
function flash() { function flash() {
$spacing = 5; $spacing = 5;
$codewidth = ($this->width - $spacing * 5) / 4; $codewidth = ($this->width - $spacing * 5) / 4;
$strforswdaction = ''; $strforswdaction = '';
for($i = 0; $i <= 3; $i++) { for($i = 0; $i <= 3; $i++) {
$strforswdaction .= $this->swfcode($codewidth, $spacing, $this->code[$i], $i+1); $strforswdaction .= $this->swfcode($codewidth, $spacing, $this->code[$i], $i+1);
} }
ming_setScale(20.00000000); ming_setScale(20.00000000);
ming_useswfversion(6); ming_useswfversion(6);
$movie = new SWFMovie(); $movie = new SWFMovie();
$movie->setDimension($this->width, $this->height); $movie->setDimension($this->width, $this->height);
$movie->setBackground(255, 255, 255); $movie->setBackground(255, 255, 255);
$movie->setRate(31); $movie->setRate(31);
$fontcolor = '0x'.(sprintf('%02s', dechex (mt_rand(0, 255)))).(sprintf('%02s', dechex (mt_rand(0, 128)))).(sprintf('%02s', dechex (mt_rand(0, 255)))); $fontcolor = '0x'.(sprintf('%02s', dechex (mt_rand(0, 255)))).(sprintf('%02s', dechex (mt_rand(0, 128)))).(sprintf('%02s', dechex (mt_rand(0, 255))));
$strAction = " $strAction = "
_root.createEmptyMovieClip ( 'triangle', 1 ); _root.createEmptyMovieClip ( 'triangle', 1 );
with ( _root.triangle ) { with ( _root.triangle ) {
lineStyle( 3, $fontcolor, 100 ); lineStyle( 3, $fontcolor, 100 );
$strforswdaction $strforswdaction
} }
"; ";
$movie->add(new SWFAction( str_replace("\r", "", $strAction) )); $movie->add(new SWFAction( str_replace("\r", "", $strAction) ));
header('Content-type: application/x-shockwave-flash'); header('Content-type: application/x-shockwave-flash');
$movie->output(); $movie->output();
} }
function swfcode($width, $d, $code, $order) { function swfcode($width, $d, $code, $order) {
$str = ''; $str = '';
$height = $this->height - $d * 2; $height = $this->height - $d * 2;
$x_0 = ($order * ($width + $d) - $width); $x_0 = ($order * ($width + $d) - $width);
$x_1 = $x_0 + $width / 2; $x_1 = $x_0 + $width / 2;
$x_2 = $x_0 + $width; $x_2 = $x_0 + $width;
$y_0 = $d; $y_0 = $d;
$y_2 = $y_0 + $height; $y_2 = $y_0 + $height;
$y_1 = $y_2 / 2; $y_1 = $y_2 / 2;
$y_0_5 = $y_2 / 4; $y_0_5 = $y_2 / 4;
$y_1_5 = $y_1 + $y_0_5; $y_1_5 = $y_1 + $y_0_5;
switch($code) { switch($code) {
case 'B':$str .= 'moveTo('.$x_1.', '.$y_0.');lineTo('.$x_0.', '.$y_0.');lineTo('.$x_0.', '.$y_2.');lineTo('.$x_1.', '.$y_2.');lineTo('.$x_2.', '.$y_1_5.');lineTo('.$x_1.', '.$y_1.');lineTo('.$x_2.', '.$y_0_5.');lineTo('.$x_1.', '.$y_0.');moveTo('.$x_0.', '.$y_1.');lineTo('.$x_1.', '.$y_1.');';break; case 'B':$str .= 'moveTo('.$x_1.', '.$y_0.');lineTo('.$x_0.', '.$y_0.');lineTo('.$x_0.', '.$y_2.');lineTo('.$x_1.', '.$y_2.');lineTo('.$x_2.', '.$y_1_5.');lineTo('.$x_1.', '.$y_1.');lineTo('.$x_2.', '.$y_0_5.');lineTo('.$x_1.', '.$y_0.');moveTo('.$x_0.', '.$y_1.');lineTo('.$x_1.', '.$y_1.');';break;
case 'C':$str .= 'moveTo('.$x_2.', '.$y_0.');lineTo('.$x_0.', '.$y_0.');lineTo('.$x_0.', '.$y_2.');lineTo('.$x_2.', '.$y_2.');';break; case 'C':$str .= 'moveTo('.$x_2.', '.$y_0.');lineTo('.$x_0.', '.$y_0.');lineTo('.$x_0.', '.$y_2.');lineTo('.$x_2.', '.$y_2.');';break;
case 'E':$str .= 'moveTo('.$x_2.', '.$y_0.');lineTo('.$x_0.', '.$y_0.');lineTo('.$x_0.', '.$y_2.');lineTo('.$x_2.', '.$y_2.');moveTo('.$x_0.', '.$y_1.');lineTo('.$x_1.', '.$y_1.');';break; case 'E':$str .= 'moveTo('.$x_2.', '.$y_0.');lineTo('.$x_0.', '.$y_0.');lineTo('.$x_0.', '.$y_2.');lineTo('.$x_2.', '.$y_2.');moveTo('.$x_0.', '.$y_1.');lineTo('.$x_1.', '.$y_1.');';break;
case 'F':$str .= 'moveTo('.$x_2.', '.$y_0.');lineTo('.$x_0.', '.$y_0.');lineTo('.$x_0.', '.$y_2.');moveTo('.$x_0.', '.$y_1.');lineTo('.$x_1.', '.$y_1.');';break; case 'F':$str .= 'moveTo('.$x_2.', '.$y_0.');lineTo('.$x_0.', '.$y_0.');lineTo('.$x_0.', '.$y_2.');moveTo('.$x_0.', '.$y_1.');lineTo('.$x_1.', '.$y_1.');';break;
case 'G':$str .= 'moveTo('.$x_2.', '.$y_0.');lineTo('.$x_0.', '.$y_0.');lineTo('.$x_0.', '.$y_2.');lineTo('.$x_2.', '.$y_2.');lineTo('.$x_2.', '.$y_1.');lineTo('.$x_1.', '.$y_1.');';break; case 'G':$str .= 'moveTo('.$x_2.', '.$y_0.');lineTo('.$x_0.', '.$y_0.');lineTo('.$x_0.', '.$y_2.');lineTo('.$x_2.', '.$y_2.');lineTo('.$x_2.', '.$y_1.');lineTo('.$x_1.', '.$y_1.');';break;
case 'H':$str .= 'moveTo('.$x_0.', '.$y_0.');lineTo('.$x_0.', '.$y_2.');moveTo('.$x_2.', '.$y_0.');lineTo('.$x_2.', '.$y_2.');moveTo('.$x_0.', '.$y_1.');lineTo('.$x_2.', '.$y_1.');';break; case 'H':$str .= 'moveTo('.$x_0.', '.$y_0.');lineTo('.$x_0.', '.$y_2.');moveTo('.$x_2.', '.$y_0.');lineTo('.$x_2.', '.$y_2.');moveTo('.$x_0.', '.$y_1.');lineTo('.$x_2.', '.$y_1.');';break;
case 'J':$str .= 'moveTo('.$x_1.', '.$y_0.');lineTo('.$x_2.', '.$y_0.');lineTo('.$x_2.', '.$y_2.');lineTo('.$x_0.', '.$y_2.');lineTo('.$x_0.', '.$y_1_5.');';break; case 'J':$str .= 'moveTo('.$x_1.', '.$y_0.');lineTo('.$x_2.', '.$y_0.');lineTo('.$x_2.', '.$y_2.');lineTo('.$x_0.', '.$y_2.');lineTo('.$x_0.', '.$y_1_5.');';break;
case 'K':$str .= 'moveTo('.$x_2.', '.$y_0.');lineTo('.$x_1.', '.$y_1.');lineTo('.$x_0.', '.$y_1.');lineTo('.$x_0.', '.$y_0.');lineTo('.$x_0.', '.$y_2.');moveTo('.$x_1.', '.$y_1.');lineTo('.$x_2.', '.$y_2.');';break; case 'K':$str .= 'moveTo('.$x_2.', '.$y_0.');lineTo('.$x_1.', '.$y_1.');lineTo('.$x_0.', '.$y_1.');lineTo('.$x_0.', '.$y_0.');lineTo('.$x_0.', '.$y_2.');moveTo('.$x_1.', '.$y_1.');lineTo('.$x_2.', '.$y_2.');';break;
case 'M':$str .= 'moveTo('.$x_0.', '.$y_2.');lineTo('.$x_0.', '.$y_0.');lineTo('.$x_1.', '.$y_1.');lineTo('.$x_2.', '.$y_0.');lineTo('.$x_2.', '.$y_2.');';break; case 'M':$str .= 'moveTo('.$x_0.', '.$y_2.');lineTo('.$x_0.', '.$y_0.');lineTo('.$x_1.', '.$y_1.');lineTo('.$x_2.', '.$y_0.');lineTo('.$x_2.', '.$y_2.');';break;
case 'P':$str .= 'moveTo('.$x_0.', '.$y_1.');lineTo('.$x_1.', '.$y_1.');lineTo('.$x_2.', '.$y_0_5.');lineTo('.$x_1.', '.$y_0.');lineTo('.$x_0.', '.$y_0.');lineTo('.$x_0.', '.$y_2.');';break; case 'P':$str .= 'moveTo('.$x_0.', '.$y_1.');lineTo('.$x_1.', '.$y_1.');lineTo('.$x_2.', '.$y_0_5.');lineTo('.$x_1.', '.$y_0.');lineTo('.$x_0.', '.$y_0.');lineTo('.$x_0.', '.$y_2.');';break;
case 'Q':$str .= 'moveTo('.$x_2.', '.$y_2.');lineTo('.$x_0.', '.$y_2.');lineTo('.$x_0.', '.$y_0.');lineTo('.$x_2.', '.$y_0.');lineTo('.$x_2.', '.$y_2.');lineTo('.$x_1.', '.$y_1.');';break; case 'Q':$str .= 'moveTo('.$x_2.', '.$y_2.');lineTo('.$x_0.', '.$y_2.');lineTo('.$x_0.', '.$y_0.');lineTo('.$x_2.', '.$y_0.');lineTo('.$x_2.', '.$y_2.');lineTo('.$x_1.', '.$y_1.');';break;
case 'R':$str .= 'moveTo('.$x_0.', '.$y_1.');lineTo('.$x_1.', '.$y_1.');lineTo('.$x_2.', '.$y_0_5.');lineTo('.$x_1.', '.$y_0.');lineTo('.$x_0.', '.$y_0.');lineTo('.$x_0.', '.$y_2.');moveTo('.$x_1.', '.$y_1.');lineTo('.$x_2.', '.$y_2.');';break; case 'R':$str .= 'moveTo('.$x_0.', '.$y_1.');lineTo('.$x_1.', '.$y_1.');lineTo('.$x_2.', '.$y_0_5.');lineTo('.$x_1.', '.$y_0.');lineTo('.$x_0.', '.$y_0.');lineTo('.$x_0.', '.$y_2.');moveTo('.$x_1.', '.$y_1.');lineTo('.$x_2.', '.$y_2.');';break;
case 'T':$str .= 'moveTo('.$x_0.', '.$y_0.');lineTo('.$x_2.', '.$y_0.');moveTo('.$x_1.', '.$y_0.');lineTo('.$x_1.', '.$y_2.');';break; case 'T':$str .= 'moveTo('.$x_0.', '.$y_0.');lineTo('.$x_2.', '.$y_0.');moveTo('.$x_1.', '.$y_0.');lineTo('.$x_1.', '.$y_2.');';break;
case 'V':$str .= 'moveTo('.$x_0.', '.$y_0.');lineTo('.$x_1.', '.$y_2.');lineTo('.$x_2.', '.$y_0.');';break; case 'V':$str .= 'moveTo('.$x_0.', '.$y_0.');lineTo('.$x_1.', '.$y_2.');lineTo('.$x_2.', '.$y_0.');';break;
case 'W':$str .= 'moveTo('.$x_0.', '.$y_0.');lineTo('.$x_0.', '.$y_2.');lineTo('.$x_1.', '.$y_1.');lineTo('.$x_2.', '.$y_2.');lineTo('.$x_2.', '.$y_0.');';break; case 'W':$str .= 'moveTo('.$x_0.', '.$y_0.');lineTo('.$x_0.', '.$y_2.');lineTo('.$x_1.', '.$y_1.');lineTo('.$x_2.', '.$y_2.');lineTo('.$x_2.', '.$y_0.');';break;
case 'X':$str .= 'moveTo('.$x_0.', '.$y_0.');lineTo('.$x_2.', '.$y_2.');moveTo('.$x_2.', '.$y_0.');lineTo('.$x_0.', '.$y_2.');';break; case 'X':$str .= 'moveTo('.$x_0.', '.$y_0.');lineTo('.$x_2.', '.$y_2.');moveTo('.$x_2.', '.$y_0.');lineTo('.$x_0.', '.$y_2.');';break;
case 'Y':$str .= 'moveTo('.$x_0.', '.$y_0.');lineTo('.$x_1.', '.$y_1.');lineTo('.$x_2.', '.$y_0.');moveTo('.$x_1.', '.$y_1.');lineTo('.$x_1.', '.$y_2.');';break; case 'Y':$str .= 'moveTo('.$x_0.', '.$y_0.');lineTo('.$x_1.', '.$y_1.');lineTo('.$x_2.', '.$y_0.');moveTo('.$x_1.', '.$y_1.');lineTo('.$x_1.', '.$y_2.');';break;
case '2':$str .= 'moveTo('.$x_0.', '.$y_0.');lineTo('.$x_2.', '.$y_0.');lineTo('.$x_2.', '.$y_1.');lineTo('.$x_0.', '.$y_1.');lineTo('.$x_0.', '.$y_2.');lineTo('.$x_2.', '.$y_2.');';break; case '2':$str .= 'moveTo('.$x_0.', '.$y_0.');lineTo('.$x_2.', '.$y_0.');lineTo('.$x_2.', '.$y_1.');lineTo('.$x_0.', '.$y_1.');lineTo('.$x_0.', '.$y_2.');lineTo('.$x_2.', '.$y_2.');';break;
case '3':$str .= 'moveTo('.$x_0.', '.$y_0.');lineTo('.$x_2.', '.$y_0.');lineTo('.$x_2.', '.$y_2.');lineTo('.$x_0.', '.$y_2.');moveTo('.$x_0.', '.$y_1.');lineTo('.$x_2.', '.$y_1.');';break; case '3':$str .= 'moveTo('.$x_0.', '.$y_0.');lineTo('.$x_2.', '.$y_0.');lineTo('.$x_2.', '.$y_2.');lineTo('.$x_0.', '.$y_2.');moveTo('.$x_0.', '.$y_1.');lineTo('.$x_2.', '.$y_1.');';break;
case '4':$str .= 'moveTo('.$x_2.', '.$y_0.');lineTo('.$x_2.', '.$y_2.');moveTo('.$x_0.', '.$y_0.');lineTo('.$x_0.', '.$y_1.');lineTo('.$x_2.', '.$y_1.');';break; case '4':$str .= 'moveTo('.$x_2.', '.$y_0.');lineTo('.$x_2.', '.$y_2.');moveTo('.$x_0.', '.$y_0.');lineTo('.$x_0.', '.$y_1.');lineTo('.$x_2.', '.$y_1.');';break;
case '6':$str .= 'moveTo('.$x_2.', '.$y_0.');lineTo('.$x_0.', '.$y_0.');lineTo('.$x_0.', '.$y_2.');lineTo('.$x_2.', '.$y_2.');lineTo('.$x_2.', '.$y_1.');lineTo('.$x_0.', '.$y_1.');';break; case '6':$str .= 'moveTo('.$x_2.', '.$y_0.');lineTo('.$x_0.', '.$y_0.');lineTo('.$x_0.', '.$y_2.');lineTo('.$x_2.', '.$y_2.');lineTo('.$x_2.', '.$y_1.');lineTo('.$x_0.', '.$y_1.');';break;
case '7':$str .= 'moveTo('.$x_0.', '.$y_0.');lineTo('.$x_2.', '.$y_0.');lineTo('.$x_2.', '.$y_2.');';break; case '7':$str .= 'moveTo('.$x_0.', '.$y_0.');lineTo('.$x_2.', '.$y_0.');lineTo('.$x_2.', '.$y_2.');';break;
case '8':$str .= 'moveTo('.$x_0.', '.$y_0.');lineTo('.$x_0.', '.$y_2.');lineTo('.$x_2.', '.$y_2.');lineTo('.$x_2.', '.$y_0.');lineTo('.$x_0.', '.$y_0.');moveTo('.$x_0.', '.$y_1.');lineTo('.$x_2.', '.$y_1.');';break; case '8':$str .= 'moveTo('.$x_0.', '.$y_0.');lineTo('.$x_0.', '.$y_2.');lineTo('.$x_2.', '.$y_2.');lineTo('.$x_2.', '.$y_0.');lineTo('.$x_0.', '.$y_0.');moveTo('.$x_0.', '.$y_1.');lineTo('.$x_2.', '.$y_1.');';break;
case '9':$str .= 'moveTo('.$x_2.', '.$y_1.');lineTo('.$x_0.', '.$y_1.');lineTo('.$x_0.', '.$y_0.');lineTo('.$x_2.', '.$y_0.');lineTo('.$x_2.', '.$y_2.');lineTo('.$x_0.', '.$y_2.');';break; case '9':$str .= 'moveTo('.$x_2.', '.$y_1.');lineTo('.$x_0.', '.$y_1.');lineTo('.$x_0.', '.$y_0.');lineTo('.$x_2.', '.$y_0.');lineTo('.$x_2.', '.$y_2.');lineTo('.$x_0.', '.$y_2.');';break;
} }
return $str; return $str;
} }
function audio() { function audio() {
header('Content-type: audio/mpeg'); header('Content-type: audio/mpeg');
for($i = 0;$i <= 3; $i++) { for($i = 0;$i <= 3; $i++) {
readfile($this->datapath.'sound/'.strtolower($this->code[$i]).'.mp3'); readfile($this->datapath.'sound/'.strtolower($this->code[$i]).'.mp3');
} }
} }
function bitmap() { function bitmap() {
$numbers = array $numbers = array
( (
'B' => array('00','fc','66','66','66','7c','66','66','fc','00'), 'B' => array('00','fc','66','66','66','7c','66','66','fc','00'),
'C' => array('00','38','64','c0','c0','c0','c4','64','3c','00'), 'C' => array('00','38','64','c0','c0','c0','c4','64','3c','00'),
'E' => array('00','fe','62','62','68','78','6a','62','fe','00'), 'E' => array('00','fe','62','62','68','78','6a','62','fe','00'),
'F' => array('00','f8','60','60','68','78','6a','62','fe','00'), 'F' => array('00','f8','60','60','68','78','6a','62','fe','00'),
'G' => array('00','78','cc','cc','de','c0','c4','c4','7c','00'), 'G' => array('00','78','cc','cc','de','c0','c4','c4','7c','00'),
'H' => array('00','e7','66','66','66','7e','66','66','e7','00'), 'H' => array('00','e7','66','66','66','7e','66','66','e7','00'),
'J' => array('00','f8','cc','cc','cc','0c','0c','0c','7f','00'), 'J' => array('00','f8','cc','cc','cc','0c','0c','0c','7f','00'),
'K' => array('00','f3','66','66','7c','78','6c','66','f7','00'), 'K' => array('00','f3','66','66','7c','78','6c','66','f7','00'),
'M' => array('00','f7','63','6b','6b','77','77','77','e3','00'), 'M' => array('00','f7','63','6b','6b','77','77','77','e3','00'),
'P' => array('00','f8','60','60','7c','66','66','66','fc','00'), 'P' => array('00','f8','60','60','7c','66','66','66','fc','00'),
'Q' => array('00','78','cc','cc','cc','cc','cc','cc','78','00'), 'Q' => array('00','78','cc','cc','cc','cc','cc','cc','78','00'),
'R' => array('00','f3','66','6c','7c','66','66','66','fc','00'), 'R' => array('00','f3','66','6c','7c','66','66','66','fc','00'),
'T' => array('00','78','30','30','30','30','b4','b4','fc','00'), 'T' => array('00','78','30','30','30','30','b4','b4','fc','00'),
'V' => array('00','1c','1c','36','36','36','63','63','f7','00'), 'V' => array('00','1c','1c','36','36','36','63','63','f7','00'),
'W' => array('00','36','36','36','77','7f','6b','63','f7','00'), 'W' => array('00','36','36','36','77','7f','6b','63','f7','00'),
'X' => array('00','f7','66','3c','18','18','3c','66','ef','00'), 'X' => array('00','f7','66','3c','18','18','3c','66','ef','00'),
'Y' => array('00','7e','18','18','18','3c','24','66','ef','00'), 'Y' => array('00','7e','18','18','18','3c','24','66','ef','00'),
'2' => array('fc','c0','60','30','18','0c','cc','cc','78','00'), '2' => array('fc','c0','60','30','18','0c','cc','cc','78','00'),
'3' => array('78','8c','0c','0c','38','0c','0c','8c','78','00'), '3' => array('78','8c','0c','0c','38','0c','0c','8c','78','00'),
'4' => array('00','3e','0c','fe','4c','6c','2c','3c','1c','1c'), '4' => array('00','3e','0c','fe','4c','6c','2c','3c','1c','1c'),
'6' => array('78','cc','cc','cc','ec','d8','c0','60','3c','00'), '6' => array('78','cc','cc','cc','ec','d8','c0','60','3c','00'),
'7' => array('30','30','38','18','18','18','1c','8c','fc','00'), '7' => array('30','30','38','18','18','18','1c','8c','fc','00'),
'8' => array('78','cc','cc','cc','78','cc','cc','cc','78','00'), '8' => array('78','cc','cc','cc','78','cc','cc','cc','78','00'),
'9' => array('f0','18','0c','6c','dc','cc','cc','cc','78','00') '9' => array('f0','18','0c','6c','dc','cc','cc','cc','78','00')
); );
foreach($numbers as $i => $number) { foreach($numbers as $i => $number) {
for($j = 0; $j < 6; $j++) { for($j = 0; $j < 6; $j++) {
$a1 = substr('012', mt_rand(0, 2), 1).substr('012345', mt_rand(0, 5), 1); $a1 = substr('012', mt_rand(0, 2), 1).substr('012345', mt_rand(0, 5), 1);
$a2 = substr('012345', mt_rand(0, 5), 1).substr('0123', mt_rand(0, 3), 1); $a2 = substr('012345', mt_rand(0, 5), 1).substr('0123', mt_rand(0, 3), 1);
mt_rand(0, 1) == 1 ? array_push($numbers[$i], $a1) : array_unshift($numbers[$i], $a1); mt_rand(0, 1) == 1 ? array_push($numbers[$i], $a1) : array_unshift($numbers[$i], $a1);
mt_rand(0, 1) == 0 ? array_push($numbers[$i], $a1) : array_unshift($numbers[$i], $a2); mt_rand(0, 1) == 0 ? array_push($numbers[$i], $a1) : array_unshift($numbers[$i], $a2);
} }
} }
$bitmap = array(); $bitmap = array();
for($i = 0; $i < 20; $i++) { for($i = 0; $i < 20; $i++) {
for($j = 0; $j <= 3; $j++) { for($j = 0; $j <= 3; $j++) {
$bytes = $numbers[$this->code[$j]][$i]; $bytes = $numbers[$this->code[$j]][$i];
$a = mt_rand(0, 14); $a = mt_rand(0, 14);
array_push($bitmap, $bytes); array_push($bitmap, $bytes);
} }
} }
for($i = 0; $i < 8; $i++) { for($i = 0; $i < 8; $i++) {
$a = substr('012345', mt_rand(0, 2), 1) . substr('012345', mt_rand(0, 5), 1); $a = substr('012345', mt_rand(0, 2), 1) . substr('012345', mt_rand(0, 5), 1);
array_unshift($bitmap, $a); array_unshift($bitmap, $a);
array_push($bitmap, $a); array_push($bitmap, $a);
} }
$image = pack('H*', '424d9e000000000000003e000000280000002000000018000000010001000000'. $image = pack('H*', '424d9e000000000000003e000000280000002000000018000000010001000000'.
'0000600000000000000000000000000000000000000000000000FFFFFF00'.implode('', $bitmap)); '0000600000000000000000000000000000000000000000000000FFFFFF00'.implode('', $bitmap));
header('Content-Type: image/bmp'); header('Content-Type: image/bmp');
echo $image; echo $image;
} }
} }
?> ?>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,140 +1,140 @@
<?php <?php
if(!defined('IN_OAOOA')) { if(!defined('IN_OAOOA')) {
exit('Access Denied'); exit('Access Denied');
} }
function xml2array(&$xml, $isnormal = FALSE,$encodeing='ISO-8859-1') { function xml2array(&$xml, $isnormal = FALSE,$encodeing='ISO-8859-1') {
$xml_parser = new XMLparse($isnormal,$encodeing); $xml_parser = new XMLparse($isnormal,$encodeing);
$data = $xml_parser->parse($xml); $data = $xml_parser->parse($xml);
$xml_parser->destruct(); $xml_parser->destruct();
return $data; return $data;
} }
function xmlattribute( $xml, $encodeing='ISO-8859-1') { function xmlattribute( $xml, $encodeing='ISO-8859-1') {
$xml = str_replace($encodeing, 'UTF-8', $xml); $xml = str_replace($encodeing, 'UTF-8', $xml);
libxml_disable_entity_loader(true); libxml_disable_entity_loader(true);
$values = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement')), true); $values = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement')), true);
if( $values["item"] ){ if( $values["item"] ){
$data=attribute2arr($values["item"]); $data=attribute2arr($values["item"]);
} }
return $data; return $data;
} }
function attribute2arr( $values,$data=array() ){ function attribute2arr( $values,$data=array() ){
foreach( $values as $k=>$v ){ foreach( $values as $k=>$v ){
if( isset($v["item"]) ){ if( isset($v["item"]) ){
$return = attribute2arr($v["item"]); $return = attribute2arr($v["item"]);
if($return) $data[$v['@attributes']["id"]]=$return ; if($return) $data[$v['@attributes']["id"]]=$return ;
} }
if( count($v['@attributes'])>1 ){ if( count($v['@attributes'])>1 ){
$data[$v['@attributes']["id"]]["_attributes"]=$v['@attributes']; $data[$v['@attributes']["id"]]["_attributes"]=$v['@attributes'];
unset($data[$v['@attributes']["id"]]["_attributes"]["id"]); unset($data[$v['@attributes']["id"]]["_attributes"]["id"]);
} }
} }
return $data; return $data;
} }
function array2xml($arr, $htmlon = TRUE, $isnormal = FALSE, $level = 1,$encodeing='ISO-8859-1') { function array2xml($arr, $htmlon = TRUE, $isnormal = FALSE, $level = 1,$encodeing='ISO-8859-1') {
$s = $level == 1 ? "<?xml version=\"1.0\" encoding=\"".$encodeing."\"?>\r\n<root>\r\n" : ''; $s = $level == 1 ? "<?xml version=\"1.0\" encoding=\"".$encodeing."\"?>\r\n<root>\r\n" : '';
$space = str_repeat("\t", $level); $space = str_repeat("\t", $level);
foreach($arr as $k => $v) { foreach($arr as $k => $v) {
if($k=="_attributes"){ if($k=="_attributes"){
continue; continue;
} }
$string=""; $string="";
if( isset($arr['_attributes'])){ if( isset($arr['_attributes'])){
foreach($arr["_attributes"] as $k2=>$v2){ foreach($arr["_attributes"] as $k2=>$v2){
if($k2==$k){ if($k2==$k){
foreach($v2 as $k3=>$v3){ foreach($v2 as $k3=>$v3){
$string.=' '.$k3.'="'.$v3.'"'; $string.=' '.$k3.'="'.$v3.'"';
} }
} }
} }
} }
if(!is_array($v)) { if(!is_array($v)) {
$s .= $space."<item id=\"$k\"$string>".($htmlon ? '<![CDATA[' : '').$v.($htmlon ? ']]>' : '')."</item>\r\n"; $s .= $space."<item id=\"$k\"$string>".($htmlon ? '<![CDATA[' : '').$v.($htmlon ? ']]>' : '')."</item>\r\n";
} else { } else {
$s .= $space."<item id=\"$k\"$string>\r\n".array2xml($v, $htmlon, $isnormal, $level + 1,$encodeing).$space."</item>\r\n"; $s .= $space."<item id=\"$k\"$string>\r\n".array2xml($v, $htmlon, $isnormal, $level + 1,$encodeing).$space."</item>\r\n";
} }
} }
$s = preg_replace("/([\x01-\x08\x0b-\x0c\x0e-\x1f])+/", ' ', $s); $s = preg_replace("/([\x01-\x08\x0b-\x0c\x0e-\x1f])+/", ' ', $s);
return $level == 1 ? $s."</root>" : $s; return $level == 1 ? $s."</root>" : $s;
} }
class XMLparse { class XMLparse {
var $parser; var $parser;
var $document; var $document;
var $stack; var $stack;
var $data; var $data;
var $last_opened_tag; var $last_opened_tag;
var $isnormal; var $isnormal;
var $attrs = array(); var $attrs = array();
var $failed = FALSE; var $failed = FALSE;
function __construct($isnormal,$encodeing) { function __construct($isnormal,$encodeing) {
$this->XMLparse($isnormal,$encodeing); $this->XMLparse($isnormal,$encodeing);
} }
function XMLparse($isnormal,$encodeing) { function XMLparse($isnormal,$encodeing) {
$this->isnormal = $isnormal; $this->isnormal = $isnormal;
$this->parser = xml_parser_create($encodeing); $this->parser = xml_parser_create($encodeing);
xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, false); xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, false);
xml_set_object($this->parser, $this); xml_set_object($this->parser, $this);
xml_set_element_handler($this->parser, 'open','close'); xml_set_element_handler($this->parser, 'open','close');
xml_set_character_data_handler($this->parser, 'data'); xml_set_character_data_handler($this->parser, 'data');
} }
function destruct() { function destruct() {
xml_parser_free($this->parser); xml_parser_free($this->parser);
} }
function parse(&$data) { function parse(&$data) {
$this->document = array(); $this->document = array();
$this->stack = array(); $this->stack = array();
return xml_parse($this->parser, $data, true) && !$this->failed ? $this->document : ''; return xml_parse($this->parser, $data, true) && !$this->failed ? $this->document : '';
} }
function open(&$parser, $tag, $attributes) { function open(&$parser, $tag, $attributes) {
$this->data = ''; $this->data = '';
$this->failed = FALSE; $this->failed = FALSE;
if(!$this->isnormal) { if(!$this->isnormal) {
if(isset($attributes['id']) && !is_string($this->document[$attributes['id']])) { if(isset($attributes['id']) && !is_string($this->document[$attributes['id']])) {
$this->document = &$this->document[$attributes['id']]; $this->document = &$this->document[$attributes['id']];
} else { } else {
$this->failed = TRUE; $this->failed = TRUE;
} }
} else { } else {
if(!isset($this->document[$tag]) || !is_string($this->document[$tag])) { if(!isset($this->document[$tag]) || !is_string($this->document[$tag])) {
$this->document = &$this->document[$tag]; $this->document = &$this->document[$tag];
} else { } else {
$this->failed = TRUE; $this->failed = TRUE;
} }
} }
$this->stack[] = &$this->document; $this->stack[] = &$this->document;
$this->last_opened_tag = $tag; $this->last_opened_tag = $tag;
$this->attrs = $attributes; $this->attrs = $attributes;
} }
function data(&$parser, $data) { function data(&$parser, $data) {
if($this->last_opened_tag != NULL) { if($this->last_opened_tag != NULL) {
$this->data .= $data; $this->data .= $data;
} }
} }
function close(&$parser, $tag) { function close(&$parser, $tag) {
if($this->last_opened_tag == $tag) { if($this->last_opened_tag == $tag) {
$this->document = $this->data; $this->document = $this->data;
$this->last_opened_tag = NULL; $this->last_opened_tag = NULL;
} }
array_pop($this->stack); array_pop($this->stack);
if($this->stack) { if($this->stack) {
$this->document = &$this->stack[count($this->stack)-1]; $this->document = &$this->stack[count($this->stack)-1];
} }
} }
} }
?> ?>

View File

@@ -1,309 +1,309 @@
<?php <?php
if(!defined('IN_OAOOA')) { if(!defined('IN_OAOOA')) {
exit('Access Denied'); exit('Access Denied');
} }
class zipfile { class zipfile {
var $datasec = array(); var $datasec = array();
var $ctrl_dir = array(); var $ctrl_dir = array();
var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00"; var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00";
var $old_offset = 0; var $old_offset = 0;
function unix2DosTime($unixtime = 0) { function unix2DosTime($unixtime = 0) {
$timearray = ($unixtime == 0) ? getdate() : getdate($unixtime); $timearray = ($unixtime == 0) ? getdate() : getdate($unixtime);
if($timearray['year'] < 1980) { if($timearray['year'] < 1980) {
$timearray['year'] = 1980; $timearray['year'] = 1980;
$timearray['mon'] = 1; $timearray['mon'] = 1;
$timearray['mday'] = 1; $timearray['mday'] = 1;
$timearray['hours'] = 0; $timearray['hours'] = 0;
$timearray['minutes'] = 0; $timearray['minutes'] = 0;
$timearray['seconds'] = 0; $timearray['seconds'] = 0;
} // end if } // end if
return (($timearray['year'] - 1980) << 25) | ($timearray['mon'] << 21) | ($timearray['mday'] << 16) | return (($timearray['year'] - 1980) << 25) | ($timearray['mon'] << 21) | ($timearray['mday'] << 16) |
($timearray['hours'] << 11) | ($timearray['minutes'] << 5) | ($timearray['seconds'] >> 1); ($timearray['hours'] << 11) | ($timearray['minutes'] << 5) | ($timearray['seconds'] >> 1);
} // end of the 'unix2DosTime()' method } // end of the 'unix2DosTime()' method
function addFile($data, $name, $time = 0) { function addFile($data, $name, $time = 0) {
$name = str_replace('\\', '/', $name); $name = str_replace('\\', '/', $name);
$dtime = dechex($this->unix2DosTime($time)); $dtime = dechex($this->unix2DosTime($time));
$hexdtime = '\x' . $dtime[6] . $dtime[7] $hexdtime = '\x' . $dtime[6] . $dtime[7]
. '\x' . $dtime[4] . $dtime[5] . '\x' . $dtime[4] . $dtime[5]
. '\x' . $dtime[2] . $dtime[3] . '\x' . $dtime[2] . $dtime[3]
. '\x' . $dtime[0] . $dtime[1]; . '\x' . $dtime[0] . $dtime[1];
eval('$hexdtime = "' . $hexdtime . '";'); eval('$hexdtime = "' . $hexdtime . '";');
$fr = "\x50\x4b\x03\x04"; $fr = "\x50\x4b\x03\x04";
$fr .= "\x14\x00"; // ver needed to extract $fr .= "\x14\x00"; // ver needed to extract
$fr .= "\x00\x00"; // gen purpose bit flag $fr .= "\x00\x00"; // gen purpose bit flag
$fr .= "\x08\x00"; // compression method $fr .= "\x08\x00"; // compression method
$fr .= $hexdtime; // last mod time and date $fr .= $hexdtime; // last mod time and date
$unc_len = strlen($data); $unc_len = strlen($data);
$crc = crc32($data); $crc = crc32($data);
$zdata = gzcompress($data); $zdata = gzcompress($data);
$zdata = substr(substr($zdata, 0, strlen($zdata) - 4), 2); // fix crc bug $zdata = substr(substr($zdata, 0, strlen($zdata) - 4), 2); // fix crc bug
$c_len = strlen($zdata); $c_len = strlen($zdata);
$fr .= pack('V', $crc); // crc32 $fr .= pack('V', $crc); // crc32
$fr .= pack('V', $c_len); // compressed filesize $fr .= pack('V', $c_len); // compressed filesize
$fr .= pack('V', $unc_len); // uncompressed filesize $fr .= pack('V', $unc_len); // uncompressed filesize
$fr .= pack('v', strlen($name)); // length of filename $fr .= pack('v', strlen($name)); // length of filename
$fr .= pack('v', 0); // extra field length $fr .= pack('v', 0); // extra field length
$fr .= $name; $fr .= $name;
$fr .= $zdata; $fr .= $zdata;
$this -> datasec[] = $fr; $this -> datasec[] = $fr;
$cdrec = "\x50\x4b\x01\x02"; $cdrec = "\x50\x4b\x01\x02";
$cdrec .= "\x00\x00"; // version made by $cdrec .= "\x00\x00"; // version made by
$cdrec .= "\x14\x00"; // version needed to extract $cdrec .= "\x14\x00"; // version needed to extract
$cdrec .= "\x00\x00"; // gen purpose bit flag $cdrec .= "\x00\x00"; // gen purpose bit flag
$cdrec .= "\x08\x00"; // compression method $cdrec .= "\x08\x00"; // compression method
$cdrec .= $hexdtime; // last mod time & date $cdrec .= $hexdtime; // last mod time & date
$cdrec .= pack('V', $crc); // crc32 $cdrec .= pack('V', $crc); // crc32
$cdrec .= pack('V', $c_len); // compressed filesize $cdrec .= pack('V', $c_len); // compressed filesize
$cdrec .= pack('V', $unc_len); // uncompressed filesize $cdrec .= pack('V', $unc_len); // uncompressed filesize
$cdrec .= pack('v', strlen($name) ); // length of filename $cdrec .= pack('v', strlen($name) ); // length of filename
$cdrec .= pack('v', 0 ); // extra field length $cdrec .= pack('v', 0 ); // extra field length
$cdrec .= pack('v', 0 ); // file comment length $cdrec .= pack('v', 0 ); // file comment length
$cdrec .= pack('v', 0 ); // disk number start $cdrec .= pack('v', 0 ); // disk number start
$cdrec .= pack('v', 0 ); // internal file attributes $cdrec .= pack('v', 0 ); // internal file attributes
$cdrec .= pack('V', 32 ); // external file attributes - 'archive' bit set $cdrec .= pack('V', 32 ); // external file attributes - 'archive' bit set
$cdrec .= pack('V', $this -> old_offset ); // relative offset of local header $cdrec .= pack('V', $this -> old_offset ); // relative offset of local header
$this -> old_offset += strlen($fr); $this -> old_offset += strlen($fr);
$cdrec .= $name; $cdrec .= $name;
$this -> ctrl_dir[] = $cdrec; $this -> ctrl_dir[] = $cdrec;
} // end of the 'addFile()' method } // end of the 'addFile()' method
function file() { function file() {
$data = implode('', $this -> datasec); $data = implode('', $this -> datasec);
$ctrldir = implode('', $this -> ctrl_dir); $ctrldir = implode('', $this -> ctrl_dir);
return return
$data . $data .
$ctrldir . $ctrldir .
$this -> eof_ctrl_dir . $this -> eof_ctrl_dir .
pack('v', sizeof($this -> ctrl_dir)) . // total # of entries "on this disk" pack('v', sizeof($this -> ctrl_dir)) . // total # of entries "on this disk"
pack('v', sizeof($this -> ctrl_dir)) . // total # of entries overall pack('v', sizeof($this -> ctrl_dir)) . // total # of entries overall
pack('V', strlen($ctrldir)) . // size of central dir pack('V', strlen($ctrldir)) . // size of central dir
pack('V', strlen($data)) . // offset to start of central dir pack('V', strlen($data)) . // offset to start of central dir
"\x00\x00"; // .zip file comment length "\x00\x00"; // .zip file comment length
} // end of the 'file()' method } // end of the 'file()' method
} // end of the 'zipfile' class } // end of the 'zipfile' class
class SimpleUnzip { class SimpleUnzip {
var $Comment = ''; var $Comment = '';
var $Entries = array(); var $Entries = array();
var $Name = ''; var $Name = '';
var $Size = 0; var $Size = 0;
var $Time = 0; var $Time = 0;
function SimpleUnzip($in_FileName = '') { function SimpleUnzip($in_FileName = '') {
if($in_FileName !== '') { if($in_FileName !== '') {
SimpleUnzip::ReadFile($in_FileName); SimpleUnzip::ReadFile($in_FileName);
} }
} // end of the 'SimpleUnzip' constructor } // end of the 'SimpleUnzip' constructor
function Count() { function Count() {
return count($this->Entries); return count($this->Entries);
} // end of the 'Count()' method } // end of the 'Count()' method
function GetData($in_Index) { function GetData($in_Index) {
return $this->Entries[$in_Index]->Data; return $this->Entries[$in_Index]->Data;
} // end of the 'GetData()' method } // end of the 'GetData()' method
function GetEntry($in_Index) { function GetEntry($in_Index) {
return $this->Entries[$in_Index]; return $this->Entries[$in_Index];
} // end of the 'GetEntry()' method } // end of the 'GetEntry()' method
function GetError($in_Index) { function GetError($in_Index) {
return $this->Entries[$in_Index]->Error; return $this->Entries[$in_Index]->Error;
} // end of the 'GetError()' method } // end of the 'GetError()' method
function GetErrorMsg($in_Index) { function GetErrorMsg($in_Index) {
return $this->Entries[$in_Index]->ErrorMsg; return $this->Entries[$in_Index]->ErrorMsg;
} // end of the 'GetErrorMsg()' method } // end of the 'GetErrorMsg()' method
function GetName($in_Index) { function GetName($in_Index) {
return $this->Entries[$in_Index]->Name; return $this->Entries[$in_Index]->Name;
} // end of the 'GetName()' method } // end of the 'GetName()' method
function GetPath($in_Index) { function GetPath($in_Index) {
return $this->Entries[$in_Index]->Path; return $this->Entries[$in_Index]->Path;
} // end of the 'GetPath()' method } // end of the 'GetPath()' method
function GetTime($in_Index) { function GetTime($in_Index) {
return $this->Entries[$in_Index]->Time; return $this->Entries[$in_Index]->Time;
} // end of the 'GetTime()' method } // end of the 'GetTime()' method
function ReadFile($in_FileName) { function ReadFile($in_FileName) {
$this->Entries = array(); $this->Entries = array();
$this->Name = $in_FileName; $this->Name = $in_FileName;
$this->Time = filemtime($in_FileName); $this->Time = filemtime($in_FileName);
$this->Size = filesize($in_FileName); $this->Size = filesize($in_FileName);
$oF = fopen($in_FileName, 'rb'); $oF = fopen($in_FileName, 'rb');
$vZ = fread($oF, $this->Size); $vZ = fread($oF, $this->Size);
fclose($oF); fclose($oF);
$aE = explode("\x50\x4b\x05\x06", $vZ); $aE = explode("\x50\x4b\x05\x06", $vZ);
$aP = unpack('x16/v1CL', $aE[1]); $aP = unpack('x16/v1CL', $aE[1]);
$this->Comment = substr($aE[1], 18, $aP['CL']); $this->Comment = substr($aE[1], 18, $aP['CL']);
$this->Comment = strtr($this->Comment, array("\r\n" => "\n", $this->Comment = strtr($this->Comment, array("\r\n" => "\n",
"\r" => "\n")); "\r" => "\n"));
$aE = explode("\x50\x4b\x01\x02", $vZ); $aE = explode("\x50\x4b\x01\x02", $vZ);
$aE = explode("\x50\x4b\x03\x04", $aE[0]); $aE = explode("\x50\x4b\x03\x04", $aE[0]);
array_shift($aE); array_shift($aE);
foreach($aE as $vZ) { foreach($aE as $vZ) {
$aI = array(); $aI = array();
$aI['E'] = 0; $aI['E'] = 0;
$aI['EM'] = ''; $aI['EM'] = '';
$aP = unpack('v1VN/v1GPF/v1CM/v1FT/v1FD/V1CRC/V1CS/V1UCS/v1FNL', $vZ); $aP = unpack('v1VN/v1GPF/v1CM/v1FT/v1FD/V1CRC/V1CS/V1UCS/v1FNL', $vZ);
$bE = ($aP['GPF'] && 0x0001) ? TRUE : FALSE; $bE = ($aP['GPF'] && 0x0001) ? TRUE : FALSE;
$nF = $aP['FNL']; $nF = $aP['FNL'];
if($aP['GPF'] & 0x0008) { if($aP['GPF'] & 0x0008) {
$aP1 = unpack('V1CRC/V1CS/V1UCS', substr($vZ, -12)); $aP1 = unpack('V1CRC/V1CS/V1UCS', substr($vZ, -12));
$aP['CRC'] = $aP1['CRC']; $aP['CRC'] = $aP1['CRC'];
$aP['CS'] = $aP1['CS']; $aP['CS'] = $aP1['CS'];
$aP['UCS'] = $aP1['UCS']; $aP['UCS'] = $aP1['UCS'];
$vZ = substr($vZ, 0, -12); $vZ = substr($vZ, 0, -12);
} }
$aI['N'] = substr($vZ, 26, $nF); $aI['N'] = substr($vZ, 26, $nF);
if(substr($aI['N'], -1) == '/') { if(substr($aI['N'], -1) == '/') {
continue; continue;
} }
$aI['P'] = dirname($aI['N']); $aI['P'] = dirname($aI['N']);
$aI['P'] = $aI['P'] == '.' ? '' : $aI['P']; $aI['P'] = $aI['P'] == '.' ? '' : $aI['P'];
$aI['N'] = basename($aI['N']); $aI['N'] = basename($aI['N']);
$vZ = substr($vZ, 26 + $nF); $vZ = substr($vZ, 26 + $nF);
if(strlen($vZ) != $aP['CS']) { if(strlen($vZ) != $aP['CS']) {
$aI['E'] = 1; $aI['E'] = 1;
$aI['EM'] = 'Compressed size is not equal with the value in header information.'; $aI['EM'] = 'Compressed size is not equal with the value in header information.';
} else { } else {
if($bE) { if($bE) {
$aI['E'] = 5; $aI['E'] = 5;
$aI['EM'] = 'File is encrypted, which is not supported from this class.'; $aI['EM'] = 'File is encrypted, which is not supported from this class.';
} else { } else {
switch($aP['CM']) { switch($aP['CM']) {
case 0: // Stored case 0: // Stored
break; break;
case 8: // Deflated case 8: // Deflated
$vZ = gzinflate($vZ); $vZ = gzinflate($vZ);
break; break;
case 12: // BZIP2 case 12: // BZIP2
if(! extension_loaded('bz2')) { if(! extension_loaded('bz2')) {
if(strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') { if(strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') {
@dl('php_bz2.dll'); @dl('php_bz2.dll');
} else { } else {
@dl('bz2.so'); @dl('bz2.so');
} }
} }
if(extension_loaded('bz2')) { if(extension_loaded('bz2')) {
$vZ = bzdecompress($vZ); $vZ = bzdecompress($vZ);
} else { } else {
$aI['E'] = 7; $aI['E'] = 7;
$aI['EM'] = "PHP BZIP2 extension not available."; $aI['EM'] = "PHP BZIP2 extension not available.";
} }
break; break;
default: default:
$aI['E'] = 6; $aI['E'] = 6;
$aI['EM'] = "De-/Compression method {$aP['CM']} is not supported."; $aI['EM'] = "De-/Compression method {$aP['CM']} is not supported.";
} }
if(! $aI['E']) { if(! $aI['E']) {
if($vZ === FALSE) { if($vZ === FALSE) {
$aI['E'] = 2; $aI['E'] = 2;
$aI['EM'] = 'Decompression of data failed.'; $aI['EM'] = 'Decompression of data failed.';
} else { } else {
if(strlen($vZ) != $aP['UCS']) { if(strlen($vZ) != $aP['UCS']) {
$aI['E'] = 3; $aI['E'] = 3;
$aI['EM'] = 'Uncompressed size is not equal with the value in header information.'; $aI['EM'] = 'Uncompressed size is not equal with the value in header information.';
} else { } else {
if(crc32($vZ) != $aP['CRC']) { if(crc32($vZ) != $aP['CRC']) {
$aI['E'] = 4; $aI['E'] = 4;
$aI['EM'] = 'CRC32 checksum is not equal with the value in header information.'; $aI['EM'] = 'CRC32 checksum is not equal with the value in header information.';
} }
} }
} }
} }
} }
} }
$aI['D'] = $vZ; $aI['D'] = $vZ;
$aI['T'] = @mktime(($aP['FT'] & 0xf800) >> 11, $aI['T'] = @mktime(($aP['FT'] & 0xf800) >> 11,
($aP['FT'] & 0x07e0) >> 5, ($aP['FT'] & 0x07e0) >> 5,
($aP['FT'] & 0x001f) << 1, ($aP['FT'] & 0x001f) << 1,
($aP['FD'] & 0x01e0) >> 5, ($aP['FD'] & 0x01e0) >> 5,
($aP['FD'] & 0x001f), ($aP['FD'] & 0x001f),
(($aP['FD'] & 0xfe00) >> 9) + 1980); (($aP['FD'] & 0xfe00) >> 9) + 1980);
$this->Entries[] = new SimpleUnzipEntry($aI); $this->Entries[] = new SimpleUnzipEntry($aI);
} // end for each entries } // end for each entries
return $this->Entries; return $this->Entries;
} // end of the 'ReadFile()' method } // end of the 'ReadFile()' method
} // end of the 'SimpleUnzip' class } // end of the 'SimpleUnzip' class
class SimpleUnzipEntry { class SimpleUnzipEntry {
var $Data = ''; var $Data = '';
var $Error = 0; var $Error = 0;
var $ErrorMsg = ''; var $ErrorMsg = '';
var $Name = ''; var $Name = '';
var $Path = ''; var $Path = '';
var $Time = 0; var $Time = 0;
function SimpleUnzipEntry($in_Entry) { function SimpleUnzipEntry($in_Entry) {
$this->Data = $in_Entry['D']; $this->Data = $in_Entry['D'];
$this->Error = $in_Entry['E']; $this->Error = $in_Entry['E'];
$this->ErrorMsg = $in_Entry['EM']; $this->ErrorMsg = $in_Entry['EM'];
$this->Name = $in_Entry['N']; $this->Name = $in_Entry['N'];
$this->Path = $in_Entry['P']; $this->Path = $in_Entry['P'];
$this->Time = $in_Entry['T']; $this->Time = $in_Entry['T'];
} // end of the 'SimpleUnzipEntry' constructor } // end of the 'SimpleUnzipEntry' constructor
} // end of the 'SimpleUnzipEntry' class } // end of the 'SimpleUnzipEntry' class
?> ?>

File diff suppressed because it is too large Load Diff

View File

@@ -1,221 +1,221 @@
<?php <?php
if(!defined('IN_OAOOA')) { if(!defined('IN_OAOOA')) {
exit('Access Denied'); exit('Access Denied');
} }
class db_driver_mysql class db_driver_mysql
{ {
var $tablepre; var $tablepre;
var $version = ''; var $version = '';
var $drivertype = 'mysql'; var $drivertype = 'mysql';
var $querynum = 0; var $querynum = 0;
var $slaveid = 0; var $slaveid = 0;
var $curlink; var $curlink;
var $link = array(); var $link = array();
var $config = array(); var $config = array();
var $sqldebug = array(); var $sqldebug = array();
var $map = array(); var $map = array();
function db_mysql($config = array()) { function db_mysql($config = array()) {
if(!empty($config)) { if(!empty($config)) {
$this->set_config($config); $this->set_config($config);
} }
} }
function set_config($config) { function set_config($config) {
$this->config = &$config; $this->config = &$config;
$this->tablepre = $config['1']['tablepre']; $this->tablepre = $config['1']['tablepre'];
if(!empty($this->config['map'])) { if(!empty($this->config['map'])) {
$this->map = $this->config['map']; $this->map = $this->config['map'];
for($i = 1; $i <= 100; $i++) { for($i = 1; $i <= 100; $i++) {
if(isset($this->map['attachment']) && $i <= 10) { if(isset($this->map['attachment']) && $i <= 10) {
$this->map['attachment_'.($i-1)] = $this->map['attachment']; $this->map['attachment_'.($i-1)] = $this->map['attachment'];
} }
} }
if(isset($this->map['user'])) { if(isset($this->map['user'])) {
$this->map['user_status'] = $this->map['user_status'] =
$this->map['user_profile'] = $this->map['user_profile'] =
$this->map['user_field'] = $this->map['user_field'] =
$this->map['user']; $this->map['user'];
} }
} }
} }
function linknum(){ function linknum(){
return $this->curlink; return $this->curlink;
} }
function connect($serverid = 1) { function connect($serverid = 1) {
if(empty($this->config) || empty($this->config[$serverid])) { if(empty($this->config) || empty($this->config[$serverid])) {
$this->halt('config_db_not_found'); $this->halt('config_db_not_found');
} }
if(!empty($this->config[$serverid]['unix_socket'])){//使用socket连接 if(!empty($this->config[$serverid]['unix_socket'])){//使用socket连接
$this->config[$serverid]['dbhost']=$this->config[$serverid]['unix_socket']; $this->config[$serverid]['dbhost']=$this->config[$serverid]['unix_socket'];
}elseif($this->config[$serverid]['port']){ }elseif($this->config[$serverid]['port']){
list($dbhost,$port)=explode(':',$this->config[$serverid]['dbhost']); list($dbhost,$port)=explode(':',$this->config[$serverid]['dbhost']);
$this->config[$serverid]['dbhost']=$dbhost.':'.$this->config[$serverid]['port']; $this->config[$serverid]['dbhost']=$dbhost.':'.$this->config[$serverid]['port'];
} }
$this->link[$serverid] = $this->_dbconnect( $this->link[$serverid] = $this->_dbconnect(
$this->config[$serverid]['dbhost'], $this->config[$serverid]['dbhost'],
$this->config[$serverid]['dbuser'], $this->config[$serverid]['dbuser'],
$this->config[$serverid]['dbpw'], $this->config[$serverid]['dbpw'],
$this->config[$serverid]['dbcharset'], $this->config[$serverid]['dbcharset'],
$this->config[$serverid]['dbname'], $this->config[$serverid]['dbname'],
$this->config[$serverid]['pconnect'] $this->config[$serverid]['pconnect']
); );
$this->curlink = $this->link[$serverid]; $this->curlink = $this->link[$serverid];
} }
function _dbconnect($dbhost, $dbuser, $dbpw, $dbcharset, $dbname, $pconnect, $halt = true) { function _dbconnect($dbhost, $dbuser, $dbpw, $dbcharset, $dbname, $pconnect, $halt = true) {
if($pconnect) { if($pconnect) {
$link = @mysql_pconnect($dbhost, $dbuser, $dbpw); $link = @mysql_pconnect($dbhost, $dbuser, $dbpw);
} else { } else {
$link = @mysql_connect($dbhost, $dbuser, $dbpw, 1); $link = @mysql_connect($dbhost, $dbuser, $dbpw, 1);
} }
if(!$link) { if(!$link) {
$halt && $this->halt('notconnect', $this->errno()); $halt && $this->halt('notconnect', $this->errno());
} else { } else {
$this->curlink = $link; $this->curlink = $link;
if($this->version() > '4.1') { if($this->version() > '4.1') {
$dbcharset = $dbcharset ? $dbcharset : $this->config[1]['dbcharset']; $dbcharset = $dbcharset ? $dbcharset : $this->config[1]['dbcharset'];
$serverset = $dbcharset ? 'character_set_connection='.$dbcharset.', character_set_results='.$dbcharset.', character_set_client=binary' : ''; $serverset = $dbcharset ? 'character_set_connection='.$dbcharset.', character_set_results='.$dbcharset.', character_set_client=binary' : '';
$serverset .= $this->version() > '5.0.1' ? ((empty($serverset) ? '' : ',').'sql_mode=\'\'') : ''; $serverset .= $this->version() > '5.0.1' ? ((empty($serverset) ? '' : ',').'sql_mode=\'\'') : '';
$serverset && mysql_query("SET $serverset", $link); $serverset && mysql_query("SET $serverset", $link);
} }
$dbname && @mysql_select_db($dbname, $link); $dbname && @mysql_select_db($dbname, $link);
} }
return $link; return $link;
} }
function table_name($tablename) { function table_name($tablename) {
if(!empty($this->map) && !empty($this->map[$tablename])) { if(!empty($this->map) && !empty($this->map[$tablename])) {
$id = $this->map[$tablename]; $id = $this->map[$tablename];
if(!$this->link[$id]) { if(!$this->link[$id]) {
$this->connect($id); $this->connect($id);
} }
$this->curlink = $this->link[$id]; $this->curlink = $this->link[$id];
} else { } else {
$this->curlink = $this->link[1]; $this->curlink = $this->link[1];
} }
return $this->tablepre.$tablename; return $this->tablepre.$tablename;
} }
function select_db($dbname) { function select_db($dbname) {
return mysql_select_db($dbname, $this->curlink); return mysql_select_db($dbname, $this->curlink);
} }
function fetch_array($query, $result_type = MYSQL_ASSOC) { function fetch_array($query, $result_type = MYSQL_ASSOC) {
if($result_type == 'MYSQL_ASSOC') $result_type = MYSQL_ASSOC; if($result_type == 'MYSQL_ASSOC') $result_type = MYSQL_ASSOC;
return mysql_fetch_array($query, $result_type); return mysql_fetch_array($query, $result_type);
} }
function fetch_first($sql) { function fetch_first($sql) {
return $this->fetch_array($this->query($sql)); return $this->fetch_array($this->query($sql));
} }
function result_first($sql) { function result_first($sql) {
return $this->result($this->query($sql), 0); return $this->result($this->query($sql), 0);
} }
public function query($sql, $silent = false, $unbuffered = false) { public function query($sql, $silent = false, $unbuffered = false) {
if(defined('DZZ_DEBUG') && DZZ_DEBUG) { if(defined('DZZ_DEBUG') && DZZ_DEBUG) {
$starttime = microtime(true); $starttime = microtime(true);
} }
if('UNBUFFERED' === $silent) { if('UNBUFFERED' === $silent) {
$silent = false; $silent = false;
$unbuffered = true; $unbuffered = true;
} elseif('SILENT' === $silent) { } elseif('SILENT' === $silent) {
$silent = true; $silent = true;
$unbuffered = false; $unbuffered = false;
} }
$func = $unbuffered ? 'mysql_unbuffered_query' : 'mysql_query'; $func = $unbuffered ? 'mysql_unbuffered_query' : 'mysql_query';
if(!($query = $func($sql, $this->curlink))) { if(!($query = $func($sql, $this->curlink))) {
if(in_array($this->errno(), array(2006, 2013)) && substr($silent, 0, 5) != 'RETRY') { if(in_array($this->errno(), array(2006, 2013)) && substr($silent, 0, 5) != 'RETRY') {
$this->connect(); $this->connect();
return $this->query($sql, 'RETRY'.$silent); return $this->query($sql, 'RETRY'.$silent);
} }
if(!$silent) { if(!$silent) {
$this->halt($this->error(), $this->errno(), $sql); $this->halt($this->error(), $this->errno(), $sql);
} }
} }
if(defined('DZZ_DEBUG') && DZZ_DEBUG) { if(defined('DZZ_DEBUG') && DZZ_DEBUG) {
$this->sqldebug[] = array($sql, number_format((microtime(true) - $starttime), 6), debug_backtrace(), $this->curlink); $this->sqldebug[] = array($sql, number_format((microtime(true) - $starttime), 6), debug_backtrace(), $this->curlink);
} }
$this->querynum++; $this->querynum++;
return $query; return $query;
} }
function affected_rows() { function affected_rows() {
return mysql_affected_rows($this->curlink); return mysql_affected_rows($this->curlink);
} }
function error() { function error() {
return (($this->curlink) ? mysql_error($this->curlink) : mysql_error()); return (($this->curlink) ? mysql_error($this->curlink) : mysql_error());
} }
function errno() { function errno() {
return intval(($this->curlink) ? mysql_errno($this->curlink) : mysql_errno()); return intval(($this->curlink) ? mysql_errno($this->curlink) : mysql_errno());
} }
function result($query, $row = 0) { function result($query, $row = 0) {
$query = @mysql_result($query, $row); $query = @mysql_result($query, $row);
return $query; return $query;
} }
function num_rows($query) { function num_rows($query) {
$query = mysql_num_rows($query); $query = mysql_num_rows($query);
return $query; return $query;
} }
function num_fields($query) { function num_fields($query) {
return mysql_num_fields($query); return mysql_num_fields($query);
} }
function free_result($query) { function free_result($query) {
return mysql_free_result($query); return mysql_free_result($query);
} }
function insert_id() { function insert_id() {
return ($id = mysql_insert_id($this->curlink)) >= 0 ? $id : $this->result($this->query("SELECT last_insert_id()"), 0); return ($id = mysql_insert_id($this->curlink)) >= 0 ? $id : $this->result($this->query("SELECT last_insert_id()"), 0);
} }
function fetch_row($query) { function fetch_row($query) {
$query = mysql_fetch_row($query); $query = mysql_fetch_row($query);
return $query; return $query;
} }
function fetch_fields($query) { function fetch_fields($query) {
return mysql_fetch_field($query); return mysql_fetch_field($query);
} }
function version() { function version() {
if(empty($this->version)) { if(empty($this->version)) {
$this->version = mysql_get_server_info($this->curlink); $this->version = mysql_get_server_info($this->curlink);
} }
return $this->version; return $this->version;
} }
function escape_string($str) { function escape_string($str) {
return mysql_escape_string($str); return mysql_escape_string($str);
} }
function close() { function close() {
return mysql_close($this->curlink); return mysql_close($this->curlink);
} }
function halt($message = '', $code = 0, $sql = '') { function halt($message = '', $code = 0, $sql = '') {
throw new DbException($message, $code, $sql); throw new DbException($message, $code, $sql);
} }
} }
?> ?>

View File

@@ -1,85 +1,85 @@
<?php <?php
if(!defined('IN_OAOOA')) { if(!defined('IN_OAOOA')) {
exit('Access Denied'); exit('Access Denied');
} }
class db_driver_mysql_slave extends db_driver_mysql class db_driver_mysql_slave extends db_driver_mysql
{ {
public $slaveid = null; public $slaveid = null;
public $slavequery = 0; public $slavequery = 0;
public $slaveexcept = false; public $slaveexcept = false;
public $excepttables = array(); public $excepttables = array();
public $tablename = ''; public $tablename = '';
protected $_weighttable = array(); protected $_weighttable = array();
public $serverid = null; public $serverid = null;
function set_config($config) { function set_config($config) {
parent::set_config($config); parent::set_config($config);
if($this->config['common']['slave_except_table']) { if($this->config['common']['slave_except_table']) {
$this->excepttables = explode(',', str_replace(' ', '', $this->config['common']['slave_except_table'])); $this->excepttables = explode(',', str_replace(' ', '', $this->config['common']['slave_except_table']));
} }
} }
public function table_name($tablename) { public function table_name($tablename) {
$this->tablename = $tablename; $this->tablename = $tablename;
if(!$this->slaveexcept && $this->excepttables) { if(!$this->slaveexcept && $this->excepttables) {
$this->slaveexcept = in_array($tablename, $this->excepttables, true); $this->slaveexcept = in_array($tablename, $this->excepttables, true);
} }
$this->serverid = isset($this->map[$this->tablename]) ? $this->map[$this->tablename] : 1; $this->serverid = isset($this->map[$this->tablename]) ? $this->map[$this->tablename] : 1;
return $this->tablepre.$tablename; return $this->tablepre.$tablename;
} }
protected function _slave_connect() { protected function _slave_connect() {
if(!empty($this->config[$this->serverid]['slave'])) { if(!empty($this->config[$this->serverid]['slave'])) {
$this->_choose_slave(); $this->_choose_slave();
if($this->slaveid) { if($this->slaveid) {
if(!isset($this->link[$this->slaveid])) { if(!isset($this->link[$this->slaveid])) {
$this->connect($this->slaveid); $this->connect($this->slaveid);
} }
$this->slavequery ++; $this->slavequery ++;
$this->curlink = $this->link[$this->slaveid]; $this->curlink = $this->link[$this->slaveid];
} }
return true; return true;
} else { } else {
return false; return false;
} }
} }
protected function _choose_slave(){ protected function _choose_slave(){
if(!isset($this->_weighttable[$this->serverid])) { if(!isset($this->_weighttable[$this->serverid])) {
foreach ($this->config[$this->serverid]['slave'] as $key => $value) { foreach ($this->config[$this->serverid]['slave'] as $key => $value) {
$this->_weighttable[$this->serverid] .= str_repeat($key, 1 + intval($value['weight'])); $this->_weighttable[$this->serverid] .= str_repeat($key, 1 + intval($value['weight']));
} }
} }
$sid = $this->_weighttable[$this->serverid][mt_rand(0, strlen($this->_weighttable[$this->serverid]) -1)]; $sid = $this->_weighttable[$this->serverid][mt_rand(0, strlen($this->_weighttable[$this->serverid]) -1)];
$this->slaveid = $this->serverid.'_'.$sid; $this->slaveid = $this->serverid.'_'.$sid;
if(!isset($this->config[$this->slaveid])) { if(!isset($this->config[$this->slaveid])) {
$this->config[$this->slaveid] = $this->config[$this->serverid]['slave'][$sid]; $this->config[$this->slaveid] = $this->config[$this->serverid]['slave'][$sid];
} }
} }
protected function _master_connect() { protected function _master_connect() {
if(!$this->link[$this->serverid]) { if(!$this->link[$this->serverid]) {
$this->connect($this->serverid); $this->connect($this->serverid);
} }
$this->curlink = $this->link[$this->serverid]; $this->curlink = $this->link[$this->serverid];
} }
public function query($sql, $silent = false, $unbuffered = false) { public function query($sql, $silent = false, $unbuffered = false) {
if(!(!$this->slaveexcept && strtoupper(substr($sql, 0 , 6)) === 'SELECT' && $this->_slave_connect())) { if(!(!$this->slaveexcept && strtoupper(substr($sql, 0 , 6)) === 'SELECT' && $this->_slave_connect())) {
$this->_master_connect(); $this->_master_connect();
} }
$this->tablename = ''; $this->tablename = '';
$this->slaveexcept = false; $this->slaveexcept = false;
return parent::query($sql, $silent, $unbuffered); return parent::query($sql, $silent, $unbuffered);
} }
} }
?> ?>

View File

@@ -1,225 +1,225 @@
<?php <?php
if(!defined('IN_OAOOA')) { if(!defined('IN_OAOOA')) {
exit('Access Denied'); exit('Access Denied');
} }
class db_driver_mysqli class db_driver_mysqli
{ {
var $tablepre; var $tablepre;
var $version = ''; var $version = '';
var $drivertype = 'mysqli'; var $drivertype = 'mysqli';
var $querynum = 0; var $querynum = 0;
var $slaveid = 0; var $slaveid = 0;
var $curlink; var $curlink;
var $link = array(); var $link = array();
var $config = array(); var $config = array();
var $sqldebug = array(); var $sqldebug = array();
var $map = array(); var $map = array();
function db_mysql($config = array()) { function db_mysql($config = array()) {
if(!empty($config)) { if(!empty($config)) {
$this->set_config($config); $this->set_config($config);
} }
} }
function set_config($config) { function set_config($config) {
$this->config = &$config; $this->config = &$config;
$this->tablepre = $config['1']['tablepre']; $this->tablepre = $config['1']['tablepre'];
if(!empty($this->config['map'])) { if(!empty($this->config['map'])) {
$this->map = $this->config['map']; $this->map = $this->config['map'];
for($i = 1; $i <= 100; $i++) { for($i = 1; $i <= 100; $i++) {
if(isset($this->map['attachment']) && $i <= 10) { if(isset($this->map['attachment']) && $i <= 10) {
$this->map['attachment_'.($i-1)] = $this->map['attachment']; $this->map['attachment_'.($i-1)] = $this->map['attachment'];
} }
if(isset($this->map['user'])) { if(isset($this->map['user'])) {
$this->map['user_status'] = $this->map['user_status'] =
$this->map['user_profile'] = $this->map['user_profile'] =
$this->map['user_field'] = $this->map['user_field'] =
$this->map['user']; $this->map['user'];
} }
} }
} }
} }
function linknum(){ function linknum(){
return $this->curlink; return $this->curlink;
} }
function connect($serverid = 1) { function connect($serverid = 1) {
if(empty($this->config) || empty($this->config[$serverid])) { if(empty($this->config) || empty($this->config[$serverid])) {
$this->halt('config_db_not_found'); $this->halt('config_db_not_found');
} }
//兼容支持域名直接带有端口的情况 //兼容支持域名直接带有端口的情况
if(strpos($this->config[$serverid]['dbhost'],':')!==false){ if(strpos($this->config[$serverid]['dbhost'],':')!==false){
list($dbhost,$port)=explode(':',$this->config[$serverid]['dbhost']); list($dbhost,$port)=explode(':',$this->config[$serverid]['dbhost']);
if($port && empty($this->config[$serverid]['port'])) $this->config[$serverid]['port']=$port; if($port && empty($this->config[$serverid]['port'])) $this->config[$serverid]['port']=$port;
if($dbhost) $this->config[$serverid]['dbhost']=$dbhost; if($dbhost) $this->config[$serverid]['dbhost']=$dbhost;
}elseif(strpos($this->config[$serverid]['dbhost'],'.sock')!==false){//地址直接是socket地址 }elseif(strpos($this->config[$serverid]['dbhost'],'.sock')!==false){//地址直接是socket地址
$this->config[$serverid]['unix_socket']=$this->config[$serverid]['dbhost']; $this->config[$serverid]['unix_socket']=$this->config[$serverid]['dbhost'];
$this->config[$serverid]['dbhost']='localhost'; $this->config[$serverid]['dbhost']='localhost';
} }
if(empty($this->config[$serverid]['port'])) $this->config[$serverid]['port']='3306'; if(empty($this->config[$serverid]['port'])) $this->config[$serverid]['port']='3306';
$this->link[$serverid] = $this->_dbconnect( $this->link[$serverid] = $this->_dbconnect(
$this->config[$serverid]['dbhost'], $this->config[$serverid]['dbhost'],
$this->config[$serverid]['dbuser'], $this->config[$serverid]['dbuser'],
$this->config[$serverid]['dbpw'], $this->config[$serverid]['dbpw'],
$this->config[$serverid]['dbcharset'], $this->config[$serverid]['dbcharset'],
$this->config[$serverid]['dbname'], $this->config[$serverid]['dbname'],
$this->config[$serverid]['pconnect'], $this->config[$serverid]['pconnect'],
$this->config[$serverid]['port'], $this->config[$serverid]['port'],
$this->config[$serverid]['unix_socket'] $this->config[$serverid]['unix_socket']
); );
$this->curlink = $this->link[$serverid]; $this->curlink = $this->link[$serverid];
} }
function _dbconnect($dbhost, $dbuser, $dbpw, $dbcharset, $dbname, $pconnect,$port='3306',$unix_socket='', $halt = true) { function _dbconnect($dbhost, $dbuser, $dbpw, $dbcharset, $dbname, $pconnect,$port='3306',$unix_socket='', $halt = true) {
$link = new mysqli(); $link = new mysqli();
if(!$link->real_connect($dbhost, $dbuser, $dbpw, $dbname, $port, $unix_socket)) { if(!$link->real_connect($dbhost, $dbuser, $dbpw, $dbname, $port, $unix_socket)) {
$halt && $this->halt('notconnect', $this->errno()); $halt && $this->halt('notconnect', $this->errno());
} else { } else {
$this->curlink = $link; $this->curlink = $link;
if($this->version() > '4.1') { if($this->version() > '4.1') {
$link->set_charset($dbcharset ? $dbcharset : $this->config[1]['dbcharset']); $link->set_charset($dbcharset ? $dbcharset : $this->config[1]['dbcharset']);
$serverset = $this->version() > '5.0.1' ? 'sql_mode=\'\'' : ''; $serverset = $this->version() > '5.0.1' ? 'sql_mode=\'\'' : '';
$serverset && $link->query("SET $serverset"); $serverset && $link->query("SET $serverset");
} }
} }
return $link; return $link;
} }
function table_name($tablename) { function table_name($tablename) {
if(!empty($this->map) && !empty($this->map[$tablename])) { if(!empty($this->map) && !empty($this->map[$tablename])) {
$id = $this->map[$tablename]; $id = $this->map[$tablename];
if(!$this->link[$id]) { if(!$this->link[$id]) {
$this->connect($id); $this->connect($id);
} }
$this->curlink = $this->link[$id]; $this->curlink = $this->link[$id];
} else { } else {
$this->curlink = $this->link[1]; $this->curlink = $this->link[1];
} }
return $this->tablepre.$tablename; return $this->tablepre.$tablename;
} }
function select_db($dbname) { function select_db($dbname) {
return $this->curlink->select_db($dbname); return $this->curlink->select_db($dbname);
} }
function fetch_array($query, $result_type = MYSQLI_ASSOC) { function fetch_array($query, $result_type = MYSQLI_ASSOC) {
if($result_type == 'MYSQL_ASSOC') $result_type = MYSQLI_ASSOC; if($result_type == 'MYSQL_ASSOC') $result_type = MYSQLI_ASSOC;
return $query ? $query->fetch_array($result_type) : null; return $query ? $query->fetch_array($result_type) : null;
} }
function fetch_first($sql) { function fetch_first($sql) {
return $this->fetch_array($this->query($sql)); return $this->fetch_array($this->query($sql));
} }
function result_first($sql) { function result_first($sql) {
return $this->result($this->query($sql), 0); return $this->result($this->query($sql), 0);
} }
public function query($sql, $silent = false, $unbuffered = false) { public function query($sql, $silent = false, $unbuffered = false) {
if(defined('DZZ_DEBUG') && DZZ_DEBUG) { if(defined('DZZ_DEBUG') && DZZ_DEBUG) {
$starttime = microtime(true); $starttime = microtime(true);
} }
if('UNBUFFERED' === $silent) { if('UNBUFFERED' === $silent) {
$silent = false; $silent = false;
$unbuffered = true; $unbuffered = true;
} elseif('SILENT' === $silent) { } elseif('SILENT' === $silent) {
$silent = true; $silent = true;
$unbuffered = false; $unbuffered = false;
} }
$resultmode = $unbuffered ? MYSQLI_USE_RESULT : MYSQLI_STORE_RESULT; $resultmode = $unbuffered ? MYSQLI_USE_RESULT : MYSQLI_STORE_RESULT;
if(!($query = $this->curlink->query($sql, $resultmode))) { if(!($query = $this->curlink->query($sql, $resultmode))) {
if(in_array($this->errno(), array(2006, 2013)) && substr($silent, 0, 5) != 'RETRY') { if(in_array($this->errno(), array(2006, 2013)) && substr($silent, 0, 5) != 'RETRY') {
$this->connect(); $this->connect();
return $this->curlink->query($sql, 'RETRY'.$silent); return $this->curlink->query($sql, 'RETRY'.$silent);
} }
if(!$silent) { if(!$silent) {
$this->halt($this->error(), $this->errno(), $sql); $this->halt($this->error(), $this->errno(), $sql);
} }
} }
if(defined('DZZ_DEBUG') && DZZ_DEBUG) { if(defined('DZZ_DEBUG') && DZZ_DEBUG) {
$this->sqldebug[] = array($sql, number_format((microtime(true) - $starttime), 6), debug_backtrace(), $this->curlink); $this->sqldebug[] = array($sql, number_format((microtime(true) - $starttime), 6), debug_backtrace(), $this->curlink);
} }
$this->querynum++; $this->querynum++;
return $query; return $query;
} }
function affected_rows() { function affected_rows() {
return $this->curlink->affected_rows; return $this->curlink->affected_rows;
} }
function error() { function error() {
return (($this->curlink) ? $this->curlink->error : mysqli_error()); return (($this->curlink) ? $this->curlink->error : mysqli_error());
} }
function errno() { function errno() {
return intval(($this->curlink) ? $this->curlink->errno : mysqli_errno()); return intval(($this->curlink) ? $this->curlink->errno : mysqli_errno());
} }
function result($query, $row = 0) { function result($query, $row = 0) {
if(!$query || $query->num_rows == 0) { if(!$query || $query->num_rows == 0) {
return null; return null;
} }
$query->data_seek($row); $query->data_seek($row);
$assocs = $query->fetch_row(); $assocs = $query->fetch_row();
return $assocs[0]; return $assocs[0];
} }
function num_rows($query) { function num_rows($query) {
$query = $query ? $query->num_rows : 0; $query = $query ? $query->num_rows : 0;
return $query; return $query;
} }
function num_fields($query) { function num_fields($query) {
return $query ? $query->field_count : null; return $query ? $query->field_count : null;
} }
function free_result($query) { function free_result($query) {
return $query ? $query->free() : false; return $query ? $query->free() : false;
} }
function insert_id() { function insert_id() {
return ($id = $this->curlink->insert_id) >= 0 ? $id : $this->result($this->query("SELECT last_insert_id()"), 0); return ($id = $this->curlink->insert_id) >= 0 ? $id : $this->result($this->query("SELECT last_insert_id()"), 0);
} }
function fetch_row($query) { function fetch_row($query) {
$query = $query ? $query->fetch_row() : null; $query = $query ? $query->fetch_row() : null;
return $query; return $query;
} }
function fetch_fields($query) { function fetch_fields($query) {
return $query ? $query->fetch_field() : null; return $query ? $query->fetch_field() : null;
} }
function version() { function version() {
if(empty($this->version)) { if(empty($this->version)) {
$this->version = $this->curlink->server_info; $this->version = $this->curlink->server_info;
} }
return $this->version; return $this->version;
} }
function escape_string($str) { function escape_string($str) {
return $this->curlink->escape_string($str); return $this->curlink->escape_string($str);
} }
function close() { function close() {
return $this->curlink->close(); return $this->curlink->close();
} }
function halt($message = '', $code = 0, $sql = '') { function halt($message = '', $code = 0, $sql = '') {
throw new DbException($message, $code, $sql); throw new DbException($message, $code, $sql);
} }
} }
?> ?>

View File

@@ -1,86 +1,86 @@
<?php <?php
if(!defined('IN_OAOOA')) { if(!defined('IN_OAOOA')) {
exit('Access Denied'); exit('Access Denied');
} }
class db_driver_mysqli_slave extends db_driver_mysqli class db_driver_mysqli_slave extends db_driver_mysqli
{ {
public $slaveid = null; public $slaveid = null;
public $slavequery = 0; public $slavequery = 0;
public $slaveexcept = false; public $slaveexcept = false;
public $excepttables = array(); public $excepttables = array();
public $tablename = ''; public $tablename = '';
protected $_weighttable = array(); protected $_weighttable = array();
public $serverid = null; public $serverid = null;
function set_config($config) { function set_config($config) {
parent::set_config($config); parent::set_config($config);
if($this->config['common']['slave_except_table']) { if($this->config['common']['slave_except_table']) {
$this->excepttables = explode(',', str_replace(' ', '', $this->config['common']['slave_except_table'])); $this->excepttables = explode(',', str_replace(' ', '', $this->config['common']['slave_except_table']));
} }
} }
public function table_name($tablename) { public function table_name($tablename) {
$this->tablename = $tablename; $this->tablename = $tablename;
if(!$this->slaveexcept && $this->excepttables) { if(!$this->slaveexcept && $this->excepttables) {
$this->slaveexcept = in_array($tablename, $this->excepttables, true); $this->slaveexcept = in_array($tablename, $this->excepttables, true);
} }
$this->serverid = isset($this->map[$this->tablename]) ? $this->map[$this->tablename] : 1; $this->serverid = isset($this->map[$this->tablename]) ? $this->map[$this->tablename] : 1;
return $this->tablepre.$tablename; return $this->tablepre.$tablename;
} }
protected function _slave_connect() { protected function _slave_connect() {
if(!empty($this->config[$this->serverid]['slave'])) { if(!empty($this->config[$this->serverid]['slave'])) {
$this->_choose_slave(); $this->_choose_slave();
if($this->slaveid) { if($this->slaveid) {
if(!isset($this->link[$this->slaveid])) { if(!isset($this->link[$this->slaveid])) {
$this->connect($this->slaveid); $this->connect($this->slaveid);
} }
$this->slavequery ++; $this->slavequery ++;
$this->curlink = $this->link[$this->slaveid]; $this->curlink = $this->link[$this->slaveid];
} }
return true; return true;
} else { } else {
return false; return false;
} }
} }
protected function _choose_slave(){ protected function _choose_slave(){
if(!isset($this->_weighttable[$this->serverid])) { if(!isset($this->_weighttable[$this->serverid])) {
foreach ($this->config[$this->serverid]['slave'] as $key => $value) { foreach ($this->config[$this->serverid]['slave'] as $key => $value) {
$this->_weighttable[$this->serverid] .= str_repeat($key, 1 + intval($value['weight'])); $this->_weighttable[$this->serverid] .= str_repeat($key, 1 + intval($value['weight']));
} }
} }
$sid = $this->_weighttable[$this->serverid][mt_rand(0, strlen($this->_weighttable[$this->serverid]) -1)]; $sid = $this->_weighttable[$this->serverid][mt_rand(0, strlen($this->_weighttable[$this->serverid]) -1)];
$this->slaveid = $this->serverid.'_'.$sid; $this->slaveid = $this->serverid.'_'.$sid;
if(!isset($this->config[$this->slaveid])) { if(!isset($this->config[$this->slaveid])) {
$this->config[$this->slaveid] = $this->config[$this->serverid]['slave'][$sid]; $this->config[$this->slaveid] = $this->config[$this->serverid]['slave'][$sid];
} }
} }
protected function _master_connect() { protected function _master_connect() {
if(!$this->link[$this->serverid]) { if(!$this->link[$this->serverid]) {
$this->connect($this->serverid); $this->connect($this->serverid);
} }
$this->curlink = $this->link[$this->serverid]; $this->curlink = $this->link[$this->serverid];
} }
public function query($sql, $silent = false, $unbuffered = false) { public function query($sql, $silent = false, $unbuffered = false) {
if(!(!$this->slaveexcept && strtoupper(substr($sql, 0 , 6)) === 'SELECT' && $this->_slave_connect())) { if(!(!$this->slaveexcept && strtoupper(substr($sql, 0 , 6)) === 'SELECT' && $this->_slave_connect())) {
$this->_master_connect(); $this->_master_connect();
} }
$this->tablename = ''; $this->tablename = '';
$this->slaveexcept = false; $this->slaveexcept = false;
return parent::query($sql, $silent, $unbuffered); return parent::query($sql, $silent, $unbuffered);
} }
} }
?> ?>

View File

@@ -1,75 +1,75 @@
<?php <?php
namespace core\dzz; namespace core\dzz;
class Datareturn class Datareturn
{ {
private static $returnData = ''; private static $returnData = '';
private static $template = ''; private static $template = '';
public static function data_return($type = 'json', $data = '', $template = '') public static function data_return($type = 'json', $data = '', $template = '')
{ {
self::$returnData = $data; self::$returnData = $data;
self::$template = $template; self::$template = $template;
switch ($type) { switch ($type) {
case 'json': case 'json':
self::json_return(); self::json_return();
break; break;
case 'string': case 'string':
self::string_return(); self::string_return();
break; break;
case 'html': case 'html':
self::html_return(); self::html_return();
break; break;
case 'Array': case 'Array':
self::Array_return(); self::Array_return();
break; break;
default: default:
self::json_return(); self::json_return();
} }
exit; exit;
} }
private static function Array_return() private static function Array_return()
{ {
return self::$returnData; return self::$returnData;
} }
private static function json_return() private static function json_return()
{ {
echo json_encode(self::$returnData); echo json_encode(self::$returnData);
exit; exit;
} }
private static function html_return() private static function html_return()
{ {
extract(self::$returnData); extract(self::$returnData);
include template(self::$template); include template(self::$template);
exit(); exit();
} }
private static function string_return() private static function string_return()
{ {
if(isset(self::$returnData['error'])){ if(isset(self::$returnData['error'])){
echo self::$returnData['error']; echo self::$returnData['error'];
}else{ }else{
echo self::$returnData; echo self::$returnData;
} }
exit; exit;
} }
} }

View File

@@ -1,186 +1,186 @@
<?php <?php
namespace core\dzz; namespace core\dzz;
class Hook class Hook
{ {
private static $tags = array(); private static $tags = array();
public static $usetag = array(); public static $usetag = array();
/** /**
* 动态添加行为扩展到某个标签 * 动态添加行为扩展到某个标签
* @param string $tag 标签名称 * @param string $tag 标签名称
* @param mixed $behavior 行为名称 * @param mixed $behavior 行为名称
* @param mixed $behavior 行为名称 * @param mixed $behavior 行为名称
* @param bool $first 是否放到开头执行 * @param bool $first 是否放到开头执行
* @return void * @return void
*/ */
public static function add($tag, $behavior, $first = false) public static function add($tag, $behavior, $first = false)
{ {
isset(self::$tags[$tag]) || self::$tags[$tag] = array(); isset(self::$tags[$tag]) || self::$tags[$tag] = array();
if (is_array($behavior) && !is_callable($behavior)) {//此处废弃,暂不调整 if (is_array($behavior) && !is_callable($behavior)) {//此处废弃,暂不调整
if (!array_key_exists('_overlay', $behavior) || !$behavior['_overlay']) { if (!array_key_exists('_overlay', $behavior) || !$behavior['_overlay']) {
unset($behavior['_overlay']); unset($behavior['_overlay']);
self::$tags[$tag] = array_merge(self::$tags[$tag], $behavior); self::$tags[$tag] = array_merge(self::$tags[$tag], $behavior);
} else { } else {
unset($behavior['_overlay']); unset($behavior['_overlay']);
self::$tags[$tag] = $behavior; self::$tags[$tag] = $behavior;
} }
} elseif ($first) { } elseif ($first) {
array_unshift(self::$tags[$tag], $behavior); array_unshift(self::$tags[$tag], $behavior);
} else { } else {
self::$tags[$tag][] = $behavior; self::$tags[$tag][] = $behavior;
} }
self::$tags[$tag]=array_unique( self::$tags[$tag]); self::$tags[$tag]=array_unique( self::$tags[$tag]);
} }
/** /**
* 批量导入插件 * 批量导入插件
* @param array $tags 插件信息 * @param array $tags 插件信息
* @param boolean $recursive 是否递归合并 * @param boolean $recursive 是否递归合并
*/ */
public static function import(array $tags, $recursive = true) public static function import(array $tags, $recursive = true)
{ {
if ($recursive) { if ($recursive) {
foreach ($tags as $tag => $behavior) { foreach ($tags as $tag => $behavior) {
self::add($tag, $behavior); self::add($tag, $behavior);
} }
} else { } else {
self::$tags = $tags + self::$tags; self::$tags = $tags + self::$tags;
} }
} }
/** /**
* 获取插件信息 * 获取插件信息
* @param string $tag 插件位置 留空获取全部 * @param string $tag 插件位置 留空获取全部
* @return array * @return array
*/ */
public static function get($tag = '') public static function get($tag = '')
{ {
if (empty($tag)) { if (empty($tag)) {
//获取全部的插件信息 //获取全部的插件信息
return self::$tags; return self::$tags;
} else { } else {
return array_key_exists($tag, self::$tags) ? self::$tags[$tag] : array(); return array_key_exists($tag, self::$tags) ? self::$tags[$tag] : array();
} }
} }
/** /**
* 监听标签的行为 * 监听标签的行为
* @param string $tag 标签名称 * @param string $tag 标签名称
* @param mixed $params 传入参数 * @param mixed $params 传入参数
* @param mixed $extra 额外参数 * @param mixed $extra 额外参数
* @param bool $once 只获取一个有效返回值 * @param bool $once 只获取一个有效返回值
* @return mixed * @return mixed
*/ */
public static function listen($tag, &$params = null, $extra = null,$once = false) public static function listen($tag, &$params = null, $extra = null,$once = false)
{ {
$results = array(); $results = array();
$tags = static::get($tag); $tags = static::get($tag);
$break = false; $break = false;
foreach ($tags as $key => $name) { foreach ($tags as $key => $name) {
if(is_array($name)){ if(is_array($name)){
foreach($name as $val){ foreach($name as $val){
$results[$key] = self::exec($val, $tag, $params, $extra,$break); $results[$key] = self::exec($val, $tag, $params, $extra,$break);
if (false === $results[$key] || $break == true) { if (false === $results[$key] || $break == true) {
break; break;
} elseif($once) { } elseif($once) {
break; break;
} }
} }
}else{ }else{
$results[$key] = self::exec($name, $tag, $params, $extra,$break); $results[$key] = self::exec($name, $tag, $params, $extra,$break);
if (false === $results[$key] || $break == true) { if (false === $results[$key] || $break == true) {
// 如果返回false 则中断行为执行 // 如果返回false 则中断行为执行
break; break;
} elseif ($once) { } elseif ($once) {
break; break;
} }
} }
} }
return $once ? ($results?end($results):$results) : $results; return $once ? ($results?end($results):$results) : $results;
} }
/** /**
* 执行某个行为 * 执行某个行为
* @param mixed $class 要执行的行为 * @param mixed $class 要执行的行为
* @param string $tag 方法名(标签名) * @param string $tag 方法名(标签名)
* @param Mixed $params 传人的参数 * @param Mixed $params 传人的参数
* @param mixed $extra 额外参数 * @param mixed $extra 额外参数
* @return mixed * @return mixed
*/ */
public static function exec($class, $tag = '', &$params = null,$extra = null,&$break) public static function exec($class, $tag = '', &$params = null,$extra = null,&$break)
{ {
if(strpos($class,'|') !== false){//判断是否规定了作用域,并判断作用域确定是否执行钩子 if(strpos($class,'|') !== false){//判断是否规定了作用域,并判断作用域确定是否执行钩子
$rangArr = explode('|',$class); $rangArr = explode('|',$class);
$class = $rangArr[0]; $class = $rangArr[0];
$range = $rangArr[1]; $range = $rangArr[1];
if(defined('CURMODULE')){ if(defined('CURMODULE')){
$execrange = CURSCRIPT.'/'.CURMODULE; $execrange = CURSCRIPT.'/'.CURMODULE;
}else{ }else{
$execrange = CURSCRIPT; $execrange = CURSCRIPT;
} }
if(strpos($execrange,$range) !== 0){ if(strpos($execrange,$range) !== 0){
return true; return true;
} }
} }
//self::$usetag[] = $tag; //self::$usetag[] = $tag;
$method = static::parseName($tag, 1, false); $method = static::parseName($tag, 1, false);
if ($class instanceof \Closure) { if ($class instanceof \Closure) {
$result = call_user_func_array($class, array( & $params, $extra)); $result = call_user_func_array($class, array( & $params, $extra));
$class = 'Closure'; $class = 'Closure';
} elseif (is_array($class)) { } elseif (is_array($class)) {
list($class, $method) = $class; list($class, $method) = $class;
$classobj = new $class(); $classobj = new $class();
$result = $classobj->$method($params, $extra); $result = $classobj->$method($params, $extra);
//$result = (new $class())->$method($params, $extra); //$result = (new $class())->$method($params, $extra);
//$result = call_user_func_array(array($class,$method), array( & $params, $extra)); //$result = call_user_func_array(array($class,$method), array( & $params, $extra));
$class = $class . '->' . $method; $class = $class . '->' . $method;
} elseif (is_object($class)) { } elseif (is_object($class)) {
$result = $class->$method($params, $extra); $result = $class->$method($params, $extra);
$class = get_class($class); $class = get_class($class);
} elseif (strpos($class, '::')) { } elseif (strpos($class, '::')) {
$result = call_user_func_array($class, array( & $params, $extra)); $result = call_user_func_array($class, array( & $params, $extra));
} else { } else {
$obj = new $class(); $obj = new $class();
$method = ($tag && is_callable(array($obj, $method))) ? $method : 'run'; $method = ($tag && is_callable(array($obj, $method))) ? $method : 'run';
$result = $obj->$method($params, $extra,$break); $result = $obj->$method($params, $extra,$break);
} }
return $result; return $result;
} }
public static function parseName($name, $type = 0, $ucfirst = true) public static function parseName($name, $type = 0, $ucfirst = true)
{ {
if ($type) { if ($type) {
$name = preg_replace_callback('/_([a-zA-Z])/', function ($match) { $name = preg_replace_callback('/_([a-zA-Z])/', function ($match) {
return strtoupper($match[1]); return strtoupper($match[1]);
}, $name); }, $name);
return $ucfirst ? ucfirst($name) : lcfirst($name); return $ucfirst ? ucfirst($name) : lcfirst($name);
} else { } else {
return strtolower(trim(preg_replace("/[A-Z]/", "_\\0", $name), "_")); return strtolower(trim(preg_replace("/[A-Z]/", "_\\0", $name), "_"));
} }
} }
} }

View File

@@ -1,169 +1,169 @@
<?php <?php
/** /**
* Created by PhpStorm. * Created by PhpStorm.
* User: a * User: a
* Date: 2017/2/9 * Date: 2017/2/9
* Time: 11:33 * Time: 11:33
*/ */
namespace core\dzz; namespace core\dzz;
class HookRead class HookRead
{ {
public static $tags = array();//钩子数组 public static $tags = array();//钩子数组
public static $tagcachefile = '';//钩子列表缓存文件 public static $tagcachefile = '';//钩子列表缓存文件
private static $cacheTagFileCtime = 0;//钩子列表缓存文件生成时间 private static $cacheTagFileCtime = 0;//钩子列表缓存文件生成时间
/*初始化 /*初始化
* @description 增加系统预埋钩子 * @description 增加系统预埋钩子
* CACHE_DIR 缓存目录 * CACHE_DIR 缓存目录
* */ * */
public static function _init() public static function _init()
{ {
self::$tagcachefile = CACHE_DIR . BS . 'tags' . EXT;//钩子列表缓存文件路径 self::$tagcachefile = CACHE_DIR . BS . 'tags' . EXT;//钩子列表缓存文件路径
if (file_exists(self::$tagcachefile)) { if (file_exists(self::$tagcachefile)) {
self::$tags = is_array(include self::$tagcachefile) ? include self::$tagcachefile:array(); self::$tags = is_array(include self::$tagcachefile) ? include self::$tagcachefile:array();
self::$cacheTagFileCtime = filectime(self::$tagcachefile); self::$cacheTagFileCtime = filectime(self::$tagcachefile);
} }
self::readTags();//读取系统预埋钩子 self::readTags();//读取系统预埋钩子
if(file_exists(self::$tagcachefile)){//判断钩子列表缓存文件是否生成 if(file_exists(self::$tagcachefile)){//判断钩子列表缓存文件是否生成
self::$tags = is_array(include self::$tagcachefile) ? include self::$tagcachefile:array();//读取钩子列表缓存文件 self::$tags = is_array(include self::$tagcachefile) ? include self::$tagcachefile:array();//读取钩子列表缓存文件
self::$tags = self::tagsArrayParse(self::$tags);//缓存钩子列表文件内容处理 self::$tags = self::tagsArrayParse(self::$tags);//缓存钩子列表文件内容处理
Hook::import(self::$tags);//导入钩子 Hook::import(self::$tags);//导入钩子
} }
} }
/* /*
* @description 递归读取所有的钩子列表文件(根目录,应用目录,模块目录) * @description 递归读取所有的钩子列表文件(根目录,应用目录,模块目录)
* @$dirname 默认为根目录 * @$dirname 默认为根目录
* @$deep 读取文件层级 * @$deep 读取文件层级
* @return null * @return null
* */ * */
private static function readTags($dirname = DZZ_ROOT,$deep = 0) private static function readTags($dirname = DZZ_ROOT,$deep = 0)
{ {
if(!is_dir($dirname)){ if(!is_dir($dirname)){
return false; return false;
} }
$dirname = rtrim($dirname,BS); $dirname = rtrim($dirname,BS);
$deep++; $deep++;
$openfile = opendir($dirname); $openfile = opendir($dirname);
while (($file = readdir($openfile)) !== false) { while (($file = readdir($openfile)) !== false) {
if ($file != '.' && $file != '..' && is_dir($dirname.BS.$file) && strpos($file,'.') !== 0) { if ($file != '.' && $file != '..' && is_dir($dirname.BS.$file) && strpos($file,'.') !== 0) {
$dir = $dirname .BS. $file; $dir = $dirname .BS. $file;
if($file == CONFIG_NAME){ if($file == CONFIG_NAME){
$tagfile = $dir.BS. 'tags' . EXT; $tagfile = $dir.BS. 'tags' . EXT;
if (file_exists($tagfile)) { if (file_exists($tagfile)) {
if ( !file_exists(self::$tagcachefile) || (filemtime($tagfile) > self::$cacheTagFileCtime)) { if ( !file_exists(self::$tagcachefile) || (filemtime($tagfile) > self::$cacheTagFileCtime)) {
$key = str_replace(array(DZZ_ROOT,CONFIG_NAME.BS),'',$dir); $key = str_replace(array(DZZ_ROOT,CONFIG_NAME.BS),'',$dir);
$tagsArr = include $tagfile; $tagsArr = include $tagfile;
if(is_array($tagsArr)){ if(is_array($tagsArr)){
self::$tags[$key] = $tagsArr; self::$tags[$key] = $tagsArr;
$writestr = "<?php \t\n return "; $writestr = "<?php \t\n return ";
$writestr .= var_export(self::$tags,true).";"; $writestr .= var_export(self::$tags,true).";";
$fp = fopen(self::$tagcachefile,'w+'); $fp = fopen(self::$tagcachefile,'w+');
fwrite($fp,$writestr); fwrite($fp,$writestr);
fclose($fp); fclose($fp);
} }
} }
} }
}else { }else {
if($deep <= 3){ if($deep <= 3){
self::readTags($dir,$deep); self::readTags($dir,$deep);
} }
} }
} }
} }
closedir($openfile); closedir($openfile);
} }
/*@description钩子缓存数组处理函数 /*@description钩子缓存数组处理函数
* @$arr array * @$arr array
* @return array * @return array
* */ * */
private static function tagsArrayParse($arr = null){ private static function tagsArrayParse($arr = null){
if(!is_array($arr)) return false; if(!is_array($arr)) return false;
$tagArrReturn = array(); $tagArrReturn = array();
foreach($arr as $v){ foreach($arr as $v){
foreach($v as $key=>$val){ foreach($v as $key=>$val){
$keyArr = array_keys($val); $keyArr = array_keys($val);
foreach($keyArr as $k=>$value){//取出所有键加上p foreach($keyArr as $k=>$value){//取出所有键加上p
$keyArr[$k] = 'p'.$value; $keyArr[$k] = 'p'.$value;
} }
$val = array_combine($keyArr,$val);//用新键值组成数组 $val = array_combine($keyArr,$val);//用新键值组成数组
if(isset($tagArrReturn[$key])){ if(isset($tagArrReturn[$key])){
$tagArrReturn[$key] = array_merge_recursive($tagArrReturn[$key],$val); $tagArrReturn[$key] = array_merge_recursive($tagArrReturn[$key],$val);
}else{ }else{
$tagArrReturn[$key] = $val; $tagArrReturn[$key] = $val;
} }
} }
} }
//去掉键所加的p,并对数组进行排序 //去掉键所加的p,并对数组进行排序
foreach($tagArrReturn as $item=>$ival){ foreach($tagArrReturn as $item=>$ival){
$pkey = array_keys($ival); $pkey = array_keys($ival);
foreach ($pkey as $n=>$ivalue){ foreach ($pkey as $n=>$ivalue){
$pkey[$n] = str_replace('p','',$ivalue); $pkey[$n] = str_replace('p','',$ivalue);
} }
$ival = array_combine($pkey,$ival); $ival = array_combine($pkey,$ival);
krsort($ival,SORT_NUMERIC); krsort($ival,SORT_NUMERIC);
$tagArrReturn[$item] = $ival; $tagArrReturn[$item] = $ival;
} }
return $tagArrReturn; return $tagArrReturn;
} }
} }

File diff suppressed because it is too large Load Diff

View File

@@ -1,338 +1,338 @@
<?php <?php
namespace core\dzz; namespace core\dzz;
use DB; use DB;
class Tpsql extends Tpdb{ class Tpsql extends Tpdb{
/** /**
* 架构函数 读取数据库配置信息 * 架构函数 读取数据库配置信息
* @access public * @access public
* @param array $config 数据库配置数组 * @param array $config 数据库配置数组
*/ */
public function __construct($config=''){ public function __construct($config=''){
if ( !extension_loaded('mysql') ) { if ( !extension_loaded('mysql') ) {
echo lang('does_mysqli'); echo lang('does_mysqli');
exit; exit;
//E(L('_NOT_SUPPERT_').':mysql'); //E(L('_NOT_SUPPERT_').':mysql');
} }
if(!empty($config)) { if(!empty($config)) {
$this->config = $config; $this->config = $config;
if(empty($this->config['params'])) { if(empty($this->config['params'])) {
$this->config['params'] = ''; $this->config['params'] = '';
} }
} }
} }
/** /**
* 连接数据库方法 * 连接数据库方法
* @access public * @access public
* @throws ThinkExecption * @throws ThinkExecption
*/ */
public function connect($config='',$linkNum=1,$force=false) { public function connect($config='',$linkNum=1,$force=false) {
$this->linkID[$linkNum] =DB::linknum(); $this->linkID[$linkNum] =DB::linknum();
if ( !isset($this->linkID[$linkNum]) ) { if ( !isset($this->linkID[$linkNum]) ) {
if(empty($config)) $config = $this->config; if(empty($config)) $config = $this->config;
// 处理不带端口号的socket连接情况 // 处理不带端口号的socket连接情况
$host = $config['dbhost'].(isset($config['hostport'])?":{$config['hostport']}":''); $host = $config['dbhost'].(isset($config['hostport'])?":{$config['hostport']}":'');
// 是否长连接 // 是否长连接
$pconnect =$config['pconnect']; // !empty($config['params']['persist'])? $config['params']['persist']:$this->pconnect; $pconnect =$config['pconnect']; // !empty($config['params']['persist'])? $config['params']['persist']:$this->pconnect;
if($pconnect) { if($pconnect) {
$this->linkID[$linkNum] = mysql_pconnect( $host, $config['dbuser'], $config['dbpw'],131072); $this->linkID[$linkNum] = mysql_pconnect( $host, $config['dbuser'], $config['dbpw'],131072);
}else{ }else{
$this->linkID[$linkNum] = mysql_connect( $host, $config['dbuser'], $config['dbpw'],true,131072); $this->linkID[$linkNum] = mysql_connect( $host, $config['dbuser'], $config['dbpw'],true,131072);
} }
if ( !$this->linkID[$linkNum] || (!empty($config['dbname']) && !mysql_select_db($config['dbname'], $this->linkID[$linkNum])) ) { if ( !$this->linkID[$linkNum] || (!empty($config['dbname']) && !mysql_select_db($config['dbname'], $this->linkID[$linkNum])) ) {
echo lang('database_error');exit; echo lang('database_error');exit;
//E(mysql_error()); //E(mysql_error());
} }
$dbVersion = mysql_get_server_info($this->linkID[$linkNum]); $dbVersion = mysql_get_server_info($this->linkID[$linkNum]);
//使用UTF8存取数据库 //使用UTF8存取数据库
mysql_query("SET NAMES 'utf-8'", $this->linkID[$linkNum]); mysql_query("SET NAMES 'utf-8'", $this->linkID[$linkNum]);
//设置 sql_model //设置 sql_model
if($dbVersion >'5.0.1'){ if($dbVersion >'5.0.1'){
mysql_query("SET sql_mode=''",$this->linkID[$linkNum]); mysql_query("SET sql_mode=''",$this->linkID[$linkNum]);
} }
// 标记连接成功 // 标记连接成功
$this->connected = true; $this->connected = true;
// 注销数据库连接配置信息 // 注销数据库连接配置信息
//if(1 != C('DB_DEPLOY_TYPE')) unset($this->config); //if(1 != C('DB_DEPLOY_TYPE')) unset($this->config);
} }
//print_r( $this->linkID[$linkNum] );exit; //print_r( $this->linkID[$linkNum] );exit;
return $this->linkID[$linkNum]; return $this->linkID[$linkNum];
} }
/** /**
* 释放查询结果 * 释放查询结果
* @access public * @access public
*/ */
public function free() { public function free() {
mysql_free_result($this->queryID); mysql_free_result($this->queryID);
$this->queryID = null; $this->queryID = null;
} }
/** /**
* 执行查询 返回数据集 * 执行查询 返回数据集
* @access public * @access public
* @param string $str sql指令 * @param string $str sql指令
* @return mixed * @return mixed
*/ */
public function query($str) { public function query($str) {
if(0===stripos($str, 'call')){ // 存储过程查询支持 if(0===stripos($str, 'call')){ // 存储过程查询支持
$this->close(); $this->close();
$this->connected = false; $this->connected = false;
} }
$this->initConnect(false); $this->initConnect(false);
if ( !$this->_linkID ) return false; if ( !$this->_linkID ) return false;
$this->queryStr = $str; $this->queryStr = $str;
//释放前次的查询结果 //释放前次的查询结果
if ( $this->queryID ) { $this->free(); } if ( $this->queryID ) { $this->free(); }
//N('db_query',1); //N('db_query',1);
// 记录开始执行时间 // 记录开始执行时间
//G('queryStartTime'); //G('queryStartTime');
$this->queryID = mysql_query($str, $this->_linkID); $this->queryID = mysql_query($str, $this->_linkID);
$this->debug(); $this->debug();
if ( false === $this->queryID ) { if ( false === $this->queryID ) {
$this->error(); $this->error();
return false; return false;
} else { } else {
$this->numRows = mysql_num_rows($this->queryID); $this->numRows = mysql_num_rows($this->queryID);
return $this->getAll(); return $this->getAll();
} }
} }
/** /**
* 执行语句 * 执行语句
* @access public * @access public
* @param string $str sql指令 * @param string $str sql指令
* @return integer|false * @return integer|false
*/ */
public function execute($str) { public function execute($str) {
$this->initConnect(true); $this->initConnect(true);
if ( !$this->_linkID ) return false; if ( !$this->_linkID ) return false;
$this->queryStr = $str; $this->queryStr = $str;
//释放前次的查询结果 //释放前次的查询结果
if ( $this->queryID ) { $this->free(); } if ( $this->queryID ) { $this->free(); }
//N('db_write',1); //N('db_write',1);
// 记录开始执行时间 // 记录开始执行时间
//G('queryStartTime'); //G('queryStartTime');
$result = mysql_query($str, $this->_linkID) ; $result = mysql_query($str, $this->_linkID) ;
$this->debug(); $this->debug();
if ( false === $result) { if ( false === $result) {
$this->error(); $this->error();
return false; return false;
} else { } else {
$this->numRows = mysql_affected_rows($this->_linkID); $this->numRows = mysql_affected_rows($this->_linkID);
$this->lastInsID = mysql_insert_id($this->_linkID); $this->lastInsID = mysql_insert_id($this->_linkID);
return $this->numRows; return $this->numRows;
} }
} }
/** /**
* 启动事务 * 启动事务
* @access public * @access public
* @return void * @return void
*/ */
public function startTrans() { public function startTrans() {
$this->initConnect(true); $this->initConnect(true);
if ( !$this->_linkID ) return false; if ( !$this->_linkID ) return false;
//数据rollback 支持 //数据rollback 支持
if ($this->transTimes == 0) { if ($this->transTimes == 0) {
mysql_query('START TRANSACTION', $this->_linkID); mysql_query('START TRANSACTION', $this->_linkID);
} }
$this->transTimes++; $this->transTimes++;
return ; return ;
} }
/** /**
* 用于非自动提交状态下面的查询提交 * 用于非自动提交状态下面的查询提交
* @access public * @access public
* @return boolen * @return boolen
*/ */
public function commit() { public function commit() {
if ($this->transTimes > 0) { if ($this->transTimes > 0) {
$result = mysql_query('COMMIT', $this->_linkID); $result = mysql_query('COMMIT', $this->_linkID);
$this->transTimes = 0; $this->transTimes = 0;
if(!$result){ if(!$result){
$this->error(); $this->error();
return false; return false;
} }
} }
return true; return true;
} }
/** /**
* 事务回滚 * 事务回滚
* @access public * @access public
* @return boolen * @return boolen
*/ */
public function rollback() { public function rollback() {
if ($this->transTimes > 0) { if ($this->transTimes > 0) {
$result = mysql_query('ROLLBACK', $this->_linkID); $result = mysql_query('ROLLBACK', $this->_linkID);
$this->transTimes = 0; $this->transTimes = 0;
if(!$result){ if(!$result){
$this->error(); $this->error();
return false; return false;
} }
} }
return true; return true;
} }
/** /**
* 获得所有的查询数据 * 获得所有的查询数据
* @access private * @access private
* @return array * @return array
*/ */
private function getAll() { private function getAll() {
//返回数据集 //返回数据集
$result = array(); $result = array();
if($this->numRows >0) { if($this->numRows >0) {
while($row = mysql_fetch_assoc($this->queryID)){ while($row = mysql_fetch_assoc($this->queryID)){
$result[] = $row; $result[] = $row;
} }
mysql_data_seek($this->queryID,0); mysql_data_seek($this->queryID,0);
} }
return $result; return $result;
} }
/** /**
* 取得数据表的字段信息 * 取得数据表的字段信息
* @access public * @access public
* @return array * @return array
*/ */
public function getFields($tableName) { public function getFields($tableName) {
$result = $this->query('SHOW COLUMNS FROM '.$this->parseKey($tableName)); $result = $this->query('SHOW COLUMNS FROM '.$this->parseKey($tableName));
$info = array(); $info = array();
if($result) { if($result) {
foreach ($result as $key => $val) { foreach ($result as $key => $val) {
$info[$val['Field']] = array( $info[$val['Field']] = array(
'name' => $val['Field'], 'name' => $val['Field'],
'type' => $val['Type'], 'type' => $val['Type'],
'notnull' => (bool) (strtoupper($val['Null']) === 'NO'), // not null is empty, null is yes 'notnull' => (bool) (strtoupper($val['Null']) === 'NO'), // not null is empty, null is yes
'default' => $val['Default'], 'default' => $val['Default'],
'primary' => (strtolower($val['Key']) == 'pri'), 'primary' => (strtolower($val['Key']) == 'pri'),
'autoinc' => (strtolower($val['Extra']) == 'auto_increment'), 'autoinc' => (strtolower($val['Extra']) == 'auto_increment'),
); );
} }
} }
return $info; return $info;
} }
/** /**
* 取得数据库的表信息 * 取得数据库的表信息
* @access public * @access public
* @return array * @return array
*/ */
public function getTables($dbName='') { public function getTables($dbName='') {
if(!empty($dbName)) { if(!empty($dbName)) {
$sql = 'SHOW TABLES FROM '.$dbName; $sql = 'SHOW TABLES FROM '.$dbName;
}else{ }else{
$sql = 'SHOW TABLES '; $sql = 'SHOW TABLES ';
} }
$result = $this->query($sql); $result = $this->query($sql);
$info = array(); $info = array();
foreach ($result as $key => $val) { foreach ($result as $key => $val) {
$info[$key] = current($val); $info[$key] = current($val);
} }
return $info; return $info;
} }
/** /**
* 替换记录 * 替换记录
* @access public * @access public
* @param mixed $data 数据 * @param mixed $data 数据
* @param array $options 参数表达式 * @param array $options 参数表达式
* @return false | integer * @return false | integer
*/ */
public function replace($data,$options=array()) { public function replace($data,$options=array()) {
foreach ($data as $key=>$val){ foreach ($data as $key=>$val){
$value = $this->parseValue($val); $value = $this->parseValue($val);
if(is_scalar($value)) { // 过滤非标量数据 if(is_scalar($value)) { // 过滤非标量数据
$values[] = $value; $values[] = $value;
$fields[] = $this->parseKey($key); $fields[] = $this->parseKey($key);
} }
} }
$sql = 'REPLACE INTO '.$this->parseTable($options['table']).' ('.implode(',', $fields).') VALUES ('.implode(',', $values).')'; $sql = 'REPLACE INTO '.$this->parseTable($options['table']).' ('.implode(',', $fields).') VALUES ('.implode(',', $values).')';
return $this->execute($sql); return $this->execute($sql);
} }
/** /**
* 插入记录 * 插入记录
* @access public * @access public
* @param mixed $datas 数据 * @param mixed $datas 数据
* @param array $options 参数表达式 * @param array $options 参数表达式
* @param boolean $replace 是否replace * @param boolean $replace 是否replace
* @return false | integer * @return false | integer
*/ */
public function insertAll($datas,$options=array(),$replace=false) { public function insertAll($datas,$options=array(),$replace=false) {
if(!is_array($datas[0])) return false; if(!is_array($datas[0])) return false;
$fields = array_keys($datas[0]); $fields = array_keys($datas[0]);
array_walk($fields, array($this, 'parseKey')); array_walk($fields, array($this, 'parseKey'));
$values = array(); $values = array();
foreach ($datas as $data){ foreach ($datas as $data){
$value = array(); $value = array();
foreach ($data as $key=>$val){ foreach ($data as $key=>$val){
$val = $this->parseValue($val); $val = $this->parseValue($val);
if(is_scalar($val)) { // 过滤非标量数据 if(is_scalar($val)) { // 过滤非标量数据
$value[] = $val; $value[] = $val;
} }
} }
$values[] = '('.implode(',', $value).')'; $values[] = '('.implode(',', $value).')';
} }
$sql = ($replace?'REPLACE':'INSERT').' INTO '.$this->parseTable($options['table']).' ('.implode(',', $fields).') VALUES '.implode(',',$values); $sql = ($replace?'REPLACE':'INSERT').' INTO '.$this->parseTable($options['table']).' ('.implode(',', $fields).') VALUES '.implode(',',$values);
return $this->execute($sql); return $this->execute($sql);
} }
/** /**
* 关闭数据库 * 关闭数据库
* @access public * @access public
* @return void * @return void
*/ */
public function close() { public function close() {
if ($this->_linkID){ if ($this->_linkID){
mysql_close($this->_linkID); mysql_close($this->_linkID);
} }
$this->_linkID = null; $this->_linkID = null;
} }
/** /**
* 数据库错误信息 * 数据库错误信息
* 并显示当前的SQL语句 * 并显示当前的SQL语句
* @access public * @access public
* @return string * @return string
*/ */
public function error() { public function error() {
$this->error = mysql_errno().':'.mysql_error($this->_linkID); $this->error = mysql_errno().':'.mysql_error($this->_linkID);
if('' != $this->queryStr){ if('' != $this->queryStr){
$this->error .= "\n [ SQL语句 ] : ".$this->queryStr; $this->error .= "\n [ SQL语句 ] : ".$this->queryStr;
} }
//trace($this->error,'','ERR'); //trace($this->error,'','ERR');
return $this->error; return $this->error;
} }
/** /**
* SQL指令安全过滤 * SQL指令安全过滤
* @access public * @access public
* @param string $str SQL字符串 * @param string $str SQL字符串
* @return string * @return string
*/ */
public function escapeString($str) { public function escapeString($str) {
if($this->_linkID) { if($this->_linkID) {
return mysql_real_escape_string($str,$this->_linkID); return mysql_real_escape_string($str,$this->_linkID);
}else{ }else{
return mysql_escape_string($str); return mysql_escape_string($str);
} }
} }
/** /**
* 字段和表名处理添加` * 字段和表名处理添加`
* @access protected * @access protected
* @param string $key * @param string $key
* @return string * @return string
*/ */
protected function parseKey(&$key) { protected function parseKey(&$key) {
$key = trim($key); $key = trim($key);
if(!preg_match('/[,\'\"\*\(\)`.\s]/',$key)) { if(!preg_match('/[,\'\"\*\(\)`.\s]/',$key)) {
$key = '`'.$key.'`'; $key = '`'.$key.'`';
} }
return $key; return $key;
} }
} }

View File

@@ -1,333 +1,333 @@
<?php <?php
namespace core\dzz; namespace core\dzz;
use DB; use DB;
class Tpsqli extends Tpdb{ class Tpsqli extends Tpdb{
/** /**
* 架构函数 读取数据库配置信息 * 架构函数 读取数据库配置信息
* @access public * @access public
* @param array $config 数据库配置数组 * @param array $config 数据库配置数组
*/ */
public function __construct($config=''){ public function __construct($config=''){
if ( !extension_loaded('mysqli') ) { if ( !extension_loaded('mysqli') ) {
echo lang('does_mysqli'); echo lang('does_mysqli');
exit; exit;
} }
if(!empty($config)) { if(!empty($config)) {
$this->config = $config; $this->config = $config;
if(empty($this->config['params'])) { if(empty($this->config['params'])) {
$this->config['params'] = ''; $this->config['params'] = '';
} }
} }
} }
/** /**
* 连接数据库方法 * 连接数据库方法
* @access public * @access public
* @throws ThinkExecption * @throws ThinkExecption
*/ */
public function connect($config='',$linkNum=0) { public function connect($config='',$linkNum=0) {
$this->linkID[$linkNum] =DB::linknum(); $this->linkID[$linkNum] =DB::linknum();
if ( !isset($this->linkID[$linkNum]) ) { if ( !isset($this->linkID[$linkNum]) ) {
if(empty($config)) $config = $this->config; if(empty($config)) $config = $this->config;
$this->linkID[$linkNum] = new \mysqli($config['hostname'],$config['username'],$config['password'],$config['database'],$config['hostport']?intval($config['hostport']):3306); $this->linkID[$linkNum] = new \mysqli($config['hostname'],$config['username'],$config['password'],$config['database'],$config['hostport']?intval($config['hostport']):3306);
if (mysqli_connect_errno()){ if (mysqli_connect_errno()){
echo lang('database_error');exit;//E(mysqli_connect_error()); echo lang('database_error');exit;//E(mysqli_connect_error());
} }
$dbVersion = $this->linkID[$linkNum]->server_version; $dbVersion = $this->linkID[$linkNum]->server_version;
// 设置数据库编码 // 设置数据库编码
$this->linkID[$linkNum]->query("SET NAMES '".C('DB_CHARSET')."'"); $this->linkID[$linkNum]->query("SET NAMES '".C('DB_CHARSET')."'");
//设置 sql_model //设置 sql_model
if($dbVersion >'5.0.1'){ if($dbVersion >'5.0.1'){
$this->linkID[$linkNum]->query("SET sql_mode=''"); $this->linkID[$linkNum]->query("SET sql_mode=''");
} }
// 标记连接成功 // 标记连接成功
$this->connected = true; $this->connected = true;
//注销数据库安全信息 //注销数据库安全信息
if(1 != C('DB_DEPLOY_TYPE')) unset($this->config); if(1 != C('DB_DEPLOY_TYPE')) unset($this->config);
} }
return $this->linkID[$linkNum]; return $this->linkID[$linkNum];
} }
/** /**
* 释放查询结果 * 释放查询结果
* @access public * @access public
*/ */
public function free() { public function free() {
$this->queryID->free_result(); $this->queryID->free_result();
$this->queryID = null; $this->queryID = null;
} }
/** /**
* 执行查询 返回数据集 * 执行查询 返回数据集
* @access public * @access public
* @param string $str sql指令 * @param string $str sql指令
* @return mixed * @return mixed
*/ */
public function query($str) { public function query($str) {
$this->initConnect(false); $this->initConnect(false);
if ( !$this->_linkID ) return false; if ( !$this->_linkID ) return false;
$this->queryStr = $str; $this->queryStr = $str;
//释放前次的查询结果 //释放前次的查询结果
if ( $this->queryID ) $this->free(); if ( $this->queryID ) $this->free();
//N('db_query',1); //N('db_query',1);
// 记录开始执行时间 // 记录开始执行时间
//G('queryStartTime'); //G('queryStartTime');
$this->queryID = $this->_linkID->query($str); $this->queryID = $this->_linkID->query($str);
// 对存储过程改进 // 对存储过程改进
if( $this->_linkID->more_results() ){ if( $this->_linkID->more_results() ){
while (($res = $this->_linkID->next_result()) != NULL) { while (($res = $this->_linkID->next_result()) != NULL) {
$res->free_result(); $res->free_result();
} }
} }
$this->debug(); $this->debug();
if ( false === $this->queryID ) { if ( false === $this->queryID ) {
$this->error(); $this->error();
return false; return false;
} else { } else {
$this->numRows = $this->queryID->num_rows; $this->numRows = $this->queryID->num_rows;
$this->numCols = $this->queryID->field_count; $this->numCols = $this->queryID->field_count;
return $this->getAll(); return $this->getAll();
} }
} }
/** /**
* 执行语句 * 执行语句
* @access public * @access public
* @param string $str sql指令 * @param string $str sql指令
* @return integer * @return integer
*/ */
public function execute($str) { public function execute($str) {
$this->initConnect(true); $this->initConnect(true);
if ( !$this->_linkID ) return false; if ( !$this->_linkID ) return false;
$this->queryStr = $str; $this->queryStr = $str;
//释放前次的查询结果 //释放前次的查询结果
if ( $this->queryID ) $this->free(); if ( $this->queryID ) $this->free();
//N('db_write',1); //N('db_write',1);
// 记录开始执行时间 // 记录开始执行时间
//G('queryStartTime'); //G('queryStartTime');
$result = $this->_linkID->query($str); $result = $this->_linkID->query($str);
$this->debug(); $this->debug();
if ( false === $result ) { if ( false === $result ) {
$this->error(); $this->error();
return false; return false;
} else { } else {
$this->numRows = $this->_linkID->affected_rows; $this->numRows = $this->_linkID->affected_rows;
$this->lastInsID = $this->_linkID->insert_id; $this->lastInsID = $this->_linkID->insert_id;
return $this->numRows; return $this->numRows;
} }
} }
/** /**
* 启动事务 * 启动事务
* @access public * @access public
* @return void * @return void
*/ */
public function startTrans() { public function startTrans() {
$this->initConnect(true); $this->initConnect(true);
//数据rollback 支持 //数据rollback 支持
if ($this->transTimes == 0) { if ($this->transTimes == 0) {
$this->_linkID->autocommit(false); $this->_linkID->autocommit(false);
} }
$this->transTimes++; $this->transTimes++;
return ; return ;
} }
/** /**
* 用于非自动提交状态下面的查询提交 * 用于非自动提交状态下面的查询提交
* @access public * @access public
* @return boolen * @return boolen
*/ */
public function commit() { public function commit() {
if ($this->transTimes > 0) { if ($this->transTimes > 0) {
$result = $this->_linkID->commit(); $result = $this->_linkID->commit();
$this->_linkID->autocommit( true); $this->_linkID->autocommit( true);
$this->transTimes = 0; $this->transTimes = 0;
if(!$result){ if(!$result){
$this->error(); $this->error();
return false; return false;
} }
} }
return true; return true;
} }
/** /**
* 事务回滚 * 事务回滚
* @access public * @access public
* @return boolen * @return boolen
*/ */
public function rollback() { public function rollback() {
if ($this->transTimes > 0) { if ($this->transTimes > 0) {
$result = $this->_linkID->rollback(); $result = $this->_linkID->rollback();
$this->_linkID->autocommit( true); $this->_linkID->autocommit( true);
$this->transTimes = 0; $this->transTimes = 0;
if(!$result){ if(!$result){
$this->error(); $this->error();
return false; return false;
} }
} }
return true; return true;
} }
/** /**
* 获得所有的查询数据 * 获得所有的查询数据
* @access private * @access private
* @param string $sql sql语句 * @param string $sql sql语句
* @return array * @return array
*/ */
private function getAll() { private function getAll() {
//返回数据集 //返回数据集
$result = array(); $result = array();
if($this->numRows>0) { if($this->numRows>0) {
//返回数据集 //返回数据集
for($i=0;$i<$this->numRows ;$i++ ){ for($i=0;$i<$this->numRows ;$i++ ){
$result[$i] = $this->queryID->fetch_assoc(); $result[$i] = $this->queryID->fetch_assoc();
} }
$this->queryID->data_seek(0); $this->queryID->data_seek(0);
} }
return $result; return $result;
} }
/** /**
* 取得数据表的字段信息 * 取得数据表的字段信息
* @access public * @access public
* @return array * @return array
*/ */
public function getFields($tableName) { public function getFields($tableName) {
$result = $this->query('SHOW COLUMNS FROM '.$this->parseKey($tableName)); $result = $this->query('SHOW COLUMNS FROM '.$this->parseKey($tableName));
$info = array(); $info = array();
if($result) { if($result) {
foreach ($result as $key => $val) { foreach ($result as $key => $val) {
$info[$val['Field']] = array( $info[$val['Field']] = array(
'name' => $val['Field'], 'name' => $val['Field'],
'type' => $val['Type'], 'type' => $val['Type'],
'notnull' => (bool) ($val['Null'] === ''), // not null is empty, null is yes 'notnull' => (bool) ($val['Null'] === ''), // not null is empty, null is yes
'default' => $val['Default'], 'default' => $val['Default'],
'primary' => (strtolower($val['Key']) == 'pri'), 'primary' => (strtolower($val['Key']) == 'pri'),
'autoinc' => (strtolower($val['Extra']) == 'auto_increment'), 'autoinc' => (strtolower($val['Extra']) == 'auto_increment'),
); );
} }
} }
return $info; return $info;
} }
/** /**
* 取得数据表的字段信息 * 取得数据表的字段信息
* @access public * @access public
* @return array * @return array
*/ */
public function getTables($dbName='') { public function getTables($dbName='') {
$sql = !empty($dbName)?'SHOW TABLES FROM '.$dbName:'SHOW TABLES '; $sql = !empty($dbName)?'SHOW TABLES FROM '.$dbName:'SHOW TABLES ';
$result = $this->query($sql); $result = $this->query($sql);
$info = array(); $info = array();
if($result) { if($result) {
foreach ($result as $key => $val) { foreach ($result as $key => $val) {
$info[$key] = current($val); $info[$key] = current($val);
} }
} }
return $info; return $info;
} }
/** /**
* 替换记录 * 替换记录
* @access public * @access public
* @param mixed $data 数据 * @param mixed $data 数据
* @param array $options 参数表达式 * @param array $options 参数表达式
* @return false | integer * @return false | integer
*/ */
public function replace($data,$options=array()) { public function replace($data,$options=array()) {
foreach ($data as $key=>$val){ foreach ($data as $key=>$val){
$value = $this->parseValue($val); $value = $this->parseValue($val);
if(is_scalar($value)) { // 过滤非标量数据 if(is_scalar($value)) { // 过滤非标量数据
$values[] = $value; $values[] = $value;
$fields[] = $this->parseKey($key); $fields[] = $this->parseKey($key);
} }
} }
$sql = 'REPLACE INTO '.$this->parseTable($options['table']).' ('.implode(',', $fields).') VALUES ('.implode(',', $values).')'; $sql = 'REPLACE INTO '.$this->parseTable($options['table']).' ('.implode(',', $fields).') VALUES ('.implode(',', $values).')';
return $this->execute($sql); return $this->execute($sql);
} }
/** /**
* 插入记录 * 插入记录
* @access public * @access public
* @param mixed $datas 数据 * @param mixed $datas 数据
* @param array $options 参数表达式 * @param array $options 参数表达式
* @param boolean $replace 是否replace * @param boolean $replace 是否replace
* @return false | integer * @return false | integer
*/ */
public function insertAll($datas,$options=array(),$replace=false) { public function insertAll($datas,$options=array(),$replace=false) {
if(!is_array($datas[0])) return false; if(!is_array($datas[0])) return false;
$fields = array_keys($datas[0]); $fields = array_keys($datas[0]);
array_walk($fields, array($this, 'parseKey')); array_walk($fields, array($this, 'parseKey'));
$values = array(); $values = array();
foreach ($datas as $data){ foreach ($datas as $data){
$value = array(); $value = array();
foreach ($data as $key=>$val){ foreach ($data as $key=>$val){
$val = $this->parseValue($val); $val = $this->parseValue($val);
if(is_scalar($val)) { // 过滤非标量数据 if(is_scalar($val)) { // 过滤非标量数据
$value[] = $val; $value[] = $val;
} }
} }
$values[] = '('.implode(',', $value).')'; $values[] = '('.implode(',', $value).')';
} }
$sql = ($replace?'REPLACE':'INSERT').' INTO '.$this->parseTable($options['table']).' ('.implode(',', $fields).') VALUES '.implode(',',$values); $sql = ($replace?'REPLACE':'INSERT').' INTO '.$this->parseTable($options['table']).' ('.implode(',', $fields).') VALUES '.implode(',',$values);
return $this->execute($sql); return $this->execute($sql);
} }
/** /**
* 关闭数据库 * 关闭数据库
* @access public * @access public
* @return volid * @return volid
*/ */
public function close() { public function close() {
if ($this->_linkID){ if ($this->_linkID){
$this->_linkID->close(); $this->_linkID->close();
} }
$this->_linkID = null; $this->_linkID = null;
} }
/** /**
* 数据库错误信息 * 数据库错误信息
* 并显示当前的SQL语句 * 并显示当前的SQL语句
* @static * @static
* @access public * @access public
* @return string * @return string
*/ */
public function error() { public function error() {
$this->error = $this->_linkID->errno.':'.$this->_linkID->error; $this->error = $this->_linkID->errno.':'.$this->_linkID->error;
if('' != $this->queryStr){ if('' != $this->queryStr){
$this->error .= "\n [ SQL语句 ] : ".$this->queryStr; $this->error .= "\n [ SQL语句 ] : ".$this->queryStr;
} }
//trace($this->error,'','ERR'); //trace($this->error,'','ERR');
return $this->error; return $this->error;
} }
/** /**
* SQL指令安全过滤 * SQL指令安全过滤
* @static * @static
* @access public * @access public
* @param string $str SQL指令 * @param string $str SQL指令
* @return string * @return string
*/ */
public function escapeString($str) { public function escapeString($str) {
if($this->_linkID) { if($this->_linkID) {
return $this->_linkID->real_escape_string($str); return $this->_linkID->real_escape_string($str);
}else{ }else{
return addslashes($str); return addslashes($str);
} }
} }
/** /**
* 字段和表名处理添加` * 字段和表名处理添加`
* @access protected * @access protected
* @param string $key * @param string $key
* @return string * @return string
*/ */
protected function parseKey(&$key) { protected function parseKey(&$key) {
$key = trim($key); $key = trim($key);
if(!preg_match('/[,\'\"\*\(\)`.\s]/',$key)) { if(!preg_match('/[,\'\"\*\(\)`.\s]/',$key)) {
$key = '`'.$key.'`'; $key = '`'.$key.'`';
} }
return $key; return $key;
} }
} }

View File

@@ -1,51 +1,51 @@
<?php <?php
namespace core\dzz; namespace core\dzz;
use \core as C; use \core as C;
class Apprun{ class Apprun{
public function run(){ public function run(){
global $_config; global $_config;
$this->mod_prem_check($_config['MOD_VIEW_PERM']); $this->mod_prem_check($_config['MOD_VIEW_PERM']);
} }
private function mod_prem_check($chkarr = array()){ private function mod_prem_check($chkarr = array()){
global $_G; global $_G;
if(!empty($chkarr)){ if(!empty($chkarr)){
if(!defined('CURMODULE')) return false; if(!defined('CURMODULE')) return false;
foreach ($chkarr as $v){ foreach ($chkarr as $v){
$modarr = explode(',',$v['MOD_NAME']); $modarr = explode(',',$v['MOD_NAME']);
if(in_array(CURMODULE,$modarr)){ if(in_array(CURMODULE,$modarr)){
$this->perm_chk($v['PERM']); $this->perm_chk($v['PERM']);
} }
} }
} }
} }
private function perm_chk($perm = ''){ private function perm_chk($perm = ''){
global $_G; global $_G;
switch ($perm){ switch ($perm){
case 0: case 0:
break; break;
case 1:if(!$_G['uid']) exit('Access Denied'); case 1:if(!$_G['uid']) exit('Access Denied');
break; break;
case 2:if($_G['adminid']!=1) exit('Access Denied'); case 2:if($_G['adminid']!=1) exit('Access Denied');
break; break;
case 3: if(!C::t('user')->checkfounder($_G['member'])) exit('Access Denied'); case 3: if(!C::t('user')->checkfounder($_G['member'])) exit('Access Denied');
break; break;
default: exit('arg error'); default: exit('arg error');
} }
} }
} }

Some files were not shown because too many files have changed in this diff Show More