Moved pluginEnable() to \SnappyMail\Repository::enablePackage()

This commit is contained in:
the-djmaze 2023-02-04 15:28:46 +01:00
parent cf08c1aba4
commit 539ddcc51f
3 changed files with 35 additions and 35 deletions

View file

@ -61,5 +61,7 @@ if ($oPlugin) {
$aList = SnappyMail\Repository::getEnabledPackagesNames(); $aList = SnappyMail\Repository::getEnabledPackagesNames();
$aList[] = 'mailbox-detect'; $aList[] = 'mailbox-detect';
$oConfig->Set('plugins', 'enabled_list', implode(',', array_unique($aList))); $oConfig->Set('plugins', 'enabled_list', implode(',', array_unique($aList)));
// v2.5.4
//\SnappyMail\Repository::enablePackage('mailbox-detect');
$oConfig->Save(); $oConfig->Save();

View file

@ -5,27 +5,25 @@ namespace RainLoop\Actions;
use RainLoop\Enumerations\PluginPropertyType; use RainLoop\Enumerations\PluginPropertyType;
use RainLoop\Exceptions\ClientException; use RainLoop\Exceptions\ClientException;
use RainLoop\Notifications; use RainLoop\Notifications;
use SnappyMail\Repository;
trait AdminExtensions trait AdminExtensions
{ {
public function DoAdminPackagesList() : array public function DoAdminPackagesList() : array
{ {
return $this->DefaultResponse(\SnappyMail\Repository::getPackagesList()); return $this->DefaultResponse(Repository::getPackagesList());
} }
public function DoAdminPackageDelete() : array public function DoAdminPackageDelete() : array
{ {
$sId = $this->GetActionParam('id', ''); return $this->DefaultResponse(Repository::deletePackage($this->GetActionParam('id', '')));
$bResult = \SnappyMail\Repository::deletePackage($sId);
static::pluginEnable($sId, false);
return $this->DefaultResponse($bResult);
} }
public function DoAdminPackageInstall() : array public function DoAdminPackageInstall() : array
{ {
$sType = $this->GetActionParam('type', ''); $sType = $this->GetActionParam('type', '');
$bResult = \SnappyMail\Repository::installPackage( $bResult = Repository::installPackage(
$sType, $sType,
$this->GetActionParam('id', ''), $this->GetActionParam('id', ''),
$this->GetActionParam('file', '') $this->GetActionParam('file', '')
@ -53,7 +51,7 @@ trait AdminExtensions
} }
} }
return $this->DefaultResponse($this->pluginEnable($sId, !$bDisable)); return $this->DefaultResponse(Repository::enablePackage($sId, !$bDisable));
} }
public function DoAdminPluginLoad() : array public function DoAdminPluginLoad() : array
@ -144,32 +142,4 @@ trait AdminExtensions
throw new ClientException(Notifications::CantSavePluginSettings); throw new ClientException(Notifications::CantSavePluginSettings);
} }
private function pluginEnable(string $sName, bool $bEnable = true) : bool
{
if (!\strlen($sName)) {
return false;
}
$oConfig = $this->Config();
$aEnabledPlugins = \SnappyMail\Repository::getEnabledPackagesNames();
$aNewEnabledPlugins = array();
if ($bEnable) {
$aNewEnabledPlugins = $aEnabledPlugins;
$aNewEnabledPlugins[] = $sName;
} else {
foreach ($aEnabledPlugins as $sPlugin) {
if ($sName !== $sPlugin && \strlen($sPlugin)) {
$aNewEnabledPlugins[] = $sPlugin;
}
}
}
$oConfig->Set('plugins', 'enabled_list', \trim(\implode(',', \array_unique($aNewEnabledPlugins)), ' ,'));
return $oConfig->Save();
}
} }

View file

@ -180,6 +180,33 @@ abstract class Repository
); );
} }
public static function enablePackage(string $sName, bool $bEnable = true) : bool
{
if (!\strlen($sName)) {
return false;
}
$oConfig = \RainLoop\Api::Config();
$aEnabledPlugins = static::getEnabledPackagesNames();
$aNewEnabledPlugins = array();
if ($bEnable) {
$aNewEnabledPlugins = $aEnabledPlugins;
$aNewEnabledPlugins[] = $sName;
} else {
foreach ($aEnabledPlugins as $sPlugin) {
if ($sName !== $sPlugin && \strlen($sPlugin)) {
$aNewEnabledPlugins[] = $sPlugin;
}
}
}
$oConfig->Set('plugins', 'enabled_list', \trim(\implode(',', \array_unique($aNewEnabledPlugins)), ' ,'));
return $oConfig->Save();
}
public static function getPackagesList() : array public static function getPackagesList() : array
{ {
empty($_ENV['SNAPPYMAIL_INCLUDE_AS_API']) && \RainLoop\Api::Actions()->IsAdminLoggined(); empty($_ENV['SNAPPYMAIL_INCLUDE_AS_API']) && \RainLoop\Api::Actions()->IsAdminLoggined();
@ -228,6 +255,7 @@ abstract class Repository
public static function deletePackage(string $sId) : bool public static function deletePackage(string $sId) : bool
{ {
\RainLoop\Api::Actions()->IsAdminLoggined(); \RainLoop\Api::Actions()->IsAdminLoggined();
static::enablePackage($sId, false);
return static::deletePackageDir($sId); return static::deletePackageDir($sId);
} }