protected function getEntities($key) { if (!isset($this->relationships[$key])) { return false; } $relationship = $this->relationships[$key]; if (!isset($this->managers[$relationship['manager']])) { $this->managers[$relationship['manager']] = $this->factory->get($key); } $manager = $this->managers[$relationship['manager']]; /* @var $manager ManagerAbstract */ $query = new QueryBuilder($manager->table(), $this->factory::connection(), $relationship['conditions']); $original_params = $query->params(); $params = array(); foreach ($original_params as $param) { if (stripos($param, 'entity.' === 0)) { $param = $this->entity[substr($param, 7)]; } $params[] = $param; } if ($relationship['relation'] == 'HasOne') { $this->entities[$key] = $manager->fetch($query, $params); } else { $this->entities[$key] = $manager->fetchAll($query, $params); } return $this->entities[$key]; }
private function saveData($data) { $artist = $data['artist']; $tracks = $data['tracks']['data']; $genres = $data['genres']['data']; $data['release_date'] = date("d/m/Y", strtotime($data['release_date'])); $album_manager = ManagerFactory::getManager('album'); $artist_manager = ManagerFactory::getManager('artist'); $track_manager = ManagerFactory::getManager('track'); $genre_manager = ManagerFactory::getManager('genre'); $artist_key = $artist_manager->add($artist); $album_key = $album_manager->add($data, $artist_key); $track_num = 1; foreach ($tracks as $track) { $secondes = $track['duration']; $min = (int) ($secondes / 60); $sec = $secondes % 60; $duration = array('min' => $min, 'sec' => $sec); $track['duration'] = $duration; $track['num'] = $track_num; $track_manager->add($track, $album_key); $track_num++; } foreach ($genres as $genre) { $genre_manager->add($genre); $genre_manager->add($genre, $album_key); } }
public function get($key) { $splited = split('_', $key); $nodes = array('artists', $splited[0], 'albums', $splited[0] . '_' . $splited[1], 'tracks', $key); $track = $this->db->getBranch($nodes); if (is_null($track)) { return null; } $album_manager = ManagerFactory::getManager('album'); $album = $album_manager->get($splited[0] . '_' . $splited[1]); $track['album'] = $album; return $track; }
} else { return $app->sendFile($file, 200, ['Content-Type' => 'audio/mp3']); } }); $app->get('/services/{type}/{key}', function ($type, $key) use($app) { $manager = ManagerFactory::getManager($type); if (is_null($manager)) { return null; } if ($key == 'all') { return json_encode($manager->all()); } return json_encode($manager->get($key)); }); $app->get('/services/{type}/{key}/xml', function ($type, $key) use($app) { $manager = ManagerFactory::getManager($type); if (is_null($manager)) { return null; } if ($type == 'genre') { $data = $manager->getAlbumsByGenre($key); if (!is_null($data)) { $xml = XMLParser::encode($data, 'albums'); Utils::Download(sys_get_temp_dir() . '-' . $key . '.xml', $xml->asXML()); return $app->abort(200); } } return $app->abort(404); }); $app->get('/load/{start_id}:{numbers}', function ($start_id, $numbers) use($app) { $deezer = new DeezerLoader();
public function getAlbumsByGenre($key) { $album_keys = array(); $artists = $this->db->getBranch(array('artists')); foreach ($artists as $artist) { foreach ($artist['albums'] as $album_key => $album) { foreach ($album['genres'] as $genre) { if ($genre == $key) { array_push($album_keys, $album_key); } } } } $albums = array(); $manager = ManagerFactory::getManager('album'); foreach ($album_keys as $album_key) { $albums[$album_key] = $manager->get($album_key); } if (sizeof($albums) == 0) { return null; } return $albums; }
private function updTrack($key, $action, $params) { switch ($action) { case 'del': $splited = split('_', $key); $manager = ManagerFactory::getManager('track'); $new_key = $manager->del($key); return array('url' => "album/{$splited['0']}_{$splited['1']}"); case 'set': $splited = split('_', $key); $manager = ManagerFactory::getManager('track'); if (!is_null($params['duration_min']) && !is_null($params['duration_sec'])) { $duration = array('min' => $params['duration_min'], 'sec' => $params['duration_sec']); $params['duration'] = $duration; } if (!is_null($this->_file)) { $url = $manager->saveResources($this->_file, 'track', $key); $params['preview'] = $url; } $new_key = $manager->set($params, $key); return array('url' => "album/{$splited['0']}_{$splited['1']}"); } }
public function search($criterias) { $answer = array(); $track_founds = array(); $artist_founds = array(); $album_founds = array(); $artists = $this->db->getBranch(array('artists')); $types = array(); if ($criterias['checkArtist']) { array_push($types, 'artist'); } if ($criterias['checkAlbum']) { array_push($types, 'album'); } foreach ($artists as $artist_key => $artist) { foreach ($artist['albums'] as $album_key => $album) { if ($criterias['checkMusic']) { foreach ($album['tracks'] as $track_key => $track) { if (trim($criterias['keyword']) != '') { if (stristr($track['infos']['title'], $criterias['keyword'])) { if ($criterias['checkGenre']) { foreach ($criterias['genre'] as $genre_param) { if (in_array($genre_param, $album['genres'])) { if ($criterias['checkYear']) { if ($criterias['choice_year'] == 'value') { if (substr($album['infos']['release_date'], 6, 10) == $criterias['year']) { //KW+GENRE+Y array_push($track_founds, $track_key); } } if ($criterias['choice_year'] == 'interval') { //KW+GR+IN if (substr($album['infos']['release_date'], 6, 10) >= substr($criterias['interval_year'], 0, 4) && substr($album['infos']['release_date'], 6, 10) <= substr($criterias['interval_year'], 5, 8)) { array_push($track_founds, $track_key); } } } else { array_push($track_founds, $track_key); //KEYWORD + GENRE } } } } else { if ($criterias['checkYear']) { if ($criterias['choice_year'] == 'value') { if (substr($album['infos']['release_date'], 6, 10) == $criterias['year']) { //KW+Y array_push($track_founds, $track_key); } } if ($criterias['choice_year'] == 'interval') { //KW+IN if (substr($album['infos']['release_date'], 6, 10) >= substr($criterias['interval_year'], 0, 4) && substr($album['infos']['release_date'], 6, 10) <= substr($criterias['interval_year'], 5, 8)) { array_push($track_founds, $track_key); } } } else { array_push($track_founds, $track_key); //KEYWORD } } } } else { if ($criterias['checkGenre']) { foreach ($criterias['genre'] as $genre_param) { if (in_array($genre_param, $album['genres'])) { if ($criterias['checkYear']) { if ($criterias['choice_year'] == 'value') { if (substr($album['infos']['release_date'], 6, 10) == $criterias['year']) { //GENRE+Y array_push($track_founds, $track_key); } } if ($criterias['choice_year'] == 'interval') { //GR+IN if (substr($album['infos']['release_date'], 6, 10) >= substr($criterias['interval_year'], 0, 4) && substr($album['infos']['release_date'], 6, 10) <= substr($criterias['interval_year'], 5, 8)) { array_push($track_founds, $track_key); } } } else { array_push($track_founds, $track_key); //GENRE } } } } else { if ($criterias['checkYear']) { if ($criterias['choice_year'] == 'value') { if (substr($album['infos']['release_date'], 6, 10) == $criterias['year']) { //Y array_push($track_founds, $track_key); } } if ($criterias['choice_year'] == 'interval') { //IN if (substr($album['infos']['release_date'], 6, 10) >= substr($criterias['interval_year'], 0, 4) && substr($album['infos']['release_date'], 6, 10) <= substr($criterias['interval_year'], 5, 8)) { array_push($track_founds, $track_key); } } } } } } } foreach ($types as $type) { if ($type == 'artist') { $kw_place = $artist['infos']['name']; } if ($type == 'album') { $kw_place = $album['infos']['title']; } if (trim($criterias['keyword']) != '') { if (stristr($kw_place, $criterias['keyword'])) { if ($criterias['checkGenre']) { foreach ($criterias['genre'] as $genre_param) { if (in_array($genre_param, $album['genres'])) { if ($criterias['checkYear']) { if ($criterias['choice_year'] == 'value') { if (substr($album['infos']['release_date'], 6, 10) == $criterias['year']) { //KW+GENRE+Y if ($type == 'artist') { array_push($artist_founds, $artist_key); } if ($type == 'album') { array_push($album_founds, $album_key); } } } if ($criterias['choice_year'] == 'interval') { //KW+GR+IN if (substr($album['infos']['release_date'], 6, 10) >= substr($criterias['interval_year'], 0, 4) && substr($album['infos']['release_date'], 6, 10) <= substr($criterias['interval_year'], 5, 8)) { if ($type == 'artist') { array_push($artist_founds, $artist_key); } if ($type == 'album') { array_push($album_founds, $album_key); } } } } else { if ($type == 'artist') { array_push($artist_founds, $artist_key); } if ($type == 'album') { array_push($album_founds, $album_key); } } } } } else { if ($criterias['checkYear']) { if ($criterias['choice_year'] == 'value') { if (substr($album['infos']['release_date'], 6, 10) == $criterias['year']) { //KW+Y if ($type == 'artist') { array_push($artist_founds, $artist_key); } if ($type == 'album') { array_push($album_founds, $album_key); } } } if ($criterias['choice_year'] == 'interval') { //KW+IN if (substr($album['infos']['release_date'], 6, 10) >= substr($criterias['interval_year'], 0, 4) && substr($album['infos']['release_date'], 6, 10) <= substr($criterias['interval_year'], 5, 8)) { if ($type == 'artist') { array_push($artist_founds, $artist_key); } if ($type == 'album') { array_push($album_founds, $album_key); } } } } else { if ($type == 'artist') { array_push($artist_founds, $artist_key); } if ($type == 'album') { array_push($album_founds, $album_key); } } } } } else { if ($criterias['checkGenre']) { foreach ($criterias['genre'] as $genre_param) { if (in_array($genre_param, $album['genres'])) { if ($criterias['checkYear']) { if ($criterias['choice_year'] == 'value') { if (substr($album['infos']['release_date'], 6, 10) == $criterias['year']) { //GENRE+Y if ($type == 'artist') { array_push($artist_founds, $artist_key); } if ($type == 'album') { array_push($album_founds, $album_key); } } } if ($criterias['choice_year'] == 'interval') { //GR+IN if (substr($album['infos']['release_date'], 6, 10) >= substr($criterias['interval_year'], 0, 4) && substr($album['infos']['release_date'], 6, 10) <= substr($criterias['interval_year'], 5, 8)) { if ($type == 'artist') { array_push($artist_founds, $artist_key); } if ($type == 'album') { array_push($album_founds, $album_key); } } } } else { if ($type == 'artist') { array_push($artist_founds, $artist_key); } if ($type == 'album') { array_push($album_founds, $album_key); } } } } } else { if ($criterias['checkYear']) { if ($criterias['choice_year'] == 'value') { if (substr($album['infos']['release_date'], 6, 10) == $criterias['year']) { //Y if ($type == 'artist') { array_push($artist_founds, $artist_key); } if ($type == 'album') { array_push($album_founds, $album_key); } } } if ($criterias['choice_year'] == 'interval') { //IN if (substr($album['infos']['release_date'], 6, 10) >= substr($criterias['interval_year'], 0, 4) && substr($album['infos']['release_date'], 6, 10) <= substr($criterias['interval_year'], 5, 8)) { if ($type == 'artist') { array_push($artist_founds, $artist_key); } if ($type == 'album') { array_push($album_founds, $album_key); } } } } } } } } } $tracks = array(); $albums = array(); $artists = array(); $manager = ManagerFactory::getManager('track'); foreach ($track_founds as $key) { $tracks[$key] = $manager->get($key); } $answer['tracks'] = $tracks; $manager = ManagerFactory::getManager('artist'); foreach ($artist_founds as $key) { $artists[$key] = $manager->get($key); } $answer['artists'] = $artists; $manager = ManagerFactory::getManager('album'); foreach ($album_founds as $key) { $albums[$key] = $manager->get($key); } $answer['albums'] = $albums; return $answer; }
public function lastTen() { $temps = []; $artists = $this->db->getBranch(array('artists')); foreach ($artists as $artist_key => $artist_value) { foreach ($artist_value['albums'] as $album_key => $album_value) { $temp = array($album_key, $album_value['infos']['release_date']); array_push($temps, $temp); } } for ($i = 0; $i < count($temps); $i++) { for ($j = $i + 1; $j < count($temps); $j++) { if ($temps[$j][1] > $temps[$i][1]) { $temp = $temps[$i]; $temps[$i] = $temps[$j]; $temps[$j] = $temp; } } } $end = count($temps) > 10 ? 10 : count($temps); $albums = []; $album_manager = ManagerFactory::getManager('album'); for ($i = 0; $i < $end; $i++) { array_push($albums, $album_manager->get($temps[$i][0])); } return $albums; }