Fix model observer registering multiple times (#12323)

* Fix model observer registering multiple times

* remove unused import
This commit is contained in:
Tony Murray
2020-11-18 20:21:04 -06:00
committed by GitHub
parent 1652d17ff4
commit 8ee9d0cfb7
2 changed files with 7 additions and 8 deletions
+1 -3
View File
@@ -54,9 +54,7 @@ class Nac implements Module
{
if ($os instanceof NacPolling) {
// discovery output (but don't install it twice (testing can can do this)
if (! PortsNac::getEventDispatcher()->hasListeners('eloquent.created: App\Models\PortsNac')) {
PortsNac::observe(new ModuleModelObserver());
}
ModuleModelObserver::observe(PortsNac::class);
$nac_entries = $os->pollNac()->keyBy('mac_address');
$existing_entries = $os->getDevice()->portsNac->keyBy('mac_address');
+6 -5
View File
@@ -25,21 +25,22 @@
namespace LibreNMS\Util;
use Illuminate\Database\Eloquent\Model as Eloquent;
use Illuminate\Support\Str;
class ModuleModelObserver
{
/**
* Install observers to output +, -, U for models being created, deleted, and updated
*
* @param string $model The model name including namespace
* @param string|\Illuminate\Database\Eloquent\Model $model The model name including namespace
*/
public static function observe($model)
{
$model = Str::start($model, '\\');
// discovery output (but don't install it twice (testing can can do this)
if (! $model::getEventDispatcher()->hasListeners('eloquent.created: ' . ltrim('\\', $model))) {
static $observed_models = []; // keep track of observed models so we don't duplicate output
$class = ltrim($model, '\\');
if (! in_array($class, $observed_models)) {
$model::observe(new ModuleModelObserver());
$observed_models[] = $class;
}
}