1<?php 2/* vim:set softtabstop=4 shiftwidth=4 expandtab: */ 3/** 4 * 5 * LICENSE: GNU Affero General Public License, version 3 (AGPL-3.0-or-later) 6 * Copyright 2001 - 2020 Ampache.org 7 * 8 * This program is free software: you can redistribute it and/or modify 9 * it under the terms of the GNU Affero General Public License as published by 10 * the Free Software Foundation, either version 3 of the License, or 11 * (at your option) any later version. 12 * 13 * This program is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 * GNU Affero General Public License for more details. 17 * 18 * You should have received a copy of the GNU Affero General Public License 19 * along with this program. If not, see <https://www.gnu.org/licenses/>. 20 * 21 */ 22 23/** 24 * Playlist Box 25 * This box is used for actions on the main screen and on a specific playlist page 26 * It changes depending on where it is 27 */ 28 29use Ampache\Config\AmpConfig; 30use Ampache\Repository\Model\Playlist; 31use Ampache\Repository\Model\Rating; 32use Ampache\Repository\Model\Search; 33use Ampache\Repository\Model\User; 34use Ampache\Repository\Model\Userflag; 35use Ampache\Module\Api\RefreshReordered\RefreshPlaylistMediasAction; 36use Ampache\Module\Authorization\Access; 37use Ampache\Module\Api\Ajax; 38use Ampache\Module\Playback\Stream_Playlist; 39use Ampache\Module\System\Core; 40use Ampache\Repository\Model\Browse; 41use Ampache\Module\Util\Ui; 42use Ampache\Module\Util\ZipHandlerInterface; 43 44/** @var Playlist $playlist */ 45 46?> 47<?php 48ob_start(); 49require Ui::find_template('show_playlist_title.inc.php'); 50$title = ob_get_contents(); 51ob_end_clean(); 52Ui::show_box_top('<div id="playlist_row_' . $playlist->id . '">' . $title . '</div>', 'info-box'); ?> 53<?php if (User::is_registered()) { ?> 54 <?php if (AmpConfig::get('ratings')) { ?> 55 <span id="rating_<?php echo $playlist->id; ?>_playlist"> 56 <?php echo Rating::show($playlist->id, 'playlist'); ?> 57 </span> 58 <?php } ?> 59 <?php if (AmpConfig::get('userflags')) { ?> 60 <span id="userflag_<?php echo $playlist->id; ?>_playlist"> 61 <?php echo Userflag::show($playlist->id, 'playlist'); ?> 62 </span> 63 <?php } ?> 64<?php } ?> 65<div id="information_actions"> 66 <ul> 67 <?php if (Core::get_global('user')->has_access('50') || $playlist->user == Core::get_global('user')->id) { ?> 68 <li> 69 <a onclick="submitNewItemsOrder('<?php echo $playlist->id; ?>', 'reorder_playlist_table', 'track_', 70 '<?php echo AmpConfig::get('web_path'); ?>/playlist.php?action=set_track_numbers&playlist_id=<?php echo $playlist->id; ?>', '<?php echo RefreshPlaylistMediasAction::REQUEST_KEY ?>')"> 71 <?php echo Ui::get_icon('save', T_('Save Track Order')); ?> 72 <?php echo T_('Save Track Order'); ?> 73 </a> 74 </li> 75 <li> 76 <a href="<?php echo AmpConfig::get('web_path'); ?>/playlist.php?action=sort_tracks&playlist_id=<?php echo $playlist->id; ?>"> 77 <?php echo Ui::get_icon('sort', T_('Sort Tracks by Artist, Album, Song')); ?> 78 <?php echo T_('Sort Tracks by Artist, Album, Song'); ?> 79 </a> 80 </li> 81 <li> 82 <a href="<?php echo AmpConfig::get('web_path'); ?>/playlist.php?action=remove_duplicates&playlist_id=<?php echo $playlist->id; ?>"> 83 <?php echo Ui::get_icon('wand', T_('Remove Duplicates')); ?> 84 <?php echo T_('Remove Duplicates'); ?> 85 </a> 86 </li> 87 <?php } ?> 88 <?php 89 // @todo remove after refactoring 90 global $dic; 91 $zipHandler = $dic->get(ZipHandlerInterface::class); 92 if (Access::check_function('batch_download') && $zipHandler->isZipable('playlist')) { ?> 93 <li> 94 <a class="nohtml" href="<?php echo AmpConfig::get('web_path'); ?>/batch.php?action=playlist&id=<?php echo $playlist->id; ?>"> 95 <?php echo Ui::get_icon('batch_download', T_('Batch download')); ?> 96 <?php echo T_('Batch download'); ?> 97 </a> 98 </li> 99 <?php } ?> 100 <?php if (AmpConfig::get('share')) { ?> 101 <a onclick="showShareDialog(event, 'playlist', '<?php echo $playlist->id; ?>');"> 102 <?php echo UI::get_icon('share', T_('Share playlist')); ?> 103 <?php echo T_('Share playlist'); ?> 104 </a> 105 <?php } ?> 106 <?php if (AmpConfig::get('directplay')) { ?> 107 <li> 108 <?php echo Ajax::button_with_text('?page=stream&action=directplay&object_type=playlist&object_id=' . $playlist->id, 'play', T_('Play All'), 'directplay_full_' . $playlist->id); ?> 109 </li> 110 <?php } ?> 111 <?php if (Stream_Playlist::check_autoplay_next()) { ?> 112 <li> 113 <?php echo Ajax::button_with_text('?page=stream&action=directplay&object_type=playlist&object_id=' . $playlist->id . '&playnext=true', 'play_next', T_('Play All Next'), 'nextplay_playlist_' . $playlist->id); ?> 114 </li> 115 <?php } ?> 116 <?php if (Stream_Playlist::check_autoplay_append()) { ?> 117 <li> 118 <?php echo Ajax::button_with_text('?page=stream&action=directplay&object_type=playlist&object_id=' . $playlist->id . '&append=true', 'play_add', T_('Play All Last'), 'addplay_playlist_' . $playlist->id); ?> 119 </li> 120 <?php } ?> 121 <li> 122 <?php echo Ajax::button_with_text('?action=basket&type=playlist&id=' . $playlist->id, 'add', T_('Add All to Temporary Playlist'), 'play_playlist'); ?> 123 </li> 124 <li> 125 <?php echo Ajax::button_with_text('?action=basket&type=playlist_random&id=' . $playlist->id, 'random', T_('Random All to Temporary Playlist'), 'play_playlist_random'); ?> 126 </li> 127 <?php if (Core::get_global('user')->has_access('50') && AmpConfig::get('channel')) { ?> 128 <li> 129 <a href="<?php echo AmpConfig::get('web_path'); ?>/channel.php?action=show_create&type=playlist&id=<?php echo $playlist->id; ?>"> 130 <?php echo Ui::get_icon('flow'); ?> 131 <?php echo T_('Create Channel'); ?> 132 </a> 133 </li> 134 <?php } ?> 135 <?php if ($playlist->has_access()) { ?> 136 <?php $search_id = $playlist->has_search($playlist->user); 137 if ($search_id > 0) { ?> 138 <li> 139 <a href="<?php echo AmpConfig::get('web_path'); ?>/playlist.php?action=refresh_playlist&type=playlist&user_id=<?php echo $playlist->user; ?>&playlist_id=<?php echo $playlist->id; ?>&search_id=<?php echo $search_id; ?>"> 140 <?php echo Ui::get_icon('file_refresh'); ?> 141 <?php echo T_('Refresh from Smartlist'); ?> 142 </a> 143 </li> 144 <?php } ?> 145 <li> 146 <a id="<?php echo 'edit_playlist_' . $playlist->id ?>" onclick="showEditDialog('playlist_row', '<?php echo $playlist->id ?>', '<?php echo 'edit_playlist_' . $playlist->id ?>', '<?php echo addslashes(T_('Playlist Edit')) ?>', '')"> 147 <?php echo Ui::get_icon('edit', T_('Edit')); ?> 148 <?php echo T_('Edit'); ?> 149 </a> 150 </li> 151 <li> 152 <a href="javascript:NavigateTo('<?php echo AmpConfig::get('web_path'); ?>/playlist.php?action=delete_playlist&playlist_id=<?php echo $playlist->id; ?>');" onclick="return confirm('<?php echo T_('Do you really want to delete this Playlist?'); ?>');"> 153 <?php echo Ui::get_icon('delete'); ?> 154 <?php echo T_('Delete'); ?> 155 </a> 156 </li> 157 <?php } ?> 158 </ul> 159</div> 160<?php Ui::show_box_bottom(); ?> 161<div id='reordered_list_<?php echo $playlist->id; ?>'> 162<?php 163 $browse = new Browse(); 164 $browse->set_type('playlist_media'); 165 $browse->add_supplemental_object('playlist', $playlist->id); 166 $browse->set_static_content(true); 167 $browse->duration = Search::get_total_duration($object_ids); 168 $browse->show_objects($object_ids, true); 169 $browse->store(); ?> 170</div> 171