1<?php
2
3namespace MusicBrainz;
4
5/**
6 * Represents a MusicBrainz release group
7 *
8 */
9class ReleaseGroup
10{
11    /**
12     * @var string
13     */
14    public $id;
15    /**
16     * @var array
17     */
18    private $data;
19    /**
20     * @var MusicBrainz
21     */
22    private $brainz;
23    /**
24     * @var Release[]
25     */
26    private $releases = array();
27
28    /**
29     * @param array       $releaseGroup
30     * @param MusicBrainz $brainz
31     */
32    public function __construct(array $releaseGroup, MusicBrainz $brainz)
33    {
34        $this->data   = $releaseGroup;
35        $this->brainz = $brainz;
36
37        $this->id = isset($releaseGroup['id']) ? (string)$releaseGroup['id'] : '';
38    }
39
40    /**
41     * @return string
42     */
43    public function getId()
44    {
45        return $this->id;
46    }
47
48    /**
49     * @return string
50     */
51    public function getTitle()
52    {
53        return $this->data['title'];
54    }
55
56    /**
57     * @return mixed
58     */
59    public function getScore()
60    {
61        return $this->data['score'];
62    }
63
64    /**
65     * @return Release[]
66     */
67    public function getReleases()
68    {
69        if (!empty($this->releases)) {
70            return $this->releases;
71        }
72
73        foreach ($this->data['releases'] as $release) {
74            array_push($this->releases, new Release($release, $this->brainz));
75        }
76
77        return $this->releases;
78    }
79}
80