%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /data/www_bck/varak.net_bck/ampache.varak.net/server/
Upload File :
Create Path :
Current File : //data/www_bck/varak.net_bck/ampache.varak.net/server/ajax.server.php

<?php
/* vim:set softtabstop=4 shiftwidth=4 expandtab: */
/**
 *
 * LICENSE: GNU General Public License, version 2 (GPLv2)
 * Copyright 2001 - 2014 Ampache.org
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License v2
 * as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 *
 */

/* Because this is accessed via Ajax we are going to allow the session_id
 * as part of the get request
 */

// Set that this is an ajax include
define('AJAX_INCLUDE','1');
require_once '../lib/init.php';

xoutput_headers();

$page = isset($_REQUEST['page']) ? $_REQUEST['page'] : null;

debug_event('ajax.server.php', 'Called for page: {'.$page.'}', '5');

switch ($page) {
    case 'stats':
        require_once AmpConfig::get('prefix') . '/server/stats.ajax.php';
        exit;
    case 'browse':
        require_once AmpConfig::get('prefix') . '/server/browse.ajax.php';
        exit;
    case 'random':
        require_once AmpConfig::get('prefix') . '/server/random.ajax.php';
        exit;
    case 'playlist':
        require_once AmpConfig::get('prefix') . '/server/playlist.ajax.php';
        exit;
    case 'localplay':
        require_once AmpConfig::get('prefix') . '/server/localplay.ajax.php';
        exit;
    case 'tag':
        require_once AmpConfig::get('prefix') . '/server/tag.ajax.php';
        exit;
    case 'stream':
        require_once AmpConfig::get('prefix') . '/server/stream.ajax.php';
        exit;
    case 'song':
        require_once AmpConfig::get('prefix') . '/server/song.ajax.php';
        exit;
    case 'democratic':
        require_once AmpConfig::get('prefix') . '/server/democratic.ajax.php';
        exit;
    case 'index':
        require_once AmpConfig::get('prefix') . '/server/index.ajax.php';
        exit;
    case 'catalog':
        require_once AmpConfig::get('prefix') . '/server/catalog.ajax.php';
        exit;
    case 'search':
        require_once AmpConfig::get('prefix') . '/server/search.ajax.php';
        exit;
    case 'player':
        require_once AmpConfig::get('prefix') . '/server/player.ajax.php';
        exit;
    default:
        // A taste of compatibility
    break;
} // end switch on page

switch ($_REQUEST['action']) {
    case 'refresh_rightbar':
        $results['rightbar'] = UI::ajax_include('rightbar.inc.php');
    break;
    /* Controls the editing of objects */
    case 'edit_object':
        debug_event('ajax_server', "Editing object...", '5');

        // Scrub the data
        foreach ($_POST as $key => $data) {
            $_POST[$key] = unhtmlentities(scrub_in($data));
            debug_event('ajax_server', $key.'='.$_POST[$key], '5');
        }

        $level = '50';

        if ($_POST['type'] == 'playlist_row' || $_POST['type'] == 'playlist_title') {
            $playlist = new Playlist($_POST['id']);
            if ($GLOBALS['user']->id == $playlist->user) {
                $level = '25';
            }
        }
        if ($_POST['type'] == 'smartplaylist_row' ||
            $_POST['type'] == 'smartplaylist_title') {
            $smartpl = new Search('song', $_POST['id']);
            if ($GLOBALS['user']->id == $smartpl->user) {
                $level = '25';
            }
        }

        // Make sure we've got them rights
        if (!Access::check('interface', $level) || AmpConfig::get('demo_mode')) {
            $results['rfc3514'] = '0x1';
            break;
        }

        $new_id = '';
        switch ($_POST['type']) {
            case 'album_row':
                $key = 'album_' . $_POST['id'];
                $album = new Album($_POST['id']);
                $songs = $album->get_songs();
                $new_id = $album->update($_POST);
                if ($new_id != $_POST['id']) {
                    $album = new Album($new_id);
                }
                $album->format();
            break;
            case 'artist_row':
                $key = 'artist_' . $_POST['id'];
                $artist = new Artist($_POST['id']);
                $songs = $artist->get_songs();
                $new_id = $artist->update($_POST);
                if ($new_id != $_POST['id']) {
                    $artist = new Artist($new_id);
                }
                $artist->format();
            break;
            case 'song_row':
                $key = 'song_' . $_POST['id'];
                $song = new Song($_POST['id']);
                $song->update($_POST);
                $song->format();
            break;
            case 'playlist_row':
            case 'playlist_title':
                $key = 'playlist_row_' . $_POST['id'];
                if (isset($playlist)) {
                    $playlist->update($_POST);
                    $playlist->format();
                    $count = $playlist->get_song_count();
                }
            break;
            case 'smartplaylist_row':
            case 'smartplaylist_title':
                $key = 'smartplaylist_row_' . $_POST['id'];
                if (isset($smartpl)) {
                    $smartpl->name = $_POST['name'];
                    $smartpl->type = $_POST['pl_type'];
                    $smartpl->update();
                    $smartpl->format();
                }
            break;
            case 'live_stream_row':
                $key = 'live_stream_' . $_POST['id'];
                Radio::update($_POST);
                $radio = new Radio($_POST['id']);
                $radio->format();
            break;
            case 'channel_row':
                $key = 'channel_row_' . $_POST['id'];
                $channel = new Channel($_POST['id']);
                $channel->update($_POST);
            break;
            case 'broadcast_row':
                $key = 'broadcast_row_' . $_POST['id'];
                $broadcast = new Broadcast($_POST['id']);
                $broadcast->update($_POST);
            break;
            case 'tag_row':
                $tag = new Tag($_POST['id']);
                $tag->update($_POST['name']);
            break;
            default:
                $key = 'rfc3514';
                echo xoutput_from_array(array($key=>'0x1'));
                exit;
        } // end switch on type

        $results['id'] = $new_id;
    break;
    case 'current_playlist':
        switch ($_REQUEST['type']) {
            case 'delete':
                $GLOBALS['user']->playlist->delete_track($_REQUEST['id']);
            break;
        } // end switch

        $results['rightbar'] = UI::ajax_include('rightbar.inc.php');
    break;
    // Handle the users basketcases...
    case 'basket':
        switch ($_REQUEST['type']) {
            case 'album':
                foreach ($_REQUEST['id'] as $i) {
                    $object = new $_REQUEST['type']($i);
                    $songs = $object->get_songs();
                    foreach ($songs as $song_id) {
                        $GLOBALS['user']->playlist->add_object($song_id, 'song');
                    }
                }
            break;
            case 'artist':
            case 'tag':
                $object = new $_REQUEST['type']($_REQUEST['id']);
                $songs = $object->get_songs();
                foreach ($songs as $song_id) {
                    $GLOBALS['user']->playlist->add_object($song_id,'song');
                }
            break;
            case 'browse_set':
                $browse = new Browse($_REQUEST['browse_id']);
                $objects = $browse->get_saved();
                foreach ($objects as $object_id) {
                    $GLOBALS['user']->playlist->add_object($object_id,'song');
                }
            break;
            case 'album_random':
                $data = explode('_',$_REQUEST['type']);
                $type = $data['0'];
                foreach ($_REQUEST['id'] as $i) {
                    $object = new $type($i);
                    $songs = $object->get_random_songs();
                    foreach ($songs as $song_id) {
                        $GLOBALS['user']->playlist->add_object($song_id, 'song');
                    }
                }
            break;
            case 'artist_random':
            case 'tag_random':
                $data = explode('_',$_REQUEST['type']);
                $type = $data['0'];
                $object = new $type($_REQUEST['id']);
                $songs = $object->get_random_songs();
                foreach ($songs as $song_id) {
                    $GLOBALS['user']->playlist->add_object($song_id,'song');
                }
            break;
            case 'playlist':
                $playlist = new Playlist($_REQUEST['id']);
                $items = $playlist->get_items();
                foreach ($items as $item) {
                    $GLOBALS['user']->playlist->add_object($item['object_id'], $item['object_type']);
                }
            break;
            case 'playlist_random':
                $playlist = new Playlist($_REQUEST['id']);
                $items = $playlist->get_random_items();
                foreach ($items as $item) {
                    $GLOBALS['user']->playlist->add_object($item['object_id'], $item['object_type']);
                }
            break;
            case 'smartplaylist':
                $playlist = new Search('song', $_REQUEST['id']);
                $items = $playlist->get_items();
                foreach ($items as $item) {
                    $GLOBALS['user']->playlist->add_object($item['object_id'],$item['object_type']);
                }
            break;
            case 'clear_all':
                $GLOBALS['user']->playlist->clear();
            break;
            case 'live_stream':
                $object = new Radio($_REQUEST['id']);
                // Confirm its a valid ID
                if ($object->name) {
                    $GLOBALS['user']->playlist->add_object($object->id,'radio');
                }
            break;
            case 'video':
                $GLOBALS['user']->playlist->add_object($_REQUEST['id'],'video');
            break;
            case 'album_preview':
                $songs = Song_preview::get_song_previews($_REQUEST['mbid']);
                foreach ($songs as $song) {
                    if (!empty($song->file)) {
                        $GLOBALS['user']->playlist->add_object($song->id, 'song_preview');
                    }
                }
            break;
            case 'song_preview':
                $GLOBALS['user']->playlist->add_object($_REQUEST['id'],'song_preview');
            break;
            case 'song':
            default:
                $GLOBALS['user']->playlist->add_object($_REQUEST['id'],'song');
            break;
        } // end switch

        $results['rightbar'] = UI::ajax_include('rightbar.inc.php');
    break;
    /* Setting ratings */
    case 'set_rating':
        ob_start();
        $rating = new Rating($_GET['object_id'], $_GET['rating_type']);
        $rating->set_rating($_GET['rating']);
        Rating::show($_GET['object_id'], $_GET['rating_type']);
        $key = "rating_" . $_GET['object_id'] . "_" . $_GET['rating_type'];
        $results[$key] = ob_get_contents();
        ob_end_clean();
    break;
    /* Setting userflags */
    case 'set_userflag':
        ob_start();
        $userflag = new Userflag($_GET['object_id'], $_GET['userflag_type']);
        $userflag->set_flag($_GET['userflag']);
        Userflag::show($_GET['object_id'], $_GET['userflag_type']);
        $key = "userflag_" . $_GET['object_id'] . "_" . $_GET['userflag_type'];
        $results[$key] = ob_get_contents();
        ob_end_clean();
    break;
    case 'action_buttons':
        ob_start();
        if (AmpConfig::get('ratings')) {
            echo " <div id='rating_" . $_GET['object_id'] . "_" . $_GET['object_type'] . "'>";
            Rating::show($_GET['object_id'], $_GET['object_type']);
            echo "</div> |";
        }
        if (AmpConfig::get('userflags')) {
            echo " <div id='userflag_" . $_GET['object_id'] . "_" . $_GET['object_type'] . "'>";
            Userflag::show($_GET['object_id'], $_GET['object_type']);
            echo "</div>";
        }
        $results['action_buttons'] = ob_get_contents();
        ob_end_clean();
    break;
    default:
        $results['rfc3514'] = '0x1';
    break;
} // end switch action

// Go ahead and do the echo
echo xoutput_from_array($results);

Zerion Mini Shell 1.0