From 8539eeae0b1467e66dd6de6d879a7394b698919d Mon Sep 17 00:00:00 2001 From: monkeye Date: Thu, 2 Jun 2022 13:50:32 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=90=88=E5=B9=B6=E5=AE=89=E8=A3=85?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- upload/source/admincp/admincp_cloudaddons.php | 56 ++++++++++++++----- upload/source/language/lang_admincp_msg.php | 1 + 2 files changed, 42 insertions(+), 15 deletions(-) diff --git a/upload/source/admincp/admincp_cloudaddons.php b/upload/source/admincp/admincp_cloudaddons.php index 83df144fb..65b2010ba 100644 --- a/upload/source/admincp/admincp_cloudaddons.php +++ b/upload/source/admincp/admincp_cloudaddons.php @@ -182,24 +182,50 @@ if(!$operation || in_array($operation, array('plugins', 'templates'))) { $addoni++; cpmsg('cloudaddons_downloading', "action=cloudaddons&operation=download&addonids=$_GET[addonids]&i=$addoni&step=1&md5hash=".$_GET['md5hash'].'×tamp='.$_GET['timestamp'], 'loading', array('addonid' => $_GET['key'].'.'.$_GET['type']), FALSE); } - list($_GET['key'], $_GET['type'], $_GET['rid']) = explode('.', $addonids[0]); - cloudaddons_downloadlog($_GET['key'].'.'.$_GET['type']); - if($_GET['type'] == 'plugin') { - $plugin = C::t('common_plugin')->fetch_by_identifier($_GET['key']); - if(!$plugin['pluginid']) { - dheader('location: '.ADMINSCRIPT.'?action=plugins&operation=import&dir='.$_GET['key']); + + $batch = array(); + foreach ($addonids as $addonid) { + list($key, $type, $rid) = explode('.', $addonid); + cloudaddons_downloadlog($key . '.' . $type); + if ($type == 'plugin') { + $plugin = C::t('common_plugin')->fetch_by_identifier($key); + if (!$plugin['pluginid']) { + $batch[] = array( + ADMINSCRIPT . '?action=plugins&operation=import&dir=' . $key, + $key . '.' . $type + ); + } else { + $batch[] = array( + ADMINSCRIPT . '?action=plugins&operation=upgrade&pluginid=' . $plugin['pluginid'], + $key . '.' . $type + ); + } + } elseif ($type == 'template') { + $batch[] = array( + ADMINSCRIPT . '?action=styles&operation=import&dir=' . $key, + $key . '.' . $type + ); } else { - dheader('location: '.ADMINSCRIPT.'?action=plugins&operation=upgrade&pluginid='.$plugin['pluginid']); + cloudaddons_validator(key . '.pack'); + cloudaddons_installlog($key . '.pack'); + if (file_exists(DISCUZ_ROOT . './data/addonpack/' . $key . '.php')) { + $batch[] = array( + $_G['siteurl'] . 'data/addonpack/' . $key . '.php', + $key . '.' . $type + ); + } else { + cpmsg('cloudaddons_pack_installed', '', 'succeed'); + } } - } elseif($_GET['type'] == 'template') { - dheader('location: '.ADMINSCRIPT.'?action=styles&operation=import&dir='.$_GET['key']); - } else { - cloudaddons_validator($_GET['key'].'.pack'); - cloudaddons_installlog($_GET['key'].'.pack'); - if(file_exists(DISCUZ_ROOT.'./data/addonpack/'.$_GET['key'].'.php')) { - dheader('location: '.$_G['siteurl'].'data/addonpack/'.$_GET['key'].'.php'); + } + if (count($batch) > 1) { + $message = ""; + foreach ($batch as $v) { + $message .= '' . $v[1] . '
'; } - cpmsg('cloudaddons_pack_installed', '', 'succeed'); + echo '

' . cplang('cloudaddons_batch_succeed') . '

' . $message . '

'; + } else { + dheader('location: ' . $batch[0][0]); } } } diff --git a/upload/source/language/lang_admincp_msg.php b/upload/source/language/lang_admincp_msg.php index d4db41592..8a252a4ae 100644 --- a/upload/source/language/lang_admincp_msg.php +++ b/upload/source/language/lang_admincp_msg.php @@ -194,6 +194,7 @@ $lang = array ( 'cloudaddons_installing' => '应用 {addonid} 安装中,请稍候......', 'cloudaddons_install_files_changed' => '以下文件被修改过,是否继续覆盖?

{files}', 'cloudaddons_pack_installed' => '扩展安装完毕', + 'cloudaddons_batch_succeed' => '请分别点击下面的链接进行安装及升级操作', 'counter_forum_succeed' => '论坛帖数重建完成', 'counter_digest_succeed' => '精华帖数重建完成', -- Gitee From 3c00fd9981e79b7be12c9f6797418875d86b9e94 Mon Sep 17 00:00:00 2001 From: monkeye Date: Tue, 21 Jun 2022 21:11:16 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E5=AE=89=E8=A3=85=E5=90=8E=E7=9A=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- upload/source/admincp/admincp_cloudaddons.php | 123 +++++++++++++----- 1 file changed, 90 insertions(+), 33 deletions(-) diff --git a/upload/source/admincp/admincp_cloudaddons.php b/upload/source/admincp/admincp_cloudaddons.php index 65b2010ba..5974d6308 100644 --- a/upload/source/admincp/admincp_cloudaddons.php +++ b/upload/source/admincp/admincp_cloudaddons.php @@ -183,49 +183,106 @@ if(!$operation || in_array($operation, array('plugins', 'templates'))) { cpmsg('cloudaddons_downloading', "action=cloudaddons&operation=download&addonids=$_GET[addonids]&i=$addoni&step=1&md5hash=".$_GET['md5hash'].'×tamp='.$_GET['timestamp'], 'loading', array('addonid' => $_GET['key'].'.'.$_GET['type']), FALSE); } + $extra = currentlang(); + $extra = $extra ? '_'.$extra : ''; $batch = array(); foreach ($addonids as $addonid) { list($key, $type, $rid) = explode('.', $addonid); - cloudaddons_downloadlog($key . '.' . $type); - if ($type == 'plugin') { - $plugin = C::t('common_plugin')->fetch_by_identifier($key); - if (!$plugin['pluginid']) { - $batch[] = array( - ADMINSCRIPT . '?action=plugins&operation=import&dir=' . $key, - $key . '.' . $type + cloudaddons_downloadlog($key.'.'.$type); + if(empty($batch[$key.'.'.$type][1])) { + if($type == 'plugin') { + $entrytitle = $importtxt = ''; + $plugindir = DISCUZ_ROOT.'./source/plugin/'.$key; + if(file_exists($plugindir.'/discuz_plugin_'.$key.$extra.'.xml')) { + $importtxt = @implode('', file($plugindir.'/discuz_plugin_'.$key.$extra.'.xml')); + } elseif(file_exists($plugindir.'/discuz_plugin_'.$key.'.xml')) { + $importtxt = @implode('', file($plugindir.'/discuz_plugin_'.$key.'.xml')); + } + if(!empty($importtxt)) { + $pluginarray = getimportdata('Discuz! Plugin', 0, 1); + if(!empty($pluginarray['plugin']['name'])) { + $entrytitle = dhtmlspecialchars($pluginarray['plugin']['name'].' '.$pluginarray['plugin']['version']); + } + } + $plugin = C::t('common_plugin')->fetch_by_identifier($key); + if(!$plugin['pluginid']) { + $batch[$key.'.'.$type] = array( + ADMINSCRIPT.'?action=plugins&operation=import&dir='.$key, + $lang['plugins_config_install'].' '.$entrytitle, + ); + } else { + if ($pluginarray['plugin']['version'] != $plugin['version']) { + $batch[$key.'.'.$type] = array( + ADMINSCRIPT.'?action=plugins&operation=upgrade&pluginid='.$plugin['pluginid'], + $lang['plugins_config_upgrade'].' '.$entrytitle, + ); + } + } + } elseif($type == 'template') { + $pluginarray = array(); + $entrytitle = $importtxt = ''; + $templatedir = DISCUZ_ROOT.'./template/'.$key; + $searchdir = dir($templatedir); + while($searchentry = $searchdir->read()) { + if(substr($searchentry, 0, 13) == 'discuz_style_' && fileext($searchentry) == 'xml') { + $importtxt = @implode('', file($templatedir.'/'.$searchentry)); + if(!empty($importtxt)) { + break; + } + } + } + if(!empty($importtxt)) { + $stylearray = getimportdata('Discuz! Style'); + if(!empty($stylearray['tplname'])) { + $entrytitle = dhtmlspecialchars($stylearray['tplname']); + } + } + $batch[$key.'.'.$type] = array( + ADMINSCRIPT.'?action=styles&operation=import&dir='.$key, + $entrytitle, ); } else { - $batch[] = array( - ADMINSCRIPT . '?action=plugins&operation=upgrade&pluginid=' . $plugin['pluginid'], - $key . '.' . $type - ); - } - } elseif ($type == 'template') { - $batch[] = array( - ADMINSCRIPT . '?action=styles&operation=import&dir=' . $key, - $key . '.' . $type - ); - } else { - cloudaddons_validator(key . '.pack'); - cloudaddons_installlog($key . '.pack'); - if (file_exists(DISCUZ_ROOT . './data/addonpack/' . $key . '.php')) { - $batch[] = array( - $_G['siteurl'] . 'data/addonpack/' . $key . '.php', - $key . '.' . $type - ); - } else { - cpmsg('cloudaddons_pack_installed', '', 'succeed'); + cloudaddons_validator($key.'.pack'); + cloudaddons_installlog($key.'.pack'); + if(file_exists(DISCUZ_ROOT.'./data/addonpack/'.$key.'.php')) { + $batch[$key.'.'.$type] = array( + $_G['siteurl'].'data/addonpack/'.$key.'.php', + $key.'.'.$type, + ); + } } } } - if (count($batch) > 1) { - $message = ""; - foreach ($batch as $v) { - $message .= '' . $v[1] . '
'; + + if(count($batch) > 1) { + $message = ''; + foreach ($batch as $k => $v) { + $message .= '

'.($v[1] ? $v[1] : $k).'

'; } - echo '

' . cplang('cloudaddons_batch_succeed') . '

' . $message . '

'; + echo '

'.cplang('cloudaddons_batch_succeed').'

'.$message.'

+ + '; + exit; + } elseif(count($batch) == 1) { + $v = reset($batch); + dheader('location: '.$v[0]); } else { - dheader('location: ' . $batch[0][0]); + //插件已经是最新版或者扩展没有安装文件,才可能进入这里 + list($_GET['key'], $_GET['type'], $_GET['rid']) = explode('.', $addonids[0]); + if($_GET['type'] == 'plugin') { + dheader('location: '.ADMINSCRIPT.'?action=plugins&operation=upgrade&pluginid='.$plugin['pluginid']); + } else { + cpmsg('cloudaddons_pack_installed', '', 'succeed'); + } } } } -- Gitee