/** * Callback to validate module database records. * * @param Event $event */ public static function onIntegrityCheck($event) { $integrityController = $event->sender; $integrityController->showTestHeadline("Activity Module (" . Activity::find()->count() . " entries)"); // Loop over all comments foreach (Activity::find()->all() as $a) { // Check for object_model / object_id if ($a->object_model != "" && $a->object_id != "" && $a->getSource() === null) { if ($integrityController->showFix("Deleting activity id " . $a->id . " without existing target! (" . $a->object_model . ")")) { $a->delete(); } } // Check for moduleId is set if ($a->module == "") { if ($integrityController->showFix("Deleting activity id " . $a->id . " without module_id!")) { $a->delete(); } } // Check Activity class exists if (!class_exists($a->class)) { if ($integrityController->showFix("Deleting activity id " . $a->id . " class not exists! (" . $a->class . ")")) { $a->delete(); } } } }
/** * On delete of some active record, check if there are related activities and delete them. */ public static function onActiveRecordDelete($event) { $model = $event->sender->className(); $pk = $event->sender->getPrimaryKey(); // Check if primary key exists and is not array (multiple pk) if ($pk !== null && !is_array($pk)) { foreach (models\Activity::find()->where(['object_id' => $pk, 'object_model' => $model])->all() as $activity) { $activity->delete(); } } }