read())) { // . und .. überspringen if($file == '.' || $file == '..' ) { continue; } //Verzeichnisse rekursiv aufrufen if(is_dir($str_path.$file)) { //Rekursiv Verzeichnisse durchsuchen $files_on_hdd = array_merge($files_on_hdd,arr_get_music_files($str_path.$file.'/')); } //Dateien anfügen if (strpos($file,'.mp3')>0) { //Musikdir wieder rausfischen, wird zur Darstellung nicht gebraucht $files_on_hdd[] = str_replace(MUSIC_DIR_MEDIA,'',$str_path.$file); } } $dir->close(); } sort($files_on_hdd); return $files_on_hdd; } // Ausgabestring $str_output = ''; require_once('common.php'); if(!$session['user']['loggedin']) { exit; } //JSLIB ON OFF if(isset($_GET['on_off'])) { $access_control->su_check(access_control::SU_RIGHT_EDITOR_BARDE,true); $id = (int)$_GET['id']; // Switch $sql = 'UPDATE music_items SET enabled = IF(enabled=1,0,1) WHERE id='.$id; db_query($sql); if(db_affected_rows()) { $str_back = '/mb Musikstück wurde umgeschaltet!'; } else { $str_back = '/mb Musikstück NICHT umgeschaltet!'; } jslib_http_command($str_back); exit(); } //Nur Superuser mit Wanderbardenrecht $access_control->su_check(access_control::SU_RIGHT_EDITOR_BARDE,true); define('MUSIC_DIR_MEDIA','./media/player/mp3/'); $str_base_file = basename(__FILE__); /** * Gib alle Kategorien zurück * * @return unknown */ function arr_get_categories() { $str_sql = 'SELECT DISTINCT category FROM music_association ORDER BY category ASC'; $arr_categories = db_get_all($str_sql); return $arr_categories; } page_header('Musikadministration'); switch ($_GET['op']) { case 'edit_categories': { $str_output = get_title('Kategorie verwalten'); addnav('Zurück',$str_base_file); if(isset($_POST['form_submit']) || isset($_POST['form_delete']) || isset($_POST['form_insert'])) { $str_old_category = $_POST['category']; $str_new_category = $_POST['category_new']; $str_sql_update_association = ' UPDATE music_association SET category = "'.$str_new_category.'" WHERE category = "'.$str_old_category.'"'; $str_sql_delete_association = 'DELETE FROM music_association WHERE category="'.$str_old_category.'"'; $str_sql_insert_association = ' INSERT INTO music_association SET category = "'.$str_new_category.'"'; if(isset($_POST['form_delete'])) { $db_res = db_query($str_sql_delete_association); $int_affected = db_affected_rows(); $str_output .= '`n`$Kategorie aus der DB entfernt.'; } elseif(isset($_POST['form_submit']) && !empty($str_new_category)) { $db_res = db_query($str_sql_update_association,false); $int_affected = db_affected_rows(); $str_output .= '`n`$Kategorie aktualisiert.'; } elseif(isset($_POST['form_insert']) && !empty($str_new_category)) { $db_res = db_query($str_sql_insert_association,false); $int_affected = db_affected_rows(); $str_output .= '`n`$Kategorie hinzugefügt.'; } else { $str_output .= '`$Es wurden keine Änderungen durchgeführt'; } } $arr_categories = arr_get_categories(); if(is_array($arr_categories)) { foreach ($arr_categories as $arr_category) { $str_category_select .= ','.$arr_category['category'].','.$arr_category['category']; } } $arr_form = array(); $arr_form['category'] = 'Zu bearbeitende Kategorie auswählen,select'.$str_category_select; $arr_form['category_new'] = 'Neuer Kategoriename,text,50'; $arr_form['form_delete'] = 'Löschen,submit_button,submit'; $arr_form['form_insert'] = 'Hinzufügen,submit_button,submit'; $str_output .= form_header($str_base_file.'?op=edit_categories&act=edit'); $str_output .= generateform($arr_form,array()); $str_output .= ""; } break; //Dateien Hinzufügen, löschen, editieren case 'edit_files': { switch ($_GET['act']) { case 'show': { addnav('Zurück',$str_base_file.'?op=edit_files'); $str_output = get_title('Dateien anzeigen'); $files_on_hdd = arr_get_music_files(MUSIC_DIR_MEDIA); foreach ($files_on_hdd as $file) { $str_output .= $file.'
'; } $str_output .= '
Es befinden sich '.count($files_on_hdd).' Musikdateien auf dem Server'; break; } case 'edit': { $int_id = (isset($_REQUEST['id']))?(int)$_REQUEST['id']:0; $str_output = get_title('Datei '.($int_id>0?'editieren':'erstellen')); addnav('Zurück',$str_base_file.'?op=edit_files'); if($_GET['subact'] == 'save') { $arr_data = array(); $arr_data['enabled'] = ($_POST['enabled']==true)?1:($int_id!=0)?0:1; $arr_data['name'] = $_POST['name']; $arr_data['author'] = $_POST['author']; $arr_data['filename'] = $_POST['filename']; $arr_data['info'] = $_POST['info']; $arr_data['image'] = $_POST['image']; if(isset($_POST['id']) && (0<(int)$_POST['id'])) { $arr_data['id'] = (int)$_POST['id']; } if(isset($arr_data['id'])) { $db_res = db_query('SELECT filename FROM music_items WHERE id='.$arr_data['id']); $arr_music_item = db_fetch_assoc($db_res); //Datei umbenennen und ggf. verschieben if($arr_music_item['filename'] != $arr_data['filename']) { $arr_path_parts_old = pathinfo(MUSIC_DIR_MEDIA.$arr_music_item['filename']); $arr_path_parts_new = pathinfo(MUSIC_DIR_MEDIA.$arr_data['filename']); if(!is_writable(MUSIC_DIR_MEDIA.$arr_music_item['filename']) || !is_writable(MUSIC_DIR_MEDIA.$arr_data['filename'])) { $str_output .= '`$Nicht genügend Zugriffsrechte, die Dateien sind nciht schreibbar.'; break; } if($arr_path_parts_old['dirname'] != $arr_path_parts_new['dirname']) { if(!is_dir($arr_path_parts_new['dirname'])) { if(mkdir($arr_path_parts_new['dirname']) == false) { $str_output .= '`$Der Ordner konnte nicht erstellt werden.'; break; } else { if(!rename($arr_path_parts_old['dirname'].'/'.$arr_path_parts_old['basename'],$arr_path_parts_new['dirname'].'/'.$arr_path_parts_new['basename'])) { $str_output .= '`$Die umbenennung ist fehlgeschlagen'; break; } } } } else { if(!rename($arr_path_parts_old['dirname'].'/'.$arr_path_parts_old['basename'],$arr_path_parts_new['dirname'].'/'.$arr_path_parts_new['basename'])) { $str_output .= '`$Die umbenennung ist fehlgeschlagen'; } } } $db_res = db_query(' UPDATE music_items SET enabled = '.$arr_data['enabled'].', name = "'.$arr_data['name'].'", author = "'.$arr_data['author'].'", filename = "'.$arr_data['filename'].'", info = "'.$arr_data['info'].'", image = "'.$arr_data['image'].'" WHERE id ='.$arr_data['id']); if($db_res) { $str_output .= '`$Erfolgreich gespeichert'; $int_id = $arr_data['id']; } else { $str_output .= '`$Fehler, nicht gespeichert'; } } else { if ( db_insert('music_items',$arr_data) ) { $str_output .= '`$Erfolgreich gespeichert'; $int_id = db_insert_id(); } else { $str_output .= '`$Fehler, nicht gespeichert'; } } } if($int_id>0) { $str_sql = 'SELECT * FROM music_items WHERE id='.$int_id; $db_res = db_query($str_sql,false); } $arr_categories = arr_get_categories(); if(is_array($arr_categories)) { foreach ($arr_categories as $arr_category) { $str_category_select .= ','.$arr_category['category'].','.$arr_category['category']; } } $arr_form = array(); $arr_form['id'] = 'ID des Musikstücks,hidden'; $arr_form['enabled'] = 'Aktiviert?,bool'; $arr_form[] = 'Dateiwerte,divider'; $arr_form['name'] = 'Name des Musikstücks,text,255'; $arr_form['author'] = 'Autor der Datei,text,255'; $arr_form['filename'] = 'Dateiname,text,255'; $arr_form['info'] = 'Weitere Informationen,textarea,50,10'; $arr_form['image'] = 'Pfad zu einer Bilddatei,text,255'; $arr_data = array(); if($db_res != false && db_num_rows($db_res)==1) { $arr_db_res = db_fetch_assoc($db_res); $arr_data['id'] = $arr_db_res['id']; $arr_data['enabled'] = $arr_db_res['enabled']; $arr_data['name'] = $arr_db_res['name']; $arr_data['author'] = $arr_db_res['author']; $arr_data['filename'] = $arr_db_res['filename']; $arr_data['info'] = $arr_db_res['info']; $arr_data['image'] = $arr_db_res['image']; } $str_output .= form_header($str_base_file.'?op=edit_files&act=edit&subact=save'); $str_output .= generateform($arr_form,$arr_data); $str_output .= ''; break; } case 'check_files': { addnav('Zurück',$str_base_file.'?op=edit_files'); $str_output = get_title('Dateien aktualisieren'); $files_on_hdd = arr_get_music_files(MUSIC_DIR_MEDIA); if (count($files_on_hdd)>0) { // Eingetragene Musiktitel auslesen $sql = 'SELECT filename FROM music_items'; $result = db_query($sql); // in array speichern $files_in_db = array(); while($row = db_fetch_assoc($result)) { $files_in_db[]=$row['filename']; } if (count($files_on_hdd)>0) { // checken $i=0; foreach($files_on_hdd as $val) { if (!in_array($val,$files_in_db)) { $sql = " INSERT INTO music_items (filename) VALUES ('".addstripslashes($val)."')"; db_query($sql); $str_output .= $sql.'
'; $i++; } } $str_output .= '`bEs wurden '.$i.' neue Specials eingetragen.`b`n'; } } else { $str_output .= '`$FEHLER!!!`0Kann den Ordner mit den Musikdateien nicht finden. Bitte benachrichtige den Admin!! Du bist der Admin?!?... Ja... das könnte sich zum Problem entwickeln'; } // gelöschte Musiktitel aus DB löschen if (count($files_in_db)>0) { $j=0; foreach($files_in_db as $val) { $str_path = MUSIC_DIR_MEDIA.$val; if (!file_exists($str_path)) { $sql = " DELETE FROM music_items WHERE filename = '".addstripslashes($val)."' "; db_query($sql); $str_output .= $sql.'`n'; $j++; } } } if($j>0) { $str_output .= '`bEs wurden '.$j.' Musiktitel aus der Datenbank gelöscht`b`0`n'; } if ($i+$j==0) { $str_output .= '

Es gibt keine Veränderungen im Musik-Ordner...

'; } break; } //Liste der Musikstücke anzeigen default: { $str_output = get_title('Liste der verfügbaren Musikstücke'); addnav('Aktionen'); addnav('Neuen Musiktitel hinzufügen',$str_base_file.'?op=edit_files&act=edit'); addnav('Musikstücke auf Festplatte auflisten',$str_base_file.'?op=edit_files&act=show'); addnav('Musiktitel auf HDD mit DB abgleichen',$str_base_file.'?op=edit_files&act=check_files'); addnav('Zurück'); addnav('Zurück zum Index',$str_base_file); addnav('G?Zurück zu Grotte','superuser.php'); $str_sql = 'SELECT * FROM music_items'; $db_res = db_query($str_sql,false); $str_output .= ' '; if(db_num_rows($db_res) == 0) { $str_output .= ' '; } while($arr_result = db_fetch_assoc($db_res)) { $str_class = ($str_class == 'trdark')?'trlight':'trdark'; $str_output .= ' '; } $str_output .= '
ID Name author Filename Image Info Ops
Es sind noch keine Musikstücke vorhanden
'.$arr_result['id'].' '.$arr_result['name'].' '.$arr_result['author'].' '.$arr_result['filename'].' '.$arr_result['image'].' '.substr($arr_result['info'],0,30).' [ '.create_lnk('Edit',$str_base_file.'?op=edit_files&act=edit&id='.$arr_result['id']).'| '.create_lnk('Del',$str_base_file.'?op=edit_files&act=del&id='.$arr_result['id'],true,false,'Bist Du Dir sicher, dass du das Musikstück löschen willst?').'| '.jslib_int_switch($str_base_file.'?on_off=1&id='.$arr_result['id'],$arr_result['enabled']).' ]
'; break; } } break; } case 'assign_files': { addnav(Zurück,$str_base_file); $arr_categories = arr_get_categories(); $str_output = get_title('Musikstücke Kategorien zuordnen'); $str_output .= form_header($str_base_file.'?op=assign_files'); $str_output .= ''; $str_output .= ''; if(!isset($_POST['category'])) { $str_output .= '`n`$Bitte wähle eine Kategorie aus'; } else { if(isset($_POST['form_submit'])) { $str_sql = ' UPDATE music_association SET id_array = "'.addslashes(serialize($_POST['associated'])).'" WHERE category="'.$_POST['category'].'" '; $db_res = db_query($str_sql,false); if(db_affected_rows()>0) { $str_output .= '`$Die Dateiassoziation war erfolgreich`0'; } else { $str_output .= '`$Die Dateiassoziation war nicht erfolgreich`0'; } } $str_sql_association = 'SELECT id_array FROM music_association WHERE category="'.$_POST['category'].'"'; $str_sql_files = 'SELECT id,filename FROM music_items ORDER BY filename ASC'; $db_res = db_query($str_sql_association,false); $arr_temp = db_fetch_assoc($db_res); $arr_associated = unserialize($arr_temp['id_array']); if($arr_associated === false) { db_query('INSERT INTO music_association SET category="'.$_POST['category'].'"'); $arr_associated = array(); } $arr_all_files = db_create_list(db_query($str_sql_files,false)); $str_select_assoc = '
`tAlle für die Kategorie '.$_POST['category'].' ausgewählten Titel
(STRG halten für Mehrfachauswahl)
'; $str_output .= form_header($str_base_file.'?op=assign_files'); $str_output .= $str_select_assoc; $str_output .= ''; $str_output .= '
'; } break; } default: { $str_output = get_title('Musikadministration') ; $str_output .= '`t In diesem Editor werden die Musiktitel für den Wanderbarden verwaltet und zu einzelnen Kategorien (Orten) zugeordnet.`n`n `n`n Die Lieder können dann im Quelltext durch music_set("Kategoriename",[Wartezeit in Sekunden]) eingefügt werden. Bitte wähle links aus...'; addnav('Aktionen'); addnav('v?Musikstücke verwalten',$str_base_file.'?op=edit_files'); addnav('z?Musikstücke zuweisen',$str_base_file.'?op=assign_files'); addnav('K?Kategorien verwalten',$str_base_file.'?op=edit_categories'); addnav('Zurück'); addnav('G?Zurück zur Grotte','superuser.php'); break; } } output($str_output); page_footer(); ?>