* @version DS-E V/2 */ $str_filename = basename(__FILE__); require_once('common.php'); $access_control->su_check(access_control::SU_RIGHT_EDITORUSER,true); page_header('Blacklist - Editor'); output('`c`b`&Blacklist bearbeiten`b`c`n'); // Grundnavi erstellen addnav('Zurück'); grotto_nav(); addnav('Aktionen'); addnav('Neuer Eintrag',$str_filename.'?op=edit_bl&page='.$_GET['page']); addnav('Liste',$str_filename.'?page='.$_GET['page']); // END Grundnavi erstellen // Evtl. Fehler / Erfolgsmeldungen anzeigen if($session['message'] != '') { output('`n`b'.$session['message'].'`0`b`n`n'); $session['message'] = ''; } // END Evtl. Fehler / Erfolgsmeldungen anzeigen // MAIN SWITCH $str_op = ($_REQUEST['op'] ? $_REQUEST['op'] : ''); switch($str_op) { // Eingabemaske case 'edit_bl': output('Groß / Kleinschreibung wird nicht berücksichtigt!`n Es wird nach folgendem Schema durchsucht:`n Zu prüfender Ausdruck wird anhand von Großschreibung, Bindestrichen, @-Zeichen, Punkten und Leerzeichen in einzelne Bestandteile aufgetrennt.`n Jeder Bestandteil wird einzeln überprüft, ob er einem gesperrten Ausdruck entspricht.`n Z.B. sperrt der Ausdruck "der" alle Werte, in denen "der" als ein Wort vorhanden ist.`n Zum Schluß unterzieht die Routine auch noch den gesamten Prüfwert einem Check. `n`n'); $arr_form = array(); $arr_data = array(); $int_id = (int)$_REQUEST['id']; // Fehlgeschlagener Eintrag if(!empty($session['bl_post'])) { $arr_data = $session['bl_post']; unset($session['bl_post']); } else if($int_id > 0) { $sql = 'SELECT * FROM blacklist WHERE id='.$int_id; $arr_data = db_fetch_assoc(db_query($sql)); $int_type = $arr_data['type']; unset($arr_data['type']); // Typen zuweisen $arr_data['type['.BLACKLIST_LOGIN.']'] = ($int_type & BLACKLIST_LOGIN ? 1 : 0); $arr_data['type['.BLACKLIST_TITLE.']'] = ($int_type & BLACKLIST_TITLE ? 1 : 0); $arr_data['type['.BLACKLIST_EMAIL.']'] = ($int_type & BLACKLIST_EMAIL ? 1 : 0); } // Keine Daten gegeben else { } $arr_form = array( 'type['.BLACKLIST_LOGIN.']'=>'TYP : Login,checkbox,1', 'type['.BLACKLIST_TITLE.']'=>'TYP : Titel,checkbox,1', 'type['.BLACKLIST_EMAIL.']'=>'TYP : EMail,checkbox,1', 'value'=>'Eintrag:', 'remarks'=>'Anmerkungen (optional):,text,255', 'id'=>'EintragID,hidden' ); $str_lnk = $str_filename.'?op=insert_bl&page='.$_GET['page']; addnav('',$str_lnk); $str_out = '`c
'; $str_out .= generateform($arr_form,$arr_data,false,'Speichern!',0); $str_out .= '
`c'; output($str_out, true); break; // Eintrag einfügen case 'insert_bl': $int_type = 0; $int_id = (int)$_REQUEST['id']; if(sizeof($_POST['type']) == 0) { $session['message'] = '`$Bitte einen Typ auswählen!`0'; $session['bl_post'] = $_POST; redirect($str_filename.'?op=edit_bl&page='.$_GET['page']); } foreach($_POST['type'] as $tid => $t) { $int_type = $int_type ^ $tid; } $str_value = strtolower($_POST['value']); $str_remarks = $_POST['remarks']; // Auf doppelte Einträge checken if(!$int_id) { $sql = 'SELECT id FROM blacklist WHERE type='.$int_type.' AND LOWER(value)="'.$str_value.'"'; if(db_num_rows(db_query($sql))) { $session['message'] = '`$Ein identischer Eintrag besteht bereits!`0'; $session['bl_post'] = $_POST; redirect($str_filename.'?op=edit_bl&page='.$_GET['page']); } } // Eintrag if($int_id == 0) { $sql = 'INSERT INTO '; } else { $sql = 'UPDATE '; } $sql .= 'blacklist SET type='.$int_type.',value="'.$str_value.'",remarks="'.$str_remarks.'"'; $sql .= ($int_id ? ' WHERE id='.$int_id : ''); db_query($sql); $int_id = (!$int_id ? db_insert_id() : $int_id); if(db_error(LINK) || db_affected_rows() < 0) { $session['message'] = '`$Fehler bei Bearbeiten des Eintrags ID '.$int_id.': '.db_error(LINK).'`n'; } else { $session['message'] = '`@Eintrag ID '.$int_id.' erfolgreich getätigt!`0'; } redirect($str_filename.'?page='.$_GET['page']); break; // Eintrag löschen case 'del_bl': $int_id = (int)$_GET['id']; $sql = 'DELETE FROM blacklist WHERE id='.$int_id; db_query($sql); if( db_error(LINK) ) { $session['message'] = '`$Fehler bei Löschen des Eintrags ID '.$int_id.':`n'; } else { $session['message'] = '`@Eintrag ID '.$int_id.' erfolgreich gelöscht!`0'; } redirect($str_filename.'?type='.$_GET['type'].'&page='.$_GET['page']); break; // Export-Maske case 'export_form': $arr_form = array(); $arr_data = array(); $sql = 'SELECT * FROM blacklist'; $res = db_query($sql); $str_out = 'Bitte Einträge auswählen, die exportiert werden sollen:`n`n'; if(db_num_rows($res) > 0) { $str_lnk = $str_filename.'?op=export&page='.$_GET['page']; addnav('',$str_lnk); while($b = db_fetch_assoc($res)) { $arr_form['ids['.$b['id'].']'] = $b['value'].':,checkbox,1'; } $str_out .= '`c
'; $str_out .= generateform($arr_form,$arr_data,false,'Exportieren!'); $str_out .= '
`c'; output($str_out, true); } addnav('Alle exportieren!',$str_filename.'?op=export&all=1'); break; // Exportieren case 'export': if(empty($_POST['ids']) && !$_GET['all']) { $session['message'] = '`$Nichts zum Exportieren ausgewählt!'; redirect($str_filename.'?op=export_form'); } if($_POST['ids']) { $str_ids = implode(',',array_keys($_POST['ids'])); $sql = 'SELECT value,type FROM blacklist WHERE id IN(-1,'.$str_ids.')'; } else { $sql = 'SELECT value,type FROM blacklist WHERE 1'; } $res = db_query($sql); $arr_export = array(); if(db_num_rows($res) > 0) { while($b = db_fetch_assoc($res)) { $arr_export[] = $b; } $str_export = serialize($arr_export); } output('`c`@Export: `n`n`c`n',true); break; // Importieren-Maske case 'import_form': $arr_form = array(); $arr_data = array(); $arr_form = array( 'import'=>'Zu importierende Daten,textarea,40,20' ); $str_lnk = $str_filename.'?op=import&page='.$_GET['page']; addnav('',$str_lnk); $str_out = '`c
'; $str_out .= generateform($arr_form,$arr_data,false,'Importieren!'); $str_out .= '
`c'; output($str_out, true); break; // Importieren case 'import': $arr_import = unserialize(stripslashes($_POST['import'])); if(is_array($arr_import)) { foreach($arr_import as $i) { if(!db_num_rows(db_query('SELECT id FROM blacklist WHERE type='.$i['type'].' AND value="'.addslashes($i['value']).'"'))) { $sql = 'INSERT INTO blacklist SET type='.$i['type'].', value="'.addslashes($i['value']).'"'; db_query($sql); if(!db_error(LINK)) { output('`@'.$i['type'].': '.$i['value'].' eingefügt..`n'); } else { output('`$Fehler bei Einfügen von '.$i['type'].': '.$i['value'].'!`n'); } } else { output('`^'.$i['type'].': '.$i['value'].' bereits vorhanden, überspringen..`n'); } } } else { output('`$Keine Daten gefunden!`n'); } addnav('Noch mehr importieren',$str_filename.'?op=import_form'); break; // Black'list' default: addnav('Import',$str_filename.'?op=import_form'); addnav('Export',$str_filename.'?op=export_form'); $int_type = (int)$_REQUEST['type']; $str_out = ''; $str_trclass = ''; $str_out .= ' '; $str_where = (!empty($int_type) ? ' WHERE (type & '.$int_type.')':''); $count_sql = 'SELECT COUNT(*) AS c FROM blacklist '.$str_where.' ORDER BY value'; $arr_res = page_nav($str_filename.'?type='.$int_type.'&', $count_sql, 100); $sql = 'SELECT * FROM blacklist '.$str_where.' ORDER BY value LIMIT '.$arr_res['limit']; $res = db_query($sql); if(!empty($_POST['testname'])) { $_POST['testname'] = stripslashes($_POST['testname']); $bool_res = check_blacklist(BLACKLIST_LOGIN ^ BLACKLIST_TITLE ^ BLACKLIST_EMAIL,$_POST['testname']); if($bool_res) { $str_out .= '`c`i`$Test: Dieser Wert wäre ungültig!`0`c`i`n`n'; } else { $str_out .= '`c`i`@Test: Dieser Wert wäre gültig!`0`c`i`n`n'; } } addnav('',$str_filename); $str_out .= '`c
`n
Anzeigen:
'; $int_found = db_num_rows($res); if($int_found == 0) { $str_out .= ''; } else{ $str_out .= '
`iKeine Einträge vorhanden!`i
'; $i_end = ord('Z'); $str_out.='
`i'.$arr_res['count'].' Einträge gesamt vorhanden, '.$int_found.' angezeigt!`i
`b'; for($i=ord('A');$i<=$i_end;++$i){ $str_out .= ''.chr($i).' '; } $str_out .= '`b
Buchstabensuche funktioniert nur auf der aktuellen Seite.
'; } $str_out.=' '; $c_first = 0; while($b = db_fetch_assoc($res)) { if( $c_first < ord($b['value']) ){ $c_first = ord($b['value']); $c_letter = strtoupper(chr($c_first)); $str_out .= ''; } $str_trclass = ($str_trclass == 'trlight' ? 'trdark' : 'trlight'); $str_out .= ''; $str_out .= ''; $str_out .= ''; $str_out .= ''; $str_out .= ''; $str_out .= ''; $str_out .= ''; } $str_out .= '
Aktionen ID Typ(en) Wert Anmerkungen
`&'.$c_letter.'
['.create_lnk('Edit',$str_filename.'?op=edit_bl&id='.$b['id'].'&page='.$_GET['page']).'] ['.create_lnk('Del',$str_filename.'?op=del_bl&type='.$int_type.'&id='.$b['id'].'&page='.$_GET['page'],true,false,'Diesen Blacklisteintrag wirklich aufheben?').'] `S'.$b['id'].'`0' .($b['type'] & BLACKLIST_LOGIN ? ' Login; ' : '') .($b['type'] & BLACKLIST_TITLE ? ' Titel; ' : '') .($b['type'] & BLACKLIST_EMAIL ? ' EMail; ' : '') .'`b`$'.$b['value'].'`0`b'.$b['remarks'].'
`c'; output($str_out, true); break; } page_footer(); ?>