Exemplo n.º 1
0
}
Event::on(Cover::className(), Cover::EVENT_BEFORE_INSERT, function ($event) {
    // если это первый кавер, то делаем его основным,
    // иначе, если этот кавер должен стать основным, сбрасываем is_main у всех предыдущих каверов
    $cover = $event->sender;
    if (!$cover->release->getCovers()->count()) {
        $cover->is_main = true;
    } elseif ($cover->is_main) {
        Cover::resetIsMain($cover->release_id);
    }
});
Event::on(Cover::className(), Cover::EVENT_BEFORE_UPDATE, function ($event) {
    // если этот кавер должен стать основным, сбрасываем is_main у всех предыдущих каверов
    $cover = $event->sender;
    if ($cover->is_main) {
        Cover::resetIsMain($cover->release_id);
    }
});
Event::on(Cover::className(), Cover::EVENT_BEFORE_DELETE, function ($event) {
    // если удаляется основной кавер, вместо него основным становится следующий по очереди
    $cover = $event->sender;
    if ($cover->is_main) {
        $newMainCover = $cover->release->getCovers()->andWhere(['is_main' => 0])->orderBy('id')->limit(1)->one();
        if ($newMainCover) {
            $newMainCover->is_main = 1;
            $newMainCover->save();
        }
    }
});
Event::on(Cover::className(), Cover::EVENT_BEFORE_DELETE, function ($event) {
    $event->sender->file->delete();