コード例 #1
0
function dok_list_users($VARS, $up, $theme_path)
{
    $t = new template($theme_path);
    $t->set_file('page', 'user_list.tpl');
    $t->set_block('page', 'user', 'user_block');
    $t->set_block('page', 'next_page', 'next_page_block');
    if (!isset($VARS['alpha'])) {
        $VARS['alpha'] = '-';
    }
    if (!strlen($VARS['offset']) || $VARS['offset'] < 0) {
        $VARS['offset'] = '0';
    }
    $VARS['alpha'] = mysql_real_escape_string($VARS['alpha']);
    $query = 'select id, name, editor, admin, disabled, creation, last_login from ' . dok_tn('user') . ' where substring(name from 1 for 1) >= \'' . $VARS['alpha'] . '\' order by name limit ' . $VARS['offset'] . ', ' . DOK_LIST_EPP;
    $res = dok_oquery($query);
    if ($res->numrows()) {
        //$ids = $res->fetch_col_array('id');
        //$n_res = dok_oquery('select album_id, count(*) as c from '.dok_tn('rel_song_album').' where album_id in('.implode(',',$ids).') group by album_id');
        //$n_array = $n_res->fetch_col_array('c','album_id');
        while ($user = $res->fetch_array()) {
            if ($user['admin']) {
                $admin = MSG_YES;
            } else {
                $admin = MSG_NO;
            }
            if ($user['editor']) {
                $editor = MSG_YES;
            } else {
                $editor = MSG_NO;
            }
            if ($user['disabled']) {
                $disabled = MSG_YES;
            } else {
                $disabled = MSG_NO;
            }
            if ($user['last_login'] == 0) {
                $last_login = MSG_USER_NEVER_LOGGED;
            } else {
                $last_login = date($THEME_DATE, $user['last_login']);
            }
            $t->set_var('USER_LINK', $_SERVER['PHP_SELF'] . '?display=view_user&id=' . $user['id']);
            $t->set_var(array('USER_NAME' => $user['name'], 'USER_DB_CREATION' => date($THEME_DATE, $user['creation']), 'USER_LAST_LOGIN' => $last_login, 'USER_ADMIN' => $admin, 'USER_EDITOR' => $editor, 'USER_DISABLED' => $disabled));
            $t->parse('user_block', 'user', 'true');
        }
        $res = mysql_query('select count(*) as c from ' . dok_tn('user') . ' where substring(name from 1 for 1) >= \'' . $VARS['alpha'] . '\'');
        $total = mysql_result($res, 0, 'c');
        if ($total > $VARS['offset'] + DOK_LIST_EPP) {
            $t->set_var('NEXT_PAGE_LINK', $_SERVER['PHP_SELF'] . '?display=list_users&alpha=' . $VARS['alpha'] . '&offset=' . ($VARS['offset'] + DOK_LIST_EPP));
            $t->parse('next_page_block', 'next_page');
        } else {
            $t->set_var('next_page_block', '');
        }
    } else {
        $t->set_var('user_block', MSG_NO_USER);
        $t->set_var('next_page_block', '');
    }
    return array($t, MSG_TITLE_LIST_USER);
}
コード例 #2
0
function dok_view_album($VARS, $update_module, $tpl_path)
{
    global $THEME_DATE, $ARTIST_SONG_LINKS, $USER;
    if (!isset($VARS['id']) || !is_numeric($VARS['id']) || $VARS['id'] < 1) {
        $t = dok_error_template(MSG_ERR_ALBUM_DISPLAY);
        return array($t, sprintf(MSG_TITLE_DISPLAY_ALBUM, ''));
    }
    $res = mysql_query('select name, creation from ' . dok_tn('album') . ' where id = ' . $VARS['id']);
    if (!mysql_numrows($res)) {
        $t = dok_error_template(MSG_ERR_ALBUM_DISPLAY);
        return array($t, sprintf(MSG_TITLE_DISPLAY_ALBUM, ''));
    }
    $row = mysql_fetch_assoc($res);
    $t = new template($tpl_path);
    $t->set_file('page', 'album_display.tpl');
    $t->set_block('page', 'if_albumeditor', 'editor_block');
    $t->set_block('page', 'album_songs', 'songs_block');
    $t->set_var(array('ALBUM_NAME' => $row['name'], 'ALBUM_DB_CREATION' => date($THEME_DATE, $row['creation'])));
    if (DOK_ENABLE_USER && !$USER->editor && !$USER->admin) {
        $t->set_var('editor_block', '');
    } else {
        $t->set_var('ALBUM_EDIT_LINK', $_SERVER['PHP_SELF'] . '?display=edit_album&id=' . $VARS['id']);
        $t->parse('editor_block', 'if_albumeditor');
    }
    $query = 'select s.id, s.name, s.creation, s.length, s.release, s.comment, r.track from ' . dok_tn('rel_song_album') . ' as r left join ' . dok_tn('song') . ' as s on r.song_id = s.id where r.album_id = ' . $VARS['id'] . ' order by r.track';
    $songs = dok_oquery($query);
    $album_length = 0;
    if (!$songs->numrows()) {
        $t->set_var('songs_block', MSG_NO_SONG);
    } else {
        $pager_data = array('related' => 'album', 'related_id' => $VARS['id']);
        while ($song = $songs->fetch_array()) {
            $song_data = dok_song_format($song, $pager_data);
            $song_data['SONG_ARTIST'] = preg_replace('/^' . $ARTIST_SONG_LINKS[0] . '/', '', $song_data['SONG_ARTIST']);
            $t->set_var($song_data);
            $t->set_var('SONG_TRACK', $song['track']);
            $t->parse('songs_block', 'album_songs', 'true');
            $album_length += $song['length'];
        }
    }
    $t->set_var('ALBUM_LENGTH', dok_sec2str($album_length));
    $t->set_var('ALBUM_SONGS', $songs->numrows());
    return array($t, sprintf(MSG_TITLE_DISPLAY_ALBUM, $row['name']));
}
コード例 #3
0
function dok_create_artist()
{
    global $VARS, $USER;
    if (!isset($VARS['name'])) {
        dok_msg(MSG_ERR_NO_ARTIST_NAME, 'dok_create_artist', 'e');
        return false;
    }
    if (!strlen(trim($VARS['name']))) {
        dok_msg(MSG_ERR_NO_ARTIST_NAME, 'dok_create_artist', 'e');
        return false;
    }
    $artist_name = ucwords(substr($VARS['name'], 0, 255));
    $res = mysql_query('select id from ' . dok_tn('artist') . ' where name = \'' . addslashes($artist_name) . '\'');
    if (mysql_numrows($res)) {
        dok_msg(sprintf(MSG_ERR_DUP_ARTIST_NAME, $artist_name), 'dok_create_artist', 'e');
        return false;
    }
    //test for soundex
    if (DOK_USE_SOUNDEX && !$VARS['soundex_checked']) {
        $query = 'select id, name from ' . dok_tn('artist') . ' where substring(soundex(name) from 2) = substring(soundex(\'' . addslashes($artist_name) . '\') from 2)';
        $res = dok_oquery($query);
        if ($res->numrows()) {
            $VARS['soundex'] = $res->fetch_col_array('name', 'id');
            return 'ask_sound_artist';
        }
    }
    if (DOK_ENABLE_USER) {
        $creation_uid = $USER->id;
    } else {
        $creation_uid = 0;
    }
    //add artist
    $res = dok_uquery('insert into ' . dok_tn('artist') . ' (name,creation,creation_uid) values (\'' . addslashes($artist_name) . '\',' . time() . ',' . $creation_uid . ')');
    if (!$res) {
        dok_msg(mysql_error(), 'dok_create_artist', 'e');
        return false;
    }
    $VARS['id'] = mysql_insert_id();
    $_SESSION['song_select_artist'] = $VARS['id'];
    return 'view_artist';
}
コード例 #4
0
function dok_update_song()
{
    global $VARS, $SONGS_LABELS;
    if (!isset($VARS['id']) || !is_numeric($VARS['id']) || $VARS['id'] < 1) {
        dok_msg(MSG_ERR_SONG_NOT_FOUND_UPDATE, 'dok_update_song', 'e');
        return false;
    }
    $res = mysql_query('select * from ' . dok_tn('song') . ' where id = ' . $VARS['id']);
    if (!mysql_numrows($res)) {
        dok_msg(MSG_ERR_SONG_NOT_FOUND_UPDATE, 'dok_update_song', 'e');
        return false;
    }
    $song = mysql_fetch_array($res);
    $set = array();
    $name = ucwords(trim($VARS['name']));
    if (is_string($name) && strlen($name) && $name != $song['name']) {
        if (!$VARS['dup_checked']) {
            //check if name is already known
            $res = dok_oquery('select id from ' . dok_tn('song') . ' where name = \'' . addslashes($name) . '\' and id != ' . $VARS['id']);
            if ($res->numrows()) {
                $VARS['duplicates'] = $res->fetch_col_array('id');
                return 'ask_dup_song';
            }
        }
        $set[] = 'name = \'' . addslashes($name) . '\'';
    }
    $comment = dok_textarea_2_db($VARS['comment']);
    if ($comment != $song['comment']) {
        $set[] = 'comment = \'' . addslashes($VARS['comment']) . '\'';
    }
    if (!isset($VARS['release']) || !is_numeric($VARS['release']) || $VARS['release'] < 1901 || $VARS['release'] > 2155) {
        $VARS['release'] = 0;
    }
    if ($VARS['release'] != $song['release']) {
        $set[] = 'release = ' . $VARS['release'];
    }
    $length = 0;
    if (isset($VARS['length'])) {
        if (preg_match('/:/', $VARS['length'])) {
            $test = explode(':', $VARS['length']);
            if (sizeof($test) > 1) {
                $sec = 0;
                if (is_numeric($test[0])) {
                    $sec = $test[0] * 60;
                }
                if (is_numeric($test[1])) {
                    $sec += $test[1];
                }
                $length = $sec;
            }
        } elseif (is_numeric($VARS['length']) && $VARS['length'] > 0) {
            $length = $VARS['length'];
        }
    }
    if ($length != $song['length']) {
        $set[] = 'length = ' . $length;
    }
    if (is_numeric($VARS['genre']) && $VARS['genre'] >= 0 && $VARS['genre'] != $song['genre']) {
        $set[] = 'genre = ' . $VARS['genre'];
    }
    if (is_numeric($VARS['label']) && $VARS['label'] != $song['label'] && (in_array($VARS['label'], array_keys($SONGS_LABELS)) && strlen($SONGS_LABELS[$VARS['label']]['label']) || $VARS['label'] == 0)) {
        $set[] = 'label = ' . $VARS['label'];
    }
    //	print_r($set);
    if (sizeof($set)) {
        $res = dok_uquery('update ' . dok_tn('song') . ' set ' . implode(',', $set) . ' where id = ' . $VARS['id']);
    }
    if ($res) {
        $VARS['nohit'] = 1;
        return 'view_song';
    } else {
        dok_msg(MSG_ERR_DB_UPDATE_FAILED, 'dok_update_song', 'e');
        return false;
    }
}
コード例 #5
0
function dok_link_song_artist($VARS, $update, $theme_path)
{
    global $ARTIST_SONG_LINKS;
    if (!is_numeric($VARS['id']) || $VARS['id'] < 1) {
        $VARS['id'] = 0;
    }
    $res = mysql_query('select * from ' . dok_tn('song') . ' where id = ' . $VARS['id']);
    if (!mysql_numrows($res)) {
        $t = dok_error_template(MSG_ERR_SONG_NOT_FOUND);
        return array($t, MSG_TITLE_ADD_SONG_ARTIST);
    }
    $song = mysql_fetch_array($res);
    $res = dok_oquery('select distinct(artist_id) as aid from ' . dok_tn('rel_song_artist') . ' where song_id = ' . $song['id']);
    $current_artists = $res->fetch_col_array('aid');
    $where = '';
    if (sizeof($current_artists)) {
        $where = ' where id not in(' . implode(',', $current_artists) . ')';
    }
    $res = mysql_query('select id, name from ' . dok_tn('artist') . $where . ' order by name');
    $a_select = '';
    if (!DOK_USE_HTML4) {
        while ($row = mysql_fetch_array($res)) {
            $a_select .= '<option value="' . $row['id'] . '"';
            if ($_SESSION['song_select_artist'] == $row['id']) {
                $a_select .= ' selected';
            }
            $a_select .= '>' . $row['name'] . '</option>';
        }
    } else {
        $current_letter = '';
        while ($row = mysql_fetch_array($res)) {
            $c_letter = substr($row['name'], 0, 1);
            if ($c_letter != $current_letter) {
                if (strlen($current_letter)) {
                    $a_select .= '</optgroup>';
                }
                $a_select .= '<OPTGROUP label="' . $c_letter . '">';
                $current_letter = $c_letter;
            }
            $a_select .= '<option value="' . $row['id'] . '"';
            if ($_SESSION['song_select_artist'] == $row['id']) {
                $a_select .= ' selected';
            }
            $a_select .= '>' . $row['name'] . '</option>' . "\n";
        }
        if (strlen($current_letter)) {
            $a_select .= '</optgroup>';
        }
    }
    $l_select = '';
    foreach ($ARTIST_SONG_LINKS as $link_id => $link_name) {
        $l_select .= '<option value="' . $link_id . '">' . $link_name . '</option>';
    }
    $t = new template($theme_path);
    $t->set_file('page', 'song_artist_link.tpl');
    $t->set_var(dok_song_format($song));
    $t->set_var('ARTIST_SELECT', $a_select);
    $t->set_var('LINK_SELECT', $l_select);
    $t->set_var('SONG_ID', $song['id']);
    return array($t, MSG_TITLE_ADD_SONG_ARTIST);
}
コード例 #6
0
function dok_list_albums($VARS, $up, $theme_path)
{
    $orders = array('hits', 'length');
    $t = new template($theme_path);
    $t->set_file('page', 'album_list.tpl');
    $t->set_block('page', 'if_artist', 'artist_block');
    $t->set_block('page', 'if_artist_2', 'artist_2_block');
    $t->set_block('page', 'album', 'album_block');
    $t->set_block('page', 'next_page', 'next_page_block');
    if (!isset($VARS['alpha'])) {
        $VARS['alpha'] = '-';
    }
    if (!strlen($VARS['offset']) || $VARS['offset'] < 0) {
        $VARS['offset'] = '0';
    }
    $VARS['alpha'] = mysql_real_escape_string($VARS['alpha']);
    //$query = 'select id, name from '.dok_tn('album').' where substring(name from 1 for 1) >= \''.$VARS['alpha'].'\' order by name limit  '.$VARS['offset'].', '.DOK_LIST_EPP;
    $query = 'select sum(s.length) as length, count(s.id) as c, sum(s.hits) as hits, a.id, a.name from ' . dok_tn('song') . ' as s left join ' . dok_tn('rel_song_album') . ' as r on s.id=r.song_id left join ' . dok_tn('album') . ' as a on r.album_id=a.id ';
    $where = array();
    if (isset($VARS['sort']) && !in_array($VARS['sort'], $orders) || !isset($VARS['sort'])) {
        unset($VARS['sort']);
        $where[] = 'substring(a.name from 1 for 1) >= \'' . $VARS['alpha'] . '\' ';
    }
    if (isset($VARS['artist']) && is_numeric($VARS['artist']) && $VARS['artist'] > 0) {
        $res = mysql_query('select * from ' . dok_tn('artist') . ' where id = ' . $VARS['artist']);
        if (mysql_numrows($res)) {
            $row = mysql_fetch_assoc($res);
            $t->set_var('ARTIST_NAME', $row['name']);
            $t->set_var('ARTIST_ID', $row['id']);
            $t->parse('artist_block', 'if_artist');
            $res = dok_oquery('select distinct(r.album_id) from ' . dok_tn('rel_song_album') . ' as r left join ' . dok_tn('rel_song_artist') . ' as r2 on r.song_id=r2.song_id where r2.artist_id = ' . $VARS['artist']);
            $al_ids = $res->fetch_col_array('album_id');
            if (sizeof($al_ids)) {
                $where[] = 'a.id in(' . implode(', ', $al_ids) . ')';
            }
        } else {
            unset($VARS['artist']);
            $t->set_var('artist_block', '');
        }
    } else {
        unset($VARS['artist']);
        $t->set_var('artist_block', '');
    }
    if (sizeof($where)) {
        $query .= ' where ' . implode(' AND ', $where);
    }
    $query .= 'group by r.album_id ';
    if (isset($VARS['sort'])) {
        $query .= 'order by ' . $VARS['sort'] . ' desc ';
    } else {
        $query .= 'order by a.name ';
    }
    $query .= 'limit ' . $VARS['offset'] . ', ' . DOK_LIST_EPP;
    $res = dok_oquery($query);
    echo mysql_error();
    if ($res->numrows()) {
        //$ids = $res->fetch_col_array('id');
        //$n_res = dok_oquery('select album_id, count(*) as c from '.dok_tn('rel_song_album').' where album_id in('.implode(',',$ids).') group by album_id');
        //$n_array = $n_res->fetch_col_array('c','album_id');
        while ($row = $res->fetch_array()) {
            $t->set_var('ALBUM_LINK', $_SERVER['PHP_SELF'] . '?display=view_album&id=' . $row['id']);
            $t->set_var('ALBUM_NAME', $row['name']);
            $t->set_var('ALBUM_HITS', $row['hits']);
            $t->set_var('ALBUM_LENGTH', dok_sec2str($row['length']));
            if ($row['c'] > 0) {
                $t->set_var('ALBUM_SONGS', $row['c']);
            } else {
                $t->set_var('ALBUM_SONGS', 0);
            }
            $t->parse('album_block', 'album', 'true');
        }
        $t_query = 'select count(*) as c from ' . dok_tn('album') . ' as a';
        if (sizeof($where)) {
            $t_query .= ' where ' . implode(' AND ', $where);
        }
        $res = mysql_query($t_query);
        $total = mysql_result($res, 0, 'c');
        if ($total > $VARS['offset'] + DOK_LIST_EPP) {
            $link = $_SERVER['PHP_SELF'] . '?display=list_albums&alpha=' . $VARS['alpha'] . '&offset=' . ($VARS['offset'] + DOK_LIST_EPP . '&artist=' . $VARS['artist']);
            if (isset($VARS['sort'])) {
                $link .= '&sort=' . $VARS['sort'];
            }
            $t->set_var('NEXT_PAGE_LINK', $link);
            $t->parse('next_page_block', 'next_page');
        } else {
            $t->set_var('next_page_block', '');
        }
    } else {
        $t->set_var('album_block', MSG_NO_ALBUM);
        $t->set_var('next_page_block', '');
    }
    return array($t, MSG_TITLE_LIST_ALBUM);
}
コード例 #7
0
function dok_list_full($VARS, $up, $theme_path)
{
    global $THEME_FULL_LIST_COLUMN;
    $t = new template($theme_path);
    $t->set_file('page', 'full_list.tpl');
    $t->set_block('page', 'element_letter', 'element_letter_block');
    $t->set_block('page', 'element', 'element_block');
    $t->set_block('page', 'next_block', 'next_block_block');
    $t->set_var('element_letter_block', '');
    $t->set_var('next_block_block', '');
    if (!isset($VARS['element']) || !in_array($VARS['element'], array('artist', 'song', 'album', 'user'))) {
        $VARS['element'] = 'song';
    }
    if ($VARS['element'] == 'album') {
        $msg = MSG_NO_ALBUM;
        $element_name = MSG_ALBUMS;
    } elseif ($VARS['element'] == 'artist') {
        $msg = MSG_NO_ARTIST;
        $element_name = MSG_ARTISTS;
    } elseif ($VARS['element'] == 'user') {
        $msg = MSG_NO_USER;
        $element_name = MSG_USERS;
    } else {
        $msg = MSG_NO_SONG;
        $element_name = MSG_SONGS;
    }
    $t->set_var('LIST_ELEMENT_NAME', $element_name);
    $where = '';
    if (($VARS['element'] == 'album' || $VARS['element'] == 'song') && isset($VARS['artist_id']) && is_numeric($VARS['artist_id']) && $VARS['artist_id'] > 0) {
        $res = mysql_query('select name from ' . dok_tn('artist') . ' where id = ' . $VARS['artist_id']);
        if (mysql_numrows($res)) {
            $row = mysql_fetch_array($res);
            $t->set_var('ARTIST_NAME', $row['name']);
            $t->set_var('ARTIST_LINK', $_SERVER['PHP_SELF'] . '?display=view_artist&id=' . $VARS['artist_id']);
            if ($VARS['element'] == 'song') {
                $where = 'left join ' . dok_tn('rel_song_artist') . ' as r on a.id=r.song_id where r.artist_id = ' . $VARS['artist_id'];
            } else {
                $where = 'left join ' . dok_tn('rel_song_album') . ' as r on a.id=r.album_id left join ' . dok_tn('rel_song_artist') . ' as r2 on r.song_id=r2.song_id  where r2.artist_id = ' . $VARS['artist_id'] . ' group by a.id';
            }
        }
    } else {
        $t->set_var('ARTIST_NAME', '');
        $t->set_var('ARTIST_LINK', $_SERVER['PHP_SELF']);
    }
    $query = 'select a.id, a.name, substring(a.name from 1 for 1) as letter from ' . dok_tn($VARS['element']) . ' as a ' . $where . ' order by a.name';
    //echo $query.'<BR>';
    $res = dok_oquery($query);
    //echo mysql_error();
    if ($res->numrows()) {
        $letter = false;
        $count = -1;
        $div = 1;
        if ($res->numrows() <= reset($THEME_FULL_LIST_COLUMN)) {
            $el_per_block = $res->numrows();
            $div = 1;
        } elseif ($res->numrows() >= end($THEME_FULL_LIST_COLUMN)) {
            $div = key($THEME_FULL_LIST_COLUMN);
            $el_per_block = ceil($res->numrows() / $div);
        } else {
            $ak = array_keys($THEME_FULL_LIST_COLUMN);
            $i = 1;
            foreach ($THEME_FULL_LIST_COLUMN as $key => $val) {
                if ($res->numrows() >= $val && $res->numrows() <= $THEME_FULL_LIST_COLUMN[$ak[$i]]) {
                    $div = $key;
                    $el_per_block = ceil($res->numrows() / $key);
                    break;
                }
                $i++;
            }
        }
        $t->set_var('BLOCK_PERCENT', (int) (100 / $div));
        //if ( $res->numrows() < $THEME_FULL_LIST_COLUMN[0] && $res->numrows() < $THEME_FULL_LIST_COLUMN[0]
        //$el_per_block = ceil($res->numrows() /3);
        while ($row = $res->fetch_array()) {
            $count++;
            if ($count && !($count % $el_per_block)) {
                $t->parse('element_block', 'next_block', 'true');
            }
            if (!$letter || $letter != $row['letter']) {
                $letter = $row['letter'];
                $t->set_var('LIST_LETTER', strtoupper($letter));
                $t->parse('element_block', 'element_letter', 'true');
            }
            $t->set_var('LIST_LINK', $_SERVER['PHP_SELF'] . '?display=view_' . $VARS['element'] . '&id=' . $row['id']);
            $t->set_var('LIST_NAME', $row['name']);
            $t->parse('element_block', 'element', 'true');
        }
    } else {
        $t->set_var('element_block', $msg);
    }
    return array($t, $element_name . MSG_TITLE_LIST_FULL);
}
コード例 #8
0
ファイル: utils.php プロジェクト: BackupTheBerlios/diskotek
/**
*returns a list of beginning letters of table $table names
*
*@param string $table name of the db table
*@return array array of letters
*/
function dok_letter_array($table)
{
    $tables = array('user', 'song', 'artist', 'album');
    if (!in_array($table, $tables)) {
        return false;
    }
    $res = dok_oquery('select distinct(substring(a.name from 1 for 1)) as letter from ' . dok_tn($table) . ' as a order by letter');
    return $res->fetch_col_array('letter');
}
コード例 #9
0
function dok_list_artists($VARS, $up, $theme_path)
{
    $orders = array('count', 'length', 'albums');
    $t = new template($theme_path);
    $t->set_file('page', 'artist_list.tpl');
    $t->set_block('page', 'artist', 'artist_block');
    $t->set_block('page', 'next_page', 'next_page_block');
    if (!isset($VARS['alpha'])) {
        $VARS['alpha'] = '-';
    }
    $VARS['alpha'] = mysql_real_escape_string($VARS['alpha']);
    if (isset($VARS['sort']) && !in_array($VARS['sort'], $orders)) {
        unset($VARS['sort']);
    }
    if (!strlen($VARS['offset']) || $VARS['offset'] < 0) {
        $VARS['offset'] = '0';
    }
    $display = array();
    // here we do 2 queries: it's better than 1 for mysql
    if (isset($VARS['sort'])) {
        $my_display = array();
        $query = "select r.artist_id as id, count(distinct r.song_id) as count, sum(s.length) as length, count(distinct al.album_id) as albums from " . dok_tn("rel_song_artist") . ' as r left join ' . dok_tn('song') . ' as s on r.song_id=s.id left join ' . dok_tn('rel_song_album') . ' as al on r.song_id=al.song_id group by r.artist_id order by ' . $VARS['sort'] . ' desc limit ' . $VARS['offset'] . ', ' . DOK_LIST_EPP;
        //echo $query;
        $res = dok_oquery($query);
        while ($row = $res->fetch_array()) {
            $my_display[$row['id']] = array('id' => $row['id'], 'count' => $row['count'], 'length' => $row['length'], 'albums' => $row['albums']);
        }
        if (sizeof($my_display)) {
            $query = 'select name,id from ' . dok_tn('artist') . ' where id in(' . implode(', ', array_keys($my_display)) . ')';
            $res = dok_oquery($query);
            while ($row = $res->fetch_array()) {
                $my_display[$row['id']]['name'] = $row['name'];
            }
            foreach ($my_display as $one) {
                $display[] = $one;
            }
        }
    } else {
        $my_display = array();
        $query = 'select name,id from ' . dok_tn('artist') . ' where LEFT(name,1) >= \'' . $VARS['alpha'] . '\' order by name limit ' . $VARS['offset'] . ', ' . DOK_LIST_EPP;
        $res = dok_oquery($query);
        while ($row = $res->fetch_array()) {
            $my_display[$row['id']] = array('name' => $row['name'], 'id' => $row['id']);
        }
        if (sizeof($my_display)) {
            $query = "select r.artist_id as id, count(DISTINCT r.song_id) as count, sum(s.length) as length, count(distinct al.album_id) as albums  from " . dok_tn("rel_song_artist") . ' as r left join ' . dok_tn('song') . ' as s on r.song_id=s.id left join ' . dok_tn('rel_song_album') . ' as al on r.song_id=al.song_id where r.artist_id in(' . implode(', ', array_keys($my_display)) . ') group by r.artist_id';
            $res = dok_oquery($query);
            while ($row = $res->fetch_array()) {
                $my_display[$row['id']]['count'] = $row['count'];
                $my_display[$row['id']]['length'] = $row['length'];
                $my_display[$row['id']]['albums'] = $row['albums'];
            }
            foreach ($my_display as $one) {
                $display[] = $one;
            }
        }
    }
    if (sizeof($display)) {
        $display_first = $VARS['offset'] + 1;
        $display_last = $display_first - 1;
        foreach ($display as $row) {
            $t->set_var('ARTIST_LINK', $_SERVER['PHP_SELF'] . '?display=view_artist&id=' . $row['id']);
            $t->set_var('ARTIST_NAME', $row['name']);
            $t->set_var('ARTIST_SONGS', $row['count']);
            $t->set_var('ARTIST_ALBUMS', $row['albums']);
            $t->set_var('ARTIST_LENGTH', dok_sec2str($row['length']));
            $t->parse('artist_block', 'artist', 'true');
            $display_last++;
        }
        if (isset($VARS['sort'])) {
            $t_query = 'select count(*) as c from ' . dok_tn('rel_song_artist') . ' as r group by r.artist_id';
        } else {
            $t_query = 'select id from ' . dok_tn('artist') . ' where LEFT(name,1) >= \'' . $VARS['alpha'] . '\'';
            //$t_query='select count(*) as c from '.dok_tn('rel_song_artist').' as r left join '.dok_tn('artist').' as a on r.artist_id = a.id where substring(a.name from 1 for 1) >= \''.$VARS['alpha'].'\' group by r.artist_id';
            //echo $t_query;
        }
        $res = mysql_query($t_query);
        $total = mysql_numrows($res);
        if ($total > $VARS['offset'] + DOK_LIST_EPP) {
            $t->set_var('NEXT_PAGE_LINK', $_SERVER['PHP_SELF'] . '?display=list_artists&alpha=' . $VARS['alpha'] . '&offset=' . ($VARS['offset'] + DOK_LIST_EPP) . '&sort=' . $VARS['sort']);
            $t->parse('next_page_block', 'next_page');
        } else {
            $t->set_var('next_page_block', '');
        }
    } else {
        $t->set_var('artist_block', MSG_NO_ARTIST);
        $t->set_var('next_page_block', '');
    }
    return array($t, MSG_TITLE_LIST_ARTIST);
}
コード例 #10
0
function dok_list_songs($VARS, $up, $theme_path)
{
    $t = new template($theme_path);
    $t->set_file('page', 'song_list.tpl');
    $t->set_block('page', 'song', 'song_block');
    $t->set_block('page', 'next_page', 'next_page_block');
    $t->set_block('page', 'if_artist', 'if_artist_block');
    if (!isset($VARS['alpha'])) {
        $VARS['alpha'] = '-';
    }
    if (!strlen($VARS['offset']) || $VARS['offset'] < 0) {
        $VARS['offset'] = '0';
    }
    $VARS['alpha'] = mysql_real_escape_string($VARS['alpha']);
    if (isset($VARS['artist']) && is_numeric($VARS['artist']) && $VARS['artist'] > 0) {
        $query = 'select s.* from ' . dok_tn('rel_song_artist') . ' as r left join ' . dok_tn('song') . ' as s on r.song_id = s.id where substring(s.name from 1 for 1) >= \'' . $VARS['alpha'] . '\' and r.artist_id = ' . $VARS['artist'] . ' order by s.name limit ' . $VARS['offset'] . ', ' . DOK_LIST_EPP;
        $total_query = 'select count(*) as c from ' . dok_tn('rel_song_artist') . ' as r left join ' . dok_tn('song') . ' as s on r.song_id = s.id where substring(s.name from 1 for 1) >= \'' . $VARS['alpha'] . '\' and r.artist_id = ' . $VARS['artist'];
        $res = mysql_query('select name from ' . dok_tn('artist') . ' where id = ' . $VARS['artist']);
        if (!mysql_numrows($res)) {
            $t->set_var('ARTIST_NAME', '');
            $t->set_var('ARTIST_LINK', '');
            $t->set_var('ARTIST_ID', '');
        } else {
            $t->set_var('ARTIST_NAME', mysql_result($res, 0, 'name'));
            $t->set_var('ARTIST_LINK', $_SERVER['PHP_SELF'] . '?display=view_artist&id=' . $VARS['artist']);
            $t->set_var('ARTIST_ID', $VARS['artist']);
        }
        $t->parse('if_artist_block', 'if_artist');
        $pager_infos = array('related' => 'artist', 'related_id' => $VARS['artist']);
    } else {
        $query = 'select * from ' . dok_tn('song') . ' where substring(name from 1 for 1) >= \'' . $VARS['alpha'] . '\' order by name limit ' . $VARS['offset'] . ', ' . DOK_LIST_EPP;
        $total_query = 'select count(*) as c from ' . dok_tn('song') . ' where substring(name from 1 for 1) >= \'' . $VARS['alpha'] . '\'';
        $t->set_var('if_artist_block', '');
        $t->set_var('ARTIST_ID', '');
        $t->set_var('ARTIST_NAME', '');
        $t->set_var('ARTIST_LINK', '');
        $pager_infos = '';
    }
    $res = dok_oquery($query);
    if ($res->numrows()) {
        $ids = $res->fetch_col_array('id');
        while ($row = $res->fetch_array()) {
            $t->set_var(dok_song_format($row, $pager_infos));
            $t->parse('song_block', 'song', 'true');
        }
        $res = mysql_query($total_query);
        $total = mysql_result($res, 0, 'c');
        if ($total > $VARS['offset'] + DOK_LIST_EPP) {
            $lnk = $_SERVER['PHP_SELF'] . '?display=list_songs&alpha=' . $VARS['alpha'] . '&offset=' . ($VARS['offset'] + DOK_LIST_EPP);
            if ($t->get_var('ARTIST_ID')) {
                $lnk .= '&artist=' . $t->get_var('ARTIST_ID');
            }
            $t->set_var('NEXT_PAGE_LINK', $lnk);
            $t->parse('next_page_block', 'next_page');
        } else {
            $t->set_var('next_page_block', '');
        }
    } else {
        $t->set_var('song_block', MSG_NO_SONG);
        $t->set_var('next_page_block', '');
    }
    return array($t, MSG_TITLE_LIST_SONG);
}
コード例 #11
0
<?php

$pager_where = 'where a.id=' . $VARS['pager_related_id'];
$pager_query = 'select r.artist_id, r.song_id, a.name as artist, s.name as song from ' . dok_tn('rel_song_artist') . ' as r left join ' . dok_tn('song') . ' as s on r.song_id = s.id left join ' . dok_tn('artist') . ' as a on r.artist_id = a.id ' . $pager_where . ' order by s.name';
$pager_res = dok_oquery($pager_query);
if ($pager_res->numrows() < 2) {
    $t = dok_pager_clean($t);
} else {
    $pager_prev = '';
    $pager_next = '';
    while ($tmp = $pager_res->fetch_array()) {
        if ($tmp['song_id'] == $row['id']) {
            if ($tmp = $pager_res->fetch_array()) {
                $pager_next = $tmp;
            }
            break;
        }
        $pager_prev = $tmp;
    }
    if ($pager_prev == '' && $pager_next == '') {
        $t = dok_pager_clean($t);
    } else {
        if ($pager_prev == '') {
            $pager_prev = $pager_res->fetch_last_array();
        }
        if ($pager_next == '') {
            $pager_next = $pager_res->fetch_first_array();
        }
        $t->set_block('page', 'pager', 'pager_block');
        $t->set_var(array('PAGER_PREV_LINK' => $_SERVER['PHP_SELF'] . '?display=view_song&id=' . $pager_prev['song_id'] . '&pager_related=' . $VARS['pager_related'] . '&pager_related_id=' . $VARS['pager_related_id'], 'PAGER_PREV_NAME' => $pager_prev['song'], 'PAGER_NEXT_LINK' => $_SERVER['PHP_SELF'] . '?display=view_song&id=' . $pager_next['song_id'] . '&pager_related=' . $VARS['pager_related'] . '&pager_related_id=' . $VARS['pager_related_id'], 'PAGER_NEXT_NAME' => $pager_next['song'], 'PAGER_RELATED_LINK' => $_SERVER['PHP_SELF'] . '?display=list_songs&artist=' . $pager_next['artist_id'], 'PAGER_RELATED_NAME' => $pager_next['artist']));
        $t->parse('pager_block', 'pager');
コード例 #12
0
function dok_view_artist($VARS, $update_module, $tpl_path)
{
    global $THEME_DATE, $USER;
    if (!isset($VARS['id']) || !is_numeric($VARS['id']) || $VARS['id'] < 1) {
        $t = dok_error_template(MSG_ERR_ARTIST_DISPLAY);
        return array($t, sprintf(MSG_TITLE_DISPLAY_ARTIST, ''));
    }
    $res = mysql_query('select name, creation from ' . dok_tn('artist') . ' where id = ' . $VARS['id']);
    if (!mysql_numrows($res)) {
        $t = dok_error_template(MSG_ERR_ARTIST_DISPLAY);
        return array($t, sprintf(MSG_TITLE_DISPLAY_ARTIST, ''));
    }
    $row = mysql_fetch_assoc($res);
    $t = new template($tpl_path);
    $t->set_file('page', 'artist_display.tpl');
    $t->set_block('page', 'all_albums', 'all_albums_block');
    $t->set_block('page', 'all_songs', 'all_songs_block');
    $t->set_block('page', 'if_artisteditor', 'editor_block');
    $t->set_block('page', 'artist_albums', 'albums_block');
    $t->set_block('page', 'artist_songs', 'songs_block');
    $t->set_block('page', 'related_artists', 'related_artists_block');
    $t->set_var(array('ARTIST_NAME' => $row['name'], 'ARTIST_DB_CREATION' => date($THEME_DATE, $row['creation'])));
    if (DOK_ENABLE_USER && !$USER->editor && !$USER->admin) {
        $t->set_var('editor_block', '');
    } else {
        $t->set_var('ARTIST_EDIT_LINK', $_SERVER['PHP_SELF'] . '?display=edit_artist&id=' . $VARS['id']);
        $t->parse('editor_block', 'if_artisteditor');
    }
    $songs =& dok_rel_song_artist(array(), array($VARS['id']));
    $display_songs = array();
    echo mysql_error();
    if (!$songs->numrows()) {
        $t->set_var('songs_block', MSG_NO_SONG);
        $t->set_var('albums_block', MSG_NO_ALBUM);
        $t->set_var('related_artists_block', MSG_NO_RELATED_ARTIST);
        $t->set_var('all_songs_block', '');
        $t->set_var('all_albums_block', '');
    } else {
        $all_songs = $songs->fetch_col_array('song_id');
        $t->set_var('ARTIST_SONGS', sizeof($all_songs));
        if (sizeof($all_songs) > DOK_SONGS_ON_ARTIST_PAGE) {
            $t->set_var('ALL_SONGS_LINK', $_SERVER['PHP_SELF'] . '?display=list_songs&artist=' . $VARS['id']);
            $t->set_var('ARTIST_REMAINING_SONGS', sizeof($all_songs) - DOK_SONGS_ON_ARTIST_PAGE);
            $t->parse('all_songs_block', 'all_songs');
            $display_songs = array_slice($all_songs, 0, DOK_SONGS_ON_ARTIST_PAGE);
        } else {
            $display_songs = $all_songs;
            $t->set_var('all_songs_block', '');
        }
        $query = 'select * from ' . dok_tn('song') . ' where id in(' . implode(',', $display_songs) . ') order by hits desc,name, creation desc';
        unset($songs);
        $songs = dok_oquery($query);
        $pager_data = array('related' => 'artist', 'related_id' => $VARS['id']);
        while ($song = $songs->fetch_array()) {
            //$sl = dok_sec2min($song['length']);
            $song['ignore_artist'] = $VARS['id'];
            $t->set_var(dok_song_format($song, $pager_data));
            $t->parse('songs_block', 'artist_songs', 'true');
        }
        //$all_songs = $songs->fetch_col_array('id');
        unset($songs);
        $query = 'select distinct(album_id) from ' . dok_tn('rel_song_album') . ' where song_id in(' . implode(',', $all_songs) . ')';
        $albums = dok_oquery($query);
        $t->set_var('ARTIST_ALBUMS', $albums->numrows());
        if (!$albums->numrows()) {
            $t->set_var('albums_block', MSG_NO_ALBUM);
            $t->set_var('all_albums_block', '');
        } else {
            $albums_display = array();
            $albums_id = $albums->fetch_col_array('album_id');
            unset($albums);
            if (sizeof($albums_id) > DOK_ALBUMS_ON_ARTIST_PAGE) {
                $albums_display = array_slice($albums_id, 0, DOK_ALBUMS_ON_ARTIST_PAGE);
                $t->set_var('ALL_ALBUMS_LINK', $_SERVER['PHP_SELF'] . '?display=list_albums&artist=' . $VARS['id']);
                $t->set_var('ARTIST_REMAINING_ALBUMS', sizeof($albums_id) - DOK_ALBUMS_ON_ARTIST_PAGE);
                $t->parse('all_albums_block', 'all_albums');
            } else {
                $albums_display = $albums_id;
                $t->set_var('all_albums_block', '');
            }
            $albums = dok_oquery('select a.id, a.name, a.creation, count(s.id) as count, sum(s.length) as length from ' . dok_tn('album') . ' as a left join ' . dok_tn('rel_song_album') . ' as r on a.id=r.album_id left join ' . dok_tn('song') . ' as s on r.song_id=s.id where a.id in (' . implode(',', $albums_display) . ') group by r.album_id order by a.name');
            while ($album = $albums->fetch_array()) {
                $t->set_var(array('ALBUM_LINK' => $_SERVER['PHP_SELF'] . '?display=view_album&id=' . $album['id'], 'ALBUM_NAME' => $album['name'], 'ALBUM_LENGTH' => dok_sec2str($album['length']), 'ALBUM_SONGS' => $album['count'], 'ALBUM_DB_CREATION' => date($THEME_DATE, $album['creation'])));
                $t->parse('albums_block', 'artist_albums', 'true');
            }
        }
        $query = 'select a.name, a.id, count(*) as c from ' . dok_tn('rel_song_artist') . ' as r left join ' . dok_tn('artist') . ' as a on r.artist_id = a.id where r.song_id in(' . implode(',', $all_songs) . ') and artist_id != ' . $VARS['id'] . ' group by r.artist_id order by c desc limit 7';
        //echo $query;
        $res = mysql_query($query);
        if (!mysql_numrows($res)) {
            $t->set_var('related_artists_block', MSG_NO_RELATED_ARTIST);
        } else {
            while ($row = mysql_fetch_array($res)) {
                $t->set_var(array('RELATED_ARTIST_LINK' => $_SERVER['PHP_SELF'] . '?display=view_artist&id=' . $row['id'], 'RELATED_ARTIST_NAME' => $row['name']));
                $t->parse('related_artists_block', 'related_artists', 'true');
            }
        }
    }
    return array($t, sprintf(MSG_TITLE_DISPLAY_ARTIST, $row['name']));
}
コード例 #13
0
function dok_create_song()
{
    global $VARS, $GENRES, $USER, $SONGS_LABELS;
    if (!isset($VARS['name']) || !strlen(trim($VARS['name']))) {
        dok_msg(MSG_ERR_SONG_NO_NAME, 'dok_create_song', 'e');
        return false;
    }
    if (!is_numeric($VARS['album']) || $VARS['album'] < 1) {
        $VARS['album'] = 0;
    }
    $res = mysql_query('select name from ' . dok_tn('album') . ' where id = ' . $VARS['album']);
    if (!mysql_numrows($res)) {
        dok_msg(MSG_ERR_NO_ALBUM_NAME, 'dok_create_song', 'e');
        return false;
    }
    $album_name = mysql_result($res, 0, 'name');
    $_SESSION['song_select_album'] = $VARS['album'];
    if (!is_numeric($VARS['artist']) || $VARS['artist'] < 1) {
        $VARS['artist'] = 0;
    }
    $res = mysql_query('select name from ' . dok_tn('artist') . ' where id = ' . $VARS['artist']);
    if (!mysql_numrows($res)) {
        dok_msg(MSG_ERR_NO_ARTIST_NAME, 'dok_create_song', 'e');
        return false;
    }
    $artist_name = mysql_result($res, 0, 'name');
    $_SESSION['song_select_artist'] = $VARS['artist'];
    $song_name = substr($VARS['name'], 0, 255);
    if (!$VARS['dup_checked']) {
        $res = dok_oquery('select id from ' . dok_tn('song') . ' where name = \'' . addslashes($song_name) . '\'');
        if ($res->numrows()) {
            //dok_msg(MSG_ERR_SONG_DUP_NAME,'dok_create_song','e');
            $VARS['duplicates'] = $res->fetch_col_array('id');
            return 'ask_dup_song';
        }
    }
    $song_name = ucwords($song_name);
    if ($VARS['album_track'] != 'text') {
        $t_res = mysql_query('select max(track) as m from ' . dok_tn('rel_song_album') . ' where album_id = ' . $VARS['album']);
        $VARS['track'] = mysql_result($t_res, 0, 'm') + 1;
        $_SESSION['album_track'] = 'next';
    } else {
        if (!is_numeric($VARS['track']) || $VARS['track'] < 1) {
            dok_msg(MSG_ERR_NO_TRACK, 'dok_create_song', 'e');
            return false;
        }
        $_SESSION['album_track'] = 'text';
    }
    $res = mysql_query('select song_id from ' . dok_tn('rel_song_album') . ' where album_id = ' . $VARS['album'] . ' and track = ' . $VARS['track']);
    if (mysql_numrows($res)) {
        $dup_song_id = mysql_result($res, 0, 'song_id');
        $res = mysql_query('select name from ' . dok_tn('song') . ' where id = ' . $dup_song_id);
        $dup_song_name = mysql_result($res, 0, 'name');
        dok_msg(sprintf(MSG_ERR_SONG_TRACK_DUP, $dup_song_name, $VARS['track']), 'dok_create_song', 'e');
        return false;
    }
    //check comment
    $comment = dok_textarea_2_db($VARS['comment']);
    if (!isset($VARS['release']) || !is_numeric($VARS['release']) || $VARS['release'] < 1901 || $VARS['release'] > 2155) {
        $VARS['release'] = 0;
    }
    $length = dok_str2sec($VARS['length']);
    if ($VARS['genre'] >= sizeof($GENRES)) {
        $genre = 0;
    } else {
        $genre = $VARS['genre'];
        $_SESSION['song_select_genre'] = $genre;
    }
    if ($VARS['label'] && $VARS['label'] > 0 && in_array($VARS['label'], array_keys($SONGS_LABELS)) && strlen($SONGS_LABELS[$VARS['label']]['label'])) {
        $label = $VARS['label'];
    } else {
        $label = 0;
    }
    if (DOK_ENABLE_USER) {
        $creation_uid = $USER->id;
    } else {
        $creation_uid = 0;
    }
    //add
    $res = dok_uquery('insert into ' . dok_tn('song') . ' (name, length, creation, creation_uid, release, comment, genre, label) values (\'' . addslashes($song_name) . '\', ' . $length . ', ' . time() . ',' . $creation_uid . ',' . $VARS['release'] . ',\'' . addslashes($comment) . '\',' . $genre . ', ' . $label . ')');
    if (!$res) {
        echo mysql_error();
        return false;
    }
    $my_id = mysql_insert_id();
    $res = dok_uquery('insert into ' . dok_tn('rel_song_artist') . ' (song_id, artist_id) values (' . $my_id . ',' . $VARS['artist'] . ')');
    if (!$res) {
        echo mysql_error();
        return false;
    }
    $res = dok_uquery('insert into ' . dok_tn('rel_song_album') . ' (song_id, album_id,track ) values (' . $my_id . ',' . $VARS['album'] . ',' . $VARS['track'] . ')');
    if (!$res) {
        echo mysql_error();
        return false;
    }
    $VARS['id'] = $my_id;
    $VARS['nohit'] = 1;
    if (sizeof($VARS['link'])) {
        $links = array_keys(dok_songs_links_array());
        foreach ($VARS['link'] as $key => $val) {
            if (is_numeric($key) && $key > 0 && strlen($val) && in_array($val, $links)) {
                $res = mysql_query('select name from ' . dok_tn('song') . ' where id = ' . $key);
                if (mysql_numrows($res)) {
                    $res = dok_song_link_add($VARS['id'], $key, $val);
                }
            }
        }
    }
    return 'view_song';
}