Mass move to root

This commit is contained in:
magnolia-fan
2011-04-09 17:41:24 +04:00
parent 0640e2424e
commit 62ff3f277f
484 changed files with 0 additions and 3 deletions
@@ -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]));
}
}