mirror of
https://github.com/flucont/btcloud.git
synced 2025-01-23 21:28:15 -05:00
116 lines
4.1 KiB
PHP
116 lines
4.1 KiB
PHP
<?php
|
||
declare (strict_types = 1);
|
||
|
||
namespace app\command;
|
||
|
||
use think\console\Command;
|
||
use think\console\Input;
|
||
use think\console\input\Argument;
|
||
use think\console\input\Option;
|
||
use think\console\Output;
|
||
use think\facade\Db;
|
||
use think\facade\Config;
|
||
use app\lib\Plugins;
|
||
|
||
class UpdateAll extends Command
|
||
{
|
||
protected function configure()
|
||
{
|
||
$this->setName('updateall')
|
||
->setDescription('the updateall command');
|
||
}
|
||
|
||
protected function execute(Input $input, Output $output)
|
||
{
|
||
$res = Db::name('config')->cache('configs',0)->column('value','key');
|
||
Config::set($res, 'sys');
|
||
|
||
//刷新插件列表
|
||
if(!$this->refresh_plugin_list($input, $output)){
|
||
return;
|
||
}
|
||
|
||
$count = 0;
|
||
|
||
$type = intval(config_get('updateall_type'));
|
||
|
||
$json_arr = Plugins::get_plugin_list();
|
||
//循环下载缺少的插件
|
||
foreach($json_arr['list'] as $plugin){
|
||
if($type == 0 && ($plugin['type']==8 || $plugin['type']==12) || $type == 1 && $plugin['type']==12 || $plugin['type']==10 || $plugin['type']==5) continue;
|
||
|
||
foreach($plugin['versions'] as $version){
|
||
$ver = $version['m_version'].'.'.$version['version'];
|
||
if(isset($version['download'])){
|
||
if(!file_exists(get_data_dir().'plugins/other/'.$version['download'])){
|
||
$this->download_plugin($input, $output, $plugin['name'], $ver);
|
||
sleep(1);
|
||
$count++;
|
||
}
|
||
}else{
|
||
if(!file_exists(get_data_dir().'plugins/package/'.$plugin['name'].'-'.$ver.'.zip')){
|
||
$this->download_plugin($input, $output, $plugin['name'], $ver);
|
||
sleep(1);
|
||
$count++;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
$imgcount = 0;
|
||
//循环下载缺少的插件图片
|
||
foreach($json_arr['list'] as $plugin){
|
||
if(isset($plugin['min_image']) && strpos($plugin['min_image'], 'fname=')){
|
||
$fname = substr($plugin['min_image'], strpos($plugin['min_image'], '?fname=')+7);
|
||
if(!file_exists(get_data_dir().'plugins/other/'.$fname)){
|
||
$this->download_plugin_image($input, $output, $fname);
|
||
sleep(1);
|
||
$imgcount++;
|
||
}
|
||
}
|
||
}
|
||
|
||
$output->writeln('本次成功下载'.$count.'个插件'.($imgcount>0?','.$imgcount.'个图片':''));
|
||
config_set('runtime', date('Y-m-d H:i:s'));
|
||
}
|
||
|
||
private function refresh_plugin_list(Input $input, Output $output){
|
||
try{
|
||
Plugins::refresh_plugin_list();
|
||
Db::name('log')->insert(['uid' => 1, 'action' => '刷新插件列表', 'data' => '刷新插件列表成功', 'addtime' => date("Y-m-d H:i:s")]);
|
||
$output->writeln('刷新插件列表成功');
|
||
return true;
|
||
}catch(\Exception $e){
|
||
$output->writeln($e->getMessage());
|
||
errorlog($e->getMessage());
|
||
return false;
|
||
}
|
||
}
|
||
|
||
private function download_plugin(Input $input, Output $output, $plugin_name, $version){
|
||
$fullname = $plugin_name.'-'.$version;
|
||
try{
|
||
Plugins::download_plugin($plugin_name, $version);
|
||
Db::name('log')->insert(['uid' => 1, 'action' => '下载插件', 'data' => $fullname, 'addtime' => date("Y-m-d H:i:s")]);
|
||
$output->writeln('下载插件: '.$fullname.' 成功');
|
||
return true;
|
||
}catch(\Exception $e){
|
||
$output->writeln($fullname.' '.$e->getMessage());
|
||
errorlog($fullname.' '.$e->getMessage());
|
||
return false;
|
||
}
|
||
}
|
||
|
||
private function download_plugin_image(Input $input, Output $output, $fname){
|
||
try{
|
||
Plugins::download_plugin_other($fname);
|
||
$output->writeln('下载图片: '.$fname.' 成功');
|
||
return true;
|
||
}catch(\Exception $e){
|
||
$output->writeln($fname.' '.$e->getMessage());
|
||
errorlog($fname.' '.$e->getMessage());
|
||
return false;
|
||
}
|
||
}
|
||
}
|