validate plugin ID and shutdown if it's missing
- DEV_MODE needed to keep running without proper ID
This commit is contained in:
parent
300d817409
commit
699c5951d9
@ -9,6 +9,7 @@ use ManiaControl\Files\FileUtil;
|
||||
use ManiaControl\Logger;
|
||||
use ManiaControl\ManiaControl;
|
||||
use ManiaControl\Manialinks\ManialinkPageAnswerListener;
|
||||
use ManiaControl\Utils\ClassUtil;
|
||||
|
||||
/**
|
||||
* Class managing Plugins
|
||||
@ -108,7 +109,7 @@ class PluginManager {
|
||||
* @return bool
|
||||
*/
|
||||
public static function isPluginClass($pluginClass) {
|
||||
$pluginClass = self::getClass($pluginClass);
|
||||
$pluginClass = ClassUtil::getClass($pluginClass);
|
||||
if (!class_exists($pluginClass, false)) {
|
||||
return false;
|
||||
}
|
||||
@ -122,19 +123,6 @@ class PluginManager {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the Class of the Object
|
||||
*
|
||||
* @param mixed $object
|
||||
* @return string
|
||||
*/
|
||||
private static function getClass($object) {
|
||||
if (is_object($object)) {
|
||||
return get_class($object);
|
||||
}
|
||||
return (string)$object;
|
||||
}
|
||||
|
||||
/**
|
||||
* Deactivate the Plugin with the given Class
|
||||
*
|
||||
@ -190,9 +178,9 @@ class PluginManager {
|
||||
* @return string
|
||||
*/
|
||||
public static function getPluginClass($pluginClass) {
|
||||
$pluginClass = self::getClass($pluginClass);
|
||||
$pluginClass = ClassUtil::getClass($pluginClass);
|
||||
if (!self::isPluginClass($pluginClass)) {
|
||||
return false;
|
||||
return null;
|
||||
}
|
||||
return $pluginClass;
|
||||
}
|
||||
@ -258,9 +246,17 @@ class PluginManager {
|
||||
|
||||
$newClasses = array_diff($classesAfter, $classesBefore);
|
||||
foreach ($newClasses as $className) {
|
||||
if (!$this->isPluginClass($className)) {
|
||||
if (!self::isPluginClass($className)) {
|
||||
continue;
|
||||
}
|
||||
if (!self::validatePluginClass($className)) {
|
||||
$message = "The plugin class '{$className}' isn't correctly implemented: You need to return a proper ID by registering it on maniacontrol.com!";
|
||||
Logger::logWarning($message);
|
||||
if (!DEV_MODE) {
|
||||
$message = 'Fix the plugin or turn on DEV_MODE!';
|
||||
$this->maniaControl->quit($message, true);
|
||||
}
|
||||
}
|
||||
|
||||
if (!$this->addPluginClass($className)) {
|
||||
continue;
|
||||
@ -313,6 +309,20 @@ class PluginManager {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate that the given class is a correctly implemented plugin class
|
||||
*
|
||||
* @param string $pluginClass
|
||||
* @return bool
|
||||
*/
|
||||
private static function validatePluginClass($pluginClass) {
|
||||
if (!self::isPluginClass($pluginClass)) {
|
||||
return false;
|
||||
}
|
||||
/** @var Plugin $pluginClass */
|
||||
return ($pluginClass::getId() > 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the class to array of loaded plugin classes
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user