Completed
Push — master ( 9ed240...526dfe )
by Razon
02:55
created

app/Behavior/ArticleBehavior.php (1 issue)

Severity
1
<?php
2
namespace App\Behavior;
3
4
use App\Factory\ArticleMetaFactory;
5
use App\Model\Article;
6
use Yii;
7
use yii\base\Behavior;
8
use yii\base\Event;
9
10
class ArticleBehavior extends Behavior
11
{
12
    public function events()
13
    {
14
        return [
15
            Article::EVENT_AFTER_INSERT => 'saveMeta',
16
            Article::EVENT_AFTER_UPDATE => 'saveMeta',
17
            Article::EVENT_AFTER_DELETE => 'afterDelete',
18
        ];
19
    }
20
21
    public function saveMeta(Event $event)
22
    {
23
        /** @var Article $model */
24
        $model = $event->sender;
25
26
        $meta = ArticleMetaFactory::findByArticleId($model->id);
27
        if (!$meta) {
0 ignored issues
show
$meta is of type App\Model\ArticleMeta, thus it always evaluated to true.
Loading history...
28
            $meta = ArticleMetaFactory::create($model->id, $model->content);
29
        } else {
30
            $meta->content = $model->content;
31
        }
32
        if (!$meta->save()) {
33
            Yii::error($meta->getErrors(), __METHOD__);
34
            throw new \Exception('Unable to save article meta');
35
        }
36
    }
37
38
    public function afterDelete(Event $event)
39
    {
40
        /** @var Article $model */
41
        $model = $event->sender;
42
43
        $meta = ArticleMetaFactory::findByArticleId($model->id);
44
        if ($meta && $meta->delete() === false) {
45
            throw new \Exception('Unable to delete article meta');
46
        }
47
    }
48
}
49