Language   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 55
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 12
c 1
b 0
f 0
dl 0
loc 55
rs 10
wmc 6

4 Methods

Rating   Name   Duplication   Size   Complexity  
A booted() 0 12 3
A shortLanguageList() 0 3 1
A defaultLanguage() 0 3 1
A languageList() 0 3 1
1
<?php
2
namespace Itstructure\Mult\Models;
3
4
use Illuminate\Database\Eloquent\Model;
5
6
/**
7
 * Class Language
8
 *
9
 * @property int $default
10
 *
11
 * @package Itstructure\Mult\Models
12
 */
13
class Language extends Model
14
{
15
    /**
16
     * @var string
17
     */
18
    protected $table = 'languages';
19
20
    /**
21
     * @var array
22
     */
23
    protected $fillable = ['locale', 'short_name', 'name', 'default'];
24
25
    /**
26
     * List of available languages in short name format.
27
     * @return array
28
     */
29
    public static function shortLanguageList(): array
30
    {
31
        return static::pluck('short_name')->toArray();
32
    }
33
34
    /**
35
     * List of available languages.
36
     * @return mixed
37
     */
38
    public static function languageList()
39
    {
40
        return static::get();
41
    }
42
43
    /**
44
     * Get a default language entry.
45
     * @return Language|null
46
     */
47
    public static function defaultLanguage()
48
    {
49
        return static::firstWhere('default', 1);
50
    }
51
52
    /**
53
     * Set default = 1 just for one entry.
54
     * @return void
55
     */
56
    protected static function booted()
57
    {
58
        static::saved(function($model) {
59
            /* @var Language $model */
60
            if ($model->default == 1) {
61
62
                /* @var Language $default */
63
                $default = Language::firstWhere('default', 1);
64
65
                if (null !== $default){
66
                    $default->default = 0;
67
                    $default->save();
68
                }
69
            }
70
        });
71
    }
72
}
73