public static function get_users_latest_songs(User $user, $count) { if (!is_numeric($count)) { Logger::log("get_users_latest_songs: invalid count value"); return array(); } $db = Database::instance(); $sql = ' SELECT p.id AS play_id, p.create_time, s.id, s.artist, s.album, s.title, s.length FROM play p, song s WHERE p.song_id = s.id AND p.user_id = ? ORDER BY p.create_time DESC LIMIT ? '; $params = array($user->id, $count); try { $rows = $db->select($sql, $params); } catch (Exception $e) { Logger::log("get_users_latest_songs: database failure: " . $e->getMessage()); return array(); } $songs = array(); foreach ($rows as $row) { $song = new self(); if (!$song->fill_fields($row)) { Logger::log("get_users_latest_songs: failed to build song object"); return array(); } $play = new Play(); if (!$play->fill_fields(array('id' => $row['play_id'], 'song_id' => $row['id'], 'user_id' => $user->id, 'create_time' => $row['create_time']))) { Logger::log("get_users_latest_songs: failed to build play object"); return array(); } $play->song = $song; $song->play = $play; $songs[] = $song; } return $songs; }