Beispiel #1
0
 function xmlEncode(array $array, &$parentObject)
 {
     static $section;
     foreach ($array as $key => $value) {
         switch (true) {
             case is_array($array[key($array)]):
                 if (!is_numeric($key)) {
                     $node = $parentObject->addChild($key);
                     xmlEncode($value, $node);
                 } else {
                     $node = $parentObject->addChild($section);
                     foreach ($value as $k => $v) {
                         $node->addChild($k, htmldecode($v));
                     }
                 }
                 break;
             case is_array($value):
                 $section = $key;
                 xmlEncode($value, $parentObject);
                 break;
             default:
                 $parentObject->addChild($key, htmldecode($value));
         }
     }
 }
Beispiel #2
0
/**
 * Creates an XSPF compliant playlist and returns it for playing
 * 
 * @author Kevin Ingolfsland
 * @version 1/2/07
 * @since 1/2/07
 * @param $list The list of tracks to use when making the playlist
 * @param $return Returns the porperly formated list
 */
function SERVICE_CREATE_PLAYLIST_XSPF($list)
{
    global $allow_resample, $this_site, $root_dir, $web_root;
    // Let's setup Smarty
    $smarty = smartySetup();
    // This playlist type supports the following media types:
    $supported = "asf|wma|wmv|wm|asx|wax|wvx|wpl|dvr-ms|wmd|avi|mpg|mpeg|m1v|mp2|mp3|mpa|mpe|mpv2|m3u|ogg|mid|midi|rmi|aif|aifc|aiff|au|snd|wav|ivf|flac|mpc|wv|m4a|";
    // Let's define our variables
    $i = 0;
    foreach ($list->getList() as $track) {
        // Should we play this?
        if ((stristr($track->getPath("String"), ".lofi.") or stristr($track->getPath("String"), ".clip.")) and $_SESSION['jz_play_all_tracks'] != true) {
            continue;
        }
        // Now let's get the extension to be sure it can be played
        $pArr = explode("/", $track->getPath("String"));
        $eArr = explode(".", $pArr[count($pArr) - 1]);
        $ext = $eArr[count($eArr) - 1];
        if (!stristr($supported, $ext . "|")) {
            continue;
        }
        // Let's get the meta
        $meta = $track->getMeta();
        // Now let's figure out the full track name
        $trackn = $track->getFileName("user");
        if (!stristr($trackn, "mediabroadcast.php")) {
            $track->increasePlayCount();
        }
        $tArr[$i]['link'] = xmlEncode($trackn);
        if ($meta['artist'] != "" and $meta['artist'] != "-") {
            $tArr[$i]['artist'] = xmlEncode($meta['artist']) . " - ";
        } else {
            $tArr[$i]['artist'] = "";
        }
        $tArr[$i]['album'] = xmlEncode($meta['album']);
        $tArr[$i]['genre'] = xmlEncode($meta['genre']);
        $tArr[$i]['track'] = xmlEncode($meta['title']);
        $tArr[$i]['length'] = xmlEncode($meta['length']);
        $tArr[$i]['path'] = rawurlencode($track->getPath("String"));
        $tArr[$i]['url'] = $this_site . $root_dir;
        $i++;
    }
    $smarty->assign('this_site', $this_site);
    $smarty->assign('root_dir', $root_dir);
    $smarty->assign('tracks', $tArr);
    $smarty->assign('totalTracks', $i);
    // Now let's include the template
    $smarty->display(SMARTY_ROOT . 'templates/playlists/xspf.tpl');
}
Beispiel #3
0
/**
 * Ajax方式返回数据到客户端
 * @access protected
 * @param mixed $data 要返回的数据
 * @param String $type AJAX返回数据格式
 * @param int $json_option 传递给json_encode的option参数
 * @return void
 */
function ajaxReturn($data, $type = '', $json_option = 0)
{
    if (empty($type)) {
        $type = 'JSON';
    }
    switch (strtoupper($type)) {
        case 'JSON':
            // 返回JSON数据格式到客户端 包含状态信息
            header('Content-Type:application/json; charset=utf-8');
            exit(json_encode($data, $json_option));
        case 'XML':
            // 返回xml格式数据
            header('Content-Type:text/xml; charset=utf-8');
            exit(xmlEncode($data));
        case 'EVAL':
            // 返回可执行的js脚本
            header('Content-Type:text/html; charset=utf-8');
            exit($data);
        default:
            // 用于扩展其他返回格式数据
            exit;
    }
}
function xmlEncode($mixed, $domElement = null, $DOMDocument = null)
{
    if (is_null($DOMDocument)) {
        $DOMDocument = new DOMDocument();
        $DOMDocument->formatOutput = true;
        $node = $DOMDocument->createElement("Response");
        $DOMDocument->appendChild($node);
        xmlEncode($mixed, $node, $DOMDocument);
        return $DOMDocument->saveXML();
    } else {
        if (is_array($mixed)) {
            foreach ($mixed as $index => $mixedElement) {
                if (is_int($index)) {
                    if ($index == 0) {
                        $node = $domElement;
                    } else {
                        $node = $DOMDocument->createElement($domElement->tagName);
                        $domElement->parentNode->appendChild($node);
                    }
                } else {
                    $plural = $DOMDocument->createElement($index);
                    $domElement->appendChild($plural);
                    $node = $plural;
                    if (rtrim($index, 's') !== $index && $index != "status" && $index != "fps") {
                        $singular = $DOMDocument->createElement(rtrim($index, 's'));
                        $plural->appendChild($singular);
                        $node = $singular;
                    }
                }
                xmlEncode($mixedElement, $node, $DOMDocument);
            }
        } else {
            $domElement->appendChild($DOMDocument->createTextNode($mixed));
        }
    }
}