version 4.22 release

pull/219/head 4.22
warlee 2017-09-29 18:22:02 +08:00
parent ce39b4197f
commit 16291565bd
117 changed files with 830 additions and 1329 deletions

View File

@ -1,3 +1,24 @@
### ver4.22 `2017/9/20`
-----
#### update:
- 压缩文件预览tab栏中文问题插件filePath文件名优化记录
- 上传兼容性优化;支持自定义多线程上传,支持自定义是否二进制上传
- 其他优化: iframe 点击事件冒泡到上级;编辑器主题黑色样式优化;树目录自动记录以及目录展开状态优化;文件大小逗号分隔;
- 图片缩略图缓存问题优化
- 图片exif插件图片预览时自动修正方向
- ie8: 样式调整优化js报错兼容优化
- 文件夹双击事件优化:系统双击鼠标位置不懂情况下不触发双击事件问题
- 文件保存插件挂载点
#### fix bug
- 桌面图片缩略图加载慢问题
- 解压缩含中文路径优化
- 移动端
- 点击不了问题;右键菜单二级菜单无法点击问题
- 移动端字体问题
### ver4.21 `2017/9/11`
-----
#### update:

View File

@ -57,8 +57,7 @@ class SSO{
static public function sessionCheck($key,$value='success'){
$session = self::init();
if( isset($session[$key]) &&
$session[$key] == $value){
if( isset($session[$key]) && $session[$key] == $value){
return true;
}
return false;
@ -79,6 +78,7 @@ class SSO{
':'.$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
}
if(!self::sessionCheck($appKey)){
session_destroy();
header('Location: '.$authUrl.'&link='.rawurlencode($appUrl));
exit;
}

View File

@ -9,7 +9,6 @@
class api extends Controller{
function __construct(){
parent::__construct();
$this->tpl = TEMPLATE.'api/';
}
/**

View File

@ -16,7 +16,7 @@ class app extends Controller{
* 用户首页展示
*/
public function index() {
$this->display(TEMPLATE.'app/index.html');
$this->display('index.html');
}
public function initApp(){

View File

@ -9,7 +9,6 @@
class desktop extends Controller{
function __construct() {
parent::__construct();
$this->tpl = TEMPLATE.'desktop/';
}
public function index() {
$wap = is_wap() && (!isset($_COOKIE['forceWap']) || $_COOKIE['forceWap'] == '1');

View File

@ -9,7 +9,6 @@
class editor extends Controller{
function __construct() {
parent::__construct();
$this->tpl = TEMPLATE . 'editor/';
}
// 多文件编辑器
@ -71,7 +70,7 @@ class editor extends Controller{
if (!path_readable($filepath)){
show_json(LNG('no_permission_read_all'),false);
}
if (filesize($filepath) >= 1024*1024*20){
if (filesize($filepath) >= 1024*1024*40){
show_json(LNG('edit_too_big'),false);
}
}

View File

@ -11,7 +11,6 @@ class explorer extends Controller{
public $user;
public function __construct(){
parent::__construct();
$this->tpl = TEMPLATE."explorer/";
$this->user = $_SESSION['kodUser'];
if (isset($this->in['path'])) {
//游客访问别人zip解压到**目录;入口不检测权限
@ -626,6 +625,7 @@ class explorer extends Controller{
$error++;
continue;
}
//show_json($pathThis,false,file_exists($pathThis));
// 群组文件删除,移动到个人回收站。
// $GLOBALS['kodPathType'] == KOD_GROUP_SHARE ||
@ -1015,10 +1015,8 @@ class explorer extends Controller{
if (!is_dir(DATA_THUMB)){
mk_dir(DATA_THUMB);
}
$image = $this->path;
$imageMd5 = @md5_file($image);//文件md5
if (strlen($imageMd5)<5) {
$imageMd5 = md5($image);
}
@ -1108,15 +1106,15 @@ class explorer extends Controller{
//通用缩略图
public function fileThumb(){
Hook::trigger("explorer.fileThumb",$this->path);
Hook::trigger("explorer.fileThumbStart",$this->path);
}
//通用预览
public function fileView(){
Hook::trigger("explorer.fileView",$this->path);
Hook::trigger("explorer.fileViewStart",$this->path);
}
//通用保存
public function fileSave(){
Hook::trigger("explorer.fileSave",$this->path);
Hook::trigger("explorer.fileSaveStart",$this->path);
}
//代理输出
public function fileProxy(){
@ -1372,7 +1370,7 @@ class explorer extends Controller{
$list['info']['role'] = "owner";
}
if($GLOBALS['isRoot']){
$list['info']['adminRealPath'] = USER_PATH.$user['path'].'/home/';
$list['info']['adminRealPath'] = get_path_father($GLOBALS['kodPathPre']);
}
}
//自己管理的目录
@ -1397,7 +1395,7 @@ class explorer extends Controller{
if($GLOBALS['isRoot']){
$list['groupSpaceUse'] = $group['config'];//自己
$list['info']['role'] = 'owner';
$list['info']['adminRealPath'] = GROUP_PATH.$group['path'].'/home/';
$list['info']['adminRealPath'] = $GLOBALS['kodPathPre'];
}
}
}

View File

@ -12,7 +12,6 @@
class pluginApp extends Controller{
function __construct() {
parent::__construct();
$this->tpl = TEMPLATE.'pluginApp/';
}
//?pluginApp/to/epubReader/index&a=1
@ -20,17 +19,22 @@ class pluginApp extends Controller{
public function to() {
$route = $this->in['URLremote'];
if(count($route) >= 3){
$app = $route[2];
$action = $route[3];
if(count($route) == 3){
$route[3] = 'index';
$action = 'index';
}
$model = $this->loadModel('Plugin');
if(!$model->checkAuth($route[2])){
show_tips("Plugin not open,or you have't permission[".$route[2]."]");
if(!$model->checkAuth($app)){
show_tips("Plugin not open,or you have't permission[".$app."]");
}
if(!$this->checkAccessPlugin()){
show_tips("Sorry! You have't permission[".$route[2]."]");
$appConfig = $model->getConfig($app);
if(!$appConfig['pluginAuthOpen'] && !$this->checkAccessPlugin()){
show_tips("Sorry! You have't permission[".$app."]");
}
Hook::apply($route[2].'Plugin.'.$route[3]);
Hook::apply($app.'Plugin.'.$action);
}
}

View File

@ -16,7 +16,6 @@ class setting extends Controller{
* 用户首页展示
*/
public function index() {
$this->tpl = TEMPLATE.'setting/';
$this->display('index.html');
}

View File

@ -13,7 +13,6 @@ class share extends Controller{
private $path;
function __construct(){
parent::__construct();
$this->tpl = TEMPLATE.'share/';
$auth = systemRole::getInfo(1);//经过role检测
$arrNotCheck = array('commonJs');
@ -222,10 +221,13 @@ class share extends Controller{
'versionDesc' => $versionDesc,
'kodID' => md5(BASIC_PATH.$this->config['settingSystem']['systemPassword']),
'uploadMax' => file_upload_size(),
'jsonData' => "",
'sharePage' => 'share',
'settings' => array(
'updloadChunkSize' => file_upload_size(),
'updloadThreads' => $this->config['settings']['updloadThreads'],
'updloadBindary' => $this->config['settings']['updloadBindary'],
'paramRewrite' => $this->config['settings']['paramRewrite'],
'pluginServer' => $this->config['settings']['pluginServer'],
//'appType' => $this->config['settings']['appType']

View File

@ -16,7 +16,6 @@ class user extends Controller{
//php5.4 bug;需要重新读取一次
@session_start();
@session_write_close();
$this->tpl = TEMPLATE . 'user/';
if(!isset($_SESSION)){//避免session不可写导致循环跳转
$this->login(DATA_PATH."<br/>".LNG('path_can_not_write_data') );
}else{
@ -249,12 +248,14 @@ class user extends Controller{
'myhome' => MYHOME,
'myDesktop' => MYHOME.DESKTOP_FOLDER.'/',
'uploadMax' => file_upload_size(),
'settings' => array(
'paramRewrite' => $this->config['settings']['paramRewrite'],
'pluginServer' => $this->config['settings']['pluginServer'],
'appType' => $this->config['settings']['appType']
'updloadChunkSize' => file_upload_size(),
'updloadThreads' => $this->config['settings']['updloadThreads'],
'updloadBindary' => $this->config['settings']['updloadBindary'],
'paramRewrite' => $this->config['settings']['paramRewrite'],
'pluginServer' => $this->config['settings']['pluginServer'],
'appType' => $this->config['settings']['appType']
),
'phpVersion' => PHP_VERSION,
'version' => KOD_VERSION,
@ -499,6 +500,7 @@ class user extends Controller{
$auth['explorer.pathCopyDrag'] = $auth['explorer.pathCuteDrag'];
$auth['explorer.officeSave'] = $auth['editor.fileSave'];
$auth['explorer.fileSave'] = $auth['editor.fileSave'];
$auth['explorer.imageRotate'] = $auth['editor.fileSave'];
$auth['explorer.fileDownloadRemove']= $auth['explorer.fileDownload'];
$auth['explorer.zipDownload'] = $auth['explorer.fileDownload'];

File diff suppressed because one or more lines are too long

View File

@ -11,7 +11,6 @@
*/
abstract class Controller {
public $in;
public $db;
public $config; // 全局配置
public $tpl; // 模板目录
public $values; // 模板变量
@ -20,13 +19,12 @@ abstract class Controller {
* 构造函数
*/
function __construct(){
global $in,$config,$db;
$this -> db = $db;
$this -> config = &$config;
$this -> in = &$in;
$this -> values['config'] = &$config;
$this -> values['in'] = &$in;
global $in,$config;
$this ->config = &$config;
$this ->in = &$in;
$this ->values['config'] = &$config;
$this ->values['in'] = &$in;
$this ->tpl = TEMPLATE.get_class($this).'/';
}
/**

View File

@ -12,6 +12,8 @@ function myAutoloader($name) {
CLASS_DIR.$name.'.class.php',
CORER_DIR.$name.'.class.php',
SDK_DIR.$name.'.class.php',
CORER_DIR.'/Driver/Cache/'.$name.'.class.php',
CORER_DIR.'/Driver/DB/'.$name.'.class.php',
MODEL_DIR.$name.'.class.php',
CONTROLLER_DIR.$name.'.class.php',
@ -35,7 +37,6 @@ if (version_compare(PHP_VERSION, '5.3', '<')) {
}
/**
* 生产model对象
*/
@ -148,18 +149,6 @@ function ignore_timeout(){
@ini_set('memory_limit', '2028M');//2G;
}
/**
* 计算时间差
*
* @param char $pretime
* @return char
*/
function spend_time(&$pretime){
$now = microtime(1);
$spend = round($now - $pretime, 5);
$pretime = $now;
return $spend;
}
function check_code($code){
ob_clean();
@ -186,15 +175,7 @@ function check_code($code){
imagedestroy($im);//销毁图片
}
/**
* 返回当前浮点式的时间,单位秒;主要用在调试程序程序时间时用
*
* @return float
*/
function microtime_float(){
list($usec, $sec) = explode(' ', microtime());
return ((float)$usec + (float)$sec);
}
/**
* 计算N次方根
* @param $num
@ -390,7 +371,9 @@ function show_tips($message,$url= '', $time = 3,$title = ''){
}
if(is_array($message) || is_object($message)){
$message = "<pre>".json_encode_force($message).'</pre>';
$message = json_encode_force($message);
$message = nl2br(htmlspecialchars($message));
$message = "<pre>".$message.'</pre>';
}else{
$message = filter_html(nl2br($message));
}
@ -596,6 +579,11 @@ function hex2str($hex){
return $string;
}
if(!function_exists('json_encode')){
function json_encode($data){
__json_encode($data);
}
}
function __json_encode( $data ) {
if( is_array($data) || is_object($data) ) {
$islist = is_array($data) && ( empty($data) || array_keys($data) === range(0,count($data)-1) );
@ -653,38 +641,6 @@ function __json_encode( $data ) {
return $json;
}
/**
* 简单模版转换,用于根据配置获取列表:
* 参数cute1:第一次切割的字符串cute2第二次切割的字符串,
* arraylist为待处理的字符串$current 为标记当前项,$current_str为当项标记的替换。
* $tpl为处理后填充到静态模版({0}代表切割后左值,{1}代表切割后右值,{this}代表当前项填充值)
* 例子:
* $arr="default=淡蓝(默认)=5|mac=mac海洋=6|mac1=mac1海洋=7";
* $tpl="<li class='list {this}' theme='{0}'>{1}_{2}</li>\n";
* echo getTplList('|','=',$arr,$tpl,'mac'),'<br/>';
*/
function getTplList($cute1, $cute2, $arraylist, $tpl,$current,$current_str=''){
$list = explode($cute1, $arraylist);
if ($current_str == '') $current_str ="this";
$html = '';
foreach ($list as $value) {
$info = explode($cute2, $value);
$arr_replace = array();
foreach ($info as $key => $value) {
$arr_replace[$key]='{'.$key .'}';
}
if ($info[0] == $current) {
$temp = str_replace($arr_replace, $info, $tpl);
$temp = str_replace('{this}', $current_str, $temp);
} else {
$temp = str_replace($arr_replace, $info, $tpl);
$temp = str_replace('{this}', '', $temp);
}
$html .= $temp;
}
return $html;
}
/**
* 去掉HTML代码中的HTML标签返回纯文本
* @param string $document 待处理的字符串
@ -821,36 +777,6 @@ function msubstr($str, $start = 0, $length, $charset = "utf-8", $suffix = true){
return $slice;
}
function web2wap(&$content){
$search = array ("/<img[^>]+src=\"([^\">]+)\"[^>]+>/siU",
"/<a[^>]+href=\"([^\">]+)\"[^>]*>(.*)<\/a>/siU",
"'<br[^>]*>'si",
"'<p>'si",
"'</p>'si",
"'<script[^>]*?>.*?</script>'si", // 去掉 javascript
"'<[\/\!]*?[^<>]*?>'si", // 去掉 HTML 标记
"'([\r\n])[\s]+'", // 去掉空白字符
); // 作为 PHP 代码运行
$replace = array ("#img#\\1#/img#",
"#link#\\1#\\2#/link#",
"[br]",
"",
"[br]",
"",
"",
"",
);
$text = preg_replace ($search, $replace, $content);
$text = str_replace("[br]", "<br/>", $text);
$img_start = "<img src=\"" . $publish_url . "automini.php?src=";
$img_end = "&amp;pixel=100*80&amp;cache=1&amp;cacheTime=1000&amp;miniType=png\" />";
$text = preg_replace ("/#img#(.*)#\/img#/isUe", "'$img_start'.urlencode('\\1').'$img_end'", $text);
$text = preg_replace ("/#link#(.*)#(.*)#\/link#/isU", "<a href=\"\\1\">\\2</a>", $text);
while (preg_match("/<br\/><br\/>/siU", $text)) {
$text = str_replace('<br/><br/>', '<br/>', $text);
}
return $text;
}
/**
* 获取变量的名字

View File

@ -61,6 +61,7 @@ function iconv_to($str,$from,$to){
}
return $str;
}
unset($str);
return $result;
}
function path_filter($path){
@ -327,15 +328,14 @@ function path_check($path){
function _path_info_more($dir, &$fileCount = 0, &$pathCount = 0, &$size = 0){
if (!$dh = @opendir($dir)) return array('fileCount'=>0,'folderCount'=>0,'size'=>0);
while (($file = readdir($dh)) !== false) {
if ($file != "." && $file != "..") {
$fullpath = $dir . "/" . $file;
if (!is_dir($fullpath)) {
$fileCount ++;
$size += get_filesize($fullpath);
} else {
_path_info_more($fullpath, $fileCount, $pathCount, $size);
$pathCount ++;
}
if ($file =='.' || $file =='..') continue;
$fullpath = $dir . "/" . $file;
if (!is_dir($fullpath)) {
$fileCount ++;
$size += get_filesize($fullpath);
} else {
_path_info_more($fullpath, $fileCount, $pathCount, $size);
$pathCount ++;
}
}
closedir($dh);
@ -393,19 +393,18 @@ function path_list($dir,$listFile=true,$checkChildren=false){
}
$folderList = array();$fileList = array();//文件夹与文件
while (($file = readdir($dh)) !== false) {
if ($file != "." && $file != ".." && $file != ".svn" ) {
$fullpath = $dir . $file;
if (is_dir($fullpath)) {
$info = folder_info($fullpath);
if($checkChildren){
$info['isParent'] = path_haschildren($fullpath,$listFile);
}
$folderList[] = $info;
} else if($listFile) {//是否列出文件
$info = file_info($fullpath);
if($checkChildren) $info['isParent'] = false;
$fileList[] = $info;
if ($file =='.' || $file =='..' || $file == ".svn") continue;
$fullpath = $dir . $file;
if (is_dir($fullpath)) {
$info = folder_info($fullpath);
if($checkChildren){
$info['isParent'] = path_haschildren($fullpath,$listFile);
}
$folderList[] = $info;
} else if($listFile) {//是否列出文件
$info = file_info($fullpath);
if($checkChildren) $info['isParent'] = false;
$fileList[] = $info;
}
}
closedir($dh);
@ -417,16 +416,15 @@ function path_haschildren($dir,$checkFile=false){
$dir = rtrim($dir,'/').'/';
if (!$dh = @opendir($dir)) return false;
while (($file = readdir($dh)) !== false){
if ($file != "." && $file != "..") {
$fullpath = $dir.$file;
if ($checkFile) {//有子目录或者文件都说明有子内容
if(@is_file($fullpath) || is_dir($fullpath.'/')){
return true;
}
}else{//只检查有没有文件
if(@is_dir($fullpath.'/')){//解决部分主机报错问题
return true;
}
if ($file =='.' || $file =='..') continue;
$fullpath = $dir.$file;
if ($checkFile) {//有子目录或者文件都说明有子内容
if(@is_file($fullpath) || is_dir($fullpath.'/')){
return true;
}
}else{//只检查有没有文件
if(@is_dir($fullpath.'/')){//解决部分主机报错问题
return true;
}
}
}
@ -456,21 +454,20 @@ function del_dir($dir){
if (!$dh = opendir($dir)) return false;
@set_time_limit(0);
while (($file = readdir($dh)) !== false) {
if ($file != "." && $file != "..") {
$fullpath = $dir . '/' . $file;
if (!is_dir($fullpath)) {
if (!unlink($fullpath)) { // 删除不了,尝试修改文件权限
chmod($fullpath, 0777);
if (!unlink($fullpath)) {
return false;
}
}
} else {
if (!del_dir($fullpath)) {
chmod($fullpath, 0777);
if (!del_dir($fullpath)) return false;
if ($file =='.' || $file =='..') continue;
$fullpath = $dir . '/' . $file;
if (!is_dir($fullpath)) {
if (!unlink($fullpath)) { // 删除不了,尝试修改文件权限
chmod($fullpath, 0777);
if (!unlink($fullpath)) {
return false;
}
}
} else {
if (!del_dir($fullpath)) {
chmod($fullpath, 0777);
if (!del_dir($fullpath)) return false;
}
}
}
closedir($dh);
@ -515,9 +512,8 @@ function copy_dir($source, $dest){
}
if (!$dh = opendir($source)) return false;
while (($file = readdir($dh)) !== false) {
if ($file != "." && $file != "..") {
$result = copy_dir($source . "/" . $file, $dest . "/" . $file);
}
if ($file =='.' || $file =='..') continue;
$result = copy_dir($source . "/" . $file, $dest . "/" . $file);
}
closedir($dh);
}
@ -772,9 +768,16 @@ function file_search($path,$search,$is_case){
$strpos = 'stripos';//是否区分大小写
if ($is_case) $strpos = 'strpos';
//文本文件 超过40M不再搜索
if(@filesize($path) >= 1024*1024*40){
return false;
}
$content = file_get_contents($path);
$charset = get_charset($content);
if(!in_array($charset,array('utf-8','ascii'))){
//搜索关键字为纯英文则直接搜索含有中文则转为utf8再搜索为兼容其他文件编码格式
$notAscii = preg_match("/[\x7f-\xff]/", $search);
if($notAscii && !in_array($charset,array('utf-8','ascii'))){
$content = iconv_to($content,$charset,'utf-8');
}
@ -859,11 +862,10 @@ function chmod_path($path,$mod){
if (is_file($path)) return @chmod($path,$mod);
if (!$dh = @opendir($path)) return false;
while (($file = readdir($dh)) !== false){
if ($file != "." && $file != "..") {
$fullpath = $path . '/' . $file;
chmod_path($fullpath,$mod);
@chmod($fullpath,$mod);
}
if ($file =='.' || $file =='..') continue;
$fullpath = $path . '/' . $file;
chmod_path($fullpath,$mod);
@chmod($fullpath,$mod);
}
closedir($dh);
return @chmod($path,$mod);
@ -1023,10 +1025,23 @@ function file_put_out($file,$download=-1,$downFilename=false){
header("X-OutFileName: ".$filenameOutput);
header("X-Powered-By: kodExplorer.");
//调用webserver下载
$server = strtolower($_SERVER['SERVER_SOFTWARE']);
if($server && $GLOBALS['config']['settings']['httpSendFile']){
if(strstr($server,'nginx')){//nginx
header("X-Sendfile: ".$file);
}else if(strstr($server,'apache')){ //apache
header('X-Accel-Redirect: '.$file);
}else if(strstr($server,'http')){//light http
header( "X-LIGHTTPD-send-file: " . $file);
}
return;
}
//远程路径不支持断点续传打开zip内部文件
if(!file_exists($file)){
header('HTTP/1.1 200 OK');
header('Content-Length:'.($end+1));
header('Content-Length: '.($end+1));
return;
}
header("Accept-Ranges: bytes");
@ -1053,8 +1068,8 @@ function file_put_out($file,$download=-1,$downFilename=false){
$cur = $start;
fseek($fp, $start,0);
while(!feof($fp) && $cur <= $end){ // && (connection_status() == 0)
print fread($fp, min(1024 * 16, ($end - $cur) + 1));
$cur += 1024 * 16;
print fread($fp, min(1024 * 100, ($end - $cur) + 1));
$cur += 1024 * 100;
flush();
}
fclose($fp);
@ -1188,6 +1203,18 @@ function kod_move_uploaded_file($fromPath,$savePath){
chmod_path($savePath,DEFAULT_PERRMISSIONS);
return $result;
}
function check_upload($error){
$status = array(
'UPLOAD_ERR_OK', //没有错误发生,文件上传成功。
'UPLOAD_ERR_INI_SIZE', //上传的文件超过了php.ini 中 upload_max_filesize 选项限制的值。
'UPLOAD_ERR_FORM_SIZE', //上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。
'UPLOAD_ERR_PARTIAL', //文件只有部分被上传。
'UPLOAD_ERR_NO_FILE', //没有文件被上传。
'UPLOAD_ERR_NO_TMP_DIR',//找不到临时文件夹。php 4.3.10 和 php 5.0.3 引进。
'UPLOAD_ERR_CANT_WRITE',//文件写入失败。php 5.1.0 引进。
);
return $error.':'.$status[$error];
}
/**
* 文件上传处理。大文件支持分片上传
@ -1202,6 +1229,9 @@ function upload($path,$tempPath,$repeatAction='replace'){
if (!empty($_FILES)) {
$fileName = iconv_system(path_clear_name($_FILES[$fileInput]["name"]));
$uploadFile = $_FILES[$fileInput]["tmp_name"];
if(!$uploadFile && $_FILES[$fileInput]['error']>0){
show_json(check_upload($_FILES[$fileInput]['error']),false);
}
if($fileName == "image.jpg" && is_wap()){//拍照上传
$fileName = date('Ymd H:i:s',time()).'.jpg';
}
@ -1322,7 +1352,8 @@ function write_log($log, $type = 'default', $level = 'log'){
if(!defined('LOG_PATH')){
return;
}
$now_time = date('[H:i:s]');
list($usec, $sec) = explode(' ', microtime());
$now_time = date('[H:i:s.').substr($usec,2,3).'] ';
$target = LOG_PATH . strtolower($type) . '/';
mk_dir($target);
if (!path_writeable($target)){

View File

@ -127,7 +127,7 @@ function get_charset(&$str) {
'utf-32be' => chr(0x00) . chr(0x00) . chr(0xFE) . chr(0xFF),
);
foreach ($bom_arr as $key => $value) {
if ( substr($str,0,strlen($value)) === $value ){
if (substr($str,0,strlen($value)) === $value ){
return $key;
}
}
@ -248,7 +248,7 @@ function init_common(){
// session path create and check
$errorTips = "[Error Code:1002] 目录权限错误!请设置程序目录及所有子目录为读写状态,
linux 运行如下指令:
<pre>chmod -R 777 ".BASIC_PATH.'</pre>';
<pre>su -c 'setenforce 0'\nchmod -R 777 ".BASIC_PATH.'</pre>';
//检查session是否存在
if( !file_exists(KOD_SESSION) ||
!file_exists(KOD_SESSION.'index.html')){

View File

@ -166,7 +166,7 @@ function curl_progress_set(){
$GLOBALS['curlCurrentFile']['setNum'] += 1;
$args = func_get_args();
if (is_resource($args[0])) {// php 5.5
array_shift($args);
array_shift($args);
}
$downTotal = $args[0];
$downSize = $args[1];
@ -339,7 +339,7 @@ function url_request($url,$method='GET',$data=false,$headers=false,$options=fals
break;
case 'DOWNLOAD':
//远程下载到指定文件;进度条
$downTemp = $data.'.'.rand_string(5);
$downTemp = $data.'.'.rand_string(5);
$fp = fopen ($downTemp,'w+');
curl_progress_bind($downTemp,'',true);//下载进度
curl_setopt($ch, CURLOPT_NOPROGRESS, false);
@ -406,7 +406,7 @@ function url_request($url,$method='GET',$data=false,$headers=false,$options=fals
}
}
if($method == 'DOWNLOAD'){
@fclose($fp);
@fclose($fp);
@clearstatcache();
if($success){
move_path($downTemp,$data);
@ -649,6 +649,72 @@ function parse_incoming(){
return $return;
}
function db_escape($str) {
$str = addslashes($str);
$str = str_replace(array('_', '%'),array('\\_', '\\%'), $str);
return $str;
}
/**
* 获取输入参数 支持过滤和默认值
* 使用方法:
* <code>
* input('id',0); 获取id参数 自动判断get或者post
* input('post.name','','htmlspecialchars'); 获取$_POST['name']
* input('get.'); 获取$_GET
* </code>
* @param string $name 变量的名称 支持指定类型
* @param mixed $default 不存在的时候默认值
* @param mixed $filter 参数过滤方法
* @return mixed
*/
function input($name,$default='',$filter=null) {
$default_filter = 'htmlspecialchars,db_escape';
if(strpos($name,'.')) { // 指定参数来源
list($method,$name) = explode('.',$name,2);
}else{ // 默认为自动判断
$method = 'request';
}
switch(strtolower($method)) {
case 'get' : $input =& $_GET;break;
case 'post' : $input =& $_POST;break;
case 'request' : $input =& $_REQUEST; break;
case 'put' : parse_str(file_get_contents('php://input'), $input);break;
case 'session' : $input =& $_SESSION; break;
case 'cookie' : $input =& $_COOKIE; break;
case 'server' : $input =& $_SERVER; break;
case 'globals' : $input =& $GLOBALS; break;
default:return NULL;
}
$filters = isset($filter)?$filter:$default_filter;
if($filters) {
$filters = explode(',',$filters);
}
if(empty($name)) { // 获取全部变量
$data = $input;
foreach($filters as $filter){
$data = array_map($filter,$data); // 参数过滤
}
}elseif(isset($input[$name])) { // 取值操作
$data = $input[$name];
foreach($filters as $filter){
if(function_exists($filter)) {
$data = is_array($data)?array_map($filter,$data):$filter($data); // 参数过滤
}else{
$data = filter_var($data,is_int($filter)?$filter:filter_id($filter));
if(false === $data) {
return isset($default)?$default:NULL;
}
}
}
}else{ // 变量默认值
$data = isset($default)?$default:NULL;
}
return $data;
}
function url2absolute($index_url, $preg_url){
if (preg_match('/[a-zA-Z]*\:\/\//', $preg_url)) return $preg_url;
preg_match('/([a-zA-Z]*\:\/\/.*)\//', $index_url, $match);

File diff suppressed because one or more lines are too long

View File

@ -227,6 +227,61 @@ class ImageThumb {
}
}
if(!function_exists('imageflip')){
/**
* Flip (mirror) an image left to right.
*
* @param image resource
* @param x int
* @param y int
* @param width int
* @param height int
* @return bool
* @require PHP 3.0.7 (function_exists), GD1
*/
define('IMG_FLIP_HORIZONTAL', 0);
define('IMG_FLIP_VERTICAL', 1);
define('IMG_FLIP_BOTH', 2);
function imageflip($image, $mode) {
switch ($mode) {
case IMG_FLIP_HORIZONTAL: {
$max_x = imagesx($image) - 1;
$half_x = $max_x / 2;
$sy = imagesy($image);
$temp_image = imageistruecolor($image)? imagecreatetruecolor(1, $sy): imagecreate(1, $sy);
for ($x = 0; $x < $half_x; ++$x) {
imagecopy($temp_image, $image, 0, 0, $x, 0, 1, $sy);
imagecopy($image, $image, $x, 0, $max_x - $x, 0, 1, $sy);
imagecopy($image, $temp_image, $max_x - $x, 0, 0, 0, 1, $sy);
}
break;
}
case IMG_FLIP_VERTICAL: {
$sx = imagesx($image);
$max_y = imagesy($image) - 1;
$half_y = $max_y / 2;
$temp_image = imageistruecolor($image)? imagecreatetruecolor($sx, 1): imagecreate($sx, 1);
for ($y = 0; $y < $half_y; ++$y) {
imagecopy($temp_image, $image, 0, 0, 0, $y, $sx, 1);
imagecopy($image, $image, 0, $y, 0, $max_y - $y, $sx, 1);
imagecopy($image, $temp_image, 0, $max_y - $y, 0, 0, $sx, 1);
}
break;
}
case IMG_FLIP_BOTH: {
$sx = imagesx($image);
$sy = imagesy($image);
$temp_image = imagerotate($image, 180, 0);
imagecopy($image, $temp_image, 0, 0, 0, 0, $sx, $sy);
break;
}
default: {
return;
}
}
imagedestroy($temp_image);
}
}
if(!function_exists('imagecreatefrombmp')){
function imagecreatefrombmp( $filename ){
return imageGdBMP::load($filename);

View File

@ -128,7 +128,10 @@ class KodArchive {
if($GLOBALS['config']['systemCharset'] != 'utf-8'){
$indexPath = unzip_pre_name($partName);//系统编码
}
$pathRemove = get_path_father($indexPath);
//$pathRemove = get_path_father($indexPath);
$pathRemove = get_path_father($partName);//中文情况文件情况兼容
if($indexInfo['folder']){
$indexPath = rtrim($indexPath,'/').'/';//tar 解压文件夹需要/结尾
$partName = array($partName);

View File

@ -33,7 +33,7 @@ class kodRarArchive {
if(PATH_SEPARATOR == ':') {
@chmod($file,0777);
}
return '"'.$file.'"';
return $file;
}
static function run($cmd){
if (strtoupper(substr(PHP_OS, 0,3)) != 'WIN') {//linux

View File

@ -1085,7 +1085,6 @@ if (!defined("PCL_TAR"))
TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString());
return PclErrorCode();
}
// ----- Call the adding fct inside the tar
if (($v_result = PclTarHandleAddList($p_tar, $p_list, $p_mode, $v_list_detail, $p_add_dir, $p_remove_dir)) == 1)
{
@ -1402,7 +1401,6 @@ if (!defined("PCL_TAR"))
// ----- Store the file infos
$p_list_detail[$v_nb++] = $v_header;
// ----- Look for directory
if (is_dir($p_filename))
{
@ -1416,11 +1414,18 @@ if (!defined("PCL_TAR"))
// ----- Read the directory for files and sub-directories
$p_hdir = opendir($p_filename);
$p_hitem = readdir($p_hdir); // '.' directory
$p_hitem = readdir($p_hdir); // '..' directory
// changed by warlee;php7以后 目录第一二个不一定是. 和..
// $p_hitem = readdir($p_hdir); // '.' directory
// $p_hitem = readdir($p_hdir); // '..' directory
while ($p_hitem = readdir($p_hdir))
{
// ----- Look for a file
//add by warlee;
if ($p_hitem == "." || $p_hitem == "..") {
continue;
}
// ----- Look for a file
if (is_file($v_path.$p_hitem))
{
TrFctMessage(__FILE__, __LINE__, 4, "Add the file '".$v_path.$p_hitem."'");
@ -1547,7 +1552,6 @@ if (!defined("PCL_TAR"))
TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString());
return PclErrorCode();
}
// ----- Look for a file
if (is_file($p_filename))
{
@ -3633,4 +3637,3 @@ if (!defined("PCL_TAR"))
// ----- End of double include look
}
?>

View File

@ -451,4 +451,3 @@ if (!defined("PCLTRACE_LIB"))
// ----- End of double include look
}
?>

View File

@ -217,8 +217,10 @@
// filename.
// Note that no real action is taken, if the archive does not exist it is not
// created. Use create() for that.
//
// changed by warlee; PclZip=>__construct; php7.1不再支持5php4的构造函数方法
// --------------------------------------------------------------------------------
function PclZip($p_zipname)
function __construct($p_zipname)
{
// ----- Tests the zlib
@ -5718,5 +5720,3 @@
}
// --------------------------------------------------------------------------------
?>

View File

@ -1,11 +1,4 @@
<?php
class ConfigModel extends Model{
function __construct(){
parent::__construct();
return $this;
}
}

View File

@ -1,10 +1,13 @@
<?php
class pluginModel extends Model{
class pluginModel{
var $in;
var $config;
function __construct(){
parent::__construct();
return $this;
global $config, $in;
//parent::__construct();
$this -> in = &$in;
$this -> config = &$config;
}
public function loadData(){
if(!isset($this->config['settingSystem']['pluginList'])){
$this->config['settingSystem']['pluginList'] = array();

View File

@ -1,715 +0,0 @@
<?php
/*!
* Medoo database framework
* http://medoo.lvtao.net/doc.php
* Version 1.1.3
*
* Copyright 2016, Angel Lai
* Released under the MIT license
*/
class medoo
{
// General
protected $database_type;
protected $charset;
protected $database_name;
// For MySQL, MariaDB, MSSQL, Sybase, PostgreSQL, Oracle
protected $server;
protected $username;
protected $password;
// For SQLite
protected $database_file;
// For MySQL or MariaDB with unix_socket
protected $socket;
// Optional
protected $port;
protected $prefix;
protected $option = array();
// Variable
protected $logs = array();
protected $debug_mode = false;
public function __construct($options = null){
try {
$commands = array();
$dsn = '';
if (is_array($options)){
foreach ($options as $option => $value){
$this->$option = $value;
}
}else{
return false;
}
if (
isset($this->port) &&
is_int($this->port * 1)
){
$port = $this->port;
}
$type = strtolower($this->database_type);
$is_port = isset($port);
if (isset($options[ 'prefix' ])){
$this->prefix = $options[ 'prefix' ];
}
switch ($type){
case 'mariadb':
$type = 'mysql';
case 'mysql':
if ($this->socket){
$dsn = $type . ':unix_socket=' . $this->socket . ';dbname=' . $this->database_name;
}else{
$dsn = $type . ':host=' . $this->server . ($is_port ? ';port=' . $port : '') . ';dbname=' . $this->database_name;
}
// Make MySQL using standard quoted identifier
$commands[] = 'SET SQL_MODE=ANSI_QUOTES';
break;
case 'pgsql':
$dsn = $type . ':host=' . $this->server . ($is_port ? ';port=' . $port : '') . ';dbname=' . $this->database_name;
break;
case 'sybase':
$dsn = 'dblib:host=' . $this->server . ($is_port ? ':' . $port : '') . ';dbname=' . $this->database_name;
break;
case 'oracle':
$dbname = $this->server ?
'//' . $this->server . ($is_port ? ':' . $port : ':1521') . '/' . $this->database_name :
$this->database_name;
$dsn = 'oci:dbname=' . $dbname . ($this->charset ? ';charset=' . $this->charset : '');
break;
case 'mssql':
$dsn = strstr(PHP_OS, 'WIN') ?
'sqlsrv:server=' . $this->server . ($is_port ? ',' . $port : '') . ';database=' . $this->database_name :
'dblib:host=' . $this->server . ($is_port ? ':' . $port : '') . ';dbname=' . $this->database_name;
// Keep MSSQL QUOTED_IDENTIFIER is ON for standard quoting
$commands[] = 'SET QUOTED_IDENTIFIER ON';
break;
case 'sqlite':
$dsn = $type . ':' . $this->database_file;
$this->username = null;
$this->password = null;
break;
}
if (
in_array($type, array('mariadb', 'mysql', 'pgsql', 'sybase', 'mssql')) &&
$this->charset
){
$commands[] = "SET NAMES '" . $this->charset . "'";
}
$this->pdo = new PDO(
$dsn,
$this->username,
$this->password,
$this->option
);
foreach ($commands as $value){
$this->pdo->exec($value);
}
}
catch (PDOException $e) {
throw new Exception($e->getMessage());
}
}
public function query($query){
if ($this->debug_mode){
echo $query;
$this->debug_mode = false;
return false;
}
$this->logs[] = $query;
return $this->pdo->query($query);
}
public function exec($query){
if ($this->debug_mode){
echo $query;
$this->debug_mode = false;
return false;
}
$this->logs[] = $query;
return $this->pdo->exec($query);
}
public function quote($string){
return $this->pdo->quote($string);
}
protected function table_quote($table){
return '"' . $this->prefix . $table . '"';
}
protected function column_quote($string){
preg_match('/(\(JSON\)\s*|^#)?([a-zA-Z0-9_]*)\.([a-zA-Z0-9_]*)/', $string, $column_match);
if (isset($column_match[ 2 ], $column_match[ 3 ])){
return '"' . $this->prefix . $column_match[ 2 ] . '"."' . $column_match[ 3 ] . '"';
}
return '"' . $string . '"';
}
protected function column_push(&$columns){
if ($columns == '*'){
return $columns;
}
if (is_string($columns)){
$columns = array($columns);
}
$stack = array();
foreach ($columns as $key => $value){
if (is_array($value)){
$stack[] = $this->column_push($value);
}else{
preg_match('/([a-zA-Z0-9_\-\.]*)\s*\(([a-zA-Z0-9_\-]*)\)/i', $value, $match);
if (isset($match[ 1 ], $match[ 2 ])){
$stack[] = $this->column_quote( $match[ 1 ] ) . ' AS ' . $this->column_quote( $match[ 2 ] );
$columns[ $key ] = $match[ 2 ];
}else{
$stack[] = $this->column_quote( $value );
}
}
}
return implode($stack, ',');
}
protected function array_quote($array){
$temp = array();
foreach ($array as $value){
$temp[] = is_int($value) ? $value : $this->pdo->quote($value);
}
return implode($temp, ',');
}
protected function inner_conjunct($data, $conjunctor, $outer_conjunctor){
$haystack = array();
foreach ($data as $value){
$haystack[] = '(' . $this->data_implode($value, $conjunctor) . ')';
}
return implode($outer_conjunctor . ' ', $haystack);
}
protected function fn_quote($column, $string){
return (strpos($column, '#') === 0 && preg_match('/^[A-Z0-9\_]*\([^)]*\)$/', $string)) ?
$string :
$this->quote($string);
}
protected function data_implode($data, $conjunctor, $outer_conjunctor = null){
$wheres = array();
foreach ($data as $key => $value){
$type = gettype($value);
if (
preg_match("/^(AND|OR)(\s+#.*)?$/i", $key, $relation_match) &&
$type == 'array'
){
$wheres[] = 0 !== count(array_diff_key($value, array_keys(array_keys($value)))) ?
'(' . $this->data_implode($value, ' ' . $relation_match[ 1 ]) . ')' :
'(' . $this->inner_conjunct($value, ' ' . $relation_match[ 1 ], $conjunctor) . ')';
}else{
preg_match('/(#?)([\w\.\-]+)(\[(\>|\>\=|\<|\<\=|\!|\<\>|\>\<|\!?~)\])?/i', $key, $match);
$column = $this->column_quote($match[ 2 ]);
if (isset($match[ 4 ])){
$operator = $match[ 4 ];
if ($operator == '!'){
switch ($type){
case 'NULL':
$wheres[] = $column . ' IS NOT NULL';
break;
case 'array':
$wheres[] = $column . ' NOT IN (' . $this->array_quote($value) . ')';
break;
case 'integer':
case 'double':
$wheres[] = $column . ' != ' . $value;
break;
case 'boolean':
$wheres[] = $column . ' != ' . ($value ? '1' : '0');
break;
case 'string':
$wheres[] = $column . ' != ' . $this->fn_quote($key, $value);
break;
}
}
if ($operator == '<>' || $operator == '><'){
if ($type == 'array'){
if ($operator == '><'){
$column .= ' NOT';
}
if (is_numeric($value[ 0 ]) && is_numeric($value[ 1 ])){
$wheres[] = '(' . $column . ' BETWEEN ' . $value[ 0 ] . ' AND ' . $value[ 1 ] . ')';
}
else{
$wheres[] = '(' . $column . ' BETWEEN ' . $this->quote($value[ 0 ]) . ' AND ' . $this->quote($value[ 1 ]) . ')';
}
}
}
if ($operator == '~' || $operator == '!~'){
if ($type != 'array'){
$value = array($value);
}
$like_clauses = array();
foreach ($value as $item){
$item = strval($item);
if (preg_match('/^(?!(%|\[|_])).+(?<!(%|\]|_))$/', $item)){
$item = '%' . $item . '%';
}
$like_clauses[] = $column . ($operator === '!~' ? ' NOT' : '') . ' LIKE ' . $this->fn_quote($key, $item);
}
$wheres[] = implode(' OR ', $like_clauses);
}
if (in_array($operator, array('>', '>=', '<', '<='))){
$condition = $column . ' ' . $operator . ' ';
if (is_numeric($value)){
$condition .= $value;
}elseif (strpos($key, '#') === 0){
$condition .= $this->fn_quote($key, $value);
}else{
$condition .= $this->quote($value);
}
$wheres[] = $condition;
}
}else{
switch ($type){
case 'NULL':
$wheres[] = $column . ' IS NULL';
break;
case 'array':
$wheres[] = $column . ' IN (' . $this->array_quote($value) . ')';
break;
case 'integer':
case 'double':
$wheres[] = $column . ' = ' . $value;
break;
case 'boolean':
$wheres[] = $column . ' = ' . ($value ? '1' : '0');
break;
case 'string':
$wheres[] = $column . ' = ' . $this->fn_quote($key, $value);
break;
}
}
}
}
return implode($conjunctor . ' ', $wheres);
}
protected function where_clause($where){
$where_clause = '';
if (is_array($where)){
$where_keys = array_keys($where);
$where_AND = preg_grep("/^AND\s*#?$/i", $where_keys);
$where_OR = preg_grep("/^OR\s*#?$/i", $where_keys);
$single_condition = array_diff_key($where, array_flip(
array('AND', 'OR', 'GROUP', 'ORDER', 'HAVING', 'LIMIT', 'LIKE', 'MATCH')
));
if ($single_condition != array()){
$condition = $this->data_implode($single_condition, '');
if ($condition != ''){
$where_clause = ' WHERE ' . $condition;
}
}
if (!empty($where_AND)){
$value = array_values($where_AND);
$where_clause = ' WHERE ' . $this->data_implode($where[ $value[ 0 ] ], ' AND');
}
if (!empty($where_OR)){
$value = array_values($where_OR);
$where_clause = ' WHERE ' . $this->data_implode($where[ $value[ 0 ] ], ' OR');
}
if (isset($where[ 'MATCH' ])){
$MATCH = $where[ 'MATCH' ];
if (is_array($MATCH) && isset($MATCH[ 'columns' ], $MATCH[ 'keyword' ])){
$where_clause .= ($where_clause != '' ? ' AND ' : ' WHERE ') . ' MATCH ("' . str_replace('.', '"."', implode($MATCH[ 'columns' ], '", "')) . '") AGAINST (' . $this->quote($MATCH[ 'keyword' ]) . ')';
}
}
if (isset($where[ 'GROUP' ])){
$where_clause .= ' GROUP BY ' . $this->column_quote($where[ 'GROUP' ]);
if (isset($where[ 'HAVING' ])){
$where_clause .= ' HAVING ' . $this->data_implode($where[ 'HAVING' ], ' AND');
}
}
if (isset($where[ 'ORDER' ])){
$ORDER = $where[ 'ORDER' ];
if (is_array($ORDER)){
$stack = array();
foreach ($ORDER as $column => $value){
if (is_array($value)){
$stack[] = 'FIELD(' . $this->column_quote($column) . ', ' . $this->array_quote($value) . ')';
}else if ($value === 'ASC' || $value === 'DESC'){
$stack[] = $this->column_quote($column) . ' ' . $value;
}else if (is_int($column)){
$stack[] = $this->column_quote($value);
}
}
$where_clause .= ' ORDER BY ' . implode($stack, ',');
}else{
$where_clause .= ' ORDER BY ' . $this->column_quote($ORDER);
}
}
if (isset($where[ 'LIMIT' ])){
$LIMIT = $where[ 'LIMIT' ];
if (is_numeric($LIMIT)){
$where_clause .= ' LIMIT ' . $LIMIT;
}
if (
is_array($LIMIT) &&
is_numeric($LIMIT[ 0 ]) &&
is_numeric($LIMIT[ 1 ])
){
if ($this->database_type === 'pgsql'){
$where_clause .= ' OFFSET ' . $LIMIT[ 0 ] . ' LIMIT ' . $LIMIT[ 1 ];
}else{
$where_clause .= ' LIMIT ' . $LIMIT[ 0 ] . ',' . $LIMIT[ 1 ];
}
}
}
}else{
if ($where != null){
$where_clause .= ' ' . $where;
}
}
return $where_clause;
}
protected function select_context($table, $join, &$columns = null, $where = null, $column_fn = null){
preg_match('/([a-zA-Z0-9_\-]*)\s*\(([a-zA-Z0-9_\-]*)\)/i', $table, $table_match);
if (isset($table_match[ 1 ], $table_match[ 2 ])){
$table = $this->table_quote($table_match[ 1 ]);
$table_query = $this->table_quote($table_match[ 1 ]) . ' AS ' . $this->table_quote($table_match[ 2 ]);
}else{
$table = $this->table_quote($table);
$table_query = $table;
}
$join_key = is_array($join) ? array_keys($join) : null;
if (
isset($join_key[ 0 ]) &&
strpos($join_key[ 0 ], '[') === 0
){
$table_join = array();
$join_array = array(
'>' => 'LEFT',
'<' => 'RIGHT',
'<>' => 'FULL',
'><' => 'INNER'
);
foreach($join as $sub_table => $relation){
preg_match('/(\[(\<|\>|\>\<|\<\>)\])?([a-zA-Z0-9_\-]*)\s?(\(([a-zA-Z0-9_\-]*)\))?/', $sub_table, $match);
if ($match[ 2 ] != '' && $match[ 3 ] != ''){
if (is_string($relation)){
$relation = 'USING ("' . $relation . '")';
}
if (is_array($relation)){
// For ['column1', 'column2']
if (isset($relation[ 0 ])){
$relation = 'USING ("' . implode($relation, '", "') . '")';
}else{
$joins = array();
foreach ($relation as $key => $value){
$joins[] = (
strpos($key, '.') > 0 ?
// For ['tableB.column' => 'column']
$this->column_quote($key) :
// For ['column1' => 'column2']
$table . '."' . $key . '"'
) .
' = ' .
$this->table_quote(isset($match[ 5 ]) ? $match[ 5 ] : $match[ 3 ]) . '."' . $value . '"';
}
$relation = 'ON ' . implode($joins, ' AND ');
}
}
$table_name = $this->table_quote($match[ 3 ]) . ' ';
if (isset($match[ 5 ])){
$table_name .= 'AS ' . $this->table_quote($match[ 5 ]) . ' ';
}
$table_join[] = $join_array[ $match[ 2 ] ] . ' JOIN ' . $table_name . $relation;
}
}
$table_query .= ' ' . implode($table_join, ' ');
}else{
if (is_null($columns)){
if (is_null($where)){
if (
is_array($join) &&
isset($column_fn)
){
$where = $join;
$columns = null;
}else{
$where = null;
$columns = $join;
}
}else{
$where = $join;
$columns = null;
}
}else{
$where = $columns;
$columns = $join;
}
}
if (isset($column_fn)){
if ($column_fn == 1){
$column = '1';
if (is_null($where)){
$where = $columns;
}
}else{
if (empty($columns)){
$columns = '*';
$where = $join;
}
$column = $column_fn . '(' . $this->column_push($columns) . ')';
}
}else{
$column = $this->column_push($columns);
}
return 'SELECT ' . $column . ' FROM ' . $table_query . $this->where_clause($where);
}
protected function data_map($index, $key, $value, $data, &$stack){
if (is_array($value)){
$sub_stack = array();
foreach ($value as $sub_key => $sub_value){
if (is_array($sub_value)){
$current_stack = $stack[ $index ][ $key ];
$this->data_map(false, $sub_key, $sub_value, $data, $current_stack);
$stack[ $index ][ $key ][ $sub_key ] = $current_stack[ 0 ][ $sub_key ];
}else{
$this->data_map(false, preg_replace('/^[\w]*\./i', "", $sub_value), $sub_key, $data, $sub_stack);
$stack[ $index ][ $key ] = $sub_stack;
}
}
}else{
if ($index !== false){
$stack[ $index ][ $value ] = $data[ $value ];
}else{
if (preg_match('/[a-zA-Z0-9_\-\.]*\s*\(([a-zA-Z0-9_\-]*)\)/i', $key, $key_match)){
$key = $key_match[ 1 ];
}
$stack[ $key ] = $data[ $key ];
}
}
}
public function select($table, $join, $columns = null, $where = null){
$column = $where == null ? $join : $columns;
$is_single_column = (is_string($column) && $column !== '*');
$query = $this->query($this->select_context($table, $join, $columns, $where));
$stack = array();
$index = 0;
if (!$query){
return false;
}
if ($columns === '*'){
return $query->fetchAll(PDO::FETCH_ASSOC);
}
if ($is_single_column){
return $query->fetchAll(PDO::FETCH_COLUMN);
}
while ($row = $query->fetch(PDO::FETCH_ASSOC)){
foreach ($columns as $key => $value){
if (is_array($value)){
$this->data_map($index, $key, $value, $row, $stack);
}else{
$this->data_map($index, $key, preg_replace('/^[\w]*\./i', "", $value), $row, $stack);
}
}
$index++;
}
return $stack;
}
public function insert($table, $datas){
$lastId = array();
// Check indexed or associative array
if (!isset($datas[ 0 ])){
$datas = array($datas);
}
foreach ($datas as $data){
$values = array();
$columns = array();
foreach ($data as $key => $value){
$columns[] = $this->column_quote(preg_replace("/^(\(JSON\)\s*|#)/i", "", $key));
switch (gettype($value)){
case 'NULL':
$values[] = 'NULL';
break;
case 'array':
preg_match("/\(JSON\)\s*([\w]+)/i", $key, $column_match);
$values[] = isset($column_match[ 0 ]) ?
$this->quote(json_encode($value)) :
$this->quote(serialize($value));
break;
case 'boolean':
$values[] = ($value ? '1' : '0');
break;
case 'integer':
case 'double':
case 'string':
$values[] = $this->fn_quote($key, $value);
break;
}
}
$this->exec('INSERT INTO ' . $this->table_quote($table) . ' (' . implode(', ', $columns) . ') VALUES (' . implode($values, ', ') . ')');
$lastId[] = $this->pdo->lastInsertId();
}
return count($lastId) > 1 ? $lastId : $lastId[ 0 ];
}
public function update($table, $data, $where = null){
$fields = array();
foreach ($data as $key => $value){
preg_match('/([\w]+)(\[(\+|\-|\*|\/)\])?/i', $key, $match);
if (isset($match[ 3 ])){
if (is_numeric($value)){
$fields[] = $this->column_quote($match[ 1 ]) . ' = ' . $this->column_quote($match[ 1 ]) . ' ' . $match[ 3 ] . ' ' . $value;
}
}else{
$column = $this->column_quote(preg_replace("/^(\(JSON\)\s*|#)/i", "", $key));
switch (gettype($value)){
case 'NULL':
$fields[] = $column . ' = NULL';
break;
case 'array':
preg_match("/\(JSON\)\s*([\w]+)/i", $key, $column_match);
$fields[] = $column . ' = ' . $this->quote(
isset($column_match[ 0 ]) ? json_encode($value) : serialize($value)
);
break;
case 'boolean':
$fields[] = $column . ' = ' . ($value ? '1' : '0');
break;
case 'integer':
case 'double':
case 'string':
$fields[] = $column . ' = ' . $this->fn_quote($key, $value);
break;
}
}
}
return $this->exec('UPDATE ' . $this->table_quote($table) . ' SET ' . implode(', ', $fields) . $this->where_clause($where));
}
public function delete($table, $where){
return $this->exec('DELETE FROM ' . $this->table_quote($table) . $this->where_clause($where));
}
public function replace($table, $columns, $search = null, $replace = null, $where = null){
if (is_array($columns)){
$replace_query = array();
foreach ($columns as $column => $replacements){
foreach ($replacements as $replace_search => $replace_replacement){
$replace_query[] = $column . ' = REPLACE(' . $this->column_quote($column) . ', ' . $this->quote($replace_search) . ', ' . $this->quote($replace_replacement) . ')';
}
}
$replace_query = implode(', ', $replace_query);
$where = $search;
}else{
if (is_array($search)){
$replace_query = array();
foreach ($search as $replace_search => $replace_replacement){
$replace_query[] = $columns . ' = REPLACE(' . $this->column_quote($columns) . ', ' . $this->quote($replace_search) . ', ' . $this->quote($replace_replacement) . ')';
}
$replace_query = implode(', ', $replace_query);
$where = $replace;
}else{
$replace_query = $columns . ' = REPLACE(' . $this->column_quote($columns) . ', ' . $this->quote($search) . ', ' . $this->quote($replace) . ')';
}
}
return $this->exec('UPDATE ' . $this->table_quote($table) . ' SET ' . $replace_query . $this->where_clause($where));
}
public function get($table, $join = null, $columns = null, $where = null){
$column = $where == null ? $join : $columns;
$is_single_column = (is_string($column) && $column !== '*');
$query = $this->query($this->select_context($table, $join, $columns, $where) . ' LIMIT 1');
if ($query){
$data = $query->fetchAll(PDO::FETCH_ASSOC);
if (isset($data[ 0 ])){
if ($is_single_column){
return $data[ 0 ][ preg_replace('/^[\w]*\./i', "", $column) ];
}
if ($column === '*'){
return $data[ 0 ];
}
$stack = array();
foreach ($columns as $key => $value){
if (is_array($value)){
$this->data_map(0, $key, $value, $data[ 0 ], $stack);
}else{
$this->data_map(0, $key, preg_replace('/^[\w]*\./i', "", $value), $data[ 0 ], $stack);
}
}
return $stack[ 0 ];
}else{
return false;
}
}else{
return false;
}
}
public function has($table, $join, $where = null){
$column = null;
$query = $this->query('SELECT EXISTS(' . $this->select_context($table, $join, $column, $where, 1) . ')');
if ($query){
return $query->fetchColumn() === '1';
}else{
return false;
}
}
public function count($table, $join = null, $column = null, $where = null){
$query = $this->query($this->select_context($table, $join, $column, $where, 'COUNT'));
return $query ? 0 + $query->fetchColumn() : false;
}
public function max($table, $join, $column = null, $where = null){
$query = $this->query($this->select_context($table, $join, $column, $where, 'MAX'));
if ($query){
$max = $query->fetchColumn();
return is_numeric($max) ? $max + 0 : $max;
}else{
return false;
}
}
public function min($table, $join, $column = null, $where = null){
$query = $this->query($this->select_context($table, $join, $column, $where, 'MIN'));
if ($query){
$min = $query->fetchColumn();
return is_numeric($min) ? $min + 0 : $min;
}else{
return false;
}
}
public function avg($table, $join, $column = null, $where = null){
$query = $this->query($this->select_context($table, $join, $column, $where, 'AVG'));
return $query ? 0 + $query->fetchColumn() : false;
}
public function sum($table, $join, $column = null, $where = null){
$query = $this->query($this->select_context($table, $join, $column, $where, 'SUM'));
return $query ? 0 + $query->fetchColumn() : false;
}
public function action($actions){
if (is_callable($actions)){
$this->pdo->beginTransaction();
$result = $actions($this);
if ($result === false){
$this->pdo->rollBack();
}else{
$this->pdo->commit();
}
}else{
return false;
}
}
public function debug(){
$this->debug_mode = true;
return $this;
}
public function error(){
return $this->pdo->errorInfo();
}
public function last_query(){
return end($this->logs);
}
public function log(){
return $this->logs;
}
public function info(){
$output = array(
'server' => 'SERVER_INFO',
'driver' => 'DRIVER_NAME',
'client' => 'CLIENT_VERSION',
'version' => 'SERVER_VERSION',
'connection' => 'CONNECTION_STATUS'
);
foreach ($output as $key => $value){
$output[ $key ] = $this->pdo->getAttribute(constant('PDO::ATTR_' . $value));
}
return $output;
}
}

View File

@ -10,6 +10,7 @@ define('GLOBAL_DEBUG',0);//0 or 1
@date_default_timezone_set(@date_default_timezone_get());
@set_time_limit(1200);//20min pathInfoMuti,search,upload,download...
@ini_set("max_execution_time",1200);
@ini_set('memory_limit','500M');//
@ini_set('session.cache_expire',1800);
if(GLOBAL_DEBUG){
@ -99,4 +100,3 @@ $config['autorun'] = array(
array('controller'=>'user','function'=>'authCheck'),
array('controller'=>'user','function'=>'bindHook'),
);

View File

@ -157,14 +157,14 @@ return array(
"zip_download_ready" => "بعد ضغط تلقائيا التحميل، يرجى الانتظار ...",
"set_background" => "تعيين كخلفية سطح المكتب",
"share" => "سهم",
"my_share" => "أنا مشتركة",
"group_share" => "مجموعات من الحصة الأجنبية",
"share_edit" => "تحرير حصة",
"share_remove" => "إلغاء مشاركة",
"share_remove_tips" => "موافق الغاء حصة؟ ستفشل فتح اتصال.",
"share_path" => "مسار المشتركة",
"my_share" => "نصيبي",
"group_share" => "مشاركة المجموعة الخارجية",
"share_edit" => "تعديل المشاركة",
"share_remove" => "إلغاء المشاركة",
"share_remove_tips" => "هل تريد بالتأكيد إلغاء المشاركة؟ سيتم إبطال الاتصال العام.",
"share_path" => "مشاركة المسار",
"share_title" => "تقاسم الموارد",
"share_name" => "حصة عنوان",
"share_name" => "مشاركة العنوان",
"share_time" => "انتهاء",
"share_time_desc" => "لم يتم تعيين لاغية",
"share_password" => "كلمة استخراج",
@ -733,6 +733,8 @@ return array(
"PluginInstallSelf" => "التثبيت اليدوي",
"Plugin.config.auth" => "أذونات",
"Plugin.config.authDesc" => "كافة الإعدادات المتاحة، أو تحديد المستخدمين، ومجموعات المستخدمين وجماعات حقوق يمكن استخدام",
"Plugin.config.authOpen" => "الدخول المفتوح",
"Plugin.config.authOpenDesc" => "لا حاجة لزيارة يمكن الوصول إليها، ويمكن استخدامها للاتصال الخارجي واجهة",
"Plugin.config.authAll" => "حائز",
"Plugin.config.authUser" => "المستخدم",
"Plugin.config.authGroup" => "المجموعات",

View File

@ -157,14 +157,14 @@ return array(
"zip_download_ready" => "След компресия автоматично ще изтеглите, моля изчакайте ...",
"set_background" => "Задай като Desktop Wallpaper",
"share" => "дял",
"my_share" => "споделих",
"group_share" => "Групи от чуждестранни акции",
"share_edit" => "Edit Share",
"share_remove" => "премахване на споделянето",
"share_remove_tips" => "OK Cancel Share? Open връзка ще се провали.",
"share_path" => "Споделено Path",
"share_title" => "Resource Sharing",
"share_name" => "Сподели Title",
"my_share" => "Моят дял",
"group_share" => "Групово външно споделяне",
"share_edit" => "Редактирайте споделянето",
"share_remove" => "Отмяна на споделянето",
"share_remove_tips" => "Наистина ли искате да анулирате споделянето? Обществената връзка ще бъде деактивирана.",
"share_path" => "Споделете пътя",
"share_title" => "Споделяне на ресурси",
"share_name" => "Споделете заглавието",
"share_time" => "изтичане",
"share_time_desc" => "Null не е настроено",
"share_password" => "Екстракт парола",
@ -733,6 +733,8 @@ return array(
"PluginInstallSelf" => "Ръчна инсталация",
"Plugin.config.auth" => "Разрешения",
"Plugin.config.authDesc" => "Всички на наличните настройки, свързани с определяне на потребителите, потребителски групи, правозащитни организации могат да използват",
"Plugin.config.authOpen" => "Отворен достъп",
"Plugin.config.authOpenDesc" => "Няма нужда да посещавате, може да се използва за външно разговор",
"Plugin.config.authAll" => "притежател",
"Plugin.config.authUser" => "потребител",
"Plugin.config.authGroup" => "Групи",

View File

@ -157,14 +157,14 @@ return array(
"zip_download_ready" => "কম্প্রেশন স্বয়ংক্রিয়ভাবে ডাউনলোড হবে পরে, অনুগ্রহ করে অপেক্ষা করুন ...",
"set_background" => "যেমন ডেস্কটপ ওয়ালপেপার সেট করুন",
"share" => "ভাগ",
"my_share" => "আমি ভাগ",
"group_share" => "িদেশী ভাগ গোষ্ঠীসমূহ",
"share_edit" => "শেয়ার সম্পাদনা",
"share_remove" => "Unsharing",
"share_remove_tips" => "ওকে শেয়ার বাতিল করবেন? ওপেন সংযোগ ব্যর্থ হবে.",
"share_path" => "শেয়ারকৃত পাথ",
"share_title" => "রিসোর্স শেয়ারিং",
"share_name" => "সেয়ার শিরোনাম",
"my_share" => "আমার শেয়ার",
"group_share" => "াহ্যিক অংশীদারী গ্রুপ",
"share_edit" => "শেয়ার সম্পাদনা করুন",
"share_remove" => "ভাগ করা বাতিল করুন",
"share_remove_tips" => "আপনি কি ভাগ করা বাতিল করার বিষয়ে নিশ্চিত? পাবলিক সংযোগ অবৈধ হবে।",
"share_path" => "পথ ভাগ করুন",
"share_title" => "সম্পদ শেয়ারিং",
"share_name" => "শিরোনাম শেয়ার করুন",
"share_time" => "শ্বাসত্যাগ",
"share_time_desc" => "নাল সেট না করা হয়",
"share_password" => "এক্সট্র্যাক্ট পাসওয়ার্ড",
@ -733,6 +733,8 @@ return array(
"PluginInstallSelf" => "ম্যানুয়াল ইনস্টলেশন",
"Plugin.config.auth" => "অনুমতিসমূহ",
"Plugin.config.authDesc" => "প্রাপ্তিসাধ্য সকল সেটিংস, অথবা নির্দিষ্ট ব্যবহারকারীদের ব্যবহারকারী গোষ্ঠী, অধিকার সংগঠনগুলো ব্যবহার করতে পারেন",
"Plugin.config.authOpen" => "অ্যাক্সেস খুলুন",
"Plugin.config.authOpenDesc" => "দেখার কোন প্রয়োজন অ্যাক্সেস করা যাবে না, বহিরাগত ইন্টারফেস কল জন্য ব্যবহার করা যেতে পারে",
"Plugin.config.authAll" => "ধারক",
"Plugin.config.authUser" => "ব্যবহারকারী",
"Plugin.config.authGroup" => "গ্রুপ",

View File

@ -156,15 +156,15 @@ return array(
"explorerNew" => "kod enllaç",
"zip_download_ready" => "Després de la compressió es descarrega automàticament, si us plau esperi ...",
"set_background" => "Establir com a Fons d'Escriptori",
"share" => "quota",
"my_share" => "vaig compartir",
"group_share" => "Grups de participació estrangera",
"share_edit" => "Edita Compartir",
"share_remove" => "unsharing",
"share_remove_tips" => "Acceptar Cancel Compartir? Obrir una connexió fallarà.",
"share_path" => "ruta compartida",
"share_title" => "Intercanvi de recursos",
"share_name" => "compartir Títol",
"share" => "Comparteix",
"my_share" => "La meva participació",
"group_share" => "Compartició externa de grup",
"share_edit" => "Edita compartir",
"share_remove" => "Cancel·lació d'ús compartit",
"share_remove_tips" => "Estàs segur que vols cancel·lar la compartició? La connexió pública quedarà invalidada.",
"share_path" => "Comparteix el camí",
"share_title" => "Compartir recursos",
"share_name" => "Compartiu el títol",
"share_time" => "expiració",
"share_time_desc" => "Null no s'estableix",
"share_password" => "extracte de la contrasenya",
@ -733,6 +733,8 @@ return array(
"PluginInstallSelf" => "Instal·lació manual",
"Plugin.config.auth" => "permisos",
"Plugin.config.authDesc" => "Tots els paràmetres disponibles, o especificar els usuaris, grups d'usuaris, grups de drets poden utilitzar",
"Plugin.config.authOpen" => "Accés obert",
"Plugin.config.authOpenDesc" => "No es pot accedir a la necessitat de visitar, es pot utilitzar per trucar a la interfície externa",
"Plugin.config.authAll" => "titular",
"Plugin.config.authUser" => "usuari",
"Plugin.config.authGroup" => "grups",

Binary file not shown.

Binary file not shown.

View File

@ -156,15 +156,15 @@ return array(
"explorerNew" => "kod Link",
"zip_download_ready" => "Nach der Komprimierung automatisch warten herunterladen, bitte ...",
"set_background" => "Als Desktop-Wallpaper",
"share" => "Aktie",
"my_share" => "ich teilte",
"group_share" => "Gruppen von Auslandsanteil",
"share_edit" => "Bearbeiten Teilen",
"share_remove" => "Sperren von",
"share_remove_tips" => "OK Abbrechen Teilen? Offene Verbindung schlägt fehl.",
"share_path" => "Gemeinsamer Weg",
"share_title" => "Resource Sharing",
"share_name" => "Teilen Titel",
"share" => "Teilen",
"my_share" => "Mein Anteil",
"group_share" => "Gruppen-Außenverteilung",
"share_edit" => "Bearbeiten von Freigabe",
"share_remove" => "Abbrechen teilen",
"share_remove_tips" => "Sind Sie sicher, dass Sie das Teilen abbrechen möchten? Die öffentliche Verbindung wird ungültig.",
"share_path" => "Teilen Sie den Weg",
"share_title" => "Ressourcennutzung",
"share_name" => "Teilen Sie den Titel",
"share_time" => "Ablauf",
"share_time_desc" => "Null ist nicht gesetzt",
"share_password" => "Extract Passwort",
@ -733,6 +733,8 @@ return array(
"PluginInstallSelf" => "Manuelle Installation",
"Plugin.config.auth" => "Berechtigungen",
"Plugin.config.authDesc" => "Alle der verfügbaren Einstellungen oder geben Sie Benutzer, Benutzergruppen, können Rechtsgruppen verwenden",
"Plugin.config.authOpen" => "Offener Zugang",
"Plugin.config.authOpenDesc" => "Kein Besuch muss aufgerufen werden, kann für externe Schnittstellenanrufe verwendet werden",
"Plugin.config.authAll" => "Halter",
"Plugin.config.authUser" => "Benutzer",
"Plugin.config.authGroup" => "Gruppen",

View File

@ -156,15 +156,15 @@ return array(
"explorerNew" => "σύνδεσμο kod",
"zip_download_ready" => "Μετά τη συμπίεση θα κατεβάσει αυτόματα, παρακαλώ περιμένετε ...",
"set_background" => "Ορισμός ως ταπετσαρία της επιφάνειας εργασίας",
"share" => "μερίδιο",
"my_share" => "μοιράστηκα",
"group_share" => "Ομάδες των ξένων μετοχή",
"share_edit" => "Επεξεργασία Share",
"share_remove" => "την κατάργηση κοινής χρήσης",
"share_remove_tips" => "ΟΚ Ακύρωση Μοιραστείτε; Ανοικτή σύνδεση θα αποτύχει.",
"share_path" => "κοινόχρηστο Μονοπάτι",
"share_title" => "κατανομή των πόρων",
"share_name" => "Μοιραστείτε Τίτλος",
"share" => "Μοιραστείτε",
"my_share" => "Το μερίδιο μου",
"group_share" => "Εξωτερική κοινή χρήση ομάδας",
"share_edit" => "Επεξεργασία κοινής χρήσης",
"share_remove" => "Ακύρωση κοινής χρήσης",
"share_remove_tips" => "Είστε βέβαιοι ότι θέλετε να ακυρώσετε την κοινή χρήση; Η δημόσια σύνδεση θα ακυρωθεί.",
"share_path" => "Μοιραστείτε τη διαδρομή",
"share_title" => "Κοινή χρήση πόρων",
"share_name" => "Μοιραστείτε τον τίτλο",
"share_time" => "λήξη",
"share_time_desc" => "Null δεν έχει οριστεί",
"share_password" => "κωδικό εκχύλισμα",
@ -733,6 +733,8 @@ return array(
"PluginInstallSelf" => "Μη αυτόματη εγκατάσταση",
"Plugin.config.auth" => "δικαιώματα",
"Plugin.config.authDesc" => "Όλα τα διαθέσιμα ρυθμίσεις, ή να καθορίσετε τους χρήστες, ομάδες χρηστών, ομάδες για τα δικαιώματα μπορούν να χρησιμοποιήσουν",
"Plugin.config.authOpen" => "Ανοικτή πρόσβαση",
"Plugin.config.authOpenDesc" => "Δεν χρειάζεται να επισκεφθείτε, μπορεί να χρησιμοποιηθεί για εξωτερική κλήση διεπαφής",
"Plugin.config.authAll" => "κάτοχος",
"Plugin.config.authUser" => "Ο χρήστης",
"Plugin.config.authGroup" => "ομάδες",

View File

@ -156,14 +156,14 @@ return array(
"explorerNew" => "Kod link",
"zip_download_ready" => "Compression will automatically download, please wait...",
"set_background" => "As your desktop wallpaper",
"share" => "Share",
"share" => "share it",
"my_share" => "My share",
"group_share" => "Group external sharing",
"share_edit" => "Edit share",
"share_remove" => "Cancel share",
"share_remove_tips" => "Determine the cancel share? The Share link will fail.",
"share_path" => "Share path",
"share_title" => "Resource sharing",
"share_remove" => "Cancel sharing",
"share_remove_tips" => "Are you sure you want to cancel sharing? The public connection will be invalidated.",
"share_path" => "Share the path",
"share_title" => "Information sharing",
"share_name" => "Share title",
"share_time" => "Expiration",
"share_time_desc" => "Empty is no expiration",
@ -733,6 +733,8 @@ return array(
"PluginInstallSelf" => "Manual installation",
"Plugin.config.auth" => "Use permission",
"Plugin.config.authDesc" => "Set the owner to use, or specify the user, user group, permission group can be used",
"Plugin.config.authOpen" => "Open access",
"Plugin.config.authOpenDesc" => "No need to visit can be accessed, can be used for external interface call",
"Plugin.config.authAll" => "Everyone",
"Plugin.config.authUser" => "User",
"Plugin.config.authGroup" => "Group",

View File

@ -156,15 +156,15 @@ return array(
"explorerNew" => "kod enlace",
"zip_download_ready" => "Después de la compresión se descarga automáticamente, por favor espere ...",
"set_background" => "Establecer como Fondos de Escritorio",
"share" => "cuota",
"my_share" => "compartí",
"group_share" => "Grupos de participación extranjera",
"share_edit" => "Editar Compartir",
"share_remove" => "unsharing",
"share_remove_tips" => "Aceptar Cancelar Compartir? Abrir una conexión fallará.",
"share_path" => "Ruta compartida",
"share_title" => "Intercambio de recursos",
"share_name" => "Compartir Título",
"share" => "Compartir",
"my_share" => "Mi parte",
"group_share" => "Compartición externa de grupo",
"share_edit" => "Editar parte",
"share_remove" => "Cancelar compartir",
"share_remove_tips" => "¿Seguro que desea cancelar el uso compartido? La conexión pública se invalidará.",
"share_path" => "Comparte el camino",
"share_title" => "Compartición de recursos",
"share_name" => "Compartir el título",
"share_time" => "expiración",
"share_time_desc" => "Null no se establece",
"share_password" => "extracto de la contraseña",
@ -733,6 +733,8 @@ return array(
"PluginInstallSelf" => "Instalación manual",
"Plugin.config.auth" => "permisos",
"Plugin.config.authDesc" => "Todos los ajustes disponibles, o especificar los usuarios, grupos de usuarios, grupos de derechos pueden utilizar",
"Plugin.config.authOpen" => "Acceso abierto",
"Plugin.config.authOpenDesc" => "No hay necesidad de visitar se puede acceder, se puede utilizar para llamar a la interfaz externa",
"Plugin.config.authAll" => "titular",
"Plugin.config.authUser" => "usuario",
"Plugin.config.authGroup" => "grupos",

Binary file not shown.

View File

@ -156,15 +156,15 @@ return array(
"explorerNew" => "لینک KOD",
"zip_download_ready" => "پس از فشرده سازی به طور خودکار دانلود، لطفا صبر کنید ...",
"set_background" => "تنظیم به عنوان تصویر زمینه دسکتاپ",
"share" => "سهم",
"my_share" => "من به اشتراک گذاشته",
"group_share" => "گروه سهم خارجی",
"share_edit" => "ویرایش به اشتراک",
"share_remove" => "لغو اشتراک",
"share_remove_tips" => "OK لغو اشتراک گذاری؟ اتصال باز شکست خواهد خورد.",
"share_path" => "راه به اشتراک گذاشته شده",
"share" => "به اشتراک بگذارید",
"my_share" => "سهم من",
"group_share" => "اشتراک خارجی گروه",
"share_edit" => "ویرایش سهم",
"share_remove" => "لغو به اشتراک گذاری",
"share_remove_tips" => "آیا مطمئن هستید که میخواهید اشتراک را لغو کنید؟ اتصال عمومی نامعتبر خواهد بود.",
"share_path" => "مسیر را به اشتراک بگذارید",
"share_title" => "به اشتراک گذاری منابع",
"share_name" => "اشتراک عنوان",
"share_name" => "عنوان را به اشتراک بگذارید",
"share_time" => "انقضاء",
"share_time_desc" => "نول تنظیم نشده است",
"share_password" => "رمز عبور عصاره",
@ -733,6 +733,8 @@ return array(
"PluginInstallSelf" => "نصب دستی",
"Plugin.config.auth" => "مجوز",
"Plugin.config.authDesc" => "همه از تنظیمات موجود، و یا مشخص کاربران، گروه های کاربری، گروه های حقوق می توانید استفاده کنید",
"Plugin.config.authOpen" => "دسترسی آزاد",
"Plugin.config.authOpenDesc" => "بدون نیاز به بازدید قابل دسترسی است، می توان برای تماس خارجی رابط استفاده کرد",
"Plugin.config.authAll" => "دارنده",
"Plugin.config.authUser" => "کاربر",
"Plugin.config.authGroup" => "گروه",

Binary file not shown.

View File

@ -156,15 +156,15 @@ return array(
"explorerNew" => "lien kod",
"zip_download_ready" => "Après la compression va télécharger automatiquement, s'il vous plaît patienter ...",
"set_background" => "Définir comme Fond d'écran",
"share" => "part",
"my_share" => "Mes partages",
"group_share" => "Des groupes de participation étrangère",
"share_edit" => "Modifier Partager",
"share_remove" => "Départager",
"share_remove_tips" => "OK Annuler Partager? Ouvrir la connexion échouera.",
"share_path" => "Sentier partagé",
"share" => "Partager",
"my_share" => "Mon partage",
"group_share" => "Groupe de partage externe",
"share_edit" => "Modifier partager",
"share_remove" => "Annuler le partage",
"share_remove_tips" => "Êtes-vous sûr de vouloir annuler le partage? La connexion publique sera invalidée.",
"share_path" => "Partagez le chemin",
"share_title" => "Partage de ressources",
"share_name" => "Partager Titre",
"share_name" => "Partagez le titre",
"share_time" => "expiration",
"share_time_desc" => "Null n'est pas réglé",
"share_password" => "mot de passe Extrait",
@ -733,6 +733,8 @@ return array(
"PluginInstallSelf" => "Installation manuelle",
"Plugin.config.auth" => "autorisations",
"Plugin.config.authDesc" => "Tous les paramètres disponibles, ou spécifier des utilisateurs, groupes d'utilisateurs, des groupes de droits peuvent utiliser",
"Plugin.config.authOpen" => "Accès ouvert",
"Plugin.config.authOpenDesc" => "Pas besoin de visiter peut être consulté, peut être utilisé pour appel d'interface externe",
"Plugin.config.authAll" => "titulaire",
"Plugin.config.authUser" => "utilisateur",
"Plugin.config.authGroup" => "groupes",

Binary file not shown.

View File

@ -157,14 +157,14 @@ return array(
"zip_download_ready" => "संपीड़न स्वचालित रूप से डाउनलोड करने के बाद, कृपया प्रतीक्षा करें ...",
"set_background" => "के रूप में डेस्कटॉप वॉलपेपर सेट",
"share" => "शेयर",
"my_share" => "ैं साझ",
"group_share" => "विदेशी शेयर के समूह",
"my_share" => "ेरा हिस्स",
"group_share" => "बाहरी साझाकरण समूह",
"share_edit" => "शेयर संपादित करें",
"share_remove" => "अनसाझा",
"share_remove_tips" => "ठीक शेयर रद्द करें? खुले कनेक्शन असफल हो जायेगी।",
"share_path" => "साझा पथ",
"share_title" => "रिसोर्स शेयरिंग",
"share_name" => "ेयर शीर्षक",
"share_remove" => "साझा करना रद्द करें",
"share_remove_tips" => "क्या आप वाकई साझा करना रद्द करना चाहते हैं? सार्वजनिक कनेक्शन को रद्द कर दिया जाएगा",
"share_path" => "मार्ग साझा करें",
"share_title" => "संसाधन साझाकरण",
"share_name" => "ीर्षक साझा करें",
"share_time" => "समय सीमा समाप्त",
"share_time_desc" => "अशक्त सेट नहीं है",
"share_password" => "निकालें पासवर्ड",
@ -733,6 +733,8 @@ return array(
"PluginInstallSelf" => "मैन्युअल स्थापना",
"Plugin.config.auth" => "अनुमतियां",
"Plugin.config.authDesc" => "उपलब्ध सभी सेटिंग, या निर्दिष्ट करें कि उपयोगकर्ता, उपयोगकर्ता समूहों, अधिकार समूहों का उपयोग कर सकते",
"Plugin.config.authOpen" => "एक्सेस खोलें",
"Plugin.config.authOpenDesc" => "यात्रा करने की कोई ज़रूरत नहीं है, बाहरी इंटरफ़ेस कॉल के लिए उपयोग किया जा सकता है",
"Plugin.config.authAll" => "धारक",
"Plugin.config.authUser" => "उपयोगकर्ता",
"Plugin.config.authGroup" => "समूह",

Binary file not shown.

View File

@ -157,14 +157,14 @@ return array(
"zip_download_ready" => "Tömörítés után automatikusan letölti, kérem várjon ...",
"set_background" => "Beállítás Desktop Wallpaper",
"share" => "részvény",
"my_share" => "megosztottam",
"group_share" => "Csoportjai külföldi részesedés",
"share_edit" => "szerkesztés Share",
"share_remove" => "megosztás visszavonása",
"share_remove_tips" => "OK Mégse Share? Nyitott kapcsolat nem fog működni.",
"share_path" => "megosztott Path",
"share_title" => "Resource Sharing",
"share_name" => "Share Cím",
"my_share" => "Az én részem",
"group_share" => "Csoport külső megosztása",
"share_edit" => "Részvény szerkesztése",
"share_remove" => "Megosztás törlése",
"share_remove_tips" => "Biztosan törölni szeretné a megosztást? A nyilvános kapcsolat érvényét veszti.",
"share_path" => "Ossza meg az utat",
"share_title" => "Erőforrás megosztás",
"share_name" => "Ossza meg a címet",
"share_time" => "lejárata",
"share_time_desc" => "Null nincs beállítva",
"share_password" => "kivonat jelszó",
@ -733,6 +733,8 @@ return array(
"PluginInstallSelf" => "Kézi telepítés",
"Plugin.config.auth" => "Engedélyek",
"Plugin.config.authDesc" => "Az összes rendelkezésre álló beállítások, vagy adjon a felhasználók, felhasználói csoportok, jogi csoportok használhatják",
"Plugin.config.authOpen" => "Nyílt hozzáférés",
"Plugin.config.authOpenDesc" => "Nem kell meglátogatni a hozzáférést, használható külső interfész hívás",
"Plugin.config.authAll" => "tartó",
"Plugin.config.authUser" => "használó",
"Plugin.config.authGroup" => "csoportok",

Binary file not shown.

View File

@ -157,14 +157,14 @@ return array(
"zip_download_ready" => "Dopo la compressione scaricherà automaticamente, attendere prego ...",
"set_background" => "Imposta come sfondo del desktop",
"share" => "quota",
"my_share" => "ho condiviso",
"group_share" => "Gruppi di quota estera",
"share_edit" => "Modifica Condividi",
"share_remove" => "Unsharing",
"share_remove_tips" => "OK Annulla Condividi? Aprire la connessione avrà esito negativo.",
"share_path" => "percorso condiviso",
"share_title" => "La condivisione delle risorse",
"share_name" => "Condividi Titolo",
"my_share" => "La mia parte",
"group_share" => "Condivisione esterna del gruppo",
"share_edit" => "Modifica condivisione",
"share_remove" => "Annulla condivisione",
"share_remove_tips" => "Sei sicuro di voler annullare la condivisione? La connessione pubblica sarà invalidata.",
"share_path" => "Condividi il percorso",
"share_title" => "Condivisione delle risorse",
"share_name" => "Condividi il titolo",
"share_time" => "scadenza",
"share_time_desc" => "Null non è impostato",
"share_password" => "Password estratto",
@ -733,6 +733,8 @@ return array(
"PluginInstallSelf" => "Installazione manuale",
"Plugin.config.auth" => "permessi",
"Plugin.config.authDesc" => "Tutte le impostazioni disponibili, o specificare gli utenti, gruppi di utenti, gruppi per i diritti possono utilizzare",
"Plugin.config.authOpen" => "Accesso aperto",
"Plugin.config.authOpenDesc" => "Non c'è bisogno di visitare può essere raggiunto, può essere utilizzato per chiamate interfaccia esterne",
"Plugin.config.authAll" => "titolare",
"Plugin.config.authUser" => "utente",
"Plugin.config.authGroup" => "gruppi",

View File

@ -157,14 +157,14 @@ return array(
"zip_download_ready" => "自動的にダウンロードされ、圧縮した後、しばらくお待ちください...",
"set_background" => "デスクトップの壁紙として設定",
"share" => "シェア",
"my_share" => "は、共有しました",
"group_share" => "外国株式のグループ",
"share_edit" => "編集シェア",
"share_remove" => "共有解除",
"share_remove_tips" => "OKキャンセル共有オープン接続は失敗します。",
"share_path" => "共有パス",
"my_share" => "のシェア",
"group_share" => "グループ外部共有",
"share_edit" => "共有を編集",
"share_remove" => "共有をキャンセルする",
"share_remove_tips" => "共有をキャンセルしてもよろしいですか?パブリック接続は無効になります。",
"share_path" => "パスを共有する",
"share_title" => "リソースの共有",
"share_name" => "シェアタイトル",
"share_name" => "タイトルを共有する",
"share_time" => "期限切れ",
"share_time_desc" => "ヌルが設定されていません",
"share_password" => "パスワードを抽出",
@ -733,6 +733,8 @@ return array(
"PluginInstallSelf" => "手動インストール",
"Plugin.config.auth" => "アクセス権",
"Plugin.config.authDesc" => "利用可能な設定のすべて、または指定したユーザー、ユーザーグループは、人権団体が使用することができます",
"Plugin.config.authOpen" => "オープンアクセス",
"Plugin.config.authOpenDesc" => "訪問する必要はありませんアクセスすることができます、外部インターフェイスの呼び出しに使用することができます",
"Plugin.config.authAll" => "ホルダー",
"Plugin.config.authUser" => "ユーザー",
"Plugin.config.authGroup" => "グループ",

Binary file not shown.

View File

@ -156,15 +156,15 @@ return array(
"explorerNew" => "Kod nurodo",
"zip_download_ready" => "Po suspaudimo bus automatiškai atsisiųsti, prašome palaukti ...",
"set_background" => "Nustatyti kaip darbastalio tapetai",
"share" => "dalis",
"my_share" => "aš dalinausi",
"group_share" => "Grupės užsienio akciją",
"share_edit" => "Redaguoti Dalintis",
"share_remove" => "Anuliuojant",
"share_remove_tips" => "Gerai Atšaukti Dalintis? Atviras ryšys žlugs.",
"share_path" => "Bendri kelias",
"share_title" => "bendras išteklių dalijimasis",
"share_name" => "Dalintis Pavadinimas",
"share" => "Dalintis",
"my_share" => "Mano akcija",
"group_share" => "Grupinis išorinis bendravimas",
"share_edit" => "Redaguoti akciją",
"share_remove" => "Atšaukti bendrinimą",
"share_remove_tips" => "Ar tikrai norite atšaukti bendrinimą? Viešasis ryšys bus negaliojantis.",
"share_path" => "Pasidalykite keliu",
"share_title" => "Dalijimasis ištekliais",
"share_name" => "Pasidalykite pavadinimu",
"share_time" => "pasibaigimas",
"share_time_desc" => "Null nenustatytas",
"share_password" => "ištrauka slaptažodį",
@ -733,6 +733,8 @@ return array(
"PluginInstallSelf" => "Rankinis diegimas",
"Plugin.config.auth" => "leidimai",
"Plugin.config.authDesc" => "Visi galimų nustatymų, arba nurodyti vartotojai, vartotojų grupės, teisių grupės gali naudoti",
"Plugin.config.authOpen" => "Atvira prieiga",
"Plugin.config.authOpenDesc" => "Nebūtina aplankyti, gali būti prieinama, gali būti naudojamas išorinio ryšio skambučiams",
"Plugin.config.authAll" => "turėtojas",
"Plugin.config.authUser" => "vartotojas",
"Plugin.config.authGroup" => "grupės",

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -156,15 +156,15 @@ return array(
"explorerNew" => "ligação kod",
"zip_download_ready" => "Após a compressão irá baixar automaticamente, por favor aguarde ...",
"set_background" => "Definir como Papel de parede",
"share" => "ação",
"my_share" => "Eu compartilhei",
"group_share" => "Grupos de participação estrangeira",
"share_edit" => "Editar Partilhar",
"share_remove" => "descompartilhando",
"share_remove_tips" => "OK Cancelar Compartilhar? conexão aberta falhará.",
"share_path" => "Caminho compartilhada",
"share" => "Compartilhe",
"my_share" => "Minha parte",
"group_share" => "Grupo de compartilhamento externo",
"share_edit" => "Editar compartilhamento",
"share_remove" => "Cancelar a partilha",
"share_remove_tips" => "Tem certeza de que deseja cancelar o compartilhamento? A conexão pública será invalidada.",
"share_path" => "Compartilhe o caminho",
"share_title" => "Compartilhamento de recursos",
"share_name" => "Compartilhar Título",
"share_name" => "Compartilhe o título",
"share_time" => "expiração",
"share_time_desc" => "Nulo não está definido",
"share_password" => "password Extract",
@ -733,6 +733,8 @@ return array(
"PluginInstallSelf" => "Instalação manual",
"Plugin.config.auth" => "permissões",
"Plugin.config.authDesc" => "Todas as configurações disponíveis, ou especificar os usuários, grupos de usuários, grupos de direitos pode usar",
"Plugin.config.authOpen" => "Acesso aberto",
"Plugin.config.authOpenDesc" => "Não é possível acessar uma visita, pode ser usada para chamada de interface externa",
"Plugin.config.authAll" => "titular",
"Plugin.config.authUser" => "usuário",
"Plugin.config.authGroup" => "grupos",

View File

@ -157,14 +157,14 @@ return array(
"zip_download_ready" => "După comprimare se va descărca în mod automat, vă rugăm să așteptați ...",
"set_background" => "Setare ca fundal pentru desktop",
"share" => "acțiune",
"my_share" => "am împărtășit",
"group_share" => "Grupurile de cota străi",
"share_edit" => "Editeaza Spune-le prietenilor",
"share_remove" => "Dezactivarea partajării",
"share_remove_tips" => "OK Anulare Spune-le prietenilor? conexiune deschisă va eșua.",
"share_path" => "Cale partajată",
"share_title" => "Schimbul de resurse",
"share_name" => "Spune-le prietenilor Titlu",
"my_share" => "Cota mea",
"group_share" => "Grup de partajare exter",
"share_edit" => "Editați partajarea",
"share_remove" => "Anulați partajarea",
"share_remove_tips" => "Sigur doriți să anulați distribuirea? Conexiunea publică va fi invalidată.",
"share_path" => "Distribuiți calea",
"share_title" => "Distribuirea resurselor",
"share_name" => "Trimiteți titlul",
"share_time" => "expirare",
"share_time_desc" => "Nul nu este setat",
"share_password" => "parola extract",
@ -733,6 +733,8 @@ return array(
"PluginInstallSelf" => "Instalare manuală",
"Plugin.config.auth" => "Permisiuni",
"Plugin.config.authDesc" => "Toate setările disponibile, sau specificați utilizatori, grupuri de utilizatori, grupuri de drepturi pot utiliza",
"Plugin.config.authOpen" => "Acces liber",
"Plugin.config.authOpenDesc" => "Nu este nevoie să accesați vizita, poate fi utilizată pentru apelul la interfața externă",
"Plugin.config.authAll" => "titular",
"Plugin.config.authUser" => "utilizator",
"Plugin.config.authGroup" => "Grupuri",

View File

@ -1,6 +1,6 @@
<div class="box">
<div class="title"><span>Что такое KODExplorer?</span>
</div>
</div><p></p>
<p>KODExplorer - это веб-интерфейс с открытым исходным кодом, созданный для управления онлайн документами и редактирования кода. В нём использован классический оконный интерфейс, как у Windows. Он имеет набор онлайн инструментов для предварительного просмотра, редактирования, выгрузки, скачивания и распаковывания файлов, онлайн воспроизведения музыки. Вы можете работать прямо в браузере, смотреть код, а также напрямую разворачивать свой веб-сайт. Это удобно, быстро и безопасно.</p>
<p><b>—Концепция дизайна—</b>
</p>
@ -19,7 +19,7 @@
<p>Выбор, выделяя указателем мыши, перемещение или загрузка с помощью drag-and-drop, онлайн-редактор, видео-плеер, упаковка и распаковка архивов.</p>
<p>Бесшовная интеграция всех частей; диалоговые окна, многофункциональный диспетчер задач и другие функции.</p>
<p>Онлайн редактор поддерживает множество синтаксисов кода, такие как HTML, CSS, JS, а также многие-многие другие!</p>
<p>Идеально поддерживает китайский язык... <i>А также русский! -Примечание переводчика</i></p>
<p>Идеально поддерживает китайский язык... А также русский! -Примечание переводчика</p>
</div>
<div class="box">
<div class="title"><span>Технологии с открытым исходным кодом</span>

View File

@ -32,4 +32,4 @@
<p><i class="icon-tags"></i> Ctrl+Backspace - Вперед</p>
<p><i class="icon-tags"></i> F2 - Переименовать выбранный файл(папку)</p>
<p><i class="icon-tags"></i> Home/End/стрелки - Выбор файлов и навигация</p>
</div>
</div><p><i class="icon-tags"></i></p>

View File

@ -156,15 +156,15 @@ return array(
"explorerNew" => "KOD ссылка",
"zip_download_ready" => "Архив будет автоматически загружен, пожалуйста подождите...",
"set_background" => "Установить как обои для рабочего стола",
"share" => "Общий доступ",
"my_share" => "Общий доступ",
"group_share" => "Публичная группа",
"share_edit" => "Редактировать общий доступ",
"share_remove" => "Удалить общий доступ",
"share_remove_tips" => "Удалить общий доступ? Файл не будет доступен другим пользователям",
"share_path" => "Путь к файлу",
"share_title" => "Общий доступ",
"share_name" => "Название файла",
"share" => "доля",
"my_share" => "Моя доля",
"group_share" => "Групповой внешний обмен",
"share_edit" => "Изменить долю",
"share_remove" => "Отменить обмен",
"share_remove_tips" => "Вы действительно хотите отменить совместное использование? Общественное соединение будет признано недействительным.",
"share_path" => "Доля пути",
"share_title" => "Совместное использование ресурсов",
"share_name" => "Поделиться заголовком",
"share_time" => "Истекает",
"share_time_desc" => "0 - никогда",
"share_password" => "Пароль",
@ -281,7 +281,7 @@ return array(
"forget_password" => "Забыли пароль",
"forget_password_tips" => "Забыли пароль администратора: <br/> Пожалуйста , войдите на сервер и удалите файл <b>./data/system/install.lock</b>для сброса пароля; <br/><br/> Обычный пользователь: <br/> Пожалуйста, обратитесь к администратору, чтобы сбросить пароль.",
"copyright_desc" => "KodExplorer - это система управления веб-документами. Вы можете использовать её для внутреннего или совместного управления документами, на сервере для управления сайтом, замены FTP, и даже webIDE для интерактивного режима разработки. Вы также можете интегрировать её в другие системы.",
"copyright_contact" => "Свяжитесь с нами: <a href=\"mailto:kodcloud@qq.com\">kodcloud@qq.com</a><br><a href=\"javascript:core.openWindow('http://bbs.kodcloud.com/');\">Обратная связь</a>",
"copyright_contact" => "Свяжитесь с нами: <a href=\"mailto:kodcloud@qq.com\">kodcloud@qq.com</a><a href=\"javascript:core.openWindow('http://bbs.kodcloud.com/');\">Обратная связь</a>",
"copyright_info" => "Copyright © <a href=\"http://kodcloud.com/\" target=\"_blank\">kodcloud.com</a> Все права защищены.",
"copyright_pre" => "Powered by KodExplorer",
"kod_name" => "KodExplorer",
@ -596,8 +596,8 @@ return array(
"action_add" => "Добавить",
"action_edit" => "Изменить",
"action_del" => "Удалить",
"group_role_ext_warning" => "Не разрешено<br/>Переименовывать, редактировать сохранять, загружать, распаковывать файлы",
"group_tips" => "<li>1. Названия групп пользователей не могут быть дублированы, изменение названия группы автоматически переназначит пользователей</li><li>2. Усильте систему безопасности<i>(если PHP в веб-каталоге, это означает, что пользователи смогут изменять его настройки, что недопустимо)</i></li><li>3. Доступ к управлению пользователями и группами; разрешения на просмотр и изменения связаны. Будьте осторожны.</li><li>4. Установка разрешений доступа для группы добавит её членам эти права, однако не измененные разрешения не наследуются</li>",
"group_role_ext_warning" => "Не разрешено<br/>Переименовывать, редактировать сохранять, <br/>загружать, распаковывать файлы",
"group_tips" => "<li>1. Названия групп пользователей не могут быть дублированы, изменение названия группы автоматически переназначит пользователей</li><li>2. Усильте систему безопасности<i>(если PHP в веб-каталоге, это означает, что пользователи смогут изменять его настройки, что недопустимо)</i></li><li>3. Доступ к управлению пользователями и группами; разрешения на просмотр и изменения связаны. Будьте осторожны.</li><li>4. Установка разрешений доступа для группы добавит её членам эти права, однако не измененные разрешения не наследуются<i></i></li>",
"not_null" => "Заполните обязательные поля",
"picture_can_not_null" => "Укажите картинку",
"rname_success" => "Переименовано",
@ -733,6 +733,8 @@ return array(
"PluginInstallSelf" => "Ручная установка",
"Plugin.config.auth" => "Управление доступом",
"Plugin.config.authDesc" => "Укажите владельца, пользователя, группу разрешений или пользователей, имеющих доступ к дополнению",
"Plugin.config.authOpen" => "Открытый доступ",
"Plugin.config.authOpenDesc" => "Не нужно посещать, можно получить доступ, может использоваться для вызова внешнего интерфейса",
"Plugin.config.authAll" => "Все",
"Plugin.config.authUser" => "Пользователь",
"Plugin.config.authGroup" => "Группа",

View File

@ -156,15 +156,15 @@ return array(
"explorerNew" => "kod සබැඳිය",
"zip_download_ready" => "සම්පීඩන ස්වයංක්රීයව download ඇත පසු, කරුණාකර රැදී සිටින්න ...",
"set_background" => "පරිගණක බිතුපත ලෙස සකසන්න",
"share" => "මෙම දැන්වීම",
"my_share" => "ම හවුල්",
"group_share" => "විදේශ කොටස් කණ්ඩායම්",
"share_edit" => "සංස්කරණය කරන්න මෙම දැන්වීම",
"share_remove" => "Unsharing",
"share_remove_tips" => "රි මෙම දැන්වීම අවලංගු කරන්න? විවෘත සම්බන්ධතාවය අසාර්ථක වනු ඇත.",
"share_path" => "හවුල් පාත්",
"share_title" => "සම්පත් දැන්වීම බෙදා ගන්න විද්යුත්",
"share_name" => "ෙම දැන්වීම හිමිකම්",
"share" => "බෙදාගන්න",
"my_share" => "ගේ කොටස",
"group_share" => "බාහිර හුවමාරු කිරීම",
"share_edit" => "කොටස බෙදාගන්න",
"share_remove" => "බෙදාගැනීම අවලංගු කරන්න",
"share_remove_tips" => "ුවමාරු කිරීම අවලංගු කිරීමට අවශ්ය බව ඔබට විශ්වාසද? පොදු සම්බන්ධතාවය අවලංගු වේ.",
"share_path" => "මාර්ගය බෙදාගන්න",
"share_title" => "සම්පත් බෙදාහදා ගැනීම",
"share_name" => "ාතෘකාව බෙදාගන්න",
"share_time" => "කල් ඉකුත් වීම්",
"share_time_desc" => "Null පිහිටුවා නැත",
"share_password" => "රහස් පදය උපුටා ගැනීම",
@ -733,6 +733,8 @@ return array(
"PluginInstallSelf" => "ශ්රමික ස්ථාපනය",
"Plugin.config.auth" => "අවසර",
"Plugin.config.authDesc" => "ලබා ගත හැකි සැකසුම් සියලු, හෝ පරිශීලකයන්, පරිශීලක කණ්ඩායම්, අයිතිවාසිකම් කණ්ඩායම් භාවිතා කළ හැකි නියම",
"Plugin.config.authOpen" => "විවෘත ප්රවේශය",
"Plugin.config.authOpenDesc" => "බාහිර අතුරු මුහුණත ඇමතුම සඳහා භාවිතා කළ හැක",
"Plugin.config.authAll" => "දරන්නා",
"Plugin.config.authUser" => "පරිශීලක",
"Plugin.config.authGroup" => "කණ්ඩායම්",

Binary file not shown.

Binary file not shown.

View File

@ -156,15 +156,15 @@ return array(
"explorerNew" => "код Линк",
"zip_download_ready" => "Након компресије ће аутоматски преузети, сачекајте ...",
"set_background" => "Постави као Десктоп Валлпапер",
"share" => "удео",
"my_share" => "сам поделио",
"group_share" => "Групе страних удела",
"share_edit" => "едит Подели",
"share_remove" => "Унсхаринг",
"share_remove_tips" => "ОК Цанцел Схаре? Отворено веза неће успети.",
"share_path" => "схаред Пут",
"share_title" => "Дељење ресурса",
"share_name" => "Подели Наслов",
"share" => "Подели",
"my_share" => "Мој део",
"group_share" => "Спољна дељења групе",
"share_edit" => "Измени удио",
"share_remove" => "Откажи дељење",
"share_remove_tips" => "Да ли сте сигурни да желите да откажете дељење? Јавна веза ће бити поништена.",
"share_path" => "Дели путању",
"share_title" => "Подела ресурса",
"share_name" => "Поделите наслов",
"share_time" => "истицање",
"share_time_desc" => "Нулл није постављен",
"share_password" => "екстракт лозинка",
@ -733,6 +733,8 @@ return array(
"PluginInstallSelf" => "Ручна инсталација",
"Plugin.config.auth" => "Дозволе",
"Plugin.config.authDesc" => "Све од доступних подешавања, или одређују корисници, корисничке групе, групе за људска права могу користити",
"Plugin.config.authOpen" => "Отворен приступ",
"Plugin.config.authOpenDesc" => "Нема потребе за посјетом може се приступити, може се користити за екстерни позив за позиве",
"Plugin.config.authAll" => "ималац",
"Plugin.config.authUser" => "корисник",
"Plugin.config.authGroup" => "grupe",

Binary file not shown.

View File

@ -156,15 +156,15 @@ return array(
"explorerNew" => "Kod இணைப்பை",
"zip_download_ready" => "சுருக்க தானாகவே பதிவிறக்கம் பிறகு, தயவு செய்து காத்திருக்கவும் ...",
"set_background" => "டெஸ்க்டாப் வால்பேப்பர் அமை",
"share" => "பகிர்",
"my_share" => "நான் பகிர்ந்துள்ளார்",
"group_share" => "வெளிநாட்டு பங்கு குழுக்கள்",
"share_edit" => "திருத்த பகிர்",
"share_remove" => "பகிர்வுநீக்குவதில",
"share_remove_tips" => "சரி ரத்து பகிர்? திறந்த இணைப்பு தோல்வியடையும்.",
"share_path" => "கிரப்பட்ட பாதை",
"share_title" => "வள பகிர்தல்",
"share_name" => "பங்கு தலைப்பு",
"share" => "பகிர்ந்து",
"my_share" => "என் பங்கு",
"group_share" => "குழு வெளிப்புற பகிர்வு",
"share_edit" => "பகிர்வை அனுப்புக",
"share_remove" => "பகிர்வு ரத்துசெய்யவும",
"share_remove_tips" => "பகிர்வு ரத்துசெய்ய விரும்புகிறீர்களா? பொது இணைப்பு செல்லுபடியாகாது.",
"share_path" => "ாதையைப் பகிரவும்",
"share_title" => "வள பகிர்வு",
"share_name" => "தலைப்பு பகிர்ந்த",
"share_time" => "காலாவதி",
"share_time_desc" => "பூஜ்ய அமைக்க முடியாது",
"share_password" => "சாரம் கடவுச்சொல்லை",
@ -733,6 +733,8 @@ return array(
"PluginInstallSelf" => "கையேடு நிறுவல்",
"Plugin.config.auth" => "அனுமதிகள்",
"Plugin.config.authDesc" => "கிடைக்க அமைப்புகளை அனைத்தும், அல்லது குறிப்பிட பயனர்கள், பயனர் குழுக்கள், உரிமைகள் குழுக்கள் பயன்படுத்த முடியும்",
"Plugin.config.authOpen" => "திறந்த அணுகல்",
"Plugin.config.authOpenDesc" => "பார்க்க வேண்டிய அவசியம் இல்லை, வெளிப்புற இடைமுக அழைப்புக்கு பயன்படுத்தலாம்",
"Plugin.config.authAll" => "ஹோல்டர்",
"Plugin.config.authUser" => "பயனர்",
"Plugin.config.authGroup" => "குழுக்கள்",

View File

@ -157,14 +157,14 @@ return array(
"zip_download_ready" => "หลังการบีบอัดจะดาวน์โหลดโดยอัตโนมัติโปรดรอ ...",
"set_background" => "ตั้งเป็นวอลล์เปเปอร์",
"share" => "หุ้น",
"my_share" => "ผมใช้ร่วมกัน",
"group_share" => "กลุ่มของหุ้นต่างประเทศ",
"share_edit" => "แก้ไขแบ่งปัน",
"share_remove" => "ยกเลิกการแชร์",
"share_remove_tips" => "ตกลงยกเลิกร่วมกัน? เปิดการเชื่อมต่อจะล้มเหลว",
"share_path" => "เส้นทางที่ใช้ร่วมกัน",
"share_title" => "ใช้ทรัพยากรร่วมกัน",
"share_name" => "บ่งปันื่อเรื่อ",
"my_share" => "หุ้นของฉัน",
"group_share" => "แชร์กลุ่มจากภายนอก",
"share_edit" => "แก้ไขแชร์",
"share_remove" => "ยกเลิกการแบ่งปัน",
"share_remove_tips" => "คุณแน่ใจหรือไม่ว่าต้องการยกเลิกการแชร์ การเชื่อมต่อสาธารณะจะไม่มีผล",
"share_path" => "แบ่งปันเส้นทาง",
"share_title" => "การแบ่งปันทรัพยากร",
"share_name" => "ชร์ชื่อ",
"share_time" => "การหมดอายุ",
"share_time_desc" => "null ไม่ได้ตั้งค่า",
"share_password" => "สารสกัดจากรหัสผ่าน",
@ -733,6 +733,8 @@ return array(
"PluginInstallSelf" => "ติดตั้งด้วยตนเอง",
"Plugin.config.auth" => "สิทธิ์",
"Plugin.config.authDesc" => "ทั้งหมดของการตั้งค่าที่มีอยู่หรือระบุผู้ใช้กลุ่มผู้ใช้กลุ่มสิทธิสามารถใช้",
"Plugin.config.authOpen" => "เปิดการเข้าถึง",
"Plugin.config.authOpenDesc" => "ไม่จำเป็นต้องไปเยี่ยมชมสามารถเข้าถึงได้สามารถใช้สำหรับการโทรติดต่อภายนอก",
"Plugin.config.authAll" => "เจ้าของ",
"Plugin.config.authUser" => "ผู้ใช้งาน",
"Plugin.config.authGroup" => "กลุ่ม",

Binary file not shown.

View File

@ -156,15 +156,15 @@ return array(
"explorerNew" => "KOD посилання",
"zip_download_ready" => "Після стиснення буде автоматично завантажувати, будь ласка, зачекайте ...",
"set_background" => "Встановити як шпалери для робочого столу",
"share" => "частка",
"my_share" => "Я поділився",
"group_share" => "Групи іноземної частки",
"share_edit" => "редагувати Поділитися",
"share_remove" => "заборонити обмін",
"share_remove_tips" => "OK Скасування Share? Відкрите з'єднання не буде встановлено.",
"share_path" => "Загальний шлях",
"share_title" => "Спільне використання ресурсів",
"share_name" => "частка Назва",
"share" => "Поділитися",
"my_share" => "Моя частка",
"group_share" => "Груповий зовнішній обмін",
"share_edit" => "Редагувати публікацію",
"share_remove" => "Скасувати обмін",
"share_remove_tips" => "Ви впевнені, що хочете скасувати спільний доступ? Публічне з'єднання буде недійсним.",
"share_path" => "Поділіться цим шляхом",
"share_title" => "Обмін ресурсами",
"share_name" => "Поділіться заголовком",
"share_time" => "витікання",
"share_time_desc" => "Нуль не встановлено",
"share_password" => "витяг пароля",
@ -733,6 +733,8 @@ return array(
"PluginInstallSelf" => "Ручна установка",
"Plugin.config.auth" => "права доступу",
"Plugin.config.authDesc" => "Всі доступні настройки, або вказати користувачів, групи користувачів, групи прав можна використовувати",
"Plugin.config.authOpen" => "Відкритий доступ",
"Plugin.config.authOpenDesc" => "Не потрібно відвідувати, можна отримати доступ, можна використовувати для виклику зовнішнього інтерфейсу",
"Plugin.config.authAll" => "держатель",
"Plugin.config.authUser" => "користувач",
"Plugin.config.authGroup" => "групи",

Binary file not shown.

View File

@ -156,15 +156,15 @@ return array(
"explorerNew" => "liên kết kod",
"zip_download_ready" => "Sau khi nén sẽ tự động tải về, vui lòng đợi ...",
"set_background" => "Đặt làm hình nền",
"share" => "phần",
"my_share" => "tôi chia sẻ",
"group_share" => "Các nhóm cổ phiếu nước ngoài",
"share_edit" => "Sửa Share",
"share_remove" => "không chia sẻ",
"share_remove_tips" => "OK Hủy Share? Mở kết nối sẽ thất bại.",
"share_path" => "Đường dẫn chung",
"share_title" => "Resource Sharing",
"share_name" => "Chia sẻ đề",
"share" => "Chia sẻ",
"my_share" => "Chia sẻ của tôi",
"group_share" => "Chia sẻ bên ngoài nhóm",
"share_edit" => "Chỉnh sửa chia sẻ",
"share_remove" => "Huỷ chia sẻ",
"share_remove_tips" => "Bạn có chắc chắn muốn hủy chia sẻ? Kết nối công cộng sẽ bị vô hiệu.",
"share_path" => "Chia sẻ con đường",
"share_title" => "Chia sẻ tài nguyên",
"share_name" => "Chia sẻ tiêu đề",
"share_time" => "Hết hạn",
"share_time_desc" => "Null không được thiết lập",
"share_password" => "mật khẩu Extract",
@ -733,6 +733,8 @@ return array(
"PluginInstallSelf" => "Cài đặt thủ công",
"Plugin.config.auth" => "Quyền",
"Plugin.config.authDesc" => "Tất cả các thiết lập có sẵn, hoặc chỉ định người dùng, nhóm người dùng, các nhóm nhân quyền có thể sử dụng",
"Plugin.config.authOpen" => "Mở truy cập",
"Plugin.config.authOpenDesc" => "Không cần truy cập có thể được truy cập, có thể được sử dụng cho các cuộc gọi giao diện bên ngoài",
"Plugin.config.authAll" => "người nắm",
"Plugin.config.authUser" => "người sử dụng",
"Plugin.config.authGroup" => "nhóm",

View File

@ -156,15 +156,15 @@ return array(
"explorerNew" => "kod 链接",
"zip_download_ready" => "压缩后会自动下载,请稍后...",
"set_background" => "设置为桌面壁纸",
"share" => "",
"my_share" => "我的",
"group_share" => "群组对外",
"share_edit" => "编辑",
"share_remove" => "取消",
"share_remove_tips" => "确定取消享?公开连接将失效.",
"share_path" => "享路径",
"share_title" => "资源",
"share_name" => "享标题",
"share" => "",
"my_share" => "我的",
"group_share" => "群组对外",
"share_edit" => "编辑",
"share_remove" => "取消",
"share_remove_tips" => "确定取消享?公开连接将失效.",
"share_path" => "享路径",
"share_title" => "资源",
"share_name" => "享标题",
"share_time" => "到期时间",
"share_time_desc" => "为空则不设置",
"share_password" => "提取密码",
@ -733,6 +733,8 @@ return array(
"PluginInstallSelf" => "手动安装",
"Plugin.config.auth" => "使用权限",
"Plugin.config.authDesc" => "设置所有人可用,或者指定用户、用户组、权限组可以使用",
"Plugin.config.authOpen" => "开放访问",
"Plugin.config.authOpenDesc" => "无需登陆皆可访问,可用于对外接口调用",
"Plugin.config.authAll" => "所有人",
"Plugin.config.authUser" => "指定用户",
"Plugin.config.authGroup" => "指定群组",

View File

@ -156,15 +156,15 @@ return array(
"explorerNew" => "kod 鏈接",
"zip_download_ready" => "壓縮後會自動下載,請稍後...",
"set_background" => "設定為桌面壁紙",
"share" => "共用",
"my_share" => "我的共用",
"group_share" => "群組對外",
"share_edit" => "編輯共用",
"share_remove" => "取消共用",
"share_remove_tips" => "確定取消共用?公開連接將失效.",
"share_path" => "共用路径",
"share_title" => "資源共用",
"share_name" => "共用標題",
"share" => "分享",
"my_share" => "我的分享",
"group_share" => "群組對外",
"share_edit" => "編輯分享",
"share_remove" => "取消分享",
"share_remove_tips" => "確定取消分享?公開連接將失效.",
"share_path" => "分享路徑",
"share_title" => "資源分享",
"share_name" => "分享標題",
"share_time" => "到期時間",
"share_time_desc" => "为空则不設定",
"share_password" => "提取密碼",
@ -733,6 +733,8 @@ return array(
"PluginInstallSelf" => "手動安裝",
"Plugin.config.auth" => "使用權限",
"Plugin.config.authDesc" => "設置所有人可用,或者指定用戶、用戶組、權限組可以使用",
"Plugin.config.authOpen" => "開放訪問",
"Plugin.config.authOpenDesc" => "無需登陸皆可訪問,可用於對外接口調用",
"Plugin.config.authAll" => "所有人",
"Plugin.config.authUser" => "指定用戶",
"Plugin.config.authGroup" => "指定群組",

View File

@ -11,12 +11,21 @@ $config['settings'] = array(
'downloadUrlTime' => 0, //下载地址生效时间按秒计算0代表不限制
'apiLoginTonken' => '', //设定则认为开启服务端api通信登陆同时作为加密密匙
'updloadChunkSize' => 1024*1024*0.4,//0.4M;分片上传大小设定;需要小于php.ini上传限制的大小
'updloadThreads' => 5, //上传并发数;部分低配服务器上传失败则将此设置为1
'updloadBindary' => 1, //以二进制方式上传;后端服务器以php://input接收;0则为传统方式上传
'paramRewrite' => false, //开启url 去除? 直接跟参数
'httpSendFile' => false, //调用webserver下载 http://www.laruence.com/2012/05/02/2613.html;
//https://www.lovelucy.info/x-sendfile-in-nginx.html
'pluginServer' => "https://api.kodcloud.com/?",
'staticPath' => "./static/", //静态文件目录,可以配置到cdn;
'pluginHost' => PLUGIN_HOST //静态文件目录
);
// windows upload threads;兼容不支持并发的服务器
if($config['systemOS'] == 'windows'){
$config['settings']['updloadThreads'] = 1;
}
$config['settings']['appType'] = array(
array('type' => 'tools','name' => 'app_group_tools','class' => 'icon-suitcase'),
array('type' => 'game','name' => 'app_group_game','class' => 'icon-dashboard'),
@ -139,7 +148,7 @@ $config['settingAll'] = array(
'themeall' => "mac,win10,win7,metro,metro_green,metro_purple,metro_pink,metro_orange,alpha_image,alpha_image_sun,alpha_image_sky,diy",
'codethemeall' => "chrome,clouds,crimson_editor,eclipse,github,kuroir,solarized_light,tomorrow,xcode,ambiance,monokai,idle_fingers,pastel_on_dark,solarized_dark,twilight,tomorrow_night_blue,tomorrow_night_eighties",
'codefontall' => 'Consolas,Courier,DejaVu Sans Mono,Liberation Mono,Menlo,Monaco,Monospace,Source Code Pro',
'codefontall' => 'Source Code Pro,Consolas,Courier,DejaVu Sans Mono,Liberation Mono,Menlo,Monaco,Monospace',
'wallall' => "1,2,3,4,5,6,7,8,9,10,11,12,13"
);
@ -152,7 +161,7 @@ $config['roleSetting'] = array(
'mkdir','mkfile','pathRname','pathDelete','zip','unzip','unzipList',
'pathCopy','pathCute','pathCuteDrag','pathCopyDrag','clipboard','pathPast',
'serverDownload','fileUpload','search','pathDeleteRecycle',
'fileDownload','zipDownload','fileDownloadRemove','fileProxy','officeView','officeSave'),
'fileDownload','zipDownload','fileDownloadRemove','fileProxy','fileSave','officeView','officeSave'),
'app' => array('userApp','initApp','add','edit','del'),//
'editor' => array('fileGet','fileSave'),
@ -178,7 +187,7 @@ $config['pathRoleDefine'] = array(
),
'write' => array(
'add' => array('explorer.mkdir','explorer.mkfile','explorer.zip','explorer.unzip','app.userApp'),
'edit' => array('explorer.officeSave','explorer.imageRotate','editor.fileSave'),
'edit' => array('explorer.officeSave','explorer.imageRotate','editor.fileSave','explorer.fileSave'),
'change'=> array('explorer.pathRname','explorer.pathPast','explorer.pathCopyDrag','explorer.pathCuteDrag'),
'upload'=> array('explorer.fileUpload','explorer.serverDownload'),
'remove'=> array('explorer.pathDelete','explorer.pathCute'),

View File

@ -1,2 +1,2 @@
<?php
define('KOD_VERSION','4.21');
define('KOD_VERSION','4.22');

View File

@ -11,10 +11,17 @@
@ignore_user_abort(true);
@set_time_limit(3600*2);//set_time_limit(0) 1day
@ini_set('memory_limit','2028M');//2G;
include('./../../../app/api/sso.class.php');
if(!SSO::sessionCheck('AdminerAccess')){
die('Not Authorized!');
$host = "http://".$_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"];
$host = substr($host,0,strpos($host,'plugins/adminer'));
SSO::sessionAuth('AdminerAccess','check=roleID&value=1',$host);
class AdminerSoftware extends Adminer {
function login($login, $password) {return true;}
}
function adminer_object() {return new AdminerSoftware;}
error_reporting(6135);$Lc=!preg_match('~^(unsafe_raw)?$~',ini_get("filter.default"));if($Lc||ini_get("filter.default_flags")){foreach(array('_GET','_POST','_COOKIE','_SERVER')as$X){$Wh=filter_input_array(constant("INPUT$X"),FILTER_UNSAFE_RAW);if($Wh)$$X=$Wh;}}if(function_exists("mb_internal_encoding"))mb_internal_encoding("8bit");if(isset($_GET["file"])){if($_SERVER["HTTP_IF_MODIFIED_SINCE"]){header("HTTP/1.1 304 Not Modified");exit;}header("Expires: ".gmdate("D, d M Y H:i:s",time()+365*24*60*60)." GMT");header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");header("Cache-Control: immutable");if($_GET["file"]=="favicon.ico"){header("Content-Type: image/x-icon");echo

View File

@ -1,5 +0,0 @@
<?php
include('./../../../app/api/sso.class.php');
SSO::sessionAuth('loginTest','check=roleID&value=1','http://127.0.0.1/kod/kod_dev/');
echo '登陆成功!'.$_GET['a'];

View File

@ -9,18 +9,18 @@ class adminerPlugin extends PluginBase{
));
}
public function addMenu(){
$config = $this->getConfig();
$subMenu = $config['menuSubMenu'];
navbar_menu_add(array(
'name' => 'Adminer',
'icon' => $this->appIcon(),
'url' => $this->pluginApi,
'target' => '_blank',
'subMenu' => '1',
'subMenu' => $subMenu,
'use' => '1'
));
}
public function index(){
include(LIB_DIR.'api/sso.class.php');
SSO::sessionSet('AdminerAccess');
header('Location: '.$this->pluginHost.'adminer/');
}
}

View File

@ -2,5 +2,5 @@
return array(
'Adminer.meta.title' => "数据库管理工具",
'Adminer.meta.desc' => "Adminer 是一款全功能的数据库管理工具,类似phpMyAdmin相比而言更轻量强大。<br/><br/>支持管理的数据库MySQL, PostgreSQL, SQLite, MS SQL, Oracle, SimpleDB, Elasticsearch, MongoDB, Firebird"
'Adminer.meta.desc' => "Adminer 是一款全功能的数据库管理工具,类似phpMyAdmin相比而言更轻量强大。<br/><br/>支持管理的数据库MySQL, PostgreSQL, SQLite, MS SQL, Oracle, SimpleDB, Elasticsearch, MongoDB, Firebird<br/>由于安全要求比较高,此插件仅限管理员可以使用"
);

View File

@ -16,12 +16,10 @@
"homePage":"https://www.adminer.org"
},
"configItem":{
"pluginAuth":{
"type":"userSelect",
"value":"role:1",
"display":"{{LNG.Plugin.config.auth}}",
"desc":"{{LNG.Plugin.config.authDesc}}",
"require":1
"menuSubMenu":{
"type":"switch",
"value":1,
"display":"{{LNG.menu_sub_menu}}"
}
}
}

View File

@ -18,7 +18,7 @@
"tabs":[
{
"name":"{{LNG.Plugin.tab.basic}}",
"field":["sep001","pluginAuth","openWith","apiServer"]
"field":["pluginAuth","pluginAuthOpen","sep001","openWith","apiServer"]
}
]
},
@ -29,6 +29,14 @@
"desc":"{{LNG.Plugin.config.authDesc}}",
"require":1
},
"pluginAuthOpen":{
"type":"switch",
"value":0,
"display":"{{LNG.Plugin.config.authOpen}}",
"desc":"{{LNG.Plugin.config.authOpenDesc}}",
"require":1
},
"sep001":"<hr/>",
"openWith":{
"type":"radio",
"value":"dialog",
@ -45,7 +53,6 @@
"desc":"{{LNG.officeLive.Config.apiServerDesc}}",
"require":1
},
"sep1001":"<hr/>",
"fileExt":{
"type":"tags",
"display":"{{LNG.Plugin.Config.fileExt}}",

View File

@ -36,7 +36,7 @@
}
div.navbar-inverse .navbar-inner {
background:#eee;
background:#eee;filter:none;
background-image: linear-gradient(to bottom,#fff,#eee);
border-bottom: 1px solid #ddd;
background-repeat: repeat-x;
@ -103,6 +103,11 @@
}
?>
</style>
<script type="text/javascript">
if(!window.addEventListener){
window.addEventListener = window.attachEvent;
}
</script>
<link href="./static/style/font-awesome/css/font-awesome.css?ver=<?php echo KOD_VERSION;?>" rel="stylesheet">
<!--[if IE 7]>
<link rel="stylesheet" href="./static/style/font-awesome/css/font-awesome-ie7.css">

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 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 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 one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -517,6 +517,7 @@ ace.define("ace/ext/searchboxKod", ["require", "exports", "module", "ace/lib/dom
this.historySearch.add(this.searchInput.value);
};
this.findPrev = function() {
console.log(123123);
this.find(true, true);
//添加历史记录
this.historySearch.add(this.searchInput.value);

View File

@ -82,9 +82,6 @@ var quoteEncode = function(str){
str = str.replace(/(['"])/g,'\\$1');
return str;
}
var canvasSupport = function() {
return !!document.createElement('canvas').getContext;
}
var isWap = function(){
if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){
return true;
@ -915,7 +912,7 @@ var $sizeInt = function($obj){
}
//点击水波效果;按钮
var loadRipple = function(search_arr,ignore_arr){
var loadRipple = function(search_arr,ignoreArr){
var UUID = function(){
var time = (new Date()).valueOf();
return 'uuid_'+parseInt(time/1000)+'_'+Math.ceil(Math.random()*10000)
@ -946,8 +943,8 @@ var loadRipple = function(search_arr,ignore_arr){
return '';
}
var isIgnore = function($target){
for (var i = 0; i < ignore_arr.length; i++) {
var select = ignore_arr[i];
for (var i = 0; i < ignoreArr.length; i++) {
var select = ignoreArr[i];
if($target.closest(select).length !=0){//从当前想上查找
return true;
}
@ -967,13 +964,13 @@ var loadRipple = function(search_arr,ignore_arr){
}
var uuid = 'ripple-'+UUID();
var father = $target;//$(this) $target
var circle_width = $target.outerWidth();
var circleWidth = $target.outerWidth();
$('<div class="ripple-father" id="'+uuid+'"><div class="ripple"></div></div>').appendTo(father);
if($target.outerWidth()<$target.outerHeight()){
circle_width = $target.outerHeight();
circleWidth = $target.outerHeight();
}
circle_width = circle_width>150?150:circle_width;
circle_width = circle_width<50?50:circle_width;
circleWidth = circleWidth>150?150:circleWidth;
circleWidth = circleWidth<50?50:circleWidth;
var $ripp = $('#'+uuid).css({
left: 0,
@ -989,17 +986,17 @@ var loadRipple = function(search_arr,ignore_arr){
}
$('#'+uuid+' .ripple').css({
'background':$target.css('color'),
"margin-left":e.pageX - circle_width/2 - $target.offset().left,
"margin-top": e.pageY - circle_width/2 - $target.offset().top,
"width": circle_width,
"height":circle_width
"margin-left":e.pageX - circleWidth/2 - $target.offset().left,
"margin-top": e.pageY - circleWidth/2 - $target.offset().top,
"width": circleWidth,
"height":circleWidth
});
var animateTime = 700;
setTimeout(function(){
$ripp.find('.ripple').css('transform',"scale(2.5)");
},animateTime);
$(this).one('mouseup',function(){
$(this).one('click mouseup mouseleave',function(e){
$ripp.animate({'opacity':0},400,function(){
$ripp.remove();
});
@ -1470,7 +1467,17 @@ var MaskView = (function(){
return false;
}
$.supportUploadFolder = function(){
if(isWap()){
return false;
}
var el = document.createElement('input');
el.type = 'file';
return typeof el.webkitdirectory !== "undefined" || typeof el.directory !== "undefined";
};
$.supportCanvas = function() {
return !!document.createElement('canvas').getContext;
}
$.supportCss3 = function(style){
if(!style) style = 'box-shadow';
var prefix = ['webkit', 'Moz', 'ms', 'o'],
@ -1535,6 +1542,27 @@ var MaskView = (function(){
});
return this;
},
myDbclick:function(callback){
var timeout = 0.5;
$(this).die('mouseup').live('mouseup',function(e){
if(e.which !== 1) return;
var preClick = $(this).data('myDbclick');
var time = timeFloat();
if(!preClick){
$(this).data('myDbclick',time);
return;
}
if(time - preClick <= timeout){
callback && callback(e);
}
$(this).data('myDbclick',time);
return true;
});
return this;
},
inScreen:function(isCenter){//是否在屏幕中 ;isCenter 按中心点来判断
var el = $(this).get(0);
if (typeof jQuery === "function" && el instanceof jQuery) {
@ -1944,6 +1972,7 @@ functionHooks.initEnv();
//yyyy-mm-dd H:i:s or yy-mm-dd to timestamp
var strtotime = function(datetime){
var tmp_datetime = datetime.replace(/:/g,'-');
tmp_datetime = tmp_datetime.replace(/\//g,'-');
tmp_datetime = tmp_datetime.replace(/ /g,'-');
var arr = tmp_datetime.split("-");
var y=arr[0];

View File

@ -8,8 +8,11 @@
*{box-sizing:content-box;}
body, input, textarea{
-webkit-font-smoothing: antialiased;font-smoothing: antialiased;
font-family: "Helvetica Neue", Helvetica, "Microsoft Yahei", , "Lantinghei SC", STXihei, "WenQuanYi Micro Hei", Arial, sans-serif !important;
font-family: "Helvetica Neue", Helvetica, "Microsoft Yahei",
, "Lantinghei SC", STXihei, "WenQuanYi Micro Hei", Arial, sans-serif !important;
}
/* 图片方向校正 https://gxnotes.com/article/126807.html */
img {image-orientation: from-image;}
/* kod ie8 hack*/
@media \0screen\,screen\9 {

File diff suppressed because one or more lines are too long

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