PageRenderTime 25ms CodeModel.GetById 14ms RepoModel.GetById 0ms app.codeStats 0ms

/server/ajax.server.php

https://gitlab.com/x33n/ampache
PHP | 203 lines | 163 code | 11 blank | 29 comment | 13 complexity | ae312a32c75ee8a56534a3e08a51c6f0 MD5 | raw file
  1. <?php
  2. /* vim:set softtabstop=4 shiftwidth=4 expandtab: */
  3. /**
  4. *
  5. * LICENSE: GNU General Public License, version 2 (GPLv2)
  6. * Copyright 2001 - 2015 Ampache.org
  7. *
  8. * This program is free software; you can redistribute it and/or
  9. * modify it under the terms of the GNU General Public License v2
  10. * as published by the Free Software Foundation.
  11. *
  12. * This program is distributed in the hope that it will be useful,
  13. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  15. * GNU General Public License for more details.
  16. *
  17. * You should have received a copy of the GNU General Public License
  18. * along with this program; if not, write to the Free Software
  19. * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  20. *
  21. */
  22. /* Because this is accessed via Ajax we are going to allow the session_id
  23. * as part of the get request
  24. */
  25. // Set that this is an ajax include
  26. define('AJAX_INCLUDE','1');
  27. require_once '../lib/init.php';
  28. xoutput_headers();
  29. $page = isset($_REQUEST['page']) ? $_REQUEST['page'] : null;
  30. debug_event('ajax.server.php', 'Called for page: {'.$page.'}', '5');
  31. switch ($page) {
  32. case 'stats':
  33. require_once AmpConfig::get('prefix') . '/server/stats.ajax.php';
  34. exit;
  35. case 'browse':
  36. require_once AmpConfig::get('prefix') . '/server/browse.ajax.php';
  37. exit;
  38. case 'random':
  39. require_once AmpConfig::get('prefix') . '/server/random.ajax.php';
  40. exit;
  41. case 'playlist':
  42. require_once AmpConfig::get('prefix') . '/server/playlist.ajax.php';
  43. exit;
  44. case 'localplay':
  45. require_once AmpConfig::get('prefix') . '/server/localplay.ajax.php';
  46. exit;
  47. case 'tag':
  48. require_once AmpConfig::get('prefix') . '/server/tag.ajax.php';
  49. exit;
  50. case 'stream':
  51. require_once AmpConfig::get('prefix') . '/server/stream.ajax.php';
  52. exit;
  53. case 'song':
  54. require_once AmpConfig::get('prefix') . '/server/song.ajax.php';
  55. exit;
  56. case 'democratic':
  57. require_once AmpConfig::get('prefix') . '/server/democratic.ajax.php';
  58. exit;
  59. case 'index':
  60. require_once AmpConfig::get('prefix') . '/server/index.ajax.php';
  61. exit;
  62. case 'catalog':
  63. require_once AmpConfig::get('prefix') . '/server/catalog.ajax.php';
  64. exit;
  65. case 'search':
  66. require_once AmpConfig::get('prefix') . '/server/search.ajax.php';
  67. exit;
  68. case 'player':
  69. require_once AmpConfig::get('prefix') . '/server/player.ajax.php';
  70. exit;
  71. default:
  72. // A taste of compatibility
  73. break;
  74. } // end switch on page
  75. switch ($_REQUEST['action']) {
  76. case 'refresh_rightbar':
  77. $results['rightbar'] = UI::ajax_include('rightbar.inc.php');
  78. break;
  79. case 'current_playlist':
  80. switch ($_REQUEST['type']) {
  81. case 'delete':
  82. $GLOBALS['user']->playlist->delete_track($_REQUEST['id']);
  83. break;
  84. } // end switch
  85. $results['rightbar'] = UI::ajax_include('rightbar.inc.php');
  86. break;
  87. // Handle the users basketcases...
  88. case 'basket':
  89. $object_type = $_REQUEST['type'];
  90. $object_id = $_REQUEST['id'];
  91. if (Core::is_playable_item($object_type)) {
  92. if (!is_array($object_id)) {
  93. $object_id = array($object_id);
  94. }
  95. foreach ($object_id as $id) {
  96. $item = new $object_type($id);
  97. $medias = $item->get_medias();
  98. $GLOBALS['user']->playlist->add_medias($medias);
  99. }
  100. } else {
  101. switch ($_REQUEST['type']) {
  102. case 'browse_set':
  103. $browse = new Browse($_REQUEST['browse_id']);
  104. $objects = $browse->get_saved();
  105. foreach ($objects as $object_id) {
  106. $GLOBALS['user']->playlist->add_object($object_id, 'song');
  107. }
  108. break;
  109. case 'album_random':
  110. $data = explode('_',$_REQUEST['type']);
  111. $type = $data['0'];
  112. foreach ($_REQUEST['id'] as $i) {
  113. $object = new $type($i);
  114. $songs = $object->get_random_songs();
  115. foreach ($songs as $song_id) {
  116. $GLOBALS['user']->playlist->add_object($song_id, 'song');
  117. }
  118. }
  119. break;
  120. case 'artist_random':
  121. case 'tag_random':
  122. $data = explode('_',$_REQUEST['type']);
  123. $type = $data['0'];
  124. $object = new $type($_REQUEST['id']);
  125. $songs = $object->get_random_songs();
  126. foreach ($songs as $song_id) {
  127. $GLOBALS['user']->playlist->add_object($song_id,'song');
  128. }
  129. break;
  130. case 'playlist_random':
  131. $playlist = new Playlist($_REQUEST['id']);
  132. $items = $playlist->get_random_items();
  133. foreach ($items as $item) {
  134. $GLOBALS['user']->playlist->add_object($item['object_id'], $item['object_type']);
  135. }
  136. break;
  137. case 'clear_all':
  138. $GLOBALS['user']->playlist->clear();
  139. break;
  140. }
  141. }
  142. $results['rightbar'] = UI::ajax_include('rightbar.inc.php');
  143. break;
  144. /* Setting ratings */
  145. case 'set_rating':
  146. if (User::is_registered()) {
  147. ob_start();
  148. $rating = new Rating($_GET['object_id'], $_GET['rating_type']);
  149. $rating->set_rating($_GET['rating']);
  150. Rating::show($_GET['object_id'], $_GET['rating_type']);
  151. $key = "rating_" . $_GET['object_id'] . "_" . $_GET['rating_type'];
  152. $results[$key] = ob_get_contents();
  153. ob_end_clean();
  154. } else {
  155. $results['rfc3514'] = '0x1';
  156. }
  157. break;
  158. /* Setting userflags */
  159. case 'set_userflag':
  160. if (User::is_registered()) {
  161. ob_start();
  162. $userflag = new Userflag($_GET['object_id'], $_GET['userflag_type']);
  163. $userflag->set_flag($_GET['userflag']);
  164. Userflag::show($_GET['object_id'], $_GET['userflag_type']);
  165. $key = "userflag_" . $_GET['object_id'] . "_" . $_GET['userflag_type'];
  166. $results[$key] = ob_get_contents();
  167. ob_end_clean();
  168. } else {
  169. $results['rfc3514'] = '0x1';
  170. }
  171. break;
  172. case 'action_buttons':
  173. ob_start();
  174. if (AmpConfig::get('ratings')) {
  175. echo " <div id='rating_" . $_GET['object_id'] . "_" . $_GET['object_type'] . "'>";
  176. Rating::show($_GET['object_id'], $_GET['object_type']);
  177. echo "</div> |";
  178. }
  179. if (AmpConfig::get('userflags')) {
  180. echo " <div id='userflag_" . $_GET['object_id'] . "_" . $_GET['object_type'] . "'>";
  181. Userflag::show($_GET['object_id'], $_GET['object_type']);
  182. echo "</div>";
  183. }
  184. $results['action_buttons'] = ob_get_contents();
  185. ob_end_clean();
  186. break;
  187. default:
  188. $results['rfc3514'] = '0x1';
  189. break;
  190. } // end switch action
  191. // Go ahead and do the echo
  192. echo xoutput_from_array($results);