Mass move to root
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
class Musicbrainz_ArtistModel extends Model {
|
||||
|
||||
public function getId($name) {
|
||||
$artist_info = $this->db->getRows($this->db->q('SELECT * FROM musicbrainz.bh_artist WHERE name = \''. $name .'\''));
|
||||
if ($artist_info) {
|
||||
$ids = array();
|
||||
foreach ($artist_info as $item) {
|
||||
if ($item['id'] == $artist_info[0]['id']) {
|
||||
$ids[] = $item['credit_id'];
|
||||
}
|
||||
return $ids;
|
||||
}
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
class Musicbrainz_ReleaseModel extends Model {
|
||||
|
||||
public function getReleases($release_groups, $group_by_release = false, $only_official = false) {
|
||||
if (!is_array($release_groups)) {
|
||||
$release_groups = array($release_groups);
|
||||
}
|
||||
|
||||
$releases = $this->db->getRows(
|
||||
$this->db->q('
|
||||
SELECT *
|
||||
FROM musicbrainz.bh_release
|
||||
WHERE
|
||||
release_group IN (\''. implode('\',\'', $release_groups) .'\')
|
||||
'. ($only_official ? 'AND release_type = 1' : 'AND release_type IS NOT NULL') .'
|
||||
ORDER BY
|
||||
date ASC,
|
||||
id ASC
|
||||
'),
|
||||
'id'
|
||||
);
|
||||
|
||||
if ($group_by_release) {
|
||||
$g_releases = array();
|
||||
foreach ($releases as $release) {
|
||||
if (!isset($g_releases[$release['release_group']])) {
|
||||
$g_releases[$release['release_group']] = array();
|
||||
}
|
||||
$g_releases[$release['release_group']][$release['id']] = $release;
|
||||
}
|
||||
return $g_releases;
|
||||
} else {
|
||||
return $releases;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
class Musicbrainz_ReleaseGroupModel extends Model {
|
||||
|
||||
public function getArtistAlbums($artist_ids) {
|
||||
return $this->db->getRows(
|
||||
$this->db->q('
|
||||
SELECT *
|
||||
FROM musicbrainz.bh_release_group
|
||||
WHERE
|
||||
artist_id IN (\''. implode('\',\'', $artist_ids) .'\') AND
|
||||
release_type = 1
|
||||
ORDER BY
|
||||
year ASC,
|
||||
id ASC
|
||||
'),
|
||||
'id'
|
||||
);
|
||||
}
|
||||
|
||||
public function getArtistAlbumsIds($artist_id) {
|
||||
return array_keys($this->db->getRows(
|
||||
$this->db->q('
|
||||
SELECT id
|
||||
FROM musicbrainz.bh_release_group
|
||||
WHERE
|
||||
artist_id = \''. $artist_id .'\' AND
|
||||
release_type = 1
|
||||
ORDER BY
|
||||
year ASC,
|
||||
id ASC
|
||||
'),
|
||||
'id'
|
||||
));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,87 @@
|
||||
<?php
|
||||
|
||||
class Musicbrainz_TrackModel extends Model {
|
||||
|
||||
private $_bad_track_names = array(
|
||||
'[silence]'
|
||||
);
|
||||
|
||||
public function getReleaseTracks($releases_ids, $group_by_release = false) {
|
||||
if (!is_array($releases_ids)) {
|
||||
$releases_ids = array($releases_ids);
|
||||
}
|
||||
|
||||
$tracks = $this->db->getRows(
|
||||
$this->db->q('
|
||||
SELECT *
|
||||
FROM musicbrainz.bh_track
|
||||
WHERE
|
||||
release_id IN (\''. implode('\',\'', $releases_ids) .'\')
|
||||
ORDER BY
|
||||
release_id ASC,
|
||||
position ASC
|
||||
'),
|
||||
'id'
|
||||
);
|
||||
|
||||
foreach ($tracks as $track_id => $track_info) {
|
||||
// Конвертируем миллисекунды в секунды
|
||||
$tracks[$track_id]['length'] = round($track_info['length'] / 1000);
|
||||
}
|
||||
|
||||
if ($group_by_release) {
|
||||
$g_tracks = array();
|
||||
foreach ($tracks as $track) {
|
||||
if (!isset($g_tracks[$track['release_id']])) {
|
||||
$g_tracks[$track['release_id']] = array();
|
||||
}
|
||||
$g_tracks[$track['release_id']][$track['id']] = $track;
|
||||
}
|
||||
return $g_tracks;
|
||||
} else {
|
||||
return $tracks;
|
||||
}
|
||||
}
|
||||
|
||||
public function getUniqueReleaseTracks($releases_ids) {
|
||||
$tracks = $this->getReleaseTracks($releases_ids, true);
|
||||
|
||||
$track_list_unique = array();
|
||||
$album_list = array();
|
||||
$bonus_list = array();
|
||||
|
||||
$first_release = current($tracks);
|
||||
|
||||
// Заносим треки из первого релиза в массив основных
|
||||
foreach ($first_release as $track_id => $track_info) {
|
||||
if (!in_array($track_info['name'], $this->_bad_track_names)) {
|
||||
$album_list[$track_id] = $track_info;
|
||||
$track_list_unique[] = $this->clearTrackName($track_info['name']);
|
||||
}
|
||||
}
|
||||
|
||||
// Все треки, которые не встречаются на первом релизе заносим в бонусы
|
||||
foreach ($tracks as $release_id => $release_tracks) {
|
||||
foreach ($release_tracks as $track_id => $track_info) {
|
||||
if (
|
||||
!in_array($track_info['name'], $this->_bad_track_names) &&
|
||||
!in_array($this->clearTrackName($track_info['name']), $track_list_unique)
|
||||
) {
|
||||
$bonus_list[$track_id] = $track_info;
|
||||
$track_list_unique[] = $this->clearTrackName($track_info['name']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return array(
|
||||
'tracks' => $album_list,
|
||||
'bonus' => $bonus_list
|
||||
);
|
||||
}
|
||||
|
||||
private function clearTrackName($name) {
|
||||
$name = str_replace('&', 'and', $name);
|
||||
preg_match_all('/[a-z0-9]/Ui', $name, $m);
|
||||
return strtolower(implode($m[0]));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user