145 lines
3.9 KiB
PHP
145 lines
3.9 KiB
PHP
![]() |
<?php
|
|||
|
/**
|
|||
|
* 计划任务
|
|||
|
*/
|
|||
|
class adminAutoTask extends Controller {
|
|||
|
function __construct() {
|
|||
|
parent::__construct();
|
|||
|
$this->model = Model('SystemTask');
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 计划任务列表
|
|||
|
* @return void
|
|||
|
*/
|
|||
|
public function get(){
|
|||
|
$result = $this->model->listData();
|
|||
|
$error = false;
|
|||
|
foreach ($result as $i => $item) { // 兼容列表异常数据
|
|||
|
if (!isset($item['name'])) {
|
|||
|
unset($result[$i]);
|
|||
|
$error = true;
|
|||
|
}
|
|||
|
}
|
|||
|
if ($error) $result = array_values($result);
|
|||
|
show_json($result,true);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 计划任务添加
|
|||
|
*/
|
|||
|
public function add(){
|
|||
|
$data = Input::getArray(array(
|
|||
|
'name' => array('check'=>'require'), // 名称
|
|||
|
'type' => array('check'=>'require'), // 类型:方法、URL
|
|||
|
'event' => array('check'=>'require'), // 任务值:方法、url地址
|
|||
|
'time' => array('check'=>'require'), // 周期:json
|
|||
|
'desc' => array('default'=>''), // 描述
|
|||
|
'enable' => array('default'=>'0'), // 是否启用
|
|||
|
'system' => array('default'=>'0'), // 系统默认
|
|||
|
));
|
|||
|
$this->checkEvent($data);
|
|||
|
$result = $this->model->add($data);
|
|||
|
$msg = !!$result ? LNG('explorer.success') : LNG('explorer.repeatError');
|
|||
|
show_json($msg,!!$result);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 更新任务信息
|
|||
|
*/
|
|||
|
public function edit(){
|
|||
|
$data = Input::getArray(array(
|
|||
|
"id" => array("check"=>"number"),
|
|||
|
'name' => array('check'=>'require'), // 名称
|
|||
|
'type' => array('check'=>'require'), // 类型:方法、URL
|
|||
|
'event' => array('check'=>'require'), // 任务值:方法、url地址
|
|||
|
'time' => array('check'=>'require'), // 周期:json
|
|||
|
'desc' => array('default'=>''), // 描述
|
|||
|
'enable' => array('default'=>'0'), // 是否启用
|
|||
|
'system' => array('default'=>'0'), // 系统默认
|
|||
|
));
|
|||
|
$this->checkEvent($data);
|
|||
|
$result = $this->model->update($data['id'],$data);
|
|||
|
$msg = !!$result ? LNG('explorer.success') : LNG('explorer.error');
|
|||
|
show_json($msg,!!$result);
|
|||
|
}
|
|||
|
|
|||
|
private function checkEvent($data) {
|
|||
|
$action = $data['event'];
|
|||
|
if($data['type'] == 'url') {
|
|||
|
if(!Input::check($action, 'url')){
|
|||
|
show_json('url error!', false);
|
|||
|
}
|
|||
|
return;
|
|||
|
}
|
|||
|
$last = strrpos($action,'.');
|
|||
|
$className = substr($action,0,$last);
|
|||
|
$method = substr($action,$last + 1);
|
|||
|
$obj = Action($className);
|
|||
|
if(!$obj || !method_exists($obj,$method)){
|
|||
|
show_json("[{$action}] method not exists!", false);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 启动|关闭某个任务
|
|||
|
*/
|
|||
|
public function enable(){
|
|||
|
$data = Input::getArray(array(
|
|||
|
"id" => array("check"=>"number"),
|
|||
|
"enable" => array("check"=>"bool"),
|
|||
|
));
|
|||
|
$result = $this->model->enable($data['id'],(bool)$data['enable']);
|
|||
|
$msg = !!$result ? LNG('explorer.success') : LNG('explorer.error');
|
|||
|
show_json($msg,!!$result);
|
|||
|
}
|
|||
|
/**
|
|||
|
* 删除计划任务
|
|||
|
*/
|
|||
|
public function remove(){
|
|||
|
$id = Input::get('id','int');
|
|||
|
$result = $this->model->remove($id);
|
|||
|
$msg = !!$result ? LNG('explorer.success') : LNG('explorer.error');
|
|||
|
show_json($msg,!!$result);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 手动立即执行某个任务
|
|||
|
*/
|
|||
|
public function run(){
|
|||
|
$id = Input::get('id','int');
|
|||
|
$task = Model("SystemTask")->listData($id);
|
|||
|
if($task){
|
|||
|
$result = AutoTask::taskRun($task);
|
|||
|
}
|
|||
|
$msg = !!$result ? LNG('explorer.success') : LNG('explorer.error');
|
|||
|
show_json($msg,!!$result);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
// 开启关闭计划任务;
|
|||
|
public function taskSwitch(){
|
|||
|
$data = Input::getArray(array(
|
|||
|
"status" => array("check"=>"bool"),
|
|||
|
"delay" => array("check"=>"int","default"=>10),
|
|||
|
));
|
|||
|
// Cache::deleteAll();
|
|||
|
AutoTask::config($data['status'],$data['delay']);
|
|||
|
show_json($data);
|
|||
|
}
|
|||
|
public function taskRestart(){
|
|||
|
AutoTask::restart();
|
|||
|
sleep(1);
|
|||
|
AutoTask::start();
|
|||
|
}
|
|||
|
|
|||
|
// 移动排序、拖拽排序
|
|||
|
public function sort() {
|
|||
|
$ids = Input::get('ids', 'require');
|
|||
|
$ids = explode(',', $ids);
|
|||
|
foreach($ids as $i => $id) {
|
|||
|
$this->model->update($id,array("sort"=> $i));
|
|||
|
}
|
|||
|
show_json(LNG('explorer.success'));
|
|||
|
}
|
|||
|
}
|