input; $id = $jinput->get('id', 0, 'int'); //check if ID exists on DB, otherwise show 404 $exists = true; $view = $jinput->get('view', '', 'cmd'); $db = JFactory::getDbo(); $form = false; $layout = $jinput->get('layout', '', 'string'); if($layout == "form" || $layout == "simpleform"){ $form = true; } $query = null; switch ($view) { case "album": $query = 'SELECT id FROM #__muscol_albums WHERE id = ' . $id ; break; case "artist": case "songs": $query = 'SELECT id FROM #__muscol_artists WHERE id = ' . $id ; break; case "song": $query = 'SELECT id FROM #__muscol_songs WHERE id = ' . $id ; break; case "file": $query = 'SELECT id FROM #__muscol_songs WHERE id = ' . $id ; $zip = JRequest::getInt( 'zip' ) ; if($zip){//is album $query = 'SELECT id FROM #__muscol_albums WHERE id = ' . $id ; } break; case "playlist": $query = 'SELECT 1 FROM #__muscol_playlists' ; break; case "artists": require_once(JPATH_SITE.DS.'components'.DS.'com_muscol'.DS.'helpers'.DS.'alphabets.php'); $letter = $jinput->get('letter', '', 'string'); $characters = MusColAlphabets::get_characters(); $inicials = $characters['internal'] ; if(!in_array($letter, $inicials) && $letter != "") $exists = false; break; case "search": case "playlists": break; default: JError::raiseError(404, JText::_('JERROR_PAGE_NOT_FOUND')); break; } if($query){ $db->setQuery($query); $exists = $db->loadResult(); } if(!$form){ if(!$exists){ JError::raiseError(404, JText::_('JERROR_PAGE_NOT_FOUND')); } } elseif($id){ if(!$exists){ JError::raiseError(404, JText::_('JERROR_PAGE_NOT_FOUND')); } } if ($form) { $user = JFactory::getUser(); $id = $jinput->get('id', '', 'int'); $params =JComponentHelper::getParams( 'com_muscol' ); $itemid = $params->get('itemid'); if($itemid != "") $itemid = "&Itemid=" . $itemid; if(!$user->id){ // not registered switch($view){ case "album": $msg = JText::_('NOT_AUTHORIZED_ALBUMS'); break; case "artist": $msg = JText::_('NOT_AUTHORIZED_ARTISTS'); break; case "song": $msg = JText::_('NOT_AUTHORIZED_SONGS'); break; default: $msg = JText::_('NOT_AUTHORIZED_ALBUMS'); } $link = JRoute::_('index.php?option=com_muscol&view=artists' . $itemid); $this->setRedirect($link, $msg); } else{ // registered switch($view){ case "album": $can_edit = $this->check_album_permission($id); $msg = JText::_('NOT_AUTHORIZED_ALBUM'); $link = JRoute::_('index.php?option=com_muscol&view=album&id='. $id . $itemid); break; case "song": $can_edit = $this->check_song_permission($id); $msg = JText::_('NOT_AUTHORIZED_SONG'); $link = JRoute::_('index.php?option=com_muscol&view=song&id='. $id . $itemid); break; case "artist": $can_edit = $this->check_artist_permission($id); $msg = JText::_('NOT_AUTHORIZED_ARTIST'); $link = JRoute::_('index.php?option=com_muscol&view=artist&id='. $id . $itemid); if(!$user->authorise('muscol.createartists', 'com_muscol')){ $can_edit = false ; $msg = JText::_('NOT_AUTHORIZED_ARTISTS'); $link = JRoute::_('index.php?option=com_muscol&view=artists' . $itemid); } break; default: $can_edit = $this->check_album_permission($id); $msg = JText::_('NOT_AUTHORIZED_ALBUMS'); $link = JRoute::_('index.php?option=com_muscol&view=album&id='. $id . $itemid); } if(!$can_edit){ if(!$id) $link = JRoute::_('index.php?option=com_muscol&view=artists' . $itemid); $this->setRedirect($link, $msg); } else{ if($view == "album"){ $db = JFactory::getDbo(); if(!$user->authorise('muscol.createalbumsallartists', 'com_muscol')) $where_clause = ' WHERE user_id = ' . $user->id; else $where_clause = ''; $query = 'SELECT COUNT(*) FROM #__muscol_artists '. $where_clause ; $db->setQuery($query); $has_artists = $db->loadResult(); if(!$has_artists){ if($user->authorise('muscol.createartists', 'com_muscol')){ $msg = JText::_('ADD_ARTIST_FIRST'); $link = JRoute::_('index.php?option=com_muscol&view=artist&layout=form' . $itemid, false); } else{ $msg = JText::_('NO_ARTISTS_AVAILABLE'); $link = JRoute::_('index.php?option=com_muscol&view=artists' . $itemid, false); } $this->setRedirect($link, $msg); } } parent::display($cachable,$urlparams); // OK } } } else { parent::display($cachable,$urlparams); } } function check_album_permission($album_id){ if(!$album_id) return true; // everybody can add an album if is a registered user $db = JFactory::getDbo(); $user = JFactory::getUser(); $query = 'SELECT user_id FROM #__muscol_albums WHERE id = ' . $album_id ; $db->setQuery($query); $album_creator = $db->loadResult(); if($album_creator == $user->id) return true; else return false; } function check_artist_permission($artist_id){ if(!$artist_id) return true; // everybody can add an album if is a registered user $db = JFactory::getDBO(); $user = JFactory::getUser(); $query = 'SELECT user_id FROM #__muscol_artists WHERE id = ' . $artist_id ; $db->setQuery($query); $artist_creator = $db->loadResult(); if($artist_creator == $user->id) return true; else return false; } function check_song_permission($song_id){ if(!$song_id) return true; // everybody can add a song if is a registered user $db = JFactory::getDbo(); $user = JFactory::getUser(); $query = 'SELECT user_id FROM #__muscol_songs WHERE id = ' . $song_id ; $db->setQuery($query); $song_creator = $db->loadResult(); if($song_creator == $user->id) return true; else return false; } function save_album() { $jinput = JFactory::getApplication()->input; $params =JComponentHelper::getParams( 'com_muscol' ); $itemid = $params->get('itemid'); if($itemid != "") $itemid = "&Itemid=" . $itemid; $artist_id = 0; $new_artist = $jinput->get('newartist', '', 'string'); if($new_artist){ $model = $this->getModel('artist'); $artist_data['id'] = 0 ; $artist_data['artist_name'] = $new_artist ; $artist_data['genre_id'] = $jinput->get('genre_id', 0, 'int'); if ($artist_id = $model->store($artist_data)) { $msg_art = JText::_( 'ARTIST_SAVED' ); JRequest::setVar('artist_id', $artist_id); } else { $msg_art = JText::_( 'ERROR_SAVING_ARTIST' ); } } $model = $this->getModel('album'); if ($id = $model->store($artist_id)) { $msg = JText::_( 'ALBUM_SAVED' ); $saved_ok = true; } else { $msg = JText::_( 'ERROR_SAVING_ALBUM' ); $saved_ok = false; } $link = JRoute::_('index.php?option=com_muscol&view=album&id='. $id . $itemid) ; $this->setRedirect($link, $msg . " " . $msg_art); } function save_artist() { $user = JFactory::getUser(); $model = $this->getModel('artist'); $params =JComponentHelper::getParams( 'com_muscol' ); $itemid = $params->get('itemid'); if($itemid != "") $itemid = "&Itemid=" . $itemid; if (!$user->authorise('muscol.createartists', 'com_muscol')) { $can_edit = false ; $msg = JText::_('NOT_AUTHORIZED_ARTISTS'); $link = JRoute::_('index.php?option=com_muscol&view=artists' . $itemid); $this->setRedirect($link, $msg); } else { if ($id = $model->store()) { $msg = JText::_( 'ARTIST_SAVED' ); $saved_ok = true; } else { $msg = JText::_( 'ERROR_SAVING_ARTIST' ); $saved_ok = false; } $link = JRoute::_('index.php?option=com_muscol&view=artist&id='. $id . $itemid) ; $this->setRedirect($link, $msg); } } function save_song() { $jinput = JFactory::getApplication()->input; $model = $this->getModel('song'); if ($album_id = $model->store()) { $msg = JText::_( 'SONG_SAVED' ); } else { $msg = JText::_( 'ERROR_SAVING_SONG' ); } $params = JComponentHelper::getParams( 'com_muscol' ); $itemid = $params->get('itemid'); if($itemid != "") $itemid = "&Itemid=" . $itemid; $id = $jinput->get('id', 0, 'int'); switch($jinput->get('from', '', 'string')){ case "album": $link = JRoute::_('index.php?option=com_muscol&view=album&layout=form&id=' . $album_id . $itemid); break; default: if(!$id) $link = JRoute::_('index.php?option=com_muscol&view=album&id='. $album_id . $itemid); else $link = JRoute::_('index.php?option=com_muscol&view=song&id='. $id . $itemid); } $this->setRedirect($link, $msg); } function save_comment() { $mainframe = JFactory::getApplication(); $user = JFactory::getUser(); $model = $this->getModel('album'); $comment = $model->store_comment() ; $comment->username = $user->name; if ($comment->id) { $msg = JText::_( 'COMMENT_SAVED' ); $saved_ok = true; $type = "message"; } else { $msg = JText::_( 'ERROR_SAVING_COMMENT' ); $saved_ok = false; $type = "error"; } $jinput = $mainframe->input; $album_id = $jinput->getInt('album_id', 0); $comment_type = $jinput->getCmd('comment_type'); if($saved_ok){ //new plugin access $dispatcher = JEventDispatcher::getInstance(); $plugin_ok = JPluginHelper::importPlugin('muscol'); $results = $dispatcher->trigger('onSaveComment', array ($album_id, $comment_type)); } $notifications = array(); $notifications[0] = new stdClass(); $notifications[0]->type = "message"; $notifications[0]->message = $msg; $return = new stdClass(); $return->notifications = $notifications; $returncomments = array(); $returncomments[] = $comment; $return->content = MusColHelper::prepareCommentsData($returncomments); //we return echo json_encode($return); $mainframe->close(); } function rate(){ $mainframe = JFactory::getApplication(); $model = $this->getModel('rating'); $user_id = JFactory::getUser()->id; $saved_ok = false; if ($user_id) { if ($model->store_rating()) { $msg = JText::_( 'RATING_SAVED' ); $saved_ok = true; } else { $msg = JText::_( 'ERROR_SAVING_RATING' ); $saved_ok = false; } } $jinput = $mainframe->input; $type = $jinput->get('type', 'album', 'string'); $album_id = $jinput->get('album_id', 0, 'int'); if($saved_ok){ //new plugin access $dispatcher = JEventDispatcher::getInstance(); $plugin_ok = JPluginHelper::importPlugin('muscol'); if ($type == 'album') $results = $dispatcher->trigger('onSaveRatingAlbum', array ($album_id)); else $results = $dispatcher->trigger('onSaveRatingSong', array ($album_id)); } $notifications = array(); $notifications[0] = new stdClass(); if (!$user_id) { $notifications[0]->type = "message"; $notifications[0]->message = JText::_('ERROR_LOGIN_FIRST'); } else { if ($saved_ok) { $notifications[0]->type = "message"; $notifications[0]->message = JText::_('RATING_SAVED'); } else { $notifications[0]->type = "warning"; $notifications[0]->message = JText::_('ERROR_SAVING_RATING'); } } echo json_encode(array( 'success' => $saved_ok, 'id' => $album_id, 'rating' => $model->getAlbumRating($album_id, $type), 'notifications' => $notifications )); $mainframe->close(); } //AJAX function to add a song to a playlist function add_song_to_playlist(){ $mainframe = JFactory::getApplication(); $db = JFactory::getDbo(); $jinput = $mainframe->input; $id = $jinput->get('id', 1, 'int'); $uri = JFactory::getUri(); if($this->check_playlist_permission( $id )){ $song_id = $jinput->get('song_id', 1, 'int'); $model = $this->getModel('playlist'); $return = $model->add_item($id,$song_id, 's'); $query = " SELECT s.*,al.name as album_name, al.image, ar.artist_name FROM #__muscol_songs as s LEFT JOIN #__muscol_artists AS ar ON ar.id = s.artist_id LEFT JOIN #__muscol_albums AS al ON al.id = s.album_id WHERE s.id = ".$song_id; $db->setQuery($query); $song = $db->loadObject(); $thefile = null; if (MusColHelper::isYoutubeFile($song->file)) { $thefile = MusColHelper::getYoutubeURL($song->file); } else { $thefile = MusColHelper::getSongFileURL($song); } $return = new stdClass(); $return->notifications = array(); $return->notifications[0] = new stdClass(); $return->notifications[0]->type = "message"; $return->notifications[0]->message = JText::_('SONG_ADDED_TO_PLAYLIST'); $return->playlistsong = new stdClass(); $return->playlistsong->title = $song->name ; $return->playlistsong->description = $song->artist_name ; $return->playlistsong->file = $thefile ; $return->playlistsong->image = $uri->base() . "images/albums/" . $song->image ; $songs = MusColHelper::prepareSongsData(array($song)); $song = $songs[0]; $return->content = $song; echo json_encode($return); } else echo 0; $mainframe->close(); } function remove_song_playlist(){ $mainframe = JFactory::getApplication(); $jinput = $mainframe->input; $id = $jinput->get('id', 0, 'int'); if ($this->check_playlist_permission($id)) { $model = $this->getModel('playlist'); if (!$model->remove_songs()) { $msg = JText::_( 'ERROR_SONGS_DELETED_PLAYLIST' ); $msg_type = "error"; $saved_ok = false; } else { $msg = JText::_( 'SONGS_DELETED_PLAYLIST' ); $msg_type = "message"; $saved_ok = true; } } else { $msg = JText::_('NOT_ALLOWED_EDIT_PLAYLIST'); $msg_type = "notice"; } echo json_encode($saved_ok); $mainframe->close(); } function save_playlist_order(){ $jinput = JFactory::getApplication()->input; $playlist_id = $jinput->post->get('id', 0, 'int'); if($this->check_playlist_permission($playlist_id)){ $model = $this->getModel('playlist'); if(!$model->save_playlist_order()) { $msg = JText::_( 'ERROR_PLAYLIST_ORDER_SAVED' ); $msg_type = "error"; } else { $msg = JText::_( 'PLAYLIST_ORDER_SAVED' ); $msg_type = "message"; } } else{ $msg = JText::_('NOT_ALLOWED_EDIT_PLAYLIST'); $msg_type = "notice"; } $params =JComponentHelper::getParams( 'com_muscol' ); $itemid = $params->get('itemid'); if($itemid != "") $itemid = "&Itemid=" . $itemid; $this->setRedirect( 'index.php?option=com_muscol&view=playlist&id=' . $playlist_id . $itemid, $msg, $msg_type ); } function consolidate_playlist(){ $mainframe = JFactory::getApplication(); $jinput = $mainframe->input; $user = JFactory::getUser(); $params =JComponentHelper::getParams( 'com_muscol' ); if ($user->id && $user->authorise('muscol.allowcreateplaylists', 'com_muscol')) { $model = $this->getModel('playlist'); if (!$model->consolidate_playlist()) { $msg = JText::_( 'ERROR_SAVING_PLAYLIST' ); $msg_type = "error"; } else { $msg = JText::_( 'PLAYLIST_SAVED' ); $msg_type = "message"; $saved_ok = true; } } else { $msg = JText::_( 'ADMIN_DISABLED_PLAYLIST_SAVING' ); $msg_type = "message"; } $itemid = $params->get('itemid'); if($itemid != "") $itemid = "&Itemid=" . $itemid; if($saved_ok){ /**** JOMSOCIAL INTEGRATION *******/ if(file_exists( JPATH_BASE . DS . 'components' . DS . 'com_community' . DS . 'libraries' . DS . 'core.php') && $params->get('notify_jomsocial')){ $query = ' SELECT title as name,user_id, id FROM #__muscol_playlists ORDER BY id DESC ' ; $db = JFactory::getDbo(); $db->setQuery($query); $item = $db->loadObject() ; $link = JRoute::_('index.php?option=com_muscol&view=playlist&id='.$item->id . $itemid ); CFactory::load( 'libraries' , 'activities' ); $user = JFactory::getUser(); $act = new stdClass(); $act->actor = $user->id; $act->target = 0; $act->title = "{actor} ".JText::_('created a')." " . JText::_('new playlist') ."" ; $act->app = 'myalbums'; $act->cid = $user->id; CActivityStream::add($act); } /*************/ } $link = JRoute::_('index.php?option=com_muscol&view=playlists' . $itemid ); $this->setRedirect( $link, $msg, $msg_type ); } function save_playlist(){ $mainframe = JFactory::getApplication(); $user = JFactory::getUser(); $jinput = $mainframe->input; $playlist_id = $jinput->get('id', 0, 'int'); if ($playlist_id == 0) { $this->consolidate_playlist(); return; } if ($user->id && $this->check_playlist_permission($playlist_id)) { // only can save playlists registered users $model = $this->getModel('playlist'); if(!$model->save_playlist()) { $msg = JText::_( 'ERROR_SAVING_PLAYLIST' ); $msg_type = "error"; } else { $msg = JText::_( 'PLAYLIST_SAVED' ); $msg_type = "message"; } } else{ $msg = JText::_( 'You are not allowed to edit this playlist' ); $msg_type = "notice"; } $params =JComponentHelper::getParams( 'com_muscol' ); $itemid = $params->get('itemid'); if($itemid != "") $itemid = "&Itemid=" . $itemid; $this->setRedirect( 'index.php?option=com_muscol&view=playlist&id=' . $playlist_id . $itemid, $msg, $msg_type ); } function new_playlist_ajax() { $mainframe = JFactory::getApplication(); $jinput = $mainframe->input; $data = array(); $data['title'] = $jinput->get->get('title', '', 'string'); $data['description'] = MusColHelper::getHTMLInput('description'); $data['user_id'] = JFactory::getUser()->id; $song = strval($jinput->get->get('song', 0, 'int')); if ($song) $data['songs'] = $song; $return = new stdClass(); $return->notifications = array(); $return->notifications[0] = new stdClass(); if ($data['user_id']) { $model = $this->getModel('playlist'); $playlist_id = $model->store($data); if ($playlist_id) { $return->notifications[0]->type = "message"; $return->notifications[0]->message = JText::_('PLAYLIST_CREATED'); } else { $return->notifications[0]->type = "error"; $return->notifications[0]->message = JText::_('ERROR_CREATING_PLAYLIST'); } $return->content = new stdClass(); $return->content->playlist_id = $playlist_id; $return->lastPlaylists = MusColHelper::getLastPlaylists(); } else { $return->notifications[0]->type = "error"; $return->notifications[0]->message = JText::_('REGISTER_BEFORE'); } echo json_encode($return); $mainframe->close(); } function remove_playlist(){ $jinput = JFactory::getApplication()->input; $user = JFactory::getUser(); if($user->id && $this->check_playlist_permission( $jinput->get('id', 0, 'int') ) ){ // only can delete playlists registered users $model = $this->getModel('playlist'); if(!$model->delete_playlist()) { $msg = JText::_( 'ERROR_ERASING_PLAYLIST' ); $msg_type = "error"; } else { $msg = JText::_( 'PLAYLIST_ERASED' ); $msg_type = "message"; } } else{ $msg = JText::_( 'NOT_ALLOWED_EDIT_PLAYLIST' ); $msg_type = "notice"; } $params =JComponentHelper::getParams( 'com_muscol' ); $itemid = $params->get('itemid'); if($itemid != "") $itemid = "&Itemid=" . $itemid; $this->setRedirect( 'index.php?option=com_muscol&view=playlists' . $itemid, $msg, $msg_type ); } function edit_playlist() { $jinput = JFactory::getApplication()->input; $playlist_id = $jinput->get('id', 0, 'int'); if($this->check_playlist_permission($playlist_id)) JRequest::setVar( 'layout', 'form' ); else { $params =JComponentHelper::getParams( 'com_muscol' ); $itemid = $params->get('itemid'); if($itemid != "") $itemid = "&Itemid=" . $itemid; $msg = JText::_('NOT_ALLOWED_EDIT_PLAYLIST'); $msg_type = "notice"; $this->setRedirect( 'index.php?option=com_muscol&view=playlist&id=' . $playlist_id . $itemid, $msg, $msg_type ); } parent::display(); } function check_playlist_permission($playlist_id){ if(!$playlist_id) return true; // everybody can edit his own on-the-go playlist $db = JFactory::getDbo(); $user = JFactory::getUser(); $query = 'SELECT user_id FROM #__muscol_playlists WHERE id = ' . $playlist_id ; $db->setQuery($query); $playlist_creator = $db->loadResult(); if($playlist_creator == $user->id) return true; else return false; } function remove_songs() { //this function is called only from the album form template $jinput = JFactory::getApplication()->input; $album_id = $jinput->get('id', 0, 'int'); $params =JComponentHelper::getParams( 'com_muscol' ); $itemid = $params->get('itemid'); if($itemid != "") $itemid = "&Itemid=" . $itemid; $model = $this->getModel('song'); if(!$model->delete()) { $msg = JText::_( 'ERROR_DELETING_SONGS' ); } else { $msg = JText::_( 'SONGS_DELETED' ); } $this->setRedirect( 'index.php?option=com_muscol&view=album&layout=form&id=' . $album_id . $itemid, $msg ); } function erase_album() { $jinput = JFactory::getApplication()->input; $model = $this->getModel('album'); $id = $jinput->get('id', 0, 'int'); $confirm = JRequest::getVar('confirm'); if($confirm){ // delete for real $params =JComponentHelper::getParams( 'com_muscol' ); $itemid = $params->get('itemid'); if($itemid != "") $itemid = "&Itemid=" . $itemid; $can_edit = $this->check_album_permission($id); $msg = JText::_('You are not authorized to delete this album'); $link = JRoute::_('index.php?option=com_muscol&view=album&id='. $id . $itemid); if($can_edit){ if(!$model->delete()) { $msg = JText::_( 'ERROR_DELETING_ALBUMS' ); } else { $msg = JText::_( 'ALBUMS_DELETED' ); } $link = JRoute::_('index.php?option=com_muscol&view=artists' . $itemid); } $this->setRedirect( $link , $msg ); } else{ // ask for confirmation $params =JComponentHelper::getParams( 'com_muscol' ); $itemid = $params->get('itemid'); if($itemid != "") $itemid = "&Itemid=" . $itemid; $can_edit = $this->check_album_permission($id); $msg = JText::_('NOT_AUTHORIZED_DELETE_ALBUM'); $link = JRoute::_('index.php?option=com_muscol&view=album&id='. $id . $itemid); if($can_edit){ echo '
'.JText::_('SURE_DELETE_ALBUM').'

'.JText::_('Delete').' | '.JText::_('Cancel').'
' ; } else{ $this->setRedirect( $link , $msg ); } } } function erase_artist() { $model = $this->getModel('artist'); $jinput = JFactory::getApplication()->input; $id = $jinput->get('id', 0, 'int'); $confirm = JRequest::getVar('confirm'); if($confirm){ // delete for real $params =JComponentHelper::getParams( 'com_muscol' ); $itemid = $params->get('itemid'); if($itemid != "") $itemid = "&Itemid=" . $itemid; $can_edit = $this->check_artist_permission($id); $msg = JText::_('NOT_AUTHORIZED_DELETE_ARTIST'); $link = JRoute::_('index.php?option=com_muscol&view=artist&id='. $id . $itemid); if($can_edit){ if(!$model->delete()) { $msg = JText::_( 'ERROR_DELETING_ARTISTS' ); } else { $msg = JText::_( 'ARTISTS_DELETED' ); } $link = JRoute::_('index.php?option=com_muscol&view=artists' . $itemid); } $this->setRedirect( $link , $msg ); } else{ // ask for confirmation $params =JComponentHelper::getParams( 'com_muscol' ); $itemid = $params->get('itemid'); if($itemid != "") $itemid = "&Itemid=" . $itemid; $can_edit = $this->check_artist_permission($id); $msg = JText::_('NOT_AUTHORIZED_DELETE_ARTIST'); $link = JRoute::_('index.php?option=com_muscol&view=artist&id='. $id . $itemid); if($can_edit){ echo '
'.JText::_('SURE_DELETE_ARTIST').'

'.JText::_('Delete').' | '.JText::_('Cancel').'
' ; } else{ $this->setRedirect( $link , $msg ); } } } function add_song_play_count(){ $mainframe = JFactory::getApplication(); $mainframe->close() ; } function add_song_play_count_module(){ $mainframe = JFactory::getApplication(); $jinput = $mainframe->input; $params =JComponentHelper::getParams( 'com_muscol' ); $pos = $jinput->get('pos', 0, 'int'); $db = JFactory::getDbo(); $session =JSession::getInstance('',''); $playlist_id = $session->get('current_playlist') ; // the playlist is an array if($playlist_id){ $query = 'SELECT pl.songs FROM #__muscol_playlists AS pl WHERE pl.id = ' . $playlist_id ; ; $db->setQuery($query); $songs_in_playlist = $db->loadResult(); $playlist = explode(",", $songs_in_playlist) ; } else{ $session =JSession::getInstance('',''); $playlist = $session->get('muscol_playlist') ; // the playlist is an array } $id = $playlist[$pos]; $model = $this->getModel('song'); if($params->get('registersongplays')) $model->getRegisterHit($id, 4); //4 is for "play song count" $mainframe->close() ; } function thumbnail(){ $mainframe = JFactory::getApplication(); include(JPATH_SITE.DS.'components'.DS.'com_muscol'.DS.'helpers'.DS.'image_new.php'); $mainframe->close() ; } function search_albums(){ parent::display(); } function cancel() { $jinput = JFactory::getApplication()->input; $params =JComponentHelper::getParams( 'com_muscol' ); $itemid = $params->get('itemid'); if($itemid != "") $itemid = "&Itemid=" . $itemid; $msg = JText::_( 'OPERATION_CANCELLED' ); $id = $jinput->get('id', 0, 'int'); $type = $jinput->get('type', '', 'string'); if($id) $link = JRoute::_('index.php?option=com_muscol&view='.$type.'&id='.$id . $itemid, false) ; else $link = JRoute::_('index.php?option=com_muscol&view=artists&layout=detailed' . $itemid, false) ; $this->setRedirect($link, $msg); } function search(){ $mainframe = JFactory::getApplication(); $model = $this->getModel('search'); $jinput = $mainframe->input; $search = $jinput->get('search', '', 'string'); $items = array(); switch($search){ case "albums": $items = $model->getAlbumsData(); break; case "songs": $items = $model->getSongsData(); break; case "artists": $items = $model->getArtistsData(); break; } $this->sendJSONResponse($items); } function artist_albums(){ $mainframe = JFactory::getApplication(); $jinput = JFactory::getApplication()->input; $params = JComponentHelper::getParams( 'com_muscol' ); $model = $this->getModel('artist'); $id = $jinput->getInt('id') ; $limitstart = $jinput->getInt('limitstart') ; $limit = $jinput->getInt('limit') ; if($params->get('globalcache', 1)) { $cache_group = 'com_muscol-artist-albums' ; $cache = JFactory::getCache($cache_group); $cache->setCaching(true); $cache->setLifeTime($params->get('cachetime', 86400)); $items = $cache->call( array( $model, 'getAlbumsData' ), $id, $limitstart, $limit); } else { //cache is off or user is logged in $items = $model->getAlbumsData(); } echo json_encode($items) ; $mainframe->close(); } function artist_songs(){ $mainframe = JFactory::getApplication(); $jinput = JFactory::getApplication()->input; $params = JComponentHelper::getParams( 'com_muscol' ); $model = $this->getModel('songs'); $id = $jinput->getInt('id') ; $limitstart = $jinput->getInt('limitstart') ; $limit = $jinput->getInt('limit') ; if($params->get('globalcache', 1)) { $cache_group = 'com_muscol-artist-songs' ; $cache = JFactory::getCache($cache_group); $cache->setCaching(true); $cache->setLifeTime($params->get('cachetime', 86400)); $items = $cache->call( array( $model, 'getSongsData' ), $id, $limitstart, $limit); } else { //cache is off or user is logged in $items = $model->getSongsData(); } echo json_encode($items) ; $mainframe->close(); } function get_album_songs(){ $mainframe = JFactory::getApplication(); $jinput = JFactory::getApplication()->input; $params = JComponentHelper::getParams( 'com_muscol' ); $model = $this->getModel('album'); $id = $jinput->getInt('id') ; if($params->get('globalcache', 1)) { $cache_group = 'com_muscol-album-songs' ; $cache = JFactory::getCache($cache_group); $cache->setCaching(true); $cache->setLifeTime($params->get('cachetime', 86400)); $songs = $cache->call( array( $model, 'getSongs' ), $id); } else { //cache is off or user is logged in $songs = $model->getSongs(); } echo json_encode($songs) ; $mainframe->close(); } function get_playlist_songs(){ $mainframe = JFactory::getApplication(); $jinput = JFactory::getApplication()->input; $params = JComponentHelper::getParams( 'com_muscol' ); $model = $this->getModel('playlist'); $id = $jinput->getInt('id', '0', 'int') ; /*if($params->get('globalcache', 1)) { $cache = JFactory::getCache('com_muscol'); $cache->setCaching(true); $cache->setLifeTime($params->get('cachetime', 86400)); $playlist = $cache->call( array( $model, 'getPlaylistData' )); $songs = $cache->call( array( $model, 'getData' )); } else { //cache is off or user is logged in*/ $playlist = $model->getPlaylistData(); $songs = $model->getData(); //} echo json_encode(array( 'playlist' => $playlist, 'songs' => $songs )) ; $mainframe->close(); } function get_compilation_albums(){ $mainframe = JFactory::getApplication(); $jinput = JFactory::getApplication()->input; $params = JComponentHelper::getParams( 'com_muscol' ); $model = $this->getModel('album'); $id = $jinput->getInt('id') ; if($params->get('globalcache', 1)) { $cache_group = 'com_muscol-album-compilation' ; $cache = JFactory::getCache($cache_group); $cache->setCaching(true); $cache->setLifeTime($params->get('cachetime', 86400)); $albums = $cache->call( array( $model, 'getCompilationAlbums' ), $id); } else { //cache is off or user is logged in $albums = $model->getCompilationAlbums(); } echo json_encode($albums) ; $mainframe->close(); } function get_chronology_albums(){ $mainframe = JFactory::getApplication(); $jinput = JFactory::getApplication()->input; $params = JComponentHelper::getParams( 'com_muscol' ); $model = $this->getModel('album'); $id = $jinput->getInt('id') ; if($params->get('globalcache', 1)) { $cache_group = 'com_muscol-album-chronology' ; $cache = JFactory::getCache($cache_group); $cache->setCaching(true); $cache->setLifeTime($params->get('cachetime', 86400)); $albums = $cache->call( array( $model, 'getChronologyAlbums' ), $id); } else { //cache is off or user is logged in $albums = $model->getChronologyAlbums(); } echo json_encode($albums) ; $mainframe->close(); } function get_comments(){ $mainframe = JFactory::getApplication(); $jinput = JFactory::getApplication()->input; $params = JComponentHelper::getParams( 'com_muscol' ); $model = $this->getModel('album'); $id = $jinput->getInt('id') ; $comments = $model->getComments(); echo json_encode($comments) ; $mainframe->close(); } function artists(){ $mainframe = JFactory::getApplication(); $jinput = JFactory::getApplication()->input; $params = JComponentHelper::getParams( 'com_muscol' ); $model = $this->getModel('artists'); $letter = $jinput->getString('letter') ; $limitstart = $jinput->getInt('limitstart') ; $limit = $jinput->getInt('limit') ; if($params->get('globalcache', 1)) { $cache_group = 'com_muscol-artists' ; $cache = JFactory::getCache($cache_group); $cache->setCaching(true); $cache->setLifeTime($params->get('cachetime', 86400)); $items = $cache->call( array( $model, 'getData' ), $letter, $limitstart, $limit); } else { //cache is off or user is logged in $items = $model->getData(); } echo json_encode($items) ; $mainframe->close(); } function searchtags() { $mainframe = JFactory::getApplication(); $jinput = JFactory::getApplication()->input; $searchword = $jinput->get('searchword', '', 'STRING'); $db = JFactory::getDbo(); $query = $db->getQuery(true); $query->select($db->quoteName('tag_name')); $query->from($db->quoteName('#__muscol_tags')); $query->where($db->quoteName('tag_name') . ' LIKE '. $db->quote($db->escape('%'.$searchword.'%'))); $db->setQuery($query); $results = $db->loadAssocList(); if ($results == null) $results = array(); echo json_encode($results); $mainframe->close(); } /** * Search user playlists */ function searchPlaylists() { $mainframe = JFactory::getApplication(); $model = $this->getModel('playlists'); $playlists = $model->searchPlaylists(); echo json_encode($playlists); $mainframe->close(); } function getPlaylists() { $mainframe = JFactory::getApplication(); $model = $this->getModel('playlists'); $playlists = $model->getData(); echo json_encode($playlists); $mainframe->close(); } /* for modules */ function get_module_data(){ $mainframe = JFactory::getApplication(); $user = JFactory::getUser(); $jinput = JFactory::getApplication()->input; $module_id = $jinput->getInt('module_id'); $db = JFactory::getDbo(); $query = 'SELECT * FROM #__modules WHERE id = '.$module_id; $db->setQuery($query); $thismodule = $db->loadObject(); $thismoduleparams = $thismodule->params; $params = new JRegistry($thismoduleparams); if($params->get('cache')) { $cache = JFactory::getCache($thismodule->module); $items = $cache->call( array( 'ArtistsController', 'get_module_data_json' ), $thismodule ); } else { //cache is off or user is logged in $items = $this->get_module_data_json($thismodule); } echo $items; $mainframe->close(); } static function get_module_data_json($thismodule){ if($thismodule->id){ require_once (JPATH_SITE.DS.'modules'.DS.$thismodule->module.DS.'helper.php'); $params = new JRegistry($thismodule->params); switch($thismodule->module){ case "mod_muscol_albums": $return_json = modMusColAlbumsHelper::getAlbums($params); break; case "mod_muscol_artists": $return_json = modMusColArtistsHelper::getArtists($params); break; case "mod_muscol_songs": $return_json = modMusColSongsHelper::getSongs($params); break; } return json_encode($return_json) ; } return ""; } /* for showalbum plugin */ function get_album_data(){ $mainframe = JFactory::getApplication(); $user = JFactory::getUser(); $jinput = JFactory::getApplication()->input; $album_id = $jinput->getInt('album_id'); $db = JFactory::getDbo(); $query = ' SELECT al.*,ar.artist_name,ar.letter,ge.genre_name, f.format_name '. ' FROM #__muscol_albums as al '. ' LEFT JOIN #__muscol_artists as ar ON ar.id = al.artist_id '. ' LEFT JOIN #__muscol_format as f ON f.id = al.format_id '. ' LEFT JOIN #__muscol_genres as ge ON ge.id = al.genre_id '. ' WHERE al.id = '.$album_id ; $db->setQuery($query); $albums = $db->loadObjectList(); $albums = MusColHelper::prepareAlbumsData($albums); $this->sendJSONResponse($albums); } function sendJSONResponse($object){ $mainframe = JFactory::getApplication(); header('Content-Type: application/json'); echo json_encode($object); $mainframe->close(); } }