This page lists files in the current directory. You can view content, get download/execute commands for Wget, Curl, or PowerShell, or filter the list using wildcards (e.g., `*.sh`).
wget 'https://sme10.lists2.roe3.org/kodbox/plugins/yzOffice/php/template.php'
<!doctype html>
<head>
<meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1, user-scalable=no" />
<meta charset="utf-8">
<?php $this->link();?>
<title><?php echo clear_html($fileName);?></title>
<style>
body {margin: 0;font-family: "Helvetica Neue Light", "Segoe UI Semilight", sans-serif;}
.infoButtonPrint{
cursor: pointer;font-size:20px;right:60px;text-align:center;
background:none;color: #666;line-height:27px;
}
.load-content{
position: fixed;
overflow: hidden;z-index: 100;top:0;left:0;right:0;bottom:0;
font-size:13px;color:#666;
}
.app-icon{text-align: center;position: absolute;width: 100%;top:40%;margin-top: -150px;}
.app-icon img{max-height: 150px;}
.app-icon .app-name{font-size:16px;color:#222;}
.load-status{margin: 20px auto;}
.load-status .progress{
width:300px;height:30px;margin: 10px auto;position: relative;
background-image: linear-gradient(to right,#ddd, #f6f6f6, #ddd);
}
.progress-loading{font-size:30px;margin-top: 20px;}
.progress-slider .content{position: absolute;width: 100%;color:#29792c;font-size:12px;line-height:30px;}
.progress-slider .left{float:left;padding-left: 10px;}
.progress-slider .right{float:right;padding-right: 10px;}
.progress-bar{opacity: 0.7;}
.clear{clear:both;}
.progress-text{text-align: center;display: block;width:300px;margin: 0 auto;padding: 10px;word-wrap: break-word;}
@page {
margin-left: 0px;
margin-right: 0px;
margin-top: 0px;
margin-bottom: 0px;
margin: 0;
-webkit-print-color-adjust: exact;
}
body{background:#f0f0f0 !important;}
div.word-body, div.ppt-body{background:#ff0;}
div.word-page{box-shadow: 0 1px 6px #ccc;}
</style>
</head>
<body>
<div class="load-content display">
<div class="app-icon">
<img src="<?php $this->url('static/images/icon.png');?>" />
<div class="app-name"><?php echo LNG('yzOffice.meta.name');?></div>
<div class="load-status">
<div class="progress-text alert"><?php echo LNG('yzOffice.Main.transfer');?></div>
<div class="progress-slider progress progress-striped active hidden">
<div class="progress-bar progress-bar-success" role="progressbar" style="width:0%;"></div>
<div class="content">
<span class="left"></span>
<span class="right"></span>
<div class="clear"></div>
</div>
</div>
<div class="progress-loading hidden">
<div class="moveCircleRight"><i class="ri-loader-line"></i></div>
</div>
</div>
</div>
</div>
<div id="MyViewerDiv"></div>
</body>
<script type="text/javascript">
var LNG = {
"error":"<?php echo LNG('explorer.error');?>",
"success":"<?php echo LNG('explorer.success');?>",
"yzOffice.Main.transfer":"<?php echo LNG('yzOffice.Main.transfer');?>",
"yzOffice.Main.converting":"<?php echo LNG('yzOffice.Main.converting');?>",
"yzOffice.Main.uploadError":"<?php echo LNG('yzOffice.Main.uploadError');?>",
"yzOffice.Main.convert":"<?php echo LNG('yzOffice.Main.convert');?>",
"yzOffice.Main.transferAgain":"<?php echo LNG('yzOffice.Main.transferAgain');?>"
};
var path = '<?php echo clear_quote($this->in["path"]);?>';
var apiBase = "<?php echo $this->pluginApi;?>";//不能含有index.php
var selfHost = '<?php echo $this->pluginHost;?>';
var cacheFile= '<?php echo $config["cacheFile"];?>';
var apiUrl = {
task:apiBase+'task&path='+urlEncode(path),
restart:apiBase+'restart&path='+urlEncode(path),
getFile:apiBase+'getFile&path='+urlEncode(path)+'&file='
}
var request = function(){
$('.load-content').fadeIn(100);
$('.progress-text').removeClass('alert-danger').html(LNG['yzOffice.Main.transfer']);
$('.progress-bar').css('width',"0%");
var repeatTimer;
var taskStatus = function(){
$.ajax({
url:apiUrl.task+"&time"+UUID(),
dataType:'json',
success:function(data){
statusUpdate(data);
}
});
}
var statusUpdate = function(data){
if(!data) return;
if(!data.code){
var error = data.data;
if(!_.isString(error)){
error = LNG['error'];
}
clearInterval(repeatTimer);
error += ' <a class="load_repeat" href="javascript:void(0);">'
+ LNG['yzOffice.Main.transferAgain']+'</a>';
$('.progress-text').addClass('alert-danger').html(error);
$('.progress-slider,.progress-loading').hide();
return;
}
if(!data.data) return;
if(data.data.success == 1){
clearInterval(repeatTimer);
var item = data.data.steps[data.data.steps.length-1];
// $('.progress-text').html(LNG['success']+LNG['yzOffice.Main.convert']);
$('.progress-text').html(LNG['yzOffice.Main.convert']);
loadSuccess(data);
}else{
var step = data.data.steps[data.data.currentStep];
var stepInfo = step.result;
if(!_.isObject(stepInfo)){
return;
}
$('.progress-text').removeClass('alert-danger');
$('.progress-slider,.progress-loading').removeClass('hidden');
if(step.name == 'upload'){
$('.progress-text').html(LNG['yzOffice.Main.transfer']);
if(stepInfo === false){
clearInterval(repeatTimer);
loadError(LNG['yzOffice.Main.uploadError']);
}
var sizeTotal = pathTools.fileSize(stepInfo.taskTotal);
var sizeSuccess = pathTools.fileSize(stepInfo.taskFinished);
var speed = pathTools.fileSize(stepInfo.taskSpeed)+'/s';
$('.progress-slider .left').html(sizeSuccess+'/'+sizeTotal+' ('+speed+')');//12.6M/25.3M (1.2M/s)
$('.progress-slider .right').html(_.floor((stepInfo.taskPercent*100),1)+"%");
$('.progress-bar').css('width',(stepInfo.taskPercent*100)+"%");
}else if(step.name == 'convertProcess'){
$('.progress-slider').addClass('hidden');
$('.progress-text').html(LNG['yzOffice.Main.convert']);
}
}
}
clearInterval(repeatTimer);
taskStatus();
repeatTimer = setInterval(taskStatus,600);
};
var loadSuccess = function(data){
window.location.reload();
}
var loadError = function(error){
$('.progress-slider,.progress-loading').hide();
error += ' <a class="load_repeat" href="javascript:void(0);">'+
LNG['yzOffice.Main.transferAgain']+'</a>';
$('.progress-text').addClass('alert-danger').html(error).css('text-align','left');
}
$(window).ready(function(){
request();
$('.load_repeat').live('click',function(){
$.ajax({
url:apiUrl.restart+"&time"+UUID(),
dataType:'json',
success:function(data){
if(data.code){
request();
}
}
});
});
});
</script>
</head>
wget 'https://sme10.lists2.roe3.org/kodbox/plugins/yzOffice/php/yzOffice.class.php'
<?php
/*
* @link http://kodcloud.com/
* @author warlee | e-mail:kodcloud@qq.com
* @copyright warlee 2014.(Shanghai)Co.,Ltd
* @license http://kodcloud.com/tools/license/license.txt
*/
//官网用户demo
//http://www.yozodcs.com/examples.html
class yzoffice{
public $plugin;
public $filePath;
public $task;
public $taskFile;
public $api;
public $cachePath; // 缓存文件目录
public $cacheTask; // 任务信息缓存名称
public function __construct($plugin,$filePath){
$this->plugin = $plugin;
$this->filePath = $filePath;
$this->api = array(
'upload' => "https://www.yozodcs.com/fcscloud/file/upload",
'convert' => "https://www.yozodcs.com/fcscloud/composite/convert",
);
$this->cachePath = $this->plugin->cachePath;
$this->cacheTask = md5($this->cachePath . IO::hashSimple($this->filePath));
// 任务信息,如有缓存直接读取;否则读任务文件内容,存入缓存
$this->taskFile = $this->cachePath.'info.json';
if($this->task = Cache::get($this->cacheTask)) return;
if($info = IO::infoFull($this->taskFile)){
$this->taskFile = $info['path'];
$taskHas = json_decode(IO::getContent($this->taskFile),true);
$this->task = $taskHas;
return Cache::set($this->cacheTask, $taskHas);
}
return $this->task = false;
}
public function runTask(){
$task = array(
'currentStep' => 0,
'success' => 0,
'taskUuid' => md5($this->filePath.rand_string(20)),
'hideData' => array(),
'steps' => array(
array('name'=>'upload','process'=>'uploadProcess','status'=>0,'result'=>''),
array('name'=>'convert','process'=>'convert','status'=>0,'result'=>''),
)
);
if(is_array($this->task)){
$task = &$this->task;
}else{
$this->task = &$task;
}
$item = &$task['steps'][$task['currentStep']];
if($item['status'] == 0){
$item['status'] = 1;
if(!$item['process'] ||
$item['name'] == $item['process']){ //单步没有定时检测;相等则自我查询进度;0=>2之间跳转
$item['status'] = 0;
}
$this->saveData();
$function = $item['name'];
$result = $this->$function();
if(isset($result['data'])){
$item['result'] = $result['data'];
$item['status'] = 2;
$task['currentStep'] += 1;
//最后一步完成
if( $item['status'] == 2 && $task['currentStep'] > count($task['steps'])-1 ){
$task['success'] = 1;
}
if($task['currentStep'] >= count($task['steps'])-1 ){
$task['currentStep'] = count($task['steps'])-1;
}
$this->saveData();
}else{
$error = LNG('explorer.error');
if(is_array($result) && $result['code'] == 100){
$error = LNG('explorer.upload.error');
}else if(is_array($result) && is_string($result['data']) ){
$error = $result['data'];
}
show_json($error,false,$result);
}
}else if($item['status'] == 1){
$function = $item['process'];
if($function){
$item['result'] = $this->$function();
if($item['name'] == 'upload' && !$item['result']){
show_json($item['result'],false);
}
$this->saveData();
}
}
unset($task['hideData']);
show_json($task);
}
public function saveData(){
Cache::set($this->cacheTask, $this->task);
if($this->taskSuccess($this->task)){
$data = json_encode_force($this->task);
return $this->plugin->pluginCacheFileSet($this->taskFile, $data);
}
}
// 是否转换成功
public function taskSuccess($taskHas){
if(!is_array($taskHas)) return false;
$lastStep = end($taskHas['steps']);
return $lastStep['status'] == 2 ? $taskHas : false;
}
//非高清预览【返回上传后直接转换过的文件】
public function upload(){
ignore_timeout();
$path = $this->plugin->pluginLocalFile($this->filePath);
$post = array(
"file" => "@".$path,
);
$task = new TaskHttp($this->task['taskUuid'],'plugin.yzOffice.upload',filesize($path));
$result = url_request($this->api['upload'],'POST',$post,false,false,true,3600);
return is_array($result) && $result['data'] ? $result : false;
}
public function convert($tempFile=false){
$headers = array("Content-Type: application/x-www-form-urlencoded; charset=UTF-8");
$tempFile = $tempFile?$tempFile:$this->task['steps'][0]['result']['data']['data'];
$postArr = array(
'srcRelativePath' => $tempFile,
'convertType' => 61,
'isDccAsync' => 1,
'isCopy' => 1,
// 'time' => 1800
'isShowTitle' => 0, // 显示文件名
'isDelSrc' => 1, // 删除源文件
);
$post = http_build_query($postArr);//post默认用array发送;content-type为x-www-form-urlencoded时用key=1&key=2的形式
$result = url_request($this->api['convert'],'POST',$post,$headers,false,true,3600);
if(is_array($result) && is_array($result['data'])){
return $result;
}
return false;
}
public function clearCache(){
Cache::remove($this->cacheTask);
Task::kill($this->task['taskUuid']);
IO::remove($this->cachePath, false);
}
public function uploadProcess(){
return Task::get($this->task['taskUuid']);
}
public function getFile($file){
ignore_timeout();
$ext = unzip_filter_ext(get_path_ext($file));
$cacheFile = $this->cachePath.md5($file.'file').'.'.$ext;
if($info = IO::infoFull($cacheFile)){
return IO::fileOut($info['path']);
}
$step = count($this->task['steps']) - 1;
$infoData = $this->task['steps'][$step]['result'];
$link = $infoData['data'][0];
$linkFile = get_path_father($link) . str_replace('./','',$file);
$result = url_request($linkFile,'GET',false);
if($result['code'] == 200){
$cacheFile = $this->plugin->pluginCacheFileSet($cacheFile, $result['data']);
IO::fileOut($cacheFile);
}
}
}