parent
ce39b4197f
commit
16291565bd
21
ChangeLog.md
21
ChangeLog.md
|
@ -1,3 +1,24 @@
|
||||||
|
### ver4.22 `2017/9/20`
|
||||||
|
-----
|
||||||
|
#### update:
|
||||||
|
- 压缩文件预览:tab栏中文问题;插件filePath文件名优化记录
|
||||||
|
- 上传兼容性优化;支持自定义多线程上传,支持自定义是否二进制上传
|
||||||
|
- 其他优化: iframe 点击事件冒泡到上级;编辑器主题黑色样式优化;树目录自动记录以及目录展开状态优化;文件大小逗号分隔;
|
||||||
|
- 图片缩略图缓存问题优化
|
||||||
|
- 图片exif插件;图片预览时自动修正方向
|
||||||
|
- ie8: 样式调整优化,js报错兼容优化
|
||||||
|
- 文件夹双击事件优化:系统双击鼠标位置不懂情况下不触发双击事件问题
|
||||||
|
- 文件保存插件挂载点
|
||||||
|
|
||||||
|
#### fix bug
|
||||||
|
- 桌面图片缩略图加载慢问题
|
||||||
|
- 解压缩含中文路径优化
|
||||||
|
- 移动端
|
||||||
|
- 点击不了问题;右键菜单二级菜单无法点击问题
|
||||||
|
- 移动端字体问题
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### ver4.21 `2017/9/11`
|
### ver4.21 `2017/9/11`
|
||||||
-----
|
-----
|
||||||
#### update:
|
#### update:
|
||||||
|
|
|
@ -57,8 +57,7 @@ class SSO{
|
||||||
|
|
||||||
static public function sessionCheck($key,$value='success'){
|
static public function sessionCheck($key,$value='success'){
|
||||||
$session = self::init();
|
$session = self::init();
|
||||||
if( isset($session[$key]) &&
|
if( isset($session[$key]) && $session[$key] == $value){
|
||||||
$session[$key] == $value){
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
@ -79,6 +78,7 @@ class SSO{
|
||||||
':'.$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
|
':'.$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
|
||||||
}
|
}
|
||||||
if(!self::sessionCheck($appKey)){
|
if(!self::sessionCheck($appKey)){
|
||||||
|
session_destroy();
|
||||||
header('Location: '.$authUrl.'&link='.rawurlencode($appUrl));
|
header('Location: '.$authUrl.'&link='.rawurlencode($appUrl));
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,6 @@
|
||||||
class api extends Controller{
|
class api extends Controller{
|
||||||
function __construct(){
|
function __construct(){
|
||||||
parent::__construct();
|
parent::__construct();
|
||||||
$this->tpl = TEMPLATE.'api/';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -16,7 +16,7 @@ class app extends Controller{
|
||||||
* 用户首页展示
|
* 用户首页展示
|
||||||
*/
|
*/
|
||||||
public function index() {
|
public function index() {
|
||||||
$this->display(TEMPLATE.'app/index.html');
|
$this->display('index.html');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function initApp(){
|
public function initApp(){
|
||||||
|
|
|
@ -9,7 +9,6 @@
|
||||||
class desktop extends Controller{
|
class desktop extends Controller{
|
||||||
function __construct() {
|
function __construct() {
|
||||||
parent::__construct();
|
parent::__construct();
|
||||||
$this->tpl = TEMPLATE.'desktop/';
|
|
||||||
}
|
}
|
||||||
public function index() {
|
public function index() {
|
||||||
$wap = is_wap() && (!isset($_COOKIE['forceWap']) || $_COOKIE['forceWap'] == '1');
|
$wap = is_wap() && (!isset($_COOKIE['forceWap']) || $_COOKIE['forceWap'] == '1');
|
||||||
|
|
|
@ -9,7 +9,6 @@
|
||||||
class editor extends Controller{
|
class editor extends Controller{
|
||||||
function __construct() {
|
function __construct() {
|
||||||
parent::__construct();
|
parent::__construct();
|
||||||
$this->tpl = TEMPLATE . 'editor/';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 多文件编辑器
|
// 多文件编辑器
|
||||||
|
@ -71,7 +70,7 @@ class editor extends Controller{
|
||||||
if (!path_readable($filepath)){
|
if (!path_readable($filepath)){
|
||||||
show_json(LNG('no_permission_read_all'),false);
|
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);
|
show_json(LNG('edit_too_big'),false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,6 @@ class explorer extends Controller{
|
||||||
public $user;
|
public $user;
|
||||||
public function __construct(){
|
public function __construct(){
|
||||||
parent::__construct();
|
parent::__construct();
|
||||||
$this->tpl = TEMPLATE."explorer/";
|
|
||||||
$this->user = $_SESSION['kodUser'];
|
$this->user = $_SESSION['kodUser'];
|
||||||
if (isset($this->in['path'])) {
|
if (isset($this->in['path'])) {
|
||||||
//游客访问别人zip,解压到**目录;入口不检测权限
|
//游客访问别人zip,解压到**目录;入口不检测权限
|
||||||
|
@ -626,6 +625,7 @@ class explorer extends Controller{
|
||||||
$error++;
|
$error++;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
//show_json($pathThis,false,file_exists($pathThis));
|
||||||
|
|
||||||
// 群组文件删除,移动到个人回收站。
|
// 群组文件删除,移动到个人回收站。
|
||||||
// $GLOBALS['kodPathType'] == KOD_GROUP_SHARE ||
|
// $GLOBALS['kodPathType'] == KOD_GROUP_SHARE ||
|
||||||
|
@ -1015,10 +1015,8 @@ class explorer extends Controller{
|
||||||
if (!is_dir(DATA_THUMB)){
|
if (!is_dir(DATA_THUMB)){
|
||||||
mk_dir(DATA_THUMB);
|
mk_dir(DATA_THUMB);
|
||||||
}
|
}
|
||||||
|
|
||||||
$image = $this->path;
|
$image = $this->path;
|
||||||
$imageMd5 = @md5_file($image);//文件md5
|
$imageMd5 = @md5_file($image);//文件md5
|
||||||
|
|
||||||
if (strlen($imageMd5)<5) {
|
if (strlen($imageMd5)<5) {
|
||||||
$imageMd5 = md5($image);
|
$imageMd5 = md5($image);
|
||||||
}
|
}
|
||||||
|
@ -1108,15 +1106,15 @@ class explorer extends Controller{
|
||||||
|
|
||||||
//通用缩略图
|
//通用缩略图
|
||||||
public function fileThumb(){
|
public function fileThumb(){
|
||||||
Hook::trigger("explorer.fileThumb",$this->path);
|
Hook::trigger("explorer.fileThumbStart",$this->path);
|
||||||
}
|
}
|
||||||
//通用预览
|
//通用预览
|
||||||
public function fileView(){
|
public function fileView(){
|
||||||
Hook::trigger("explorer.fileView",$this->path);
|
Hook::trigger("explorer.fileViewStart",$this->path);
|
||||||
}
|
}
|
||||||
//通用保存
|
//通用保存
|
||||||
public function fileSave(){
|
public function fileSave(){
|
||||||
Hook::trigger("explorer.fileSave",$this->path);
|
Hook::trigger("explorer.fileSaveStart",$this->path);
|
||||||
}
|
}
|
||||||
//代理输出
|
//代理输出
|
||||||
public function fileProxy(){
|
public function fileProxy(){
|
||||||
|
@ -1372,7 +1370,7 @@ class explorer extends Controller{
|
||||||
$list['info']['role'] = "owner";
|
$list['info']['role'] = "owner";
|
||||||
}
|
}
|
||||||
if($GLOBALS['isRoot']){
|
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']){
|
if($GLOBALS['isRoot']){
|
||||||
$list['groupSpaceUse'] = $group['config'];//自己
|
$list['groupSpaceUse'] = $group['config'];//自己
|
||||||
$list['info']['role'] = 'owner';
|
$list['info']['role'] = 'owner';
|
||||||
$list['info']['adminRealPath'] = GROUP_PATH.$group['path'].'/home/';
|
$list['info']['adminRealPath'] = $GLOBALS['kodPathPre'];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,6 @@
|
||||||
class pluginApp extends Controller{
|
class pluginApp extends Controller{
|
||||||
function __construct() {
|
function __construct() {
|
||||||
parent::__construct();
|
parent::__construct();
|
||||||
$this->tpl = TEMPLATE.'pluginApp/';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//?pluginApp/to/epubReader/index&a=1
|
//?pluginApp/to/epubReader/index&a=1
|
||||||
|
@ -20,17 +19,22 @@ class pluginApp extends Controller{
|
||||||
public function to() {
|
public function to() {
|
||||||
$route = $this->in['URLremote'];
|
$route = $this->in['URLremote'];
|
||||||
if(count($route) >= 3){
|
if(count($route) >= 3){
|
||||||
|
$app = $route[2];
|
||||||
|
$action = $route[3];
|
||||||
|
|
||||||
if(count($route) == 3){
|
if(count($route) == 3){
|
||||||
$route[3] = 'index';
|
$action = 'index';
|
||||||
}
|
}
|
||||||
$model = $this->loadModel('Plugin');
|
$model = $this->loadModel('Plugin');
|
||||||
if(!$model->checkAuth($route[2])){
|
if(!$model->checkAuth($app)){
|
||||||
show_tips("Plugin not open,or you have't permission[".$route[2]."]");
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,6 @@ class setting extends Controller{
|
||||||
* 用户首页展示
|
* 用户首页展示
|
||||||
*/
|
*/
|
||||||
public function index() {
|
public function index() {
|
||||||
$this->tpl = TEMPLATE.'setting/';
|
|
||||||
$this->display('index.html');
|
$this->display('index.html');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,6 @@ class share extends Controller{
|
||||||
private $path;
|
private $path;
|
||||||
function __construct(){
|
function __construct(){
|
||||||
parent::__construct();
|
parent::__construct();
|
||||||
$this->tpl = TEMPLATE.'share/';
|
|
||||||
$auth = systemRole::getInfo(1);//经过role检测
|
$auth = systemRole::getInfo(1);//经过role检测
|
||||||
|
|
||||||
$arrNotCheck = array('commonJs');
|
$arrNotCheck = array('commonJs');
|
||||||
|
@ -222,10 +221,13 @@ class share extends Controller{
|
||||||
'versionDesc' => $versionDesc,
|
'versionDesc' => $versionDesc,
|
||||||
'kodID' => md5(BASIC_PATH.$this->config['settingSystem']['systemPassword']),
|
'kodID' => md5(BASIC_PATH.$this->config['settingSystem']['systemPassword']),
|
||||||
|
|
||||||
'uploadMax' => file_upload_size(),
|
|
||||||
'jsonData' => "",
|
'jsonData' => "",
|
||||||
'sharePage' => 'share',
|
'sharePage' => 'share',
|
||||||
'settings' => array(
|
'settings' => array(
|
||||||
|
'updloadChunkSize' => file_upload_size(),
|
||||||
|
'updloadThreads' => $this->config['settings']['updloadThreads'],
|
||||||
|
'updloadBindary' => $this->config['settings']['updloadBindary'],
|
||||||
|
|
||||||
'paramRewrite' => $this->config['settings']['paramRewrite'],
|
'paramRewrite' => $this->config['settings']['paramRewrite'],
|
||||||
'pluginServer' => $this->config['settings']['pluginServer'],
|
'pluginServer' => $this->config['settings']['pluginServer'],
|
||||||
//'appType' => $this->config['settings']['appType']
|
//'appType' => $this->config['settings']['appType']
|
||||||
|
|
|
@ -16,7 +16,6 @@ class user extends Controller{
|
||||||
//php5.4 bug;需要重新读取一次
|
//php5.4 bug;需要重新读取一次
|
||||||
@session_start();
|
@session_start();
|
||||||
@session_write_close();
|
@session_write_close();
|
||||||
$this->tpl = TEMPLATE . 'user/';
|
|
||||||
if(!isset($_SESSION)){//避免session不可写导致循环跳转
|
if(!isset($_SESSION)){//避免session不可写导致循环跳转
|
||||||
$this->login(DATA_PATH."<br/>".LNG('path_can_not_write_data') );
|
$this->login(DATA_PATH."<br/>".LNG('path_can_not_write_data') );
|
||||||
}else{
|
}else{
|
||||||
|
@ -249,9 +248,11 @@ class user extends Controller{
|
||||||
|
|
||||||
'myhome' => MYHOME,
|
'myhome' => MYHOME,
|
||||||
'myDesktop' => MYHOME.DESKTOP_FOLDER.'/',
|
'myDesktop' => MYHOME.DESKTOP_FOLDER.'/',
|
||||||
'uploadMax' => file_upload_size(),
|
|
||||||
|
|
||||||
'settings' => array(
|
'settings' => array(
|
||||||
|
'updloadChunkSize' => file_upload_size(),
|
||||||
|
'updloadThreads' => $this->config['settings']['updloadThreads'],
|
||||||
|
'updloadBindary' => $this->config['settings']['updloadBindary'],
|
||||||
|
|
||||||
'paramRewrite' => $this->config['settings']['paramRewrite'],
|
'paramRewrite' => $this->config['settings']['paramRewrite'],
|
||||||
'pluginServer' => $this->config['settings']['pluginServer'],
|
'pluginServer' => $this->config['settings']['pluginServer'],
|
||||||
'appType' => $this->config['settings']['appType']
|
'appType' => $this->config['settings']['appType']
|
||||||
|
@ -499,6 +500,7 @@ class user extends Controller{
|
||||||
$auth['explorer.pathCopyDrag'] = $auth['explorer.pathCuteDrag'];
|
$auth['explorer.pathCopyDrag'] = $auth['explorer.pathCuteDrag'];
|
||||||
|
|
||||||
$auth['explorer.officeSave'] = $auth['editor.fileSave'];
|
$auth['explorer.officeSave'] = $auth['editor.fileSave'];
|
||||||
|
$auth['explorer.fileSave'] = $auth['editor.fileSave'];
|
||||||
$auth['explorer.imageRotate'] = $auth['editor.fileSave'];
|
$auth['explorer.imageRotate'] = $auth['editor.fileSave'];
|
||||||
$auth['explorer.fileDownloadRemove']= $auth['explorer.fileDownload'];
|
$auth['explorer.fileDownloadRemove']= $auth['explorer.fileDownload'];
|
||||||
$auth['explorer.zipDownload'] = $auth['explorer.fileDownload'];
|
$auth['explorer.zipDownload'] = $auth['explorer.fileDownload'];
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -11,7 +11,6 @@
|
||||||
*/
|
*/
|
||||||
abstract class Controller {
|
abstract class Controller {
|
||||||
public $in;
|
public $in;
|
||||||
public $db;
|
|
||||||
public $config; // 全局配置
|
public $config; // 全局配置
|
||||||
public $tpl; // 模板目录
|
public $tpl; // 模板目录
|
||||||
public $values; // 模板变量
|
public $values; // 模板变量
|
||||||
|
@ -20,13 +19,12 @@ abstract class Controller {
|
||||||
* 构造函数
|
* 构造函数
|
||||||
*/
|
*/
|
||||||
function __construct(){
|
function __construct(){
|
||||||
global $in,$config,$db;
|
global $in,$config;
|
||||||
|
$this ->config = &$config;
|
||||||
$this -> db = $db;
|
$this ->in = &$in;
|
||||||
$this -> config = &$config;
|
$this ->values['config'] = &$config;
|
||||||
$this -> in = &$in;
|
$this ->values['in'] = &$in;
|
||||||
$this -> values['config'] = &$config;
|
$this ->tpl = TEMPLATE.get_class($this).'/';
|
||||||
$this -> values['in'] = &$in;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -12,6 +12,8 @@ function myAutoloader($name) {
|
||||||
CLASS_DIR.$name.'.class.php',
|
CLASS_DIR.$name.'.class.php',
|
||||||
CORER_DIR.$name.'.class.php',
|
CORER_DIR.$name.'.class.php',
|
||||||
SDK_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',
|
MODEL_DIR.$name.'.class.php',
|
||||||
CONTROLLER_DIR.$name.'.class.php',
|
CONTROLLER_DIR.$name.'.class.php',
|
||||||
|
@ -35,7 +37,6 @@ if (version_compare(PHP_VERSION, '5.3', '<')) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 生产model对象
|
* 生产model对象
|
||||||
*/
|
*/
|
||||||
|
@ -148,18 +149,6 @@ function ignore_timeout(){
|
||||||
@ini_set('memory_limit', '2028M');//2G;
|
@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){
|
function check_code($code){
|
||||||
ob_clean();
|
ob_clean();
|
||||||
|
@ -186,15 +175,7 @@ function check_code($code){
|
||||||
imagedestroy($im);//销毁图片
|
imagedestroy($im);//销毁图片
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 返回当前浮点式的时间,单位秒;主要用在调试程序程序时间时用
|
|
||||||
*
|
|
||||||
* @return float
|
|
||||||
*/
|
|
||||||
function microtime_float(){
|
|
||||||
list($usec, $sec) = explode(' ', microtime());
|
|
||||||
return ((float)$usec + (float)$sec);
|
|
||||||
}
|
|
||||||
/**
|
/**
|
||||||
* 计算N次方根
|
* 计算N次方根
|
||||||
* @param $num
|
* @param $num
|
||||||
|
@ -390,7 +371,9 @@ function show_tips($message,$url= '', $time = 3,$title = ''){
|
||||||
}
|
}
|
||||||
|
|
||||||
if(is_array($message) || is_object($message)){
|
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{
|
}else{
|
||||||
$message = filter_html(nl2br($message));
|
$message = filter_html(nl2br($message));
|
||||||
}
|
}
|
||||||
|
@ -596,6 +579,11 @@ function hex2str($hex){
|
||||||
return $string;
|
return $string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!function_exists('json_encode')){
|
||||||
|
function json_encode($data){
|
||||||
|
__json_encode($data);
|
||||||
|
}
|
||||||
|
}
|
||||||
function __json_encode( $data ) {
|
function __json_encode( $data ) {
|
||||||
if( is_array($data) || is_object($data) ) {
|
if( is_array($data) || is_object($data) ) {
|
||||||
$islist = is_array($data) && ( empty($data) || array_keys($data) === range(0,count($data)-1) );
|
$islist = is_array($data) && ( empty($data) || array_keys($data) === range(0,count($data)-1) );
|
||||||
|
@ -653,38 +641,6 @@ function __json_encode( $data ) {
|
||||||
return $json;
|
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标签,返回纯文本
|
* 去掉HTML代码中的HTML标签,返回纯文本
|
||||||
* @param string $document 待处理的字符串
|
* @param string $document 待处理的字符串
|
||||||
|
@ -821,36 +777,6 @@ function msubstr($str, $start = 0, $length, $charset = "utf-8", $suffix = true){
|
||||||
return $slice;
|
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 = "&pixel=100*80&cache=1&cacheTime=1000&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;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取变量的名字
|
* 获取变量的名字
|
||||||
|
|
|
@ -61,6 +61,7 @@ function iconv_to($str,$from,$to){
|
||||||
}
|
}
|
||||||
return $str;
|
return $str;
|
||||||
}
|
}
|
||||||
|
unset($str);
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
function path_filter($path){
|
function path_filter($path){
|
||||||
|
@ -327,7 +328,7 @@ function path_check($path){
|
||||||
function _path_info_more($dir, &$fileCount = 0, &$pathCount = 0, &$size = 0){
|
function _path_info_more($dir, &$fileCount = 0, &$pathCount = 0, &$size = 0){
|
||||||
if (!$dh = @opendir($dir)) return array('fileCount'=>0,'folderCount'=>0,'size'=>0);
|
if (!$dh = @opendir($dir)) return array('fileCount'=>0,'folderCount'=>0,'size'=>0);
|
||||||
while (($file = readdir($dh)) !== false) {
|
while (($file = readdir($dh)) !== false) {
|
||||||
if ($file != "." && $file != "..") {
|
if ($file =='.' || $file =='..') continue;
|
||||||
$fullpath = $dir . "/" . $file;
|
$fullpath = $dir . "/" . $file;
|
||||||
if (!is_dir($fullpath)) {
|
if (!is_dir($fullpath)) {
|
||||||
$fileCount ++;
|
$fileCount ++;
|
||||||
|
@ -337,7 +338,6 @@ function _path_info_more($dir, &$fileCount = 0, &$pathCount = 0, &$size = 0){
|
||||||
$pathCount ++;
|
$pathCount ++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
closedir($dh);
|
closedir($dh);
|
||||||
$pathinfo['fileCount'] = $fileCount;
|
$pathinfo['fileCount'] = $fileCount;
|
||||||
$pathinfo['folderCount'] = $pathCount;
|
$pathinfo['folderCount'] = $pathCount;
|
||||||
|
@ -393,7 +393,7 @@ function path_list($dir,$listFile=true,$checkChildren=false){
|
||||||
}
|
}
|
||||||
$folderList = array();$fileList = array();//文件夹与文件
|
$folderList = array();$fileList = array();//文件夹与文件
|
||||||
while (($file = readdir($dh)) !== false) {
|
while (($file = readdir($dh)) !== false) {
|
||||||
if ($file != "." && $file != ".." && $file != ".svn" ) {
|
if ($file =='.' || $file =='..' || $file == ".svn") continue;
|
||||||
$fullpath = $dir . $file;
|
$fullpath = $dir . $file;
|
||||||
if (is_dir($fullpath)) {
|
if (is_dir($fullpath)) {
|
||||||
$info = folder_info($fullpath);
|
$info = folder_info($fullpath);
|
||||||
|
@ -407,7 +407,6 @@ function path_list($dir,$listFile=true,$checkChildren=false){
|
||||||
$fileList[] = $info;
|
$fileList[] = $info;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
closedir($dh);
|
closedir($dh);
|
||||||
return array('folderList' => $folderList,'fileList' => $fileList);
|
return array('folderList' => $folderList,'fileList' => $fileList);
|
||||||
}
|
}
|
||||||
|
@ -417,7 +416,7 @@ function path_haschildren($dir,$checkFile=false){
|
||||||
$dir = rtrim($dir,'/').'/';
|
$dir = rtrim($dir,'/').'/';
|
||||||
if (!$dh = @opendir($dir)) return false;
|
if (!$dh = @opendir($dir)) return false;
|
||||||
while (($file = readdir($dh)) !== false){
|
while (($file = readdir($dh)) !== false){
|
||||||
if ($file != "." && $file != "..") {
|
if ($file =='.' || $file =='..') continue;
|
||||||
$fullpath = $dir.$file;
|
$fullpath = $dir.$file;
|
||||||
if ($checkFile) {//有子目录或者文件都说明有子内容
|
if ($checkFile) {//有子目录或者文件都说明有子内容
|
||||||
if(@is_file($fullpath) || is_dir($fullpath.'/')){
|
if(@is_file($fullpath) || is_dir($fullpath.'/')){
|
||||||
|
@ -429,7 +428,6 @@ function path_haschildren($dir,$checkFile=false){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
closedir($dh);
|
closedir($dh);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -456,7 +454,7 @@ function del_dir($dir){
|
||||||
if (!$dh = opendir($dir)) return false;
|
if (!$dh = opendir($dir)) return false;
|
||||||
@set_time_limit(0);
|
@set_time_limit(0);
|
||||||
while (($file = readdir($dh)) !== false) {
|
while (($file = readdir($dh)) !== false) {
|
||||||
if ($file != "." && $file != "..") {
|
if ($file =='.' || $file =='..') continue;
|
||||||
$fullpath = $dir . '/' . $file;
|
$fullpath = $dir . '/' . $file;
|
||||||
if (!is_dir($fullpath)) {
|
if (!is_dir($fullpath)) {
|
||||||
if (!unlink($fullpath)) { // 删除不了,尝试修改文件权限
|
if (!unlink($fullpath)) { // 删除不了,尝试修改文件权限
|
||||||
|
@ -472,7 +470,6 @@ function del_dir($dir){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
closedir($dh);
|
closedir($dh);
|
||||||
if (rmdir($dir)) {
|
if (rmdir($dir)) {
|
||||||
return true;
|
return true;
|
||||||
|
@ -515,10 +512,9 @@ function copy_dir($source, $dest){
|
||||||
}
|
}
|
||||||
if (!$dh = opendir($source)) return false;
|
if (!$dh = opendir($source)) return false;
|
||||||
while (($file = readdir($dh)) !== false) {
|
while (($file = readdir($dh)) !== false) {
|
||||||
if ($file != "." && $file != "..") {
|
if ($file =='.' || $file =='..') continue;
|
||||||
$result = copy_dir($source . "/" . $file, $dest . "/" . $file);
|
$result = copy_dir($source . "/" . $file, $dest . "/" . $file);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
closedir($dh);
|
closedir($dh);
|
||||||
}
|
}
|
||||||
return $result;
|
return $result;
|
||||||
|
@ -772,9 +768,16 @@ function file_search($path,$search,$is_case){
|
||||||
$strpos = 'stripos';//是否区分大小写
|
$strpos = 'stripos';//是否区分大小写
|
||||||
if ($is_case) $strpos = 'strpos';
|
if ($is_case) $strpos = 'strpos';
|
||||||
|
|
||||||
|
//文本文件 超过40M不再搜索
|
||||||
|
if(@filesize($path) >= 1024*1024*40){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
$content = file_get_contents($path);
|
$content = file_get_contents($path);
|
||||||
$charset = get_charset($content);
|
$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');
|
$content = iconv_to($content,$charset,'utf-8');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -859,12 +862,11 @@ function chmod_path($path,$mod){
|
||||||
if (is_file($path)) return @chmod($path,$mod);
|
if (is_file($path)) return @chmod($path,$mod);
|
||||||
if (!$dh = @opendir($path)) return false;
|
if (!$dh = @opendir($path)) return false;
|
||||||
while (($file = readdir($dh)) !== false){
|
while (($file = readdir($dh)) !== false){
|
||||||
if ($file != "." && $file != "..") {
|
if ($file =='.' || $file =='..') continue;
|
||||||
$fullpath = $path . '/' . $file;
|
$fullpath = $path . '/' . $file;
|
||||||
chmod_path($fullpath,$mod);
|
chmod_path($fullpath,$mod);
|
||||||
@chmod($fullpath,$mod);
|
@chmod($fullpath,$mod);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
closedir($dh);
|
closedir($dh);
|
||||||
return @chmod($path,$mod);
|
return @chmod($path,$mod);
|
||||||
}
|
}
|
||||||
|
@ -1023,10 +1025,23 @@ function file_put_out($file,$download=-1,$downFilename=false){
|
||||||
header("X-OutFileName: ".$filenameOutput);
|
header("X-OutFileName: ".$filenameOutput);
|
||||||
header("X-Powered-By: kodExplorer.");
|
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内部文件
|
//远程路径不支持断点续传;打开zip内部文件
|
||||||
if(!file_exists($file)){
|
if(!file_exists($file)){
|
||||||
header('HTTP/1.1 200 OK');
|
header('HTTP/1.1 200 OK');
|
||||||
header('Content-Length:'.($end+1));
|
header('Content-Length: '.($end+1));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
header("Accept-Ranges: bytes");
|
header("Accept-Ranges: bytes");
|
||||||
|
@ -1053,8 +1068,8 @@ function file_put_out($file,$download=-1,$downFilename=false){
|
||||||
$cur = $start;
|
$cur = $start;
|
||||||
fseek($fp, $start,0);
|
fseek($fp, $start,0);
|
||||||
while(!feof($fp) && $cur <= $end){ // && (connection_status() == 0)
|
while(!feof($fp) && $cur <= $end){ // && (connection_status() == 0)
|
||||||
print fread($fp, min(1024 * 16, ($end - $cur) + 1));
|
print fread($fp, min(1024 * 100, ($end - $cur) + 1));
|
||||||
$cur += 1024 * 16;
|
$cur += 1024 * 100;
|
||||||
flush();
|
flush();
|
||||||
}
|
}
|
||||||
fclose($fp);
|
fclose($fp);
|
||||||
|
@ -1188,6 +1203,18 @@ function kod_move_uploaded_file($fromPath,$savePath){
|
||||||
chmod_path($savePath,DEFAULT_PERRMISSIONS);
|
chmod_path($savePath,DEFAULT_PERRMISSIONS);
|
||||||
return $result;
|
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)) {
|
if (!empty($_FILES)) {
|
||||||
$fileName = iconv_system(path_clear_name($_FILES[$fileInput]["name"]));
|
$fileName = iconv_system(path_clear_name($_FILES[$fileInput]["name"]));
|
||||||
$uploadFile = $_FILES[$fileInput]["tmp_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()){//拍照上传
|
if($fileName == "image.jpg" && is_wap()){//拍照上传
|
||||||
$fileName = date('Ymd H:i:s',time()).'.jpg';
|
$fileName = date('Ymd H:i:s',time()).'.jpg';
|
||||||
}
|
}
|
||||||
|
@ -1322,7 +1352,8 @@ function write_log($log, $type = 'default', $level = 'log'){
|
||||||
if(!defined('LOG_PATH')){
|
if(!defined('LOG_PATH')){
|
||||||
return;
|
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) . '/';
|
$target = LOG_PATH . strtolower($type) . '/';
|
||||||
mk_dir($target);
|
mk_dir($target);
|
||||||
if (!path_writeable($target)){
|
if (!path_writeable($target)){
|
||||||
|
|
|
@ -127,7 +127,7 @@ function get_charset(&$str) {
|
||||||
'utf-32be' => chr(0x00) . chr(0x00) . chr(0xFE) . chr(0xFF),
|
'utf-32be' => chr(0x00) . chr(0x00) . chr(0xFE) . chr(0xFF),
|
||||||
);
|
);
|
||||||
foreach ($bom_arr as $key => $value) {
|
foreach ($bom_arr as $key => $value) {
|
||||||
if ( substr($str,0,strlen($value)) === $value ){
|
if (substr($str,0,strlen($value)) === $value ){
|
||||||
return $key;
|
return $key;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -248,7 +248,7 @@ function init_common(){
|
||||||
// session path create and check
|
// session path create and check
|
||||||
$errorTips = "[Error Code:1002] 目录权限错误!请设置程序目录及所有子目录为读写状态,
|
$errorTips = "[Error Code:1002] 目录权限错误!请设置程序目录及所有子目录为读写状态,
|
||||||
linux 运行如下指令:
|
linux 运行如下指令:
|
||||||
<pre>chmod -R 777 ".BASIC_PATH.'</pre>';
|
<pre>su -c 'setenforce 0'\nchmod -R 777 ".BASIC_PATH.'</pre>';
|
||||||
//检查session是否存在
|
//检查session是否存在
|
||||||
if( !file_exists(KOD_SESSION) ||
|
if( !file_exists(KOD_SESSION) ||
|
||||||
!file_exists(KOD_SESSION.'index.html')){
|
!file_exists(KOD_SESSION.'index.html')){
|
||||||
|
|
|
@ -649,6 +649,72 @@ function parse_incoming(){
|
||||||
return $return;
|
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){
|
function url2absolute($index_url, $preg_url){
|
||||||
if (preg_match('/[a-zA-Z]*\:\/\//', $preg_url)) return $preg_url;
|
if (preg_match('/[a-zA-Z]*\:\/\//', $preg_url)) return $preg_url;
|
||||||
preg_match('/([a-zA-Z]*\:\/\/.*)\//', $index_url, $match);
|
preg_match('/([a-zA-Z]*\:\/\/.*)\//', $index_url, $match);
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -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')){
|
if(!function_exists('imagecreatefrombmp')){
|
||||||
function imagecreatefrombmp( $filename ){
|
function imagecreatefrombmp( $filename ){
|
||||||
return imageGdBMP::load($filename);
|
return imageGdBMP::load($filename);
|
||||||
|
|
|
@ -128,7 +128,10 @@ class KodArchive {
|
||||||
if($GLOBALS['config']['systemCharset'] != 'utf-8'){
|
if($GLOBALS['config']['systemCharset'] != 'utf-8'){
|
||||||
$indexPath = unzip_pre_name($partName);//系统编码
|
$indexPath = unzip_pre_name($partName);//系统编码
|
||||||
}
|
}
|
||||||
$pathRemove = get_path_father($indexPath);
|
|
||||||
|
//$pathRemove = get_path_father($indexPath);
|
||||||
|
$pathRemove = get_path_father($partName);//中文情况文件情况兼容
|
||||||
|
|
||||||
if($indexInfo['folder']){
|
if($indexInfo['folder']){
|
||||||
$indexPath = rtrim($indexPath,'/').'/';//tar 解压文件夹需要/结尾
|
$indexPath = rtrim($indexPath,'/').'/';//tar 解压文件夹需要/结尾
|
||||||
$partName = array($partName);
|
$partName = array($partName);
|
||||||
|
|
|
@ -33,7 +33,7 @@ class kodRarArchive {
|
||||||
if(PATH_SEPARATOR == ':') {
|
if(PATH_SEPARATOR == ':') {
|
||||||
@chmod($file,0777);
|
@chmod($file,0777);
|
||||||
}
|
}
|
||||||
return '"'.$file.'"';
|
return $file;
|
||||||
}
|
}
|
||||||
static function run($cmd){
|
static function run($cmd){
|
||||||
if (strtoupper(substr(PHP_OS, 0,3)) != 'WIN') {//linux
|
if (strtoupper(substr(PHP_OS, 0,3)) != 'WIN') {//linux
|
||||||
|
|
|
@ -1085,7 +1085,6 @@ if (!defined("PCL_TAR"))
|
||||||
TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString());
|
TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString());
|
||||||
return PclErrorCode();
|
return PclErrorCode();
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----- Call the adding fct inside the tar
|
// ----- 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)
|
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
|
// ----- Store the file infos
|
||||||
$p_list_detail[$v_nb++] = $v_header;
|
$p_list_detail[$v_nb++] = $v_header;
|
||||||
|
|
||||||
// ----- Look for directory
|
// ----- Look for directory
|
||||||
if (is_dir($p_filename))
|
if (is_dir($p_filename))
|
||||||
{
|
{
|
||||||
|
@ -1416,10 +1414,17 @@ if (!defined("PCL_TAR"))
|
||||||
|
|
||||||
// ----- Read the directory for files and sub-directories
|
// ----- Read the directory for files and sub-directories
|
||||||
$p_hdir = opendir($p_filename);
|
$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))
|
while ($p_hitem = readdir($p_hdir))
|
||||||
{
|
{
|
||||||
|
//add by warlee;
|
||||||
|
if ($p_hitem == "." || $p_hitem == "..") {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
// ----- Look for a file
|
// ----- Look for a file
|
||||||
if (is_file($v_path.$p_hitem))
|
if (is_file($v_path.$p_hitem))
|
||||||
{
|
{
|
||||||
|
@ -1547,7 +1552,6 @@ if (!defined("PCL_TAR"))
|
||||||
TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString());
|
TrFctEnd(__FILE__, __LINE__, PclErrorCode(), PclErrorString());
|
||||||
return PclErrorCode();
|
return PclErrorCode();
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----- Look for a file
|
// ----- Look for a file
|
||||||
if (is_file($p_filename))
|
if (is_file($p_filename))
|
||||||
{
|
{
|
||||||
|
@ -3633,4 +3637,3 @@ if (!defined("PCL_TAR"))
|
||||||
|
|
||||||
// ----- End of double include look
|
// ----- End of double include look
|
||||||
}
|
}
|
||||||
?>
|
|
|
@ -451,4 +451,3 @@ if (!defined("PCLTRACE_LIB"))
|
||||||
|
|
||||||
// ----- End of double include look
|
// ----- End of double include look
|
||||||
}
|
}
|
||||||
?>
|
|
|
@ -217,8 +217,10 @@
|
||||||
// filename.
|
// filename.
|
||||||
// Note that no real action is taken, if the archive does not exist it is not
|
// Note that no real action is taken, if the archive does not exist it is not
|
||||||
// created. Use create() for that.
|
// created. Use create() for that.
|
||||||
|
//
|
||||||
|
// changed by warlee; PclZip=>__construct; php7.1不再支持5php4的构造函数方法
|
||||||
// --------------------------------------------------------------------------------
|
// --------------------------------------------------------------------------------
|
||||||
function PclZip($p_zipname)
|
function __construct($p_zipname)
|
||||||
{
|
{
|
||||||
|
|
||||||
// ----- Tests the zlib
|
// ----- Tests the zlib
|
||||||
|
@ -5718,5 +5720,3 @@
|
||||||
}
|
}
|
||||||
// --------------------------------------------------------------------------------
|
// --------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
?>
|
|
||||||
|
|
|
@ -1,11 +1,4 @@
|
||||||
<?php
|
<?php
|
||||||
class ConfigModel extends Model{
|
class ConfigModel extends Model{
|
||||||
function __construct(){
|
|
||||||
parent::__construct();
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,13 @@
|
||||||
<?php
|
<?php
|
||||||
class pluginModel extends Model{
|
class pluginModel{
|
||||||
|
var $in;
|
||||||
|
var $config;
|
||||||
function __construct(){
|
function __construct(){
|
||||||
parent::__construct();
|
global $config, $in;
|
||||||
return $this;
|
//parent::__construct();
|
||||||
|
$this -> in = &$in;
|
||||||
|
$this -> config = &$config;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function loadData(){
|
public function loadData(){
|
||||||
if(!isset($this->config['settingSystem']['pluginList'])){
|
if(!isset($this->config['settingSystem']['pluginList'])){
|
||||||
$this->config['settingSystem']['pluginList'] = array();
|
$this->config['settingSystem']['pluginList'] = array();
|
||||||
|
|
|
@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -10,6 +10,7 @@ define('GLOBAL_DEBUG',0);//0 or 1
|
||||||
@date_default_timezone_set(@date_default_timezone_get());
|
@date_default_timezone_set(@date_default_timezone_get());
|
||||||
@set_time_limit(1200);//20min pathInfoMuti,search,upload,download...
|
@set_time_limit(1200);//20min pathInfoMuti,search,upload,download...
|
||||||
@ini_set("max_execution_time",1200);
|
@ini_set("max_execution_time",1200);
|
||||||
|
@ini_set('memory_limit','500M');//
|
||||||
@ini_set('session.cache_expire',1800);
|
@ini_set('session.cache_expire',1800);
|
||||||
|
|
||||||
if(GLOBAL_DEBUG){
|
if(GLOBAL_DEBUG){
|
||||||
|
@ -99,4 +100,3 @@ $config['autorun'] = array(
|
||||||
array('controller'=>'user','function'=>'authCheck'),
|
array('controller'=>'user','function'=>'authCheck'),
|
||||||
array('controller'=>'user','function'=>'bindHook'),
|
array('controller'=>'user','function'=>'bindHook'),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -157,14 +157,14 @@ return array(
|
||||||
"zip_download_ready" => "بعد ضغط تلقائيا التحميل، يرجى الانتظار ...",
|
"zip_download_ready" => "بعد ضغط تلقائيا التحميل، يرجى الانتظار ...",
|
||||||
"set_background" => "تعيين كخلفية سطح المكتب",
|
"set_background" => "تعيين كخلفية سطح المكتب",
|
||||||
"share" => "سهم",
|
"share" => "سهم",
|
||||||
"my_share" => "أنا مشتركة",
|
"my_share" => "نصيبي",
|
||||||
"group_share" => "مجموعات من الحصة الأجنبية",
|
"group_share" => "مشاركة المجموعة الخارجية",
|
||||||
"share_edit" => "تحرير حصة",
|
"share_edit" => "تعديل المشاركة",
|
||||||
"share_remove" => "إلغاء مشاركة",
|
"share_remove" => "إلغاء المشاركة",
|
||||||
"share_remove_tips" => "موافق الغاء حصة؟ ستفشل فتح اتصال.",
|
"share_remove_tips" => "هل تريد بالتأكيد إلغاء المشاركة؟ سيتم إبطال الاتصال العام.",
|
||||||
"share_path" => "مسار المشتركة",
|
"share_path" => "مشاركة المسار",
|
||||||
"share_title" => "تقاسم الموارد",
|
"share_title" => "تقاسم الموارد",
|
||||||
"share_name" => "حصة عنوان",
|
"share_name" => "مشاركة العنوان",
|
||||||
"share_time" => "انتهاء",
|
"share_time" => "انتهاء",
|
||||||
"share_time_desc" => "لم يتم تعيين لاغية",
|
"share_time_desc" => "لم يتم تعيين لاغية",
|
||||||
"share_password" => "كلمة استخراج",
|
"share_password" => "كلمة استخراج",
|
||||||
|
@ -733,6 +733,8 @@ return array(
|
||||||
"PluginInstallSelf" => "التثبيت اليدوي",
|
"PluginInstallSelf" => "التثبيت اليدوي",
|
||||||
"Plugin.config.auth" => "أذونات",
|
"Plugin.config.auth" => "أذونات",
|
||||||
"Plugin.config.authDesc" => "كافة الإعدادات المتاحة، أو تحديد المستخدمين، ومجموعات المستخدمين وجماعات حقوق يمكن استخدام",
|
"Plugin.config.authDesc" => "كافة الإعدادات المتاحة، أو تحديد المستخدمين، ومجموعات المستخدمين وجماعات حقوق يمكن استخدام",
|
||||||
|
"Plugin.config.authOpen" => "الدخول المفتوح",
|
||||||
|
"Plugin.config.authOpenDesc" => "لا حاجة لزيارة يمكن الوصول إليها، ويمكن استخدامها للاتصال الخارجي واجهة",
|
||||||
"Plugin.config.authAll" => "حائز",
|
"Plugin.config.authAll" => "حائز",
|
||||||
"Plugin.config.authUser" => "المستخدم",
|
"Plugin.config.authUser" => "المستخدم",
|
||||||
"Plugin.config.authGroup" => "المجموعات",
|
"Plugin.config.authGroup" => "المجموعات",
|
||||||
|
|
|
@ -157,14 +157,14 @@ return array(
|
||||||
"zip_download_ready" => "След компресия автоматично ще изтеглите, моля изчакайте ...",
|
"zip_download_ready" => "След компресия автоматично ще изтеглите, моля изчакайте ...",
|
||||||
"set_background" => "Задай като Desktop Wallpaper",
|
"set_background" => "Задай като Desktop Wallpaper",
|
||||||
"share" => "дял",
|
"share" => "дял",
|
||||||
"my_share" => "споделих",
|
"my_share" => "Моят дял",
|
||||||
"group_share" => "Групи от чуждестранни акции",
|
"group_share" => "Групово външно споделяне",
|
||||||
"share_edit" => "Edit Share",
|
"share_edit" => "Редактирайте споделянето",
|
||||||
"share_remove" => "премахване на споделянето",
|
"share_remove" => "Отмяна на споделянето",
|
||||||
"share_remove_tips" => "OK Cancel Share? Open връзка ще се провали.",
|
"share_remove_tips" => "Наистина ли искате да анулирате споделянето? Обществената връзка ще бъде деактивирана.",
|
||||||
"share_path" => "Споделено Path",
|
"share_path" => "Споделете пътя",
|
||||||
"share_title" => "Resource Sharing",
|
"share_title" => "Споделяне на ресурси",
|
||||||
"share_name" => "Сподели Title",
|
"share_name" => "Споделете заглавието",
|
||||||
"share_time" => "изтичане",
|
"share_time" => "изтичане",
|
||||||
"share_time_desc" => "Null не е настроено",
|
"share_time_desc" => "Null не е настроено",
|
||||||
"share_password" => "Екстракт парола",
|
"share_password" => "Екстракт парола",
|
||||||
|
@ -733,6 +733,8 @@ return array(
|
||||||
"PluginInstallSelf" => "Ръчна инсталация",
|
"PluginInstallSelf" => "Ръчна инсталация",
|
||||||
"Plugin.config.auth" => "Разрешения",
|
"Plugin.config.auth" => "Разрешения",
|
||||||
"Plugin.config.authDesc" => "Всички на наличните настройки, свързани с определяне на потребителите, потребителски групи, правозащитни организации могат да използват",
|
"Plugin.config.authDesc" => "Всички на наличните настройки, свързани с определяне на потребителите, потребителски групи, правозащитни организации могат да използват",
|
||||||
|
"Plugin.config.authOpen" => "Отворен достъп",
|
||||||
|
"Plugin.config.authOpenDesc" => "Няма нужда да посещавате, може да се използва за външно разговор",
|
||||||
"Plugin.config.authAll" => "притежател",
|
"Plugin.config.authAll" => "притежател",
|
||||||
"Plugin.config.authUser" => "потребител",
|
"Plugin.config.authUser" => "потребител",
|
||||||
"Plugin.config.authGroup" => "Групи",
|
"Plugin.config.authGroup" => "Групи",
|
||||||
|
|
|
@ -157,14 +157,14 @@ return array(
|
||||||
"zip_download_ready" => "কম্প্রেশন স্বয়ংক্রিয়ভাবে ডাউনলোড হবে পরে, অনুগ্রহ করে অপেক্ষা করুন ...",
|
"zip_download_ready" => "কম্প্রেশন স্বয়ংক্রিয়ভাবে ডাউনলোড হবে পরে, অনুগ্রহ করে অপেক্ষা করুন ...",
|
||||||
"set_background" => "যেমন ডেস্কটপ ওয়ালপেপার সেট করুন",
|
"set_background" => "যেমন ডেস্কটপ ওয়ালপেপার সেট করুন",
|
||||||
"share" => "ভাগ",
|
"share" => "ভাগ",
|
||||||
"my_share" => "আমি ভাগ",
|
"my_share" => "আমার শেয়ার",
|
||||||
"group_share" => "বিদেশী ভাগ গোষ্ঠীসমূহ",
|
"group_share" => "বাহ্যিক অংশীদারী গ্রুপ",
|
||||||
"share_edit" => "শেয়ার সম্পাদনা",
|
"share_edit" => "শেয়ার সম্পাদনা করুন",
|
||||||
"share_remove" => "Unsharing",
|
"share_remove" => "ভাগ করা বাতিল করুন",
|
||||||
"share_remove_tips" => "ওকে শেয়ার বাতিল করবেন? ওপেন সংযোগ ব্যর্থ হবে.",
|
"share_remove_tips" => "আপনি কি ভাগ করা বাতিল করার বিষয়ে নিশ্চিত? পাবলিক সংযোগ অবৈধ হবে।",
|
||||||
"share_path" => "শেয়ারকৃত পাথ",
|
"share_path" => "পথ ভাগ করুন",
|
||||||
"share_title" => "রিসোর্স শেয়ারিং",
|
"share_title" => "সম্পদ শেয়ারিং",
|
||||||
"share_name" => "সেয়ার শিরোনাম",
|
"share_name" => "শিরোনাম শেয়ার করুন",
|
||||||
"share_time" => "শ্বাসত্যাগ",
|
"share_time" => "শ্বাসত্যাগ",
|
||||||
"share_time_desc" => "নাল সেট না করা হয়",
|
"share_time_desc" => "নাল সেট না করা হয়",
|
||||||
"share_password" => "এক্সট্র্যাক্ট পাসওয়ার্ড",
|
"share_password" => "এক্সট্র্যাক্ট পাসওয়ার্ড",
|
||||||
|
@ -733,6 +733,8 @@ return array(
|
||||||
"PluginInstallSelf" => "ম্যানুয়াল ইনস্টলেশন",
|
"PluginInstallSelf" => "ম্যানুয়াল ইনস্টলেশন",
|
||||||
"Plugin.config.auth" => "অনুমতিসমূহ",
|
"Plugin.config.auth" => "অনুমতিসমূহ",
|
||||||
"Plugin.config.authDesc" => "প্রাপ্তিসাধ্য সকল সেটিংস, অথবা নির্দিষ্ট ব্যবহারকারীদের ব্যবহারকারী গোষ্ঠী, অধিকার সংগঠনগুলো ব্যবহার করতে পারেন",
|
"Plugin.config.authDesc" => "প্রাপ্তিসাধ্য সকল সেটিংস, অথবা নির্দিষ্ট ব্যবহারকারীদের ব্যবহারকারী গোষ্ঠী, অধিকার সংগঠনগুলো ব্যবহার করতে পারেন",
|
||||||
|
"Plugin.config.authOpen" => "অ্যাক্সেস খুলুন",
|
||||||
|
"Plugin.config.authOpenDesc" => "দেখার কোন প্রয়োজন অ্যাক্সেস করা যাবে না, বহিরাগত ইন্টারফেস কল জন্য ব্যবহার করা যেতে পারে",
|
||||||
"Plugin.config.authAll" => "ধারক",
|
"Plugin.config.authAll" => "ধারক",
|
||||||
"Plugin.config.authUser" => "ব্যবহারকারী",
|
"Plugin.config.authUser" => "ব্যবহারকারী",
|
||||||
"Plugin.config.authGroup" => "গ্রুপ",
|
"Plugin.config.authGroup" => "গ্রুপ",
|
||||||
|
|
|
@ -156,15 +156,15 @@ return array(
|
||||||
"explorerNew" => "kod enllaç",
|
"explorerNew" => "kod enllaç",
|
||||||
"zip_download_ready" => "Després de la compressió es descarrega automàticament, si us plau esperi ...",
|
"zip_download_ready" => "Després de la compressió es descarrega automàticament, si us plau esperi ...",
|
||||||
"set_background" => "Establir com a Fons d'Escriptori",
|
"set_background" => "Establir com a Fons d'Escriptori",
|
||||||
"share" => "quota",
|
"share" => "Comparteix",
|
||||||
"my_share" => "vaig compartir",
|
"my_share" => "La meva participació",
|
||||||
"group_share" => "Grups de participació estrangera",
|
"group_share" => "Compartició externa de grup",
|
||||||
"share_edit" => "Edita Compartir",
|
"share_edit" => "Edita compartir",
|
||||||
"share_remove" => "unsharing",
|
"share_remove" => "Cancel·lació d'ús compartit",
|
||||||
"share_remove_tips" => "Acceptar Cancel Compartir? Obrir una connexió fallarà.",
|
"share_remove_tips" => "Estàs segur que vols cancel·lar la compartició? La connexió pública quedarà invalidada.",
|
||||||
"share_path" => "ruta compartida",
|
"share_path" => "Comparteix el camí",
|
||||||
"share_title" => "Intercanvi de recursos",
|
"share_title" => "Compartir recursos",
|
||||||
"share_name" => "compartir Títol",
|
"share_name" => "Compartiu el títol",
|
||||||
"share_time" => "expiració",
|
"share_time" => "expiració",
|
||||||
"share_time_desc" => "Null no s'estableix",
|
"share_time_desc" => "Null no s'estableix",
|
||||||
"share_password" => "extracte de la contrasenya",
|
"share_password" => "extracte de la contrasenya",
|
||||||
|
@ -733,6 +733,8 @@ return array(
|
||||||
"PluginInstallSelf" => "Instal·lació manual",
|
"PluginInstallSelf" => "Instal·lació manual",
|
||||||
"Plugin.config.auth" => "permisos",
|
"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.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.authAll" => "titular",
|
||||||
"Plugin.config.authUser" => "usuari",
|
"Plugin.config.authUser" => "usuari",
|
||||||
"Plugin.config.authGroup" => "grups",
|
"Plugin.config.authGroup" => "grups",
|
||||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -156,15 +156,15 @@ return array(
|
||||||
"explorerNew" => "kod Link",
|
"explorerNew" => "kod Link",
|
||||||
"zip_download_ready" => "Nach der Komprimierung automatisch warten herunterladen, bitte ...",
|
"zip_download_ready" => "Nach der Komprimierung automatisch warten herunterladen, bitte ...",
|
||||||
"set_background" => "Als Desktop-Wallpaper",
|
"set_background" => "Als Desktop-Wallpaper",
|
||||||
"share" => "Aktie",
|
"share" => "Teilen",
|
||||||
"my_share" => "ich teilte",
|
"my_share" => "Mein Anteil",
|
||||||
"group_share" => "Gruppen von Auslandsanteil",
|
"group_share" => "Gruppen-Außenverteilung",
|
||||||
"share_edit" => "Bearbeiten Teilen",
|
"share_edit" => "Bearbeiten von Freigabe",
|
||||||
"share_remove" => "Sperren von",
|
"share_remove" => "Abbrechen teilen",
|
||||||
"share_remove_tips" => "OK Abbrechen Teilen? Offene Verbindung schlägt fehl.",
|
"share_remove_tips" => "Sind Sie sicher, dass Sie das Teilen abbrechen möchten? Die öffentliche Verbindung wird ungültig.",
|
||||||
"share_path" => "Gemeinsamer Weg",
|
"share_path" => "Teilen Sie den Weg",
|
||||||
"share_title" => "Resource Sharing",
|
"share_title" => "Ressourcennutzung",
|
||||||
"share_name" => "Teilen Titel",
|
"share_name" => "Teilen Sie den Titel",
|
||||||
"share_time" => "Ablauf",
|
"share_time" => "Ablauf",
|
||||||
"share_time_desc" => "Null ist nicht gesetzt",
|
"share_time_desc" => "Null ist nicht gesetzt",
|
||||||
"share_password" => "Extract Passwort",
|
"share_password" => "Extract Passwort",
|
||||||
|
@ -733,6 +733,8 @@ return array(
|
||||||
"PluginInstallSelf" => "Manuelle Installation",
|
"PluginInstallSelf" => "Manuelle Installation",
|
||||||
"Plugin.config.auth" => "Berechtigungen",
|
"Plugin.config.auth" => "Berechtigungen",
|
||||||
"Plugin.config.authDesc" => "Alle der verfügbaren Einstellungen oder geben Sie Benutzer, Benutzergruppen, können Rechtsgruppen verwenden",
|
"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.authAll" => "Halter",
|
||||||
"Plugin.config.authUser" => "Benutzer",
|
"Plugin.config.authUser" => "Benutzer",
|
||||||
"Plugin.config.authGroup" => "Gruppen",
|
"Plugin.config.authGroup" => "Gruppen",
|
||||||
|
|
|
@ -156,15 +156,15 @@ return array(
|
||||||
"explorerNew" => "σύνδεσμο kod",
|
"explorerNew" => "σύνδεσμο kod",
|
||||||
"zip_download_ready" => "Μετά τη συμπίεση θα κατεβάσει αυτόματα, παρακαλώ περιμένετε ...",
|
"zip_download_ready" => "Μετά τη συμπίεση θα κατεβάσει αυτόματα, παρακαλώ περιμένετε ...",
|
||||||
"set_background" => "Ορισμός ως ταπετσαρία της επιφάνειας εργασίας",
|
"set_background" => "Ορισμός ως ταπετσαρία της επιφάνειας εργασίας",
|
||||||
"share" => "μερίδιο",
|
"share" => "Μοιραστείτε",
|
||||||
"my_share" => "μοιράστηκα",
|
"my_share" => "Το μερίδιο μου",
|
||||||
"group_share" => "Ομάδες των ξένων μετοχή",
|
"group_share" => "Εξωτερική κοινή χρήση ομάδας",
|
||||||
"share_edit" => "Επεξεργασία Share",
|
"share_edit" => "Επεξεργασία κοινής χρήσης",
|
||||||
"share_remove" => "την κατάργηση κοινής χρήσης",
|
"share_remove" => "Ακύρωση κοινής χρήσης",
|
||||||
"share_remove_tips" => "ΟΚ Ακύρωση Μοιραστείτε; Ανοικτή σύνδεση θα αποτύχει.",
|
"share_remove_tips" => "Είστε βέβαιοι ότι θέλετε να ακυρώσετε την κοινή χρήση; Η δημόσια σύνδεση θα ακυρωθεί.",
|
||||||
"share_path" => "κοινόχρηστο Μονοπάτι",
|
"share_path" => "Μοιραστείτε τη διαδρομή",
|
||||||
"share_title" => "κατανομή των πόρων",
|
"share_title" => "Κοινή χρήση πόρων",
|
||||||
"share_name" => "Μοιραστείτε Τίτλος",
|
"share_name" => "Μοιραστείτε τον τίτλο",
|
||||||
"share_time" => "λήξη",
|
"share_time" => "λήξη",
|
||||||
"share_time_desc" => "Null δεν έχει οριστεί",
|
"share_time_desc" => "Null δεν έχει οριστεί",
|
||||||
"share_password" => "κωδικό εκχύλισμα",
|
"share_password" => "κωδικό εκχύλισμα",
|
||||||
|
@ -733,6 +733,8 @@ return array(
|
||||||
"PluginInstallSelf" => "Μη αυτόματη εγκατάσταση",
|
"PluginInstallSelf" => "Μη αυτόματη εγκατάσταση",
|
||||||
"Plugin.config.auth" => "δικαιώματα",
|
"Plugin.config.auth" => "δικαιώματα",
|
||||||
"Plugin.config.authDesc" => "Όλα τα διαθέσιμα ρυθμίσεις, ή να καθορίσετε τους χρήστες, ομάδες χρηστών, ομάδες για τα δικαιώματα μπορούν να χρησιμοποιήσουν",
|
"Plugin.config.authDesc" => "Όλα τα διαθέσιμα ρυθμίσεις, ή να καθορίσετε τους χρήστες, ομάδες χρηστών, ομάδες για τα δικαιώματα μπορούν να χρησιμοποιήσουν",
|
||||||
|
"Plugin.config.authOpen" => "Ανοικτή πρόσβαση",
|
||||||
|
"Plugin.config.authOpenDesc" => "Δεν χρειάζεται να επισκεφθείτε, μπορεί να χρησιμοποιηθεί για εξωτερική κλήση διεπαφής",
|
||||||
"Plugin.config.authAll" => "κάτοχος",
|
"Plugin.config.authAll" => "κάτοχος",
|
||||||
"Plugin.config.authUser" => "Ο χρήστης",
|
"Plugin.config.authUser" => "Ο χρήστης",
|
||||||
"Plugin.config.authGroup" => "ομάδες",
|
"Plugin.config.authGroup" => "ομάδες",
|
||||||
|
|
|
@ -156,14 +156,14 @@ return array(
|
||||||
"explorerNew" => "Kod link",
|
"explorerNew" => "Kod link",
|
||||||
"zip_download_ready" => "Compression will automatically download, please wait...",
|
"zip_download_ready" => "Compression will automatically download, please wait...",
|
||||||
"set_background" => "As your desktop wallpaper",
|
"set_background" => "As your desktop wallpaper",
|
||||||
"share" => "Share",
|
"share" => "share it",
|
||||||
"my_share" => "My share",
|
"my_share" => "My share",
|
||||||
"group_share" => "Group external sharing",
|
"group_share" => "Group external sharing",
|
||||||
"share_edit" => "Edit share",
|
"share_edit" => "Edit share",
|
||||||
"share_remove" => "Cancel share",
|
"share_remove" => "Cancel sharing",
|
||||||
"share_remove_tips" => "Determine the cancel share? The Share link will fail.",
|
"share_remove_tips" => "Are you sure you want to cancel sharing? The public connection will be invalidated.",
|
||||||
"share_path" => "Share path",
|
"share_path" => "Share the path",
|
||||||
"share_title" => "Resource sharing",
|
"share_title" => "Information sharing",
|
||||||
"share_name" => "Share title",
|
"share_name" => "Share title",
|
||||||
"share_time" => "Expiration",
|
"share_time" => "Expiration",
|
||||||
"share_time_desc" => "Empty is no expiration",
|
"share_time_desc" => "Empty is no expiration",
|
||||||
|
@ -733,6 +733,8 @@ return array(
|
||||||
"PluginInstallSelf" => "Manual installation",
|
"PluginInstallSelf" => "Manual installation",
|
||||||
"Plugin.config.auth" => "Use permission",
|
"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.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.authAll" => "Everyone",
|
||||||
"Plugin.config.authUser" => "User",
|
"Plugin.config.authUser" => "User",
|
||||||
"Plugin.config.authGroup" => "Group",
|
"Plugin.config.authGroup" => "Group",
|
||||||
|
|
|
@ -156,15 +156,15 @@ return array(
|
||||||
"explorerNew" => "kod enlace",
|
"explorerNew" => "kod enlace",
|
||||||
"zip_download_ready" => "Después de la compresión se descarga automáticamente, por favor espere ...",
|
"zip_download_ready" => "Después de la compresión se descarga automáticamente, por favor espere ...",
|
||||||
"set_background" => "Establecer como Fondos de Escritorio",
|
"set_background" => "Establecer como Fondos de Escritorio",
|
||||||
"share" => "cuota",
|
"share" => "Compartir",
|
||||||
"my_share" => "compartí",
|
"my_share" => "Mi parte",
|
||||||
"group_share" => "Grupos de participación extranjera",
|
"group_share" => "Compartición externa de grupo",
|
||||||
"share_edit" => "Editar Compartir",
|
"share_edit" => "Editar parte",
|
||||||
"share_remove" => "unsharing",
|
"share_remove" => "Cancelar compartir",
|
||||||
"share_remove_tips" => "Aceptar Cancelar Compartir? Abrir una conexión fallará.",
|
"share_remove_tips" => "¿Seguro que desea cancelar el uso compartido? La conexión pública se invalidará.",
|
||||||
"share_path" => "Ruta compartida",
|
"share_path" => "Comparte el camino",
|
||||||
"share_title" => "Intercambio de recursos",
|
"share_title" => "Compartición de recursos",
|
||||||
"share_name" => "Compartir Título",
|
"share_name" => "Compartir el título",
|
||||||
"share_time" => "expiración",
|
"share_time" => "expiración",
|
||||||
"share_time_desc" => "Null no se establece",
|
"share_time_desc" => "Null no se establece",
|
||||||
"share_password" => "extracto de la contraseña",
|
"share_password" => "extracto de la contraseña",
|
||||||
|
@ -733,6 +733,8 @@ return array(
|
||||||
"PluginInstallSelf" => "Instalación manual",
|
"PluginInstallSelf" => "Instalación manual",
|
||||||
"Plugin.config.auth" => "permisos",
|
"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.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.authAll" => "titular",
|
||||||
"Plugin.config.authUser" => "usuario",
|
"Plugin.config.authUser" => "usuario",
|
||||||
"Plugin.config.authGroup" => "grupos",
|
"Plugin.config.authGroup" => "grupos",
|
||||||
|
|
Binary file not shown.
|
@ -156,15 +156,15 @@ return array(
|
||||||
"explorerNew" => "لینک KOD",
|
"explorerNew" => "لینک KOD",
|
||||||
"zip_download_ready" => "پس از فشرده سازی به طور خودکار دانلود، لطفا صبر کنید ...",
|
"zip_download_ready" => "پس از فشرده سازی به طور خودکار دانلود، لطفا صبر کنید ...",
|
||||||
"set_background" => "تنظیم به عنوان تصویر زمینه دسکتاپ",
|
"set_background" => "تنظیم به عنوان تصویر زمینه دسکتاپ",
|
||||||
"share" => "سهم",
|
"share" => "به اشتراک بگذارید",
|
||||||
"my_share" => "من به اشتراک گذاشته",
|
"my_share" => "سهم من",
|
||||||
"group_share" => "گروه سهم خارجی",
|
"group_share" => "اشتراک خارجی گروه",
|
||||||
"share_edit" => "ویرایش به اشتراک",
|
"share_edit" => "ویرایش سهم",
|
||||||
"share_remove" => "لغو اشتراک",
|
"share_remove" => "لغو به اشتراک گذاری",
|
||||||
"share_remove_tips" => "OK لغو اشتراک گذاری؟ اتصال باز شکست خواهد خورد.",
|
"share_remove_tips" => "آیا مطمئن هستید که میخواهید اشتراک را لغو کنید؟ اتصال عمومی نامعتبر خواهد بود.",
|
||||||
"share_path" => "راه به اشتراک گذاشته شده",
|
"share_path" => "مسیر را به اشتراک بگذارید",
|
||||||
"share_title" => "به اشتراک گذاری منابع",
|
"share_title" => "به اشتراک گذاری منابع",
|
||||||
"share_name" => "اشتراک عنوان",
|
"share_name" => "عنوان را به اشتراک بگذارید",
|
||||||
"share_time" => "انقضاء",
|
"share_time" => "انقضاء",
|
||||||
"share_time_desc" => "نول تنظیم نشده است",
|
"share_time_desc" => "نول تنظیم نشده است",
|
||||||
"share_password" => "رمز عبور عصاره",
|
"share_password" => "رمز عبور عصاره",
|
||||||
|
@ -733,6 +733,8 @@ return array(
|
||||||
"PluginInstallSelf" => "نصب دستی",
|
"PluginInstallSelf" => "نصب دستی",
|
||||||
"Plugin.config.auth" => "مجوز",
|
"Plugin.config.auth" => "مجوز",
|
||||||
"Plugin.config.authDesc" => "همه از تنظیمات موجود، و یا مشخص کاربران، گروه های کاربری، گروه های حقوق می توانید استفاده کنید",
|
"Plugin.config.authDesc" => "همه از تنظیمات موجود، و یا مشخص کاربران، گروه های کاربری، گروه های حقوق می توانید استفاده کنید",
|
||||||
|
"Plugin.config.authOpen" => "دسترسی آزاد",
|
||||||
|
"Plugin.config.authOpenDesc" => "بدون نیاز به بازدید قابل دسترسی است، می توان برای تماس خارجی رابط استفاده کرد",
|
||||||
"Plugin.config.authAll" => "دارنده",
|
"Plugin.config.authAll" => "دارنده",
|
||||||
"Plugin.config.authUser" => "کاربر",
|
"Plugin.config.authUser" => "کاربر",
|
||||||
"Plugin.config.authGroup" => "گروه",
|
"Plugin.config.authGroup" => "گروه",
|
||||||
|
|
Binary file not shown.
|
@ -156,15 +156,15 @@ return array(
|
||||||
"explorerNew" => "lien kod",
|
"explorerNew" => "lien kod",
|
||||||
"zip_download_ready" => "Après la compression va télécharger automatiquement, s'il vous plaît patienter ...",
|
"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",
|
"set_background" => "Définir comme Fond d'écran",
|
||||||
"share" => "part",
|
"share" => "Partager",
|
||||||
"my_share" => "Mes partages",
|
"my_share" => "Mon partage",
|
||||||
"group_share" => "Des groupes de participation étrangère",
|
"group_share" => "Groupe de partage externe",
|
||||||
"share_edit" => "Modifier Partager",
|
"share_edit" => "Modifier partager",
|
||||||
"share_remove" => "Départager",
|
"share_remove" => "Annuler le partage",
|
||||||
"share_remove_tips" => "OK Annuler Partager? Ouvrir la connexion échouera.",
|
"share_remove_tips" => "Êtes-vous sûr de vouloir annuler le partage? La connexion publique sera invalidée.",
|
||||||
"share_path" => "Sentier partagé",
|
"share_path" => "Partagez le chemin",
|
||||||
"share_title" => "Partage de ressources",
|
"share_title" => "Partage de ressources",
|
||||||
"share_name" => "Partager Titre",
|
"share_name" => "Partagez le titre",
|
||||||
"share_time" => "expiration",
|
"share_time" => "expiration",
|
||||||
"share_time_desc" => "Null n'est pas réglé",
|
"share_time_desc" => "Null n'est pas réglé",
|
||||||
"share_password" => "mot de passe Extrait",
|
"share_password" => "mot de passe Extrait",
|
||||||
|
@ -733,6 +733,8 @@ return array(
|
||||||
"PluginInstallSelf" => "Installation manuelle",
|
"PluginInstallSelf" => "Installation manuelle",
|
||||||
"Plugin.config.auth" => "autorisations",
|
"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.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.authAll" => "titulaire",
|
||||||
"Plugin.config.authUser" => "utilisateur",
|
"Plugin.config.authUser" => "utilisateur",
|
||||||
"Plugin.config.authGroup" => "groupes",
|
"Plugin.config.authGroup" => "groupes",
|
||||||
|
|
Binary file not shown.
|
@ -157,14 +157,14 @@ return array(
|
||||||
"zip_download_ready" => "संपीड़न स्वचालित रूप से डाउनलोड करने के बाद, कृपया प्रतीक्षा करें ...",
|
"zip_download_ready" => "संपीड़न स्वचालित रूप से डाउनलोड करने के बाद, कृपया प्रतीक्षा करें ...",
|
||||||
"set_background" => "के रूप में डेस्कटॉप वॉलपेपर सेट",
|
"set_background" => "के रूप में डेस्कटॉप वॉलपेपर सेट",
|
||||||
"share" => "शेयर",
|
"share" => "शेयर",
|
||||||
"my_share" => "मैं साझा",
|
"my_share" => "मेरा हिस्सा",
|
||||||
"group_share" => "विदेशी शेयर के समूह",
|
"group_share" => "बाहरी साझाकरण समूह",
|
||||||
"share_edit" => "शेयर संपादित करें",
|
"share_edit" => "शेयर संपादित करें",
|
||||||
"share_remove" => "अनसाझा",
|
"share_remove" => "साझा करना रद्द करें",
|
||||||
"share_remove_tips" => "ठीक शेयर रद्द करें? खुले कनेक्शन असफल हो जायेगी।",
|
"share_remove_tips" => "क्या आप वाकई साझा करना रद्द करना चाहते हैं? सार्वजनिक कनेक्शन को रद्द कर दिया जाएगा",
|
||||||
"share_path" => "साझा पथ",
|
"share_path" => "मार्ग साझा करें",
|
||||||
"share_title" => "रिसोर्स शेयरिंग",
|
"share_title" => "संसाधन साझाकरण",
|
||||||
"share_name" => "शेयर शीर्षक",
|
"share_name" => "शीर्षक साझा करें",
|
||||||
"share_time" => "समय सीमा समाप्त",
|
"share_time" => "समय सीमा समाप्त",
|
||||||
"share_time_desc" => "अशक्त सेट नहीं है",
|
"share_time_desc" => "अशक्त सेट नहीं है",
|
||||||
"share_password" => "निकालें पासवर्ड",
|
"share_password" => "निकालें पासवर्ड",
|
||||||
|
@ -733,6 +733,8 @@ return array(
|
||||||
"PluginInstallSelf" => "मैन्युअल स्थापना",
|
"PluginInstallSelf" => "मैन्युअल स्थापना",
|
||||||
"Plugin.config.auth" => "अनुमतियां",
|
"Plugin.config.auth" => "अनुमतियां",
|
||||||
"Plugin.config.authDesc" => "उपलब्ध सभी सेटिंग, या निर्दिष्ट करें कि उपयोगकर्ता, उपयोगकर्ता समूहों, अधिकार समूहों का उपयोग कर सकते",
|
"Plugin.config.authDesc" => "उपलब्ध सभी सेटिंग, या निर्दिष्ट करें कि उपयोगकर्ता, उपयोगकर्ता समूहों, अधिकार समूहों का उपयोग कर सकते",
|
||||||
|
"Plugin.config.authOpen" => "एक्सेस खोलें",
|
||||||
|
"Plugin.config.authOpenDesc" => "यात्रा करने की कोई ज़रूरत नहीं है, बाहरी इंटरफ़ेस कॉल के लिए उपयोग किया जा सकता है",
|
||||||
"Plugin.config.authAll" => "धारक",
|
"Plugin.config.authAll" => "धारक",
|
||||||
"Plugin.config.authUser" => "उपयोगकर्ता",
|
"Plugin.config.authUser" => "उपयोगकर्ता",
|
||||||
"Plugin.config.authGroup" => "समूह",
|
"Plugin.config.authGroup" => "समूह",
|
||||||
|
|
Binary file not shown.
|
@ -157,14 +157,14 @@ return array(
|
||||||
"zip_download_ready" => "Tömörítés után automatikusan letölti, kérem várjon ...",
|
"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",
|
"set_background" => "Beállítás Desktop Wallpaper",
|
||||||
"share" => "részvény",
|
"share" => "részvény",
|
||||||
"my_share" => "megosztottam",
|
"my_share" => "Az én részem",
|
||||||
"group_share" => "Csoportjai külföldi részesedés",
|
"group_share" => "Csoport külső megosztása",
|
||||||
"share_edit" => "szerkesztés Share",
|
"share_edit" => "Részvény szerkesztése",
|
||||||
"share_remove" => "megosztás visszavonása",
|
"share_remove" => "Megosztás törlése",
|
||||||
"share_remove_tips" => "OK Mégse Share? Nyitott kapcsolat nem fog működni.",
|
"share_remove_tips" => "Biztosan törölni szeretné a megosztást? A nyilvános kapcsolat érvényét veszti.",
|
||||||
"share_path" => "megosztott Path",
|
"share_path" => "Ossza meg az utat",
|
||||||
"share_title" => "Resource Sharing",
|
"share_title" => "Erőforrás megosztás",
|
||||||
"share_name" => "Share Cím",
|
"share_name" => "Ossza meg a címet",
|
||||||
"share_time" => "lejárata",
|
"share_time" => "lejárata",
|
||||||
"share_time_desc" => "Null nincs beállítva",
|
"share_time_desc" => "Null nincs beállítva",
|
||||||
"share_password" => "kivonat jelszó",
|
"share_password" => "kivonat jelszó",
|
||||||
|
@ -733,6 +733,8 @@ return array(
|
||||||
"PluginInstallSelf" => "Kézi telepítés",
|
"PluginInstallSelf" => "Kézi telepítés",
|
||||||
"Plugin.config.auth" => "Engedélyek",
|
"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.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.authAll" => "tartó",
|
||||||
"Plugin.config.authUser" => "használó",
|
"Plugin.config.authUser" => "használó",
|
||||||
"Plugin.config.authGroup" => "csoportok",
|
"Plugin.config.authGroup" => "csoportok",
|
||||||
|
|
Binary file not shown.
|
@ -157,14 +157,14 @@ return array(
|
||||||
"zip_download_ready" => "Dopo la compressione scaricherà automaticamente, attendere prego ...",
|
"zip_download_ready" => "Dopo la compressione scaricherà automaticamente, attendere prego ...",
|
||||||
"set_background" => "Imposta come sfondo del desktop",
|
"set_background" => "Imposta come sfondo del desktop",
|
||||||
"share" => "quota",
|
"share" => "quota",
|
||||||
"my_share" => "ho condiviso",
|
"my_share" => "La mia parte",
|
||||||
"group_share" => "Gruppi di quota estera",
|
"group_share" => "Condivisione esterna del gruppo",
|
||||||
"share_edit" => "Modifica Condividi",
|
"share_edit" => "Modifica condivisione",
|
||||||
"share_remove" => "Unsharing",
|
"share_remove" => "Annulla condivisione",
|
||||||
"share_remove_tips" => "OK Annulla Condividi? Aprire la connessione avrà esito negativo.",
|
"share_remove_tips" => "Sei sicuro di voler annullare la condivisione? La connessione pubblica sarà invalidata.",
|
||||||
"share_path" => "percorso condiviso",
|
"share_path" => "Condividi il percorso",
|
||||||
"share_title" => "La condivisione delle risorse",
|
"share_title" => "Condivisione delle risorse",
|
||||||
"share_name" => "Condividi Titolo",
|
"share_name" => "Condividi il titolo",
|
||||||
"share_time" => "scadenza",
|
"share_time" => "scadenza",
|
||||||
"share_time_desc" => "Null non è impostato",
|
"share_time_desc" => "Null non è impostato",
|
||||||
"share_password" => "Password estratto",
|
"share_password" => "Password estratto",
|
||||||
|
@ -733,6 +733,8 @@ return array(
|
||||||
"PluginInstallSelf" => "Installazione manuale",
|
"PluginInstallSelf" => "Installazione manuale",
|
||||||
"Plugin.config.auth" => "permessi",
|
"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.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.authAll" => "titolare",
|
||||||
"Plugin.config.authUser" => "utente",
|
"Plugin.config.authUser" => "utente",
|
||||||
"Plugin.config.authGroup" => "gruppi",
|
"Plugin.config.authGroup" => "gruppi",
|
||||||
|
|
|
@ -157,14 +157,14 @@ return array(
|
||||||
"zip_download_ready" => "自動的にダウンロードされ、圧縮した後、しばらくお待ちください...",
|
"zip_download_ready" => "自動的にダウンロードされ、圧縮した後、しばらくお待ちください...",
|
||||||
"set_background" => "デスクトップの壁紙として設定",
|
"set_background" => "デスクトップの壁紙として設定",
|
||||||
"share" => "シェア",
|
"share" => "シェア",
|
||||||
"my_share" => "私は、共有しました",
|
"my_share" => "私のシェア",
|
||||||
"group_share" => "外国株式のグループ",
|
"group_share" => "グループ外部共有",
|
||||||
"share_edit" => "編集シェア",
|
"share_edit" => "共有を編集",
|
||||||
"share_remove" => "共有解除",
|
"share_remove" => "共有をキャンセルする",
|
||||||
"share_remove_tips" => "OKキャンセル共有?オープン接続は失敗します。",
|
"share_remove_tips" => "共有をキャンセルしてもよろしいですか?パブリック接続は無効になります。",
|
||||||
"share_path" => "共有パス",
|
"share_path" => "パスを共有する",
|
||||||
"share_title" => "リソースの共有",
|
"share_title" => "リソースの共有",
|
||||||
"share_name" => "シェアタイトル",
|
"share_name" => "タイトルを共有する",
|
||||||
"share_time" => "期限切れ",
|
"share_time" => "期限切れ",
|
||||||
"share_time_desc" => "ヌルが設定されていません",
|
"share_time_desc" => "ヌルが設定されていません",
|
||||||
"share_password" => "パスワードを抽出",
|
"share_password" => "パスワードを抽出",
|
||||||
|
@ -733,6 +733,8 @@ return array(
|
||||||
"PluginInstallSelf" => "手動インストール",
|
"PluginInstallSelf" => "手動インストール",
|
||||||
"Plugin.config.auth" => "アクセス権",
|
"Plugin.config.auth" => "アクセス権",
|
||||||
"Plugin.config.authDesc" => "利用可能な設定のすべて、または指定したユーザー、ユーザーグループは、人権団体が使用することができます",
|
"Plugin.config.authDesc" => "利用可能な設定のすべて、または指定したユーザー、ユーザーグループは、人権団体が使用することができます",
|
||||||
|
"Plugin.config.authOpen" => "オープンアクセス",
|
||||||
|
"Plugin.config.authOpenDesc" => "訪問する必要はありませんアクセスすることができます、外部インターフェイスの呼び出しに使用することができます",
|
||||||
"Plugin.config.authAll" => "ホルダー",
|
"Plugin.config.authAll" => "ホルダー",
|
||||||
"Plugin.config.authUser" => "ユーザー",
|
"Plugin.config.authUser" => "ユーザー",
|
||||||
"Plugin.config.authGroup" => "グループ",
|
"Plugin.config.authGroup" => "グループ",
|
||||||
|
|
Binary file not shown.
|
@ -156,15 +156,15 @@ return array(
|
||||||
"explorerNew" => "Kod nurodo",
|
"explorerNew" => "Kod nurodo",
|
||||||
"zip_download_ready" => "Po suspaudimo bus automatiškai atsisiųsti, prašome palaukti ...",
|
"zip_download_ready" => "Po suspaudimo bus automatiškai atsisiųsti, prašome palaukti ...",
|
||||||
"set_background" => "Nustatyti kaip darbastalio tapetai",
|
"set_background" => "Nustatyti kaip darbastalio tapetai",
|
||||||
"share" => "dalis",
|
"share" => "Dalintis",
|
||||||
"my_share" => "aš dalinausi",
|
"my_share" => "Mano akcija",
|
||||||
"group_share" => "Grupės užsienio akciją",
|
"group_share" => "Grupinis išorinis bendravimas",
|
||||||
"share_edit" => "Redaguoti Dalintis",
|
"share_edit" => "Redaguoti akciją",
|
||||||
"share_remove" => "Anuliuojant",
|
"share_remove" => "Atšaukti bendrinimą",
|
||||||
"share_remove_tips" => "Gerai Atšaukti Dalintis? Atviras ryšys žlugs.",
|
"share_remove_tips" => "Ar tikrai norite atšaukti bendrinimą? Viešasis ryšys bus negaliojantis.",
|
||||||
"share_path" => "Bendri kelias",
|
"share_path" => "Pasidalykite keliu",
|
||||||
"share_title" => "bendras išteklių dalijimasis",
|
"share_title" => "Dalijimasis ištekliais",
|
||||||
"share_name" => "Dalintis Pavadinimas",
|
"share_name" => "Pasidalykite pavadinimu",
|
||||||
"share_time" => "pasibaigimas",
|
"share_time" => "pasibaigimas",
|
||||||
"share_time_desc" => "Null nenustatytas",
|
"share_time_desc" => "Null nenustatytas",
|
||||||
"share_password" => "ištrauka slaptažodį",
|
"share_password" => "ištrauka slaptažodį",
|
||||||
|
@ -733,6 +733,8 @@ return array(
|
||||||
"PluginInstallSelf" => "Rankinis diegimas",
|
"PluginInstallSelf" => "Rankinis diegimas",
|
||||||
"Plugin.config.auth" => "leidimai",
|
"Plugin.config.auth" => "leidimai",
|
||||||
"Plugin.config.authDesc" => "Visi galimų nustatymų, arba nurodyti vartotojai, vartotojų grupės, teisių grupės gali naudoti",
|
"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.authAll" => "turėtojas",
|
||||||
"Plugin.config.authUser" => "vartotojas",
|
"Plugin.config.authUser" => "vartotojas",
|
||||||
"Plugin.config.authGroup" => "grupės",
|
"Plugin.config.authGroup" => "grupės",
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -156,15 +156,15 @@ return array(
|
||||||
"explorerNew" => "ligação kod",
|
"explorerNew" => "ligação kod",
|
||||||
"zip_download_ready" => "Após a compressão irá baixar automaticamente, por favor aguarde ...",
|
"zip_download_ready" => "Após a compressão irá baixar automaticamente, por favor aguarde ...",
|
||||||
"set_background" => "Definir como Papel de parede",
|
"set_background" => "Definir como Papel de parede",
|
||||||
"share" => "ação",
|
"share" => "Compartilhe",
|
||||||
"my_share" => "Eu compartilhei",
|
"my_share" => "Minha parte",
|
||||||
"group_share" => "Grupos de participação estrangeira",
|
"group_share" => "Grupo de compartilhamento externo",
|
||||||
"share_edit" => "Editar Partilhar",
|
"share_edit" => "Editar compartilhamento",
|
||||||
"share_remove" => "descompartilhando",
|
"share_remove" => "Cancelar a partilha",
|
||||||
"share_remove_tips" => "OK Cancelar Compartilhar? conexão aberta falhará.",
|
"share_remove_tips" => "Tem certeza de que deseja cancelar o compartilhamento? A conexão pública será invalidada.",
|
||||||
"share_path" => "Caminho compartilhada",
|
"share_path" => "Compartilhe o caminho",
|
||||||
"share_title" => "Compartilhamento de recursos",
|
"share_title" => "Compartilhamento de recursos",
|
||||||
"share_name" => "Compartilhar Título",
|
"share_name" => "Compartilhe o título",
|
||||||
"share_time" => "expiração",
|
"share_time" => "expiração",
|
||||||
"share_time_desc" => "Nulo não está definido",
|
"share_time_desc" => "Nulo não está definido",
|
||||||
"share_password" => "password Extract",
|
"share_password" => "password Extract",
|
||||||
|
@ -733,6 +733,8 @@ return array(
|
||||||
"PluginInstallSelf" => "Instalação manual",
|
"PluginInstallSelf" => "Instalação manual",
|
||||||
"Plugin.config.auth" => "permissões",
|
"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.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.authAll" => "titular",
|
||||||
"Plugin.config.authUser" => "usuário",
|
"Plugin.config.authUser" => "usuário",
|
||||||
"Plugin.config.authGroup" => "grupos",
|
"Plugin.config.authGroup" => "grupos",
|
||||||
|
|
|
@ -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 ...",
|
"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",
|
"set_background" => "Setare ca fundal pentru desktop",
|
||||||
"share" => "acțiune",
|
"share" => "acțiune",
|
||||||
"my_share" => "am împărtășit",
|
"my_share" => "Cota mea",
|
||||||
"group_share" => "Grupurile de cota străină",
|
"group_share" => "Grup de partajare externă",
|
||||||
"share_edit" => "Editeaza Spune-le prietenilor",
|
"share_edit" => "Editați partajarea",
|
||||||
"share_remove" => "Dezactivarea partajării",
|
"share_remove" => "Anulați partajarea",
|
||||||
"share_remove_tips" => "OK Anulare Spune-le prietenilor? conexiune deschisă va eșua.",
|
"share_remove_tips" => "Sigur doriți să anulați distribuirea? Conexiunea publică va fi invalidată.",
|
||||||
"share_path" => "Cale partajată",
|
"share_path" => "Distribuiți calea",
|
||||||
"share_title" => "Schimbul de resurse",
|
"share_title" => "Distribuirea resurselor",
|
||||||
"share_name" => "Spune-le prietenilor Titlu",
|
"share_name" => "Trimiteți titlul",
|
||||||
"share_time" => "expirare",
|
"share_time" => "expirare",
|
||||||
"share_time_desc" => "Nul nu este setat",
|
"share_time_desc" => "Nul nu este setat",
|
||||||
"share_password" => "parola extract",
|
"share_password" => "parola extract",
|
||||||
|
@ -733,6 +733,8 @@ return array(
|
||||||
"PluginInstallSelf" => "Instalare manuală",
|
"PluginInstallSelf" => "Instalare manuală",
|
||||||
"Plugin.config.auth" => "Permisiuni",
|
"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.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.authAll" => "titular",
|
||||||
"Plugin.config.authUser" => "utilizator",
|
"Plugin.config.authUser" => "utilizator",
|
||||||
"Plugin.config.authGroup" => "Grupuri",
|
"Plugin.config.authGroup" => "Grupuri",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<div class="box">
|
<div class="box">
|
||||||
<div class="title"><span>Что такое KODExplorer?</span>
|
<div class="title"><span>Что такое KODExplorer?</span>
|
||||||
</div>
|
</div><p></p>
|
||||||
<p>KODExplorer - это веб-интерфейс с открытым исходным кодом, созданный для управления онлайн документами и редактирования кода. В нём использован классический оконный интерфейс, как у Windows. Он имеет набор онлайн инструментов для предварительного просмотра, редактирования, выгрузки, скачивания и распаковывания файлов, онлайн воспроизведения музыки. Вы можете работать прямо в браузере, смотреть код, а также напрямую разворачивать свой веб-сайт. Это удобно, быстро и безопасно.</p>
|
<p>KODExplorer - это веб-интерфейс с открытым исходным кодом, созданный для управления онлайн документами и редактирования кода. В нём использован классический оконный интерфейс, как у Windows. Он имеет набор онлайн инструментов для предварительного просмотра, редактирования, выгрузки, скачивания и распаковывания файлов, онлайн воспроизведения музыки. Вы можете работать прямо в браузере, смотреть код, а также напрямую разворачивать свой веб-сайт. Это удобно, быстро и безопасно.</p>
|
||||||
<p><b>—Концепция дизайна—</b>
|
<p><b>—Концепция дизайна—</b>
|
||||||
</p>
|
</p>
|
||||||
|
@ -19,7 +19,7 @@
|
||||||
<p>Выбор, выделяя указателем мыши, перемещение или загрузка с помощью drag-and-drop, онлайн-редактор, видео-плеер, упаковка и распаковка архивов.</p>
|
<p>Выбор, выделяя указателем мыши, перемещение или загрузка с помощью drag-and-drop, онлайн-редактор, видео-плеер, упаковка и распаковка архивов.</p>
|
||||||
<p>Бесшовная интеграция всех частей; диалоговые окна, многофункциональный диспетчер задач и другие функции.</p>
|
<p>Бесшовная интеграция всех частей; диалоговые окна, многофункциональный диспетчер задач и другие функции.</p>
|
||||||
<p>Онлайн редактор поддерживает множество синтаксисов кода, такие как HTML, CSS, JS, а также многие-многие другие!</p>
|
<p>Онлайн редактор поддерживает множество синтаксисов кода, такие как HTML, CSS, JS, а также многие-многие другие!</p>
|
||||||
<p>Идеально поддерживает китайский язык... <i>А также русский! -Примечание переводчика</i></p>
|
<p>Идеально поддерживает китайский язык... А также русский! -Примечание переводчика</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="box">
|
<div class="box">
|
||||||
<div class="title"><span>Технологии с открытым исходным кодом</span>
|
<div class="title"><span>Технологии с открытым исходным кодом</span>
|
||||||
|
|
|
@ -32,4 +32,4 @@
|
||||||
<p><i class="icon-tags"></i> Ctrl+Backspace - Вперед</p>
|
<p><i class="icon-tags"></i> Ctrl+Backspace - Вперед</p>
|
||||||
<p><i class="icon-tags"></i> F2 - Переименовать выбранный файл(папку)</p>
|
<p><i class="icon-tags"></i> F2 - Переименовать выбранный файл(папку)</p>
|
||||||
<p><i class="icon-tags"></i> Home/End/стрелки - Выбор файлов и навигация</p>
|
<p><i class="icon-tags"></i> Home/End/стрелки - Выбор файлов и навигация</p>
|
||||||
</div>
|
</div><p><i class="icon-tags"></i></p>
|
|
@ -156,15 +156,15 @@ return array(
|
||||||
"explorerNew" => "KOD ссылка",
|
"explorerNew" => "KOD ссылка",
|
||||||
"zip_download_ready" => "Архив будет автоматически загружен, пожалуйста подождите...",
|
"zip_download_ready" => "Архив будет автоматически загружен, пожалуйста подождите...",
|
||||||
"set_background" => "Установить как обои для рабочего стола",
|
"set_background" => "Установить как обои для рабочего стола",
|
||||||
"share" => "Общий доступ",
|
"share" => "доля",
|
||||||
"my_share" => "Общий доступ",
|
"my_share" => "Моя доля",
|
||||||
"group_share" => "Публичная группа",
|
"group_share" => "Групповой внешний обмен",
|
||||||
"share_edit" => "Редактировать общий доступ",
|
"share_edit" => "Изменить долю",
|
||||||
"share_remove" => "Удалить общий доступ",
|
"share_remove" => "Отменить обмен",
|
||||||
"share_remove_tips" => "Удалить общий доступ? Файл не будет доступен другим пользователям",
|
"share_remove_tips" => "Вы действительно хотите отменить совместное использование? Общественное соединение будет признано недействительным.",
|
||||||
"share_path" => "Путь к файлу",
|
"share_path" => "Доля пути",
|
||||||
"share_title" => "Общий доступ",
|
"share_title" => "Совместное использование ресурсов",
|
||||||
"share_name" => "Название файла",
|
"share_name" => "Поделиться заголовком",
|
||||||
"share_time" => "Истекает",
|
"share_time" => "Истекает",
|
||||||
"share_time_desc" => "0 - никогда",
|
"share_time_desc" => "0 - никогда",
|
||||||
"share_password" => "Пароль",
|
"share_password" => "Пароль",
|
||||||
|
@ -281,7 +281,7 @@ return array(
|
||||||
"forget_password" => "Забыли пароль",
|
"forget_password" => "Забыли пароль",
|
||||||
"forget_password_tips" => "Забыли пароль администратора: <br/> Пожалуйста , войдите на сервер и удалите файл <b>./data/system/install.lock</b>для сброса пароля; <br/><br/> Обычный пользователь: <br/> Пожалуйста, обратитесь к администратору, чтобы сбросить пароль.",
|
"forget_password_tips" => "Забыли пароль администратора: <br/> Пожалуйста , войдите на сервер и удалите файл <b>./data/system/install.lock</b>для сброса пароля; <br/><br/> Обычный пользователь: <br/> Пожалуйста, обратитесь к администратору, чтобы сбросить пароль.",
|
||||||
"copyright_desc" => "KodExplorer - это система управления веб-документами. Вы можете использовать её для внутреннего или совместного управления документами, на сервере для управления сайтом, замены FTP, и даже webIDE для интерактивного режима разработки. Вы также можете интегрировать её в другие системы.",
|
"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_info" => "Copyright © <a href=\"http://kodcloud.com/\" target=\"_blank\">kodcloud.com</a> Все права защищены.",
|
||||||
"copyright_pre" => "Powered by KodExplorer",
|
"copyright_pre" => "Powered by KodExplorer",
|
||||||
"kod_name" => "KodExplorer",
|
"kod_name" => "KodExplorer",
|
||||||
|
@ -596,8 +596,8 @@ return array(
|
||||||
"action_add" => "Добавить",
|
"action_add" => "Добавить",
|
||||||
"action_edit" => "Изменить",
|
"action_edit" => "Изменить",
|
||||||
"action_del" => "Удалить",
|
"action_del" => "Удалить",
|
||||||
"group_role_ext_warning" => "Не разрешено<br/>Переименовывать, редактировать сохранять, загружать, распаковывать файлы",
|
"group_role_ext_warning" => "Не разрешено<br/>Переименовывать, редактировать сохранять, <br/>загружать, распаковывать файлы",
|
||||||
"group_tips" => "<li>1. Названия групп пользователей не могут быть дублированы, изменение названия группы автоматически переназначит пользователей</li><li>2. Усильте систему безопасности<i>(если PHP в веб-каталоге, это означает, что пользователи смогут изменять его настройки, что недопустимо)</i></li><li>3. Доступ к управлению пользователями и группами; разрешения на просмотр и изменения связаны. Будьте осторожны.</li><li>4. Установка разрешений доступа для группы добавит её членам эти права, однако не измененные разрешения не наследуются</li>",
|
"group_tips" => "<li>1. Названия групп пользователей не могут быть дублированы, изменение названия группы автоматически переназначит пользователей</li><li>2. Усильте систему безопасности<i>(если PHP в веб-каталоге, это означает, что пользователи смогут изменять его настройки, что недопустимо)</i></li><li>3. Доступ к управлению пользователями и группами; разрешения на просмотр и изменения связаны. Будьте осторожны.</li><li>4. Установка разрешений доступа для группы добавит её членам эти права, однако не измененные разрешения не наследуются<i></i></li>",
|
||||||
"not_null" => "Заполните обязательные поля",
|
"not_null" => "Заполните обязательные поля",
|
||||||
"picture_can_not_null" => "Укажите картинку",
|
"picture_can_not_null" => "Укажите картинку",
|
||||||
"rname_success" => "Переименовано",
|
"rname_success" => "Переименовано",
|
||||||
|
@ -733,6 +733,8 @@ return array(
|
||||||
"PluginInstallSelf" => "Ручная установка",
|
"PluginInstallSelf" => "Ручная установка",
|
||||||
"Plugin.config.auth" => "Управление доступом",
|
"Plugin.config.auth" => "Управление доступом",
|
||||||
"Plugin.config.authDesc" => "Укажите владельца, пользователя, группу разрешений или пользователей, имеющих доступ к дополнению",
|
"Plugin.config.authDesc" => "Укажите владельца, пользователя, группу разрешений или пользователей, имеющих доступ к дополнению",
|
||||||
|
"Plugin.config.authOpen" => "Открытый доступ",
|
||||||
|
"Plugin.config.authOpenDesc" => "Не нужно посещать, можно получить доступ, может использоваться для вызова внешнего интерфейса",
|
||||||
"Plugin.config.authAll" => "Все",
|
"Plugin.config.authAll" => "Все",
|
||||||
"Plugin.config.authUser" => "Пользователь",
|
"Plugin.config.authUser" => "Пользователь",
|
||||||
"Plugin.config.authGroup" => "Группа",
|
"Plugin.config.authGroup" => "Группа",
|
||||||
|
|
|
@ -156,15 +156,15 @@ return array(
|
||||||
"explorerNew" => "kod සබැඳිය",
|
"explorerNew" => "kod සබැඳිය",
|
||||||
"zip_download_ready" => "සම්පීඩන ස්වයංක්රීයව download ඇත පසු, කරුණාකර රැදී සිටින්න ...",
|
"zip_download_ready" => "සම්පීඩන ස්වයංක්රීයව download ඇත පසු, කරුණාකර රැදී සිටින්න ...",
|
||||||
"set_background" => "පරිගණක බිතුපත ලෙස සකසන්න",
|
"set_background" => "පරිගණක බිතුපත ලෙස සකසන්න",
|
||||||
"share" => "මෙම දැන්වීම",
|
"share" => "බෙදාගන්න",
|
||||||
"my_share" => "මම හවුල්",
|
"my_share" => "මගේ කොටස",
|
||||||
"group_share" => "විදේශ කොටස් කණ්ඩායම්",
|
"group_share" => "බාහිර හුවමාරු කිරීම",
|
||||||
"share_edit" => "සංස්කරණය කරන්න මෙම දැන්වීම",
|
"share_edit" => "කොටස බෙදාගන්න",
|
||||||
"share_remove" => "Unsharing",
|
"share_remove" => "බෙදාගැනීම අවලංගු කරන්න",
|
||||||
"share_remove_tips" => "හරි මෙම දැන්වීම අවලංගු කරන්න? විවෘත සම්බන්ධතාවය අසාර්ථක වනු ඇත.",
|
"share_remove_tips" => "හුවමාරු කිරීම අවලංගු කිරීමට අවශ්ය බව ඔබට විශ්වාසද? පොදු සම්බන්ධතාවය අවලංගු වේ.",
|
||||||
"share_path" => "හවුල් පාත්",
|
"share_path" => "මාර්ගය බෙදාගන්න",
|
||||||
"share_title" => "සම්පත් දැන්වීම බෙදා ගන්න විද්යුත්",
|
"share_title" => "සම්පත් බෙදාහදා ගැනීම",
|
||||||
"share_name" => "මෙම දැන්වීම හිමිකම්",
|
"share_name" => "මාතෘකාව බෙදාගන්න",
|
||||||
"share_time" => "කල් ඉකුත් වීම්",
|
"share_time" => "කල් ඉකුත් වීම්",
|
||||||
"share_time_desc" => "Null පිහිටුවා නැත",
|
"share_time_desc" => "Null පිහිටුවා නැත",
|
||||||
"share_password" => "රහස් පදය උපුටා ගැනීම",
|
"share_password" => "රහස් පදය උපුටා ගැනීම",
|
||||||
|
@ -733,6 +733,8 @@ return array(
|
||||||
"PluginInstallSelf" => "ශ්රමික ස්ථාපනය",
|
"PluginInstallSelf" => "ශ්රමික ස්ථාපනය",
|
||||||
"Plugin.config.auth" => "අවසර",
|
"Plugin.config.auth" => "අවසර",
|
||||||
"Plugin.config.authDesc" => "ලබා ගත හැකි සැකසුම් සියලු, හෝ පරිශීලකයන්, පරිශීලක කණ්ඩායම්, අයිතිවාසිකම් කණ්ඩායම් භාවිතා කළ හැකි නියම",
|
"Plugin.config.authDesc" => "ලබා ගත හැකි සැකසුම් සියලු, හෝ පරිශීලකයන්, පරිශීලක කණ්ඩායම්, අයිතිවාසිකම් කණ්ඩායම් භාවිතා කළ හැකි නියම",
|
||||||
|
"Plugin.config.authOpen" => "විවෘත ප්රවේශය",
|
||||||
|
"Plugin.config.authOpenDesc" => "බාහිර අතුරු මුහුණත ඇමතුම සඳහා භාවිතා කළ හැක",
|
||||||
"Plugin.config.authAll" => "දරන්නා",
|
"Plugin.config.authAll" => "දරන්නා",
|
||||||
"Plugin.config.authUser" => "පරිශීලක",
|
"Plugin.config.authUser" => "පරිශීලක",
|
||||||
"Plugin.config.authGroup" => "කණ්ඩායම්",
|
"Plugin.config.authGroup" => "කණ්ඩායම්",
|
||||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -156,15 +156,15 @@ return array(
|
||||||
"explorerNew" => "код Линк",
|
"explorerNew" => "код Линк",
|
||||||
"zip_download_ready" => "Након компресије ће аутоматски преузети, сачекајте ...",
|
"zip_download_ready" => "Након компресије ће аутоматски преузети, сачекајте ...",
|
||||||
"set_background" => "Постави као Десктоп Валлпапер",
|
"set_background" => "Постави као Десктоп Валлпапер",
|
||||||
"share" => "удео",
|
"share" => "Подели",
|
||||||
"my_share" => "сам поделио",
|
"my_share" => "Мој део",
|
||||||
"group_share" => "Групе страних удела",
|
"group_share" => "Спољна дељења групе",
|
||||||
"share_edit" => "едит Подели",
|
"share_edit" => "Измени удио",
|
||||||
"share_remove" => "Унсхаринг",
|
"share_remove" => "Откажи дељење",
|
||||||
"share_remove_tips" => "ОК Цанцел Схаре? Отворено веза неће успети.",
|
"share_remove_tips" => "Да ли сте сигурни да желите да откажете дељење? Јавна веза ће бити поништена.",
|
||||||
"share_path" => "схаред Пут",
|
"share_path" => "Дели путању",
|
||||||
"share_title" => "Дељење ресурса",
|
"share_title" => "Подела ресурса",
|
||||||
"share_name" => "Подели Наслов",
|
"share_name" => "Поделите наслов",
|
||||||
"share_time" => "истицање",
|
"share_time" => "истицање",
|
||||||
"share_time_desc" => "Нулл није постављен",
|
"share_time_desc" => "Нулл није постављен",
|
||||||
"share_password" => "екстракт лозинка",
|
"share_password" => "екстракт лозинка",
|
||||||
|
@ -733,6 +733,8 @@ return array(
|
||||||
"PluginInstallSelf" => "Ручна инсталација",
|
"PluginInstallSelf" => "Ручна инсталација",
|
||||||
"Plugin.config.auth" => "Дозволе",
|
"Plugin.config.auth" => "Дозволе",
|
||||||
"Plugin.config.authDesc" => "Све од доступних подешавања, или одређују корисници, корисничке групе, групе за људска права могу користити",
|
"Plugin.config.authDesc" => "Све од доступних подешавања, или одређују корисници, корисничке групе, групе за људска права могу користити",
|
||||||
|
"Plugin.config.authOpen" => "Отворен приступ",
|
||||||
|
"Plugin.config.authOpenDesc" => "Нема потребе за посјетом може се приступити, може се користити за екстерни позив за позиве",
|
||||||
"Plugin.config.authAll" => "ималац",
|
"Plugin.config.authAll" => "ималац",
|
||||||
"Plugin.config.authUser" => "корисник",
|
"Plugin.config.authUser" => "корисник",
|
||||||
"Plugin.config.authGroup" => "grupe",
|
"Plugin.config.authGroup" => "grupe",
|
||||||
|
|
Binary file not shown.
|
@ -156,15 +156,15 @@ return array(
|
||||||
"explorerNew" => "Kod இணைப்பை",
|
"explorerNew" => "Kod இணைப்பை",
|
||||||
"zip_download_ready" => "சுருக்க தானாகவே பதிவிறக்கம் பிறகு, தயவு செய்து காத்திருக்கவும் ...",
|
"zip_download_ready" => "சுருக்க தானாகவே பதிவிறக்கம் பிறகு, தயவு செய்து காத்திருக்கவும் ...",
|
||||||
"set_background" => "டெஸ்க்டாப் வால்பேப்பர் அமை",
|
"set_background" => "டெஸ்க்டாப் வால்பேப்பர் அமை",
|
||||||
"share" => "பகிர்",
|
"share" => "பகிர்ந்து",
|
||||||
"my_share" => "நான் பகிர்ந்துள்ளார்",
|
"my_share" => "என் பங்கு",
|
||||||
"group_share" => "வெளிநாட்டு பங்கு குழுக்கள்",
|
"group_share" => "குழு வெளிப்புற பகிர்வு",
|
||||||
"share_edit" => "திருத்த பகிர்",
|
"share_edit" => "பகிர்வை அனுப்புக",
|
||||||
"share_remove" => "பகிர்வுநீக்குவதில்",
|
"share_remove" => "பகிர்வு ரத்துசெய்யவும்",
|
||||||
"share_remove_tips" => "சரி ரத்து பகிர்? திறந்த இணைப்பு தோல்வியடையும்.",
|
"share_remove_tips" => "பகிர்வு ரத்துசெய்ய விரும்புகிறீர்களா? பொது இணைப்பு செல்லுபடியாகாது.",
|
||||||
"share_path" => "பகிரப்பட்ட பாதை",
|
"share_path" => "பாதையைப் பகிரவும்",
|
||||||
"share_title" => "வள பகிர்தல்",
|
"share_title" => "வள பகிர்வு",
|
||||||
"share_name" => "பங்கு தலைப்பு",
|
"share_name" => "தலைப்பு பகிர்ந்து",
|
||||||
"share_time" => "காலாவதி",
|
"share_time" => "காலாவதி",
|
||||||
"share_time_desc" => "பூஜ்ய அமைக்க முடியாது",
|
"share_time_desc" => "பூஜ்ய அமைக்க முடியாது",
|
||||||
"share_password" => "சாரம் கடவுச்சொல்லை",
|
"share_password" => "சாரம் கடவுச்சொல்லை",
|
||||||
|
@ -733,6 +733,8 @@ return array(
|
||||||
"PluginInstallSelf" => "கையேடு நிறுவல்",
|
"PluginInstallSelf" => "கையேடு நிறுவல்",
|
||||||
"Plugin.config.auth" => "அனுமதிகள்",
|
"Plugin.config.auth" => "அனுமதிகள்",
|
||||||
"Plugin.config.authDesc" => "கிடைக்க அமைப்புகளை அனைத்தும், அல்லது குறிப்பிட பயனர்கள், பயனர் குழுக்கள், உரிமைகள் குழுக்கள் பயன்படுத்த முடியும்",
|
"Plugin.config.authDesc" => "கிடைக்க அமைப்புகளை அனைத்தும், அல்லது குறிப்பிட பயனர்கள், பயனர் குழுக்கள், உரிமைகள் குழுக்கள் பயன்படுத்த முடியும்",
|
||||||
|
"Plugin.config.authOpen" => "திறந்த அணுகல்",
|
||||||
|
"Plugin.config.authOpenDesc" => "பார்க்க வேண்டிய அவசியம் இல்லை, வெளிப்புற இடைமுக அழைப்புக்கு பயன்படுத்தலாம்",
|
||||||
"Plugin.config.authAll" => "ஹோல்டர்",
|
"Plugin.config.authAll" => "ஹோல்டர்",
|
||||||
"Plugin.config.authUser" => "பயனர்",
|
"Plugin.config.authUser" => "பயனர்",
|
||||||
"Plugin.config.authGroup" => "குழுக்கள்",
|
"Plugin.config.authGroup" => "குழுக்கள்",
|
||||||
|
|
|
@ -157,14 +157,14 @@ return array(
|
||||||
"zip_download_ready" => "หลังการบีบอัดจะดาวน์โหลดโดยอัตโนมัติโปรดรอ ...",
|
"zip_download_ready" => "หลังการบีบอัดจะดาวน์โหลดโดยอัตโนมัติโปรดรอ ...",
|
||||||
"set_background" => "ตั้งเป็นวอลล์เปเปอร์",
|
"set_background" => "ตั้งเป็นวอลล์เปเปอร์",
|
||||||
"share" => "หุ้น",
|
"share" => "หุ้น",
|
||||||
"my_share" => "ผมใช้ร่วมกัน",
|
"my_share" => "หุ้นของฉัน",
|
||||||
"group_share" => "กลุ่มของหุ้นต่างประเทศ",
|
"group_share" => "แชร์กลุ่มจากภายนอก",
|
||||||
"share_edit" => "แก้ไขแบ่งปัน",
|
"share_edit" => "แก้ไขแชร์",
|
||||||
"share_remove" => "ยกเลิกการแชร์",
|
"share_remove" => "ยกเลิกการแบ่งปัน",
|
||||||
"share_remove_tips" => "ตกลงยกเลิกร่วมกัน? เปิดการเชื่อมต่อจะล้มเหลว",
|
"share_remove_tips" => "คุณแน่ใจหรือไม่ว่าต้องการยกเลิกการแชร์ การเชื่อมต่อสาธารณะจะไม่มีผล",
|
||||||
"share_path" => "เส้นทางที่ใช้ร่วมกัน",
|
"share_path" => "แบ่งปันเส้นทาง",
|
||||||
"share_title" => "ใช้ทรัพยากรร่วมกัน",
|
"share_title" => "การแบ่งปันทรัพยากร",
|
||||||
"share_name" => "แบ่งปันชื่อเรื่อง",
|
"share_name" => "แชร์ชื่อ",
|
||||||
"share_time" => "การหมดอายุ",
|
"share_time" => "การหมดอายุ",
|
||||||
"share_time_desc" => "null ไม่ได้ตั้งค่า",
|
"share_time_desc" => "null ไม่ได้ตั้งค่า",
|
||||||
"share_password" => "สารสกัดจากรหัสผ่าน",
|
"share_password" => "สารสกัดจากรหัสผ่าน",
|
||||||
|
@ -733,6 +733,8 @@ return array(
|
||||||
"PluginInstallSelf" => "ติดตั้งด้วยตนเอง",
|
"PluginInstallSelf" => "ติดตั้งด้วยตนเอง",
|
||||||
"Plugin.config.auth" => "สิทธิ์",
|
"Plugin.config.auth" => "สิทธิ์",
|
||||||
"Plugin.config.authDesc" => "ทั้งหมดของการตั้งค่าที่มีอยู่หรือระบุผู้ใช้กลุ่มผู้ใช้กลุ่มสิทธิสามารถใช้",
|
"Plugin.config.authDesc" => "ทั้งหมดของการตั้งค่าที่มีอยู่หรือระบุผู้ใช้กลุ่มผู้ใช้กลุ่มสิทธิสามารถใช้",
|
||||||
|
"Plugin.config.authOpen" => "เปิดการเข้าถึง",
|
||||||
|
"Plugin.config.authOpenDesc" => "ไม่จำเป็นต้องไปเยี่ยมชมสามารถเข้าถึงได้สามารถใช้สำหรับการโทรติดต่อภายนอก",
|
||||||
"Plugin.config.authAll" => "เจ้าของ",
|
"Plugin.config.authAll" => "เจ้าของ",
|
||||||
"Plugin.config.authUser" => "ผู้ใช้งาน",
|
"Plugin.config.authUser" => "ผู้ใช้งาน",
|
||||||
"Plugin.config.authGroup" => "กลุ่ม",
|
"Plugin.config.authGroup" => "กลุ่ม",
|
||||||
|
|
Binary file not shown.
|
@ -156,15 +156,15 @@ return array(
|
||||||
"explorerNew" => "KOD посилання",
|
"explorerNew" => "KOD посилання",
|
||||||
"zip_download_ready" => "Після стиснення буде автоматично завантажувати, будь ласка, зачекайте ...",
|
"zip_download_ready" => "Після стиснення буде автоматично завантажувати, будь ласка, зачекайте ...",
|
||||||
"set_background" => "Встановити як шпалери для робочого столу",
|
"set_background" => "Встановити як шпалери для робочого столу",
|
||||||
"share" => "частка",
|
"share" => "Поділитися",
|
||||||
"my_share" => "Я поділився",
|
"my_share" => "Моя частка",
|
||||||
"group_share" => "Групи іноземної частки",
|
"group_share" => "Груповий зовнішній обмін",
|
||||||
"share_edit" => "редагувати Поділитися",
|
"share_edit" => "Редагувати публікацію",
|
||||||
"share_remove" => "заборонити обмін",
|
"share_remove" => "Скасувати обмін",
|
||||||
"share_remove_tips" => "OK Скасування Share? Відкрите з'єднання не буде встановлено.",
|
"share_remove_tips" => "Ви впевнені, що хочете скасувати спільний доступ? Публічне з'єднання буде недійсним.",
|
||||||
"share_path" => "Загальний шлях",
|
"share_path" => "Поділіться цим шляхом",
|
||||||
"share_title" => "Спільне використання ресурсів",
|
"share_title" => "Обмін ресурсами",
|
||||||
"share_name" => "частка Назва",
|
"share_name" => "Поділіться заголовком",
|
||||||
"share_time" => "витікання",
|
"share_time" => "витікання",
|
||||||
"share_time_desc" => "Нуль не встановлено",
|
"share_time_desc" => "Нуль не встановлено",
|
||||||
"share_password" => "витяг пароля",
|
"share_password" => "витяг пароля",
|
||||||
|
@ -733,6 +733,8 @@ return array(
|
||||||
"PluginInstallSelf" => "Ручна установка",
|
"PluginInstallSelf" => "Ручна установка",
|
||||||
"Plugin.config.auth" => "права доступу",
|
"Plugin.config.auth" => "права доступу",
|
||||||
"Plugin.config.authDesc" => "Всі доступні настройки, або вказати користувачів, групи користувачів, групи прав можна використовувати",
|
"Plugin.config.authDesc" => "Всі доступні настройки, або вказати користувачів, групи користувачів, групи прав можна використовувати",
|
||||||
|
"Plugin.config.authOpen" => "Відкритий доступ",
|
||||||
|
"Plugin.config.authOpenDesc" => "Не потрібно відвідувати, можна отримати доступ, можна використовувати для виклику зовнішнього інтерфейсу",
|
||||||
"Plugin.config.authAll" => "держатель",
|
"Plugin.config.authAll" => "держатель",
|
||||||
"Plugin.config.authUser" => "користувач",
|
"Plugin.config.authUser" => "користувач",
|
||||||
"Plugin.config.authGroup" => "групи",
|
"Plugin.config.authGroup" => "групи",
|
||||||
|
|
Binary file not shown.
|
@ -156,15 +156,15 @@ return array(
|
||||||
"explorerNew" => "liên kết kod",
|
"explorerNew" => "liên kết kod",
|
||||||
"zip_download_ready" => "Sau khi nén sẽ tự động tải về, vui lòng đợi ...",
|
"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",
|
"set_background" => "Đặt làm hình nền",
|
||||||
"share" => "phần",
|
"share" => "Chia sẻ",
|
||||||
"my_share" => "tôi chia sẻ",
|
"my_share" => "Chia sẻ của tôi",
|
||||||
"group_share" => "Các nhóm cổ phiếu nước ngoài",
|
"group_share" => "Chia sẻ bên ngoài nhóm",
|
||||||
"share_edit" => "Sửa Share",
|
"share_edit" => "Chỉnh sửa chia sẻ",
|
||||||
"share_remove" => "không chia sẻ",
|
"share_remove" => "Huỷ chia sẻ",
|
||||||
"share_remove_tips" => "OK Hủy Share? Mở kết nối sẽ thất bại.",
|
"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" => "Đường dẫn chung",
|
"share_path" => "Chia sẻ con đường",
|
||||||
"share_title" => "Resource Sharing",
|
"share_title" => "Chia sẻ tài nguyên",
|
||||||
"share_name" => "Chia sẻ đề",
|
"share_name" => "Chia sẻ tiêu đề",
|
||||||
"share_time" => "Hết hạn",
|
"share_time" => "Hết hạn",
|
||||||
"share_time_desc" => "Null không được thiết lập",
|
"share_time_desc" => "Null không được thiết lập",
|
||||||
"share_password" => "mật khẩu Extract",
|
"share_password" => "mật khẩu Extract",
|
||||||
|
@ -733,6 +733,8 @@ return array(
|
||||||
"PluginInstallSelf" => "Cài đặt thủ công",
|
"PluginInstallSelf" => "Cài đặt thủ công",
|
||||||
"Plugin.config.auth" => "Quyền",
|
"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.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.authAll" => "người nắm",
|
||||||
"Plugin.config.authUser" => "người sử dụng",
|
"Plugin.config.authUser" => "người sử dụng",
|
||||||
"Plugin.config.authGroup" => "nhóm",
|
"Plugin.config.authGroup" => "nhóm",
|
||||||
|
|
|
@ -156,15 +156,15 @@ return array(
|
||||||
"explorerNew" => "kod 链接",
|
"explorerNew" => "kod 链接",
|
||||||
"zip_download_ready" => "压缩后会自动下载,请稍后...",
|
"zip_download_ready" => "压缩后会自动下载,请稍后...",
|
||||||
"set_background" => "设置为桌面壁纸",
|
"set_background" => "设置为桌面壁纸",
|
||||||
"share" => "共享",
|
"share" => "分享",
|
||||||
"my_share" => "我的共享",
|
"my_share" => "我的分享",
|
||||||
"group_share" => "群组对外共享",
|
"group_share" => "群组对外分享",
|
||||||
"share_edit" => "编辑共享",
|
"share_edit" => "编辑分享",
|
||||||
"share_remove" => "取消共享",
|
"share_remove" => "取消分享",
|
||||||
"share_remove_tips" => "确定取消共享?公开连接将失效.",
|
"share_remove_tips" => "确定取消分享?公开连接将失效.",
|
||||||
"share_path" => "共享路径",
|
"share_path" => "分享路径",
|
||||||
"share_title" => "资源共享",
|
"share_title" => "资源分享",
|
||||||
"share_name" => "共享标题",
|
"share_name" => "分享标题",
|
||||||
"share_time" => "到期时间",
|
"share_time" => "到期时间",
|
||||||
"share_time_desc" => "为空则不设置",
|
"share_time_desc" => "为空则不设置",
|
||||||
"share_password" => "提取密码",
|
"share_password" => "提取密码",
|
||||||
|
@ -733,6 +733,8 @@ return array(
|
||||||
"PluginInstallSelf" => "手动安装",
|
"PluginInstallSelf" => "手动安装",
|
||||||
"Plugin.config.auth" => "使用权限",
|
"Plugin.config.auth" => "使用权限",
|
||||||
"Plugin.config.authDesc" => "设置所有人可用,或者指定用户、用户组、权限组可以使用",
|
"Plugin.config.authDesc" => "设置所有人可用,或者指定用户、用户组、权限组可以使用",
|
||||||
|
"Plugin.config.authOpen" => "开放访问",
|
||||||
|
"Plugin.config.authOpenDesc" => "无需登陆皆可访问,可用于对外接口调用",
|
||||||
"Plugin.config.authAll" => "所有人",
|
"Plugin.config.authAll" => "所有人",
|
||||||
"Plugin.config.authUser" => "指定用户",
|
"Plugin.config.authUser" => "指定用户",
|
||||||
"Plugin.config.authGroup" => "指定群组",
|
"Plugin.config.authGroup" => "指定群组",
|
||||||
|
|
|
@ -156,15 +156,15 @@ return array(
|
||||||
"explorerNew" => "kod 鏈接",
|
"explorerNew" => "kod 鏈接",
|
||||||
"zip_download_ready" => "壓縮後會自動下載,請稍後...",
|
"zip_download_ready" => "壓縮後會自動下載,請稍後...",
|
||||||
"set_background" => "設定為桌面壁紙",
|
"set_background" => "設定為桌面壁紙",
|
||||||
"share" => "共用",
|
"share" => "分享",
|
||||||
"my_share" => "我的共用",
|
"my_share" => "我的分享",
|
||||||
"group_share" => "群組對外共享",
|
"group_share" => "群組對外分享",
|
||||||
"share_edit" => "編輯共用",
|
"share_edit" => "編輯分享",
|
||||||
"share_remove" => "取消共用",
|
"share_remove" => "取消分享",
|
||||||
"share_remove_tips" => "確定取消共用?公開連接將失效.",
|
"share_remove_tips" => "確定取消分享?公開連接將失效.",
|
||||||
"share_path" => "共用路径",
|
"share_path" => "分享路徑",
|
||||||
"share_title" => "資源共用",
|
"share_title" => "資源分享",
|
||||||
"share_name" => "共用標題",
|
"share_name" => "分享標題",
|
||||||
"share_time" => "到期時間",
|
"share_time" => "到期時間",
|
||||||
"share_time_desc" => "为空则不設定",
|
"share_time_desc" => "为空则不設定",
|
||||||
"share_password" => "提取密碼",
|
"share_password" => "提取密碼",
|
||||||
|
@ -733,6 +733,8 @@ return array(
|
||||||
"PluginInstallSelf" => "手動安裝",
|
"PluginInstallSelf" => "手動安裝",
|
||||||
"Plugin.config.auth" => "使用權限",
|
"Plugin.config.auth" => "使用權限",
|
||||||
"Plugin.config.authDesc" => "設置所有人可用,或者指定用戶、用戶組、權限組可以使用",
|
"Plugin.config.authDesc" => "設置所有人可用,或者指定用戶、用戶組、權限組可以使用",
|
||||||
|
"Plugin.config.authOpen" => "開放訪問",
|
||||||
|
"Plugin.config.authOpenDesc" => "無需登陸皆可訪問,可用於對外接口調用",
|
||||||
"Plugin.config.authAll" => "所有人",
|
"Plugin.config.authAll" => "所有人",
|
||||||
"Plugin.config.authUser" => "指定用戶",
|
"Plugin.config.authUser" => "指定用戶",
|
||||||
"Plugin.config.authGroup" => "指定群組",
|
"Plugin.config.authGroup" => "指定群組",
|
||||||
|
|
|
@ -11,12 +11,21 @@ $config['settings'] = array(
|
||||||
'downloadUrlTime' => 0, //下载地址生效时间,按秒计算,0代表不限制
|
'downloadUrlTime' => 0, //下载地址生效时间,按秒计算,0代表不限制
|
||||||
'apiLoginTonken' => '', //设定则认为开启服务端api通信登陆,同时作为加密密匙
|
'apiLoginTonken' => '', //设定则认为开启服务端api通信登陆,同时作为加密密匙
|
||||||
'updloadChunkSize' => 1024*1024*0.4,//0.4M;分片上传大小设定;需要小于php.ini上传限制的大小
|
'updloadChunkSize' => 1024*1024*0.4,//0.4M;分片上传大小设定;需要小于php.ini上传限制的大小
|
||||||
|
'updloadThreads' => 5, //上传并发数;部分低配服务器上传失败则将此设置为1
|
||||||
|
'updloadBindary' => 1, //以二进制方式上传;后端服务器以php://input接收;0则为传统方式上传
|
||||||
'paramRewrite' => false, //开启url 去除? 直接跟参数
|
'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/?",
|
'pluginServer' => "https://api.kodcloud.com/?",
|
||||||
'staticPath' => "./static/", //静态文件目录,可以配置到cdn;
|
'staticPath' => "./static/", //静态文件目录,可以配置到cdn;
|
||||||
'pluginHost' => PLUGIN_HOST //静态文件目录
|
'pluginHost' => PLUGIN_HOST //静态文件目录
|
||||||
);
|
);
|
||||||
|
// windows upload threads;兼容不支持并发的服务器
|
||||||
|
if($config['systemOS'] == 'windows'){
|
||||||
|
$config['settings']['updloadThreads'] = 1;
|
||||||
|
}
|
||||||
|
|
||||||
$config['settings']['appType'] = array(
|
$config['settings']['appType'] = array(
|
||||||
array('type' => 'tools','name' => 'app_group_tools','class' => 'icon-suitcase'),
|
array('type' => 'tools','name' => 'app_group_tools','class' => 'icon-suitcase'),
|
||||||
array('type' => 'game','name' => 'app_group_game','class' => 'icon-dashboard'),
|
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",
|
'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",
|
'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"
|
'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',
|
'mkdir','mkfile','pathRname','pathDelete','zip','unzip','unzipList',
|
||||||
'pathCopy','pathCute','pathCuteDrag','pathCopyDrag','clipboard','pathPast',
|
'pathCopy','pathCute','pathCuteDrag','pathCopyDrag','clipboard','pathPast',
|
||||||
'serverDownload','fileUpload','search','pathDeleteRecycle',
|
'serverDownload','fileUpload','search','pathDeleteRecycle',
|
||||||
'fileDownload','zipDownload','fileDownloadRemove','fileProxy','officeView','officeSave'),
|
'fileDownload','zipDownload','fileDownloadRemove','fileProxy','fileSave','officeView','officeSave'),
|
||||||
'app' => array('userApp','initApp','add','edit','del'),//
|
'app' => array('userApp','initApp','add','edit','del'),//
|
||||||
'editor' => array('fileGet','fileSave'),
|
'editor' => array('fileGet','fileSave'),
|
||||||
|
|
||||||
|
@ -178,7 +187,7 @@ $config['pathRoleDefine'] = array(
|
||||||
),
|
),
|
||||||
'write' => array(
|
'write' => array(
|
||||||
'add' => array('explorer.mkdir','explorer.mkfile','explorer.zip','explorer.unzip','app.userApp'),
|
'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'),
|
'change'=> array('explorer.pathRname','explorer.pathPast','explorer.pathCopyDrag','explorer.pathCuteDrag'),
|
||||||
'upload'=> array('explorer.fileUpload','explorer.serverDownload'),
|
'upload'=> array('explorer.fileUpload','explorer.serverDownload'),
|
||||||
'remove'=> array('explorer.pathDelete','explorer.pathCute'),
|
'remove'=> array('explorer.pathDelete','explorer.pathCute'),
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
<?php
|
<?php
|
||||||
define('KOD_VERSION','4.21');
|
define('KOD_VERSION','4.22');
|
||||||
|
|
|
@ -11,10 +11,17 @@
|
||||||
@ignore_user_abort(true);
|
@ignore_user_abort(true);
|
||||||
@set_time_limit(3600*2);//set_time_limit(0) 1day
|
@set_time_limit(3600*2);//set_time_limit(0) 1day
|
||||||
@ini_set('memory_limit','2028M');//2G;
|
@ini_set('memory_limit','2028M');//2G;
|
||||||
|
|
||||||
include('./../../../app/api/sso.class.php');
|
include('./../../../app/api/sso.class.php');
|
||||||
if(!SSO::sessionCheck('AdminerAccess')){
|
$host = "http://".$_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"];
|
||||||
die('Not Authorized!');
|
$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
|
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
|
||||||
|
|
|
@ -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'];
|
|
|
@ -9,18 +9,18 @@ class adminerPlugin extends PluginBase{
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
public function addMenu(){
|
public function addMenu(){
|
||||||
|
$config = $this->getConfig();
|
||||||
|
$subMenu = $config['menuSubMenu'];
|
||||||
navbar_menu_add(array(
|
navbar_menu_add(array(
|
||||||
'name' => 'Adminer',
|
'name' => 'Adminer',
|
||||||
'icon' => $this->appIcon(),
|
'icon' => $this->appIcon(),
|
||||||
'url' => $this->pluginApi,
|
'url' => $this->pluginApi,
|
||||||
'target' => '_blank',
|
'target' => '_blank',
|
||||||
'subMenu' => '1',
|
'subMenu' => $subMenu,
|
||||||
'use' => '1'
|
'use' => '1'
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
public function index(){
|
public function index(){
|
||||||
include(LIB_DIR.'api/sso.class.php');
|
|
||||||
SSO::sessionSet('AdminerAccess');
|
|
||||||
header('Location: '.$this->pluginHost.'adminer/');
|
header('Location: '.$this->pluginHost.'adminer/');
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -2,5 +2,5 @@
|
||||||
|
|
||||||
return array(
|
return array(
|
||||||
'Adminer.meta.title' => "数据库管理工具",
|
'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/>由于安全要求比较高,此插件仅限管理员可以使用"
|
||||||
);
|
);
|
|
@ -16,12 +16,10 @@
|
||||||
"homePage":"https://www.adminer.org"
|
"homePage":"https://www.adminer.org"
|
||||||
},
|
},
|
||||||
"configItem":{
|
"configItem":{
|
||||||
"pluginAuth":{
|
"menuSubMenu":{
|
||||||
"type":"userSelect",
|
"type":"switch",
|
||||||
"value":"role:1",
|
"value":1,
|
||||||
"display":"{{LNG.Plugin.config.auth}}",
|
"display":"{{LNG.menu_sub_menu}}"
|
||||||
"desc":"{{LNG.Plugin.config.authDesc}}",
|
|
||||||
"require":1
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
"tabs":[
|
"tabs":[
|
||||||
{
|
{
|
||||||
"name":"{{LNG.Plugin.tab.basic}}",
|
"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}}",
|
"desc":"{{LNG.Plugin.config.authDesc}}",
|
||||||
"require":1
|
"require":1
|
||||||
},
|
},
|
||||||
|
"pluginAuthOpen":{
|
||||||
|
"type":"switch",
|
||||||
|
"value":0,
|
||||||
|
"display":"{{LNG.Plugin.config.authOpen}}",
|
||||||
|
"desc":"{{LNG.Plugin.config.authOpenDesc}}",
|
||||||
|
"require":1
|
||||||
|
},
|
||||||
|
"sep001":"<hr/>",
|
||||||
"openWith":{
|
"openWith":{
|
||||||
"type":"radio",
|
"type":"radio",
|
||||||
"value":"dialog",
|
"value":"dialog",
|
||||||
|
@ -45,7 +53,6 @@
|
||||||
"desc":"{{LNG.officeLive.Config.apiServerDesc}}",
|
"desc":"{{LNG.officeLive.Config.apiServerDesc}}",
|
||||||
"require":1
|
"require":1
|
||||||
},
|
},
|
||||||
"sep1001":"<hr/>",
|
|
||||||
"fileExt":{
|
"fileExt":{
|
||||||
"type":"tags",
|
"type":"tags",
|
||||||
"display":"{{LNG.Plugin.Config.fileExt}}",
|
"display":"{{LNG.Plugin.Config.fileExt}}",
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
div.navbar-inverse .navbar-inner {
|
div.navbar-inverse .navbar-inner {
|
||||||
background:#eee;
|
background:#eee;filter:none;
|
||||||
background-image: linear-gradient(to bottom,#fff,#eee);
|
background-image: linear-gradient(to bottom,#fff,#eee);
|
||||||
border-bottom: 1px solid #ddd;
|
border-bottom: 1px solid #ddd;
|
||||||
background-repeat: repeat-x;
|
background-repeat: repeat-x;
|
||||||
|
@ -103,6 +103,11 @@
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
</style>
|
</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">
|
<link href="./static/style/font-awesome/css/font-awesome.css?ver=<?php echo KOD_VERSION;?>" rel="stylesheet">
|
||||||
<!--[if IE 7]>
|
<!--[if IE 7]>
|
||||||
<link rel="stylesheet" href="./static/style/font-awesome/css/font-awesome-ie7.css">
|
<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
|
@ -517,6 +517,7 @@ ace.define("ace/ext/searchboxKod", ["require", "exports", "module", "ace/lib/dom
|
||||||
this.historySearch.add(this.searchInput.value);
|
this.historySearch.add(this.searchInput.value);
|
||||||
};
|
};
|
||||||
this.findPrev = function() {
|
this.findPrev = function() {
|
||||||
|
console.log(123123);
|
||||||
this.find(true, true);
|
this.find(true, true);
|
||||||
//添加历史记录
|
//添加历史记录
|
||||||
this.historySearch.add(this.searchInput.value);
|
this.historySearch.add(this.searchInput.value);
|
||||||
|
|
|
@ -82,9 +82,6 @@ var quoteEncode = function(str){
|
||||||
str = str.replace(/(['"])/g,'\\$1');
|
str = str.replace(/(['"])/g,'\\$1');
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
var canvasSupport = function() {
|
|
||||||
return !!document.createElement('canvas').getContext;
|
|
||||||
}
|
|
||||||
var isWap = function(){
|
var isWap = function(){
|
||||||
if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){
|
if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){
|
||||||
return true;
|
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 UUID = function(){
|
||||||
var time = (new Date()).valueOf();
|
var time = (new Date()).valueOf();
|
||||||
return 'uuid_'+parseInt(time/1000)+'_'+Math.ceil(Math.random()*10000)
|
return 'uuid_'+parseInt(time/1000)+'_'+Math.ceil(Math.random()*10000)
|
||||||
|
@ -946,8 +943,8 @@ var loadRipple = function(search_arr,ignore_arr){
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
var isIgnore = function($target){
|
var isIgnore = function($target){
|
||||||
for (var i = 0; i < ignore_arr.length; i++) {
|
for (var i = 0; i < ignoreArr.length; i++) {
|
||||||
var select = ignore_arr[i];
|
var select = ignoreArr[i];
|
||||||
if($target.closest(select).length !=0){//从当前想上查找
|
if($target.closest(select).length !=0){//从当前想上查找
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -967,13 +964,13 @@ var loadRipple = function(search_arr,ignore_arr){
|
||||||
}
|
}
|
||||||
var uuid = 'ripple-'+UUID();
|
var uuid = 'ripple-'+UUID();
|
||||||
var father = $target;//$(this) $target
|
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);
|
$('<div class="ripple-father" id="'+uuid+'"><div class="ripple"></div></div>').appendTo(father);
|
||||||
if($target.outerWidth()<$target.outerHeight()){
|
if($target.outerWidth()<$target.outerHeight()){
|
||||||
circle_width = $target.outerHeight();
|
circleWidth = $target.outerHeight();
|
||||||
}
|
}
|
||||||
circle_width = circle_width>150?150:circle_width;
|
circleWidth = circleWidth>150?150:circleWidth;
|
||||||
circle_width = circle_width<50?50:circle_width;
|
circleWidth = circleWidth<50?50:circleWidth;
|
||||||
|
|
||||||
var $ripp = $('#'+uuid).css({
|
var $ripp = $('#'+uuid).css({
|
||||||
left: 0,
|
left: 0,
|
||||||
|
@ -989,17 +986,17 @@ var loadRipple = function(search_arr,ignore_arr){
|
||||||
}
|
}
|
||||||
$('#'+uuid+' .ripple').css({
|
$('#'+uuid+' .ripple').css({
|
||||||
'background':$target.css('color'),
|
'background':$target.css('color'),
|
||||||
"margin-left":e.pageX - circle_width/2 - $target.offset().left,
|
"margin-left":e.pageX - circleWidth/2 - $target.offset().left,
|
||||||
"margin-top": e.pageY - circle_width/2 - $target.offset().top,
|
"margin-top": e.pageY - circleWidth/2 - $target.offset().top,
|
||||||
"width": circle_width,
|
"width": circleWidth,
|
||||||
"height":circle_width
|
"height":circleWidth
|
||||||
});
|
});
|
||||||
|
|
||||||
var animateTime = 700;
|
var animateTime = 700;
|
||||||
setTimeout(function(){
|
setTimeout(function(){
|
||||||
$ripp.find('.ripple').css('transform',"scale(2.5)");
|
$ripp.find('.ripple').css('transform',"scale(2.5)");
|
||||||
},animateTime);
|
},animateTime);
|
||||||
$(this).one('mouseup',function(){
|
$(this).one('click mouseup mouseleave',function(e){
|
||||||
$ripp.animate({'opacity':0},400,function(){
|
$ripp.animate({'opacity':0},400,function(){
|
||||||
$ripp.remove();
|
$ripp.remove();
|
||||||
});
|
});
|
||||||
|
@ -1470,7 +1467,17 @@ var MaskView = (function(){
|
||||||
return false;
|
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){
|
$.supportCss3 = function(style){
|
||||||
if(!style) style = 'box-shadow';
|
if(!style) style = 'box-shadow';
|
||||||
var prefix = ['webkit', 'Moz', 'ms', 'o'],
|
var prefix = ['webkit', 'Moz', 'ms', 'o'],
|
||||||
|
@ -1535,6 +1542,27 @@ var MaskView = (function(){
|
||||||
});
|
});
|
||||||
return this;
|
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 按中心点来判断
|
inScreen:function(isCenter){//是否在屏幕中 ;isCenter 按中心点来判断
|
||||||
var el = $(this).get(0);
|
var el = $(this).get(0);
|
||||||
if (typeof jQuery === "function" && el instanceof jQuery) {
|
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
|
//yyyy-mm-dd H:i:s or yy-mm-dd to timestamp
|
||||||
var strtotime = function(datetime){
|
var strtotime = function(datetime){
|
||||||
var tmp_datetime = datetime.replace(/:/g,'-');
|
var tmp_datetime = datetime.replace(/:/g,'-');
|
||||||
|
tmp_datetime = tmp_datetime.replace(/\//g,'-');
|
||||||
tmp_datetime = tmp_datetime.replace(/ /g,'-');
|
tmp_datetime = tmp_datetime.replace(/ /g,'-');
|
||||||
var arr = tmp_datetime.split("-");
|
var arr = tmp_datetime.split("-");
|
||||||
var y=arr[0];
|
var y=arr[0];
|
||||||
|
|
|
@ -8,8 +8,11 @@
|
||||||
*{box-sizing:content-box;}
|
*{box-sizing:content-box;}
|
||||||
body, input, textarea{
|
body, input, textarea{
|
||||||
-webkit-font-smoothing: antialiased;font-smoothing: antialiased;
|
-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*/
|
/* kod ie8 hack*/
|
||||||
@media \0screen\,screen\9 {
|
@media \0screen\,screen\9 {
|
||||||
|
|
File diff suppressed because one or more lines are too long
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue