TopPeopleModel::getJapaneseName()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 10
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 1 Features 1
Metric Value
cc 2
eloc 5
c 2
b 1
f 1
nc 2
nop 1
dl 0
loc 10
rs 10
1
<?php
2
3
namespace MalScraper\Model\Top;
4
5
use MalScraper\Helper\Helper;
6
use MalScraper\Model\MainModel;
7
8
/**
9
 * TopPeopleModel class.
10
 */
11
class TopPeopleModel extends MainModel
12
{
13
    /**
14
     * Page number.
15
     *
16
     * @var string
17
     */
18
    private $_page;
19
20
    /**
21
     * Default constructor.
22
     *
23
     * @param string|int $page
24
     * @param string     $parserArea
25
     *
26
     * @return void
27
     */
28
    public function __construct($page, $parserArea = '#content')
29
    {
30
        $this->_page = 50 * ($page - 1);
31
        $this->_url = $this->_myAnimeListUrl.'/people.php?limit='.$this->_page;
32
        $this->_parserArea = $parserArea;
33
34
        parent::errorCheck($this);
35
    }
36
37
    /**
38
     * Default call.
39
     *
40
     * @param string $method
41
     * @param array  $arguments
42
     *
43
     * @return array|string|int
44
     */
45
    public function __call($method, $arguments)
46
    {
47
        if ($this->_error) {
48
            return $this->_error;
49
        }
50
51
        return call_user_func_array([$this, $method], $arguments);
52
    }
53
54
    /**
55
     * Get rank.
56
     *
57
     * @param \simplehtmldom_1_5\simple_html_dom $each_char
58
     *
59
     * @return string
60
     */
61
    private function getRank($each_char)
62
    {
63
        $rank = $each_char->find('td span', 0)->plaintext;
64
65
        return trim($rank);
66
    }
67
68
    /**
69
     * Get id.
70
     *
71
     * @param \simplehtmldom_1_5\simple_html_dom $name_area
72
     *
73
     * @return string
74
     */
75
    private function getId($name_area)
76
    {
77
        $id = $name_area->find('a', 0)->href;
78
        $id = explode('/', $id);
79
80
        return $id[4];
81
    }
82
83
    /**
84
     * Get name.
85
     *
86
     * @param \simplehtmldom_1_5\simple_html_dom $name_area
87
     *
88
     * @return string
89
     */
90
    private function getName($name_area)
91
    {
92
        return $name_area->find('.information', 0)->find('a', 0)->plaintext;
93
    }
94
95
    /**
96
     * Get japanese name.
97
     *
98
     * @param \simplehtmldom_1_5\simple_html_dom $name_area
99
     *
100
     * @return string
101
     */
102
    private function getJapaneseName($name_area)
103
    {
104
        $name = $name_area->find('.information', 0)->find('span', 0);
105
        if ($name) {
106
            $name = $name->plaintext;
107
108
            return substr($name, 1, strlen($name) - 3);
109
        }
110
111
        return '';
112
    }
113
114
    /**
115
     * Get image.
116
     *
117
     * @param \simplehtmldom_1_5\simple_html_dom $name_area
118
     *
119
     * @return string
120
     */
121
    private function getImage($name_area)
122
    {
123
        $image = $name_area->find('img', 0)->getAttribute('data-src');
124
125
        return Helper::imageUrlCleaner($image);
126
    }
127
128
    /**
129
     * Get birthday.
130
     *
131
     * @param \simplehtmldom_1_5\simple_html_dom $each_char
132
     *
133
     * @return string
134
     */
135
    private function getBirthday($each_char)
136
    {
137
        $day = $each_char->find('.birthday', 0)->plaintext;
138
        $day = preg_replace('/\s+/', ' ', $day);
139
        $day = trim($day);
140
141
        return $day == 'Unknown' ? '' : $day;
142
    }
143
144
    /**
145
     * Get favorite.
146
     *
147
     * @param \simplehtmldom_1_5\simple_html_dom $each_char
148
     *
149
     * @return string
150
     */
151
    private function getFavorite($each_char)
152
    {
153
        $fav = $each_char->find('.favorites', 0)->plaintext;
154
        $fav = str_replace(',', '', $fav);
155
156
        return trim($fav);
157
    }
158
159
    /**
160
     * Get result list.
161
     *
162
     * @return array
163
     */
164
    private function getAllInfo()
165
    {
166
        $data = [];
167
        $data_index = 0;
168
        $top_table = $this->_parser->find('.people-favorites-ranking-table', 0);
169
        foreach ($top_table->find('tr[class=ranking-list]') as $each_char) {
170
            $name_area = $each_char->find('.people', 0);
171
172
            $data[$data_index]['rank'] = $this->getRank($each_char);
173
            $data[$data_index]['id'] = $this->getId($name_area);
174
            $data[$data_index]['name'] = $this->getName($name_area);
175
            $data[$data_index]['japanese_name'] = $this->getJapaneseName($name_area);
176
            $data[$data_index]['image'] = $this->getImage($name_area);
177
            $data[$data_index]['birthday'] = $this->getBirthday($each_char);
178
            $data[$data_index]['favorite'] = $this->getFavorite($each_char);
179
180
            $data_index++;
181
        }
182
183
        return $data;
184
    }
185
}
186