<?php
# Copyright by: Manuel
# Support: www.ilch.de
defined ('main') or die ( 'no direct access' );
defined ('admin') or die ( 'only admin access' );
function groups_update_modulerights_for ($ar) {
$re = array (
0 => array ('wars', 'groups', 'awards', 'awaycal'),
1 => array ('wars', 'groups', 'awards', 'awaycal'),
2 => array ('wars', 'awaycal'),
3 => array ('groups', 'awaycal'),
);
foreach ($ar as $k => $uid) {
if (0 == $uid) { continue; }
foreach ($re[$k] as $r) {
$s = "SELECT id FROM prefix_modules WHERE url = '".$r."'";
$mid = db_result(db_query($s),0,0);
$s = "SELECT COUNT(*) FROM prefix_modulerights WHERE uid = ".$uid." AND mid = ".$mid;
if (0 == db_result(db_query($s),0,0)) {
db_query("INSERT INTO prefix_modulerights (mid,uid) VALUES (".$mid.",".$uid.")");
}
}
}
}
function may_changegroup ($gi,$m = 0) {
global $allgAr;
if ($_SESSION['authright'] <= -8 OR !$allgAr['groups_forall']) {
return true;
} elseif ($gi == 0) {
return false;
} else {
$q = db_query("SELECT mod1, mod2".($m == 1?', mod4':'')." FROM `prefix_groups` WHERE id = $gi");
if (db_num_rows($q) < 1) {
return false;
} else {
$r = db_fetch_assoc($q);
if (in_array($_SESSION['authid'],$r)) {
return true;
} else {
return false;
}
}
}
}
$show = true;
$msg = '';
$um = $menu->get(1);
if ( $um == 'ins' ) {
$pos = db_result(db_query("SELECT COUNT(*) FROM prefix_groups"),0);
$name = escape($_POST['group_name'], 'string');
$img = escape($_POST['img'], 'string');
$mod1 = escape($_POST['mod1'], 'integer');
$mod2 = escape($_POST['mod2'], 'integer');
$mod3 = escape($_POST['mod3'], 'integer');
$mod4 = escape($_POST['mod4'], 'integer');
$zeigen = escape($_POST['zeigen'], 'integer');
$itsshow = escape($_POST['itsshow'], 'integer');
$fightus = escape($_POST['fightus'], 'integer');
$joinus = escape($_POST['joinus'], 'integer');
$text = escape($_POST['text'], 'text');
if (may_changegroup(0)) {
db_query("INSERT INTO prefix_groups (`name`, `img`, `mod1`, `mod2`, `mod3`, `mod4`, `show_fightus`, `show_joinus`, `zeigen`, `show_its`, `pos`, `text`) VALUES ('".$name."','".$img."',".$mod1.",".$mod2.",".$mod3.",".$mod4.",".$fightus.",".$joinus.",".$zeigen.",".$itsshow.",".$pos."','".$text."')");
}
if (is_coadmin()) {
groups_update_modulerights_for (array($mod1,$mod2,$mod3,$mod4));
}
}
if ( isset ( $_POST['ins_user'] ) ) {
$gid = escape($menu->get(2), 'integer');
if (may_changegroup($gid,1)) {
if ( empty($_POST['fid']) ) {
$_POST['fid'] = 0;
}
$fid = 0;
if (!empty($_POST['fid'])) {
$fid = escape($_POST['fid'], 'integer');
}
$name = escape($_POST['name'], 'string');
$uid = @db_result(@db_query("SELECT id FROM prefix_user where name = BINARY '".$name."'"),0,0);
if (!empty($uid) AND 0 == db_result(db_query("SELECT COUNT(*) FROM prefix_groupusers WHERE gid = ".$gid." AND uid = ".$uid),0)) {
db_query("INSERT INTO prefix_groupusers (gid,uid,fid) VALUES (".$gid.",".$uid.",".$fid.")");
}
}
$um = 'addusers';
}
if ( $um == 'ch' ) {
$gid = escape($_POST['gid'], 'integer');
$oldopts = db_fetch_object(db_query("SELECT * FROM `prefix_groups` WHERE id = $gid"));
$name = escape($_POST['group_name'], 'string');
$img = escape($_POST['img'], 'string');
$mod1 = escape($_POST['mod1'], 'integer');
$mod2 = escape($_POST['mod2'], 'integer');
$mod3 = escape($_POST['mod3'], 'integer');
$mod4 = escape($_POST['mod4'], 'integer');
$zeigen = escape($_POST['zeigen'], 'integer');
$itsshow = escape($_POST['itsshow'], 'integer');
$fightus = escape($_POST['fightus'], 'integer');
$joinus = escape($_POST['joinus'], 'integer');
$text = escape($_POST['text'], 'text');
if (!is_admin() and $oldopts->mod1 != $_SESSION['authid'] and $oldopts->mod2 == $_SESSION['authid']) {
$mod1 = $oldopts->mod1;
} elseif (!is_admin() and $oldopts->mod1 != $_SESSION['authid'] and $oldopts->mod2 != $_SESSION['authid'] and $oldopts->mod4 == $_SESSION['authid']) {
$name = $oldopts->name;
$img = $oldopts->img;
$mod1 = $oldopts->mod1;
$mod2 = $oldopts->mod2;
$mod3 = $oldopts->mod3;
$zeigen = $oldopts->zeigen;
$itsshow = $oldopts->show_its;
$fightus = $oldopts->show_fightus;
$text = $oldopts->text;
}
if (may_changegroup($gid,1)) {
db_query("UPDATE prefix_groups SET name = '".$name."', show_fightus = ".$fightus.", show_joinus = ".$joinus.", img = '".$img."', text = '".$text."', img = '".$img."', `mod1` = ".$mod1.", `mod2` = ".$mod2.", `mod3` = ".$mod3.", `mod4` = ".$mod4.", zeigen = ".$zeigen.", show_its = ".$itsshow." WHERE id = ".$gid);
$msg = "Die Gruppe wurde verändert";
}
if (is_coadmin()) {
# mods wieder die richtigen modulrechte geben. dazu erst loeschen, dann eintragen.
groups_update_modulerights_for (array($mod1,$mod2,$mod3,$mod4));
$msg .= ", die Modulrechte wurden erneuert. Wenn allerdings Leader, Co-Leader, Warorga oder Memberorga geändert wurden haben diese User immer noch die Modulrechte ... das sollte daher überprüft werden.";
}
}
if (isset ($_GET['group_delete']) AND ($gid = escape($_GET['group_delete'],'integer') AND may_changegroup(0))) {
$pos = db_result(db_query("SELECT pos FROM prefix_groups WHERE id = ".$gid),0);
db_query("DELETE FROM prefix_groups WHERE id = ".$gid);
db_query("DELETE FROM prefix_groupusers WHERE gid = ".$gid);
db_query("UPDATE prefix_groups SET pos = pos -1 WHERE pos > ".$pos);
}
if ( $menu->get(3) == 'user_delete' AND ($gid = escape($menu->get(2),'integer') AND may_changegroup($gid,1))) {
$uid = escape($menu->get(4),'integer');
db_query("DELETE FROM prefix_groupusers WHERE gid = ".$gid." AND uid = ".$uid);
}
if ( $menu->get(3) == 'userchange' AND ($gid = escape($menu->get(2),'integer') AND may_changegroup($gid,1))) {
$uid = escape($menu->get(4), 'integer');
$fid = escape($menu->get(5), 'integer');
db_query("UPDATE `prefix_groupusers` SET fid = $fid WHERE gid = $gid AND uid = $uid");
}
if ( $um == 'addusers' ) {
$design = new design ( 'Admins Area', 'Admins Area', 0 );
$design->header();
$gid = $menu->get(2);
$tpl = new tpl ( 'groups/users', 1);
$groupfuncs = array();
$erg = db_query("SELECT id,name FROM prefix_groupfuncs ORDER BY pos");
while ($row = db_fetch_object($erg)) {
$groupfuncs[$row->id] = $row->name;
}
function group_func ($gid, $uid, $fid, $gf) {
$out = '<select id="user'.$uid.'" onchange="change_user('.$gid.', '.$uid.', this.value, '.$fid.', \'user'.$uid.'\');">';
foreach ($gf as $key => $val) {
$out .= '<option value="'.$key.'" '.($fid == $key ? 'selected="selected"' : '').'>'.$val.'</option>';
}
$out .= '</select>';
return $out;
}
$row1 = db_fetch_object(db_query("SELECT name FROM prefix_groups WHERE id = ".$gid));
$tpl->set('gruppe', $row1->name);
$tpl->set('fehler', ( empty($fehler) ? '' : $fehler ) );
$tpl->set('gid', $gid);
$tpl->set('funcs', dbliste ( '', $tpl, 'funcs', "SELECT id,name FROM prefix_groupfuncs ORDER BY pos") );
$tpl->out(0); $class = 'Cnorm';
$q = "SELECT
a.fid,
a.gid,
a.uid,
b.name as username,
c.name as funcname
FROM prefix_groupusers a
LEFT JOIN prefix_user b ON a.uid = b.id
LEFT JOIN prefix_groupfuncs c ON a.fid = c.id
WHERE a.gid = ".$gid."
ORDER BY c.pos";
$erg = db_query($q);
while($row = db_fetch_assoc($erg) ) {
$class = ($class == 'Cnorm' ? 'Cmite' : 'Cnorm' );
$row['funcname'] = group_func($gid, $row['uid'], $row['fid'], $groupfuncs);
$row['class'] = $class;
$tpl->set_ar_out($row,1);
}
$tpl->out(2);
$show = false;
}
if ($menu->get(1) == 'move' AND may_changegroup(0)) {
$id = escape($menu->getE(2), 'integer');
$pos = db_result(db_query("SELECT pos FROM prefix_groups WHERE id = ".$id),0);
$anz = db_result(db_query("SELECT COUNT(*) FROM prefix_groups"),0);
if ($menu->getA(2) == 'u') {
$npos = $pos + 1;
} elseif ($menu->getA(2) == 'o') {
$npos = $pos - 1;
}
if ($npos < 0) {
db_query("UPDATE prefix_groups SET pos = ".$anz." WHERE id = ".$id);
db_query("UPDATE prefix_groups SET pos = pos -1");
}
if ($npos >= $anz) {
db_query("UPDATE prefix_groups SET pos = -1 WHERE id = ".$id);
db_query("UPDATE prefix_groups SET pos = pos +1");
}
if ($npos>=0 AND $npos < $anz) {
db_query("UPDATE prefix_groups SET pos = ".$pos." WHERE pos = ".$npos);
db_query("UPDATE prefix_groups SET pos = ".$npos." WHERE id = ".$id);
}
}
if ($um == 'funcs') {
$design = new design ( 'Admins Area', 'Admins Area', 0 );
$design->header();
if (isset($_POST['s']) AND $_POST['s'] == 'Add') {
$pos = escape($_POST['apos'], 'integer');
$name = escape($_POST['aname'], 'string');
db_query("INSERT INTO prefix_groupfuncs (pos,name) VALUES (".$pos.", '".$name."')");
} elseif (isset($_POST['s']) AND $_POST['s'] == 'Send') {
$erg = db_query('SELECT * FROM `prefix_groupfuncs` ORDER BY pos');
while ($row = db_fetch_assoc($erg) ) {
if ((!empty($_POST['pos'][$row['id']]) AND !empty($_POST['name'][$row['id']])) AND $_POST['pos'][$row['id']] != $row['pos'] OR $_POST['name'][$row['id']] != $row['name']) {
$pos = escape($_POST['pos'][$row['id']], 'integer');
$name = escape($_POST['name'][$row['id']], 'string');
db_query("UPDATE prefix_groupfuncs SET pos = ".$pos.", name = '".$name."' WHERE id = ".$row['id']);
}
}
}
if ($menu->getA(2) == 'd' AND is_numeric($menu->getE(2))) {
$id = escape($menu->getE(2), 'integer');
db_query("DELETE FROM prefix_groupfuncs WHERE id = ".$id);
}
$tpl = new tpl ( 'groups/funcs', 1);
$tpl->out(0);
$class = '';
$erg = db_query('SELECT * FROM `prefix_groupfuncs` ORDER BY pos');
while ($row = db_fetch_assoc($erg) ) {
$class = ($class == 'Cmite' ? 'Cnorm' : 'Cmite' );
$row['class'] = $class;
$tpl->set_ar_out($row,1);
}
$tpl->out(2);
$show = false;
}
if ($um == 'joinus') {
$design = new design ( 'Admins Area', 'Admins Area', 2 );
$design->header();
# als trial aufnehmen
if ($menu->getA(2) == 'a' AND is_numeric($menu->getE(2)) AND $menu->getE(2) <> 0) {
$check = escape($menu->get(3), 'string');
$id = escape($menu->getE(2), 'integer');
if ($menu->get(4) == 'addtoteam') {
$gid = db_count_query("SELECT groupid FROM `prefix_usercheck` WHERE `check` = '$check'");
db_query("INSERT INTO `prefix_groupusers` (gid,uid,fid) VALUES ($gid,$id,4)");
$msg = 'Er wurde als Trial in das Team eingetragen.';
} else {
$msg = 'Jetzt muss er noch in ein Team aufgenommen werden.';
}
db_query("DELETE FROM prefix_usercheck WHERE ak = 4 AND `check` = '".$check."'");
db_query("UPDATE prefix_user SET recht = -3 WHERE id = ".$id." AND recht > -3");
sendpm ($_SESSION['authid'], $id, 'Deine Joinus Anfrage', 'Du wurdest als Trial-Member aufgenommen.');
$msg = 'erfolgreich als Trial markiert, der User wurde darueber informiert. '.$msg;
}
# aus check tabelle loeschen (nicht aufnehmen)
if ($menu->getA(2) == 'd' AND is_numeric($menu->getE(2))) {
$check = escape($menu->get(3), 'string');
$id = escape($menu->getE(2), 'integer');
db_query("DELETE FROM prefix_usercheck WHERE ak = 4 AND `check` = '".$check."'");
if ($id <> 0) {
sendpm ($_SESSION['authid'], $id, 'Deine Joinus Anfrage', 'Deine Joinus Anfrage wurde leider abgelehnt');
}
$msg = 'erfolgreich gelöscht ..., wenn er schon registriert war wurde ihm eine Nachricht geschickt.';
}
$tpl = new tpl ( 'groups/joinus', 1);
$tpl->set('msg',(empty($msg)?'':'<table width="50%" cellpadding="2" cellspacing="1" border="0" class="border"><tr><td class="Cnorm"><b>Nachricht:</b> '.$msg.'</td></tr></table>'));
$tpl->out(0);
if ($_SESSION['authright'] <= -8 OR $allgAr['groups_forall'] == 0) {
$where = '';
} else {
$where = " AND prefix_usercheck.groupid IN (SELECT id FROM `prefix_groups` WHERE mod1 = {$_SESSION['authid']} OR mod2 = {$_SESSION['authid']} OR mod4 = {$_SESSION['authid']})";
}
$class = 'Cnorm';
$erg = db_query("SELECT `check`, prefix_usercheck.name, prefix_user.id, prefix_user.email, prefix_groups.name as groupname FROM prefix_usercheck LEFT JOIN prefix_user ON prefix_user.name = BINARY prefix_usercheck.name LEFT JOIN prefix_groups ON prefix_groups.id = prefix_usercheck.groupid WHERE ak = 4".$where);
while ($r = db_fetch_assoc($erg)) {
if ($r['id'] < 1) {
$r['email'] = db_count_query("SELECT email FROM `prefix_usercheck` WHERE name = '{$r['name']}' AND ak");
}
$class = ($class == 'Cnorm' ? 'Cmite' : 'Cnorm' );
$r['class'] = $class;
$r['status'] = (empty($r['id'])?'Registrierung noch nicht abgeschlossen' : 'bereits Registriert');
if (empty($r['id'])) { $r['id'] = 0; }
$tpl->set_ar_out($r,1);
}
$tpl->out(2);
$show = false;
}
if ( $show ) {
$design = new design ( 'Admins Area', 'Admins Area', 2 );
$design->header();
$tpl = new tpl ( 'groups/groups', 1);
if ( $um == 'edit' ) {
$ar = db_fetch_assoc(db_query("SELECT id as gid, name, img, `mod1`, `mod2`, `mod3`,`text`, `mod4`, zeigen, show_its, show_joinus, show_fightus FROM prefix_groups WHERE id = ".$menu->get(2) ));
$ar['ak'] = 'ch';
$ar['zeigenja'] = ( $ar['zeigen'] == 1 ? 'checked' : '' );
$ar['zeigenno'] = ( $ar['zeigen'] == 1 ? '' : 'checked' );
$ar['show_itsja'] = ( $ar['show_its'] == 1 ? 'checked' : '' );
$ar['show_itsno'] = ( $ar['show_its'] == 1 ? '' : 'checked' );
$ar['joinusja'] = ( $ar['show_joinus'] == 1 ? 'checked' : '' );
$ar['joinusno'] = ( $ar['show_joinus'] == 1 ? '' : 'checked' );
$ar['fightusja'] = ( $ar['show_fightus'] == 1 ? 'checked' : '' );
$ar['fightusno'] = ( $ar['show_fightus'] == 1 ? '' : 'checked' );
} else {
$ar = array (
'name'=>'','img'=>'','mod1'=>'','mod2'=>'','mod3'=>'', 'mod4'=>'', 'text'=>'',
'zeigenja'=>'','zeigenno'=>'checked','show_itsja'=>'','show_itsno'=>'checked','ak'=>'ins','gid'=>'',
'fightusja'=>'','fightusno'=>'checked','joinusja'=>'','joinusno'=>'checked',
);
}
$ar['mods1'] = dbliste ( $ar['mod1'] , $tpl, 'mods1', "SELECT id,name FROM prefix_user WHERE recht <= -4 ORDER BY name");
$ar['mods2'] = dbliste ( $ar['mod2'] , $tpl, 'mods2', "SELECT id,name FROM prefix_user WHERE recht <= -4 ORDER BY name");
$ar['mods3'] = dbliste ( $ar['mod3'] , $tpl, 'mods3', "SELECT id,name FROM prefix_user WHERE recht <= -4 ORDER BY name");
$ar['mods4'] = dbliste ( $ar['mod4'] , $tpl, 'mods4', "SELECT id,name FROM prefix_user WHERE recht <= -4 ORDER BY name");
$ar['mods2'] = '<option value="0">keiner</option>'.$ar['mods2'];
$ar['mods3'] = '<option value="0">keiner</option>'.$ar['mods3'];
$ar['mods4'] = '<option value="0">keiner</option>'.$ar['mods4'];
$ar['pic'] = arlistee( $ar['img'], get_teampic_ar() );
$ar['pic'] = '<option value="0">kein Bild<option>'.$ar['pic'];
$ar['msg'] = (empty($msg)?'':'<table width="50%" cellpadding="2" cellspacing="1" border="0" class="border"><tr><td class="Cnorm"><b>Nachricht:</b> '.$msg.'</td></tr></table>');
$ar['joinu'] = '';
if (0 < db_result(db_query("SELECT COUNT(*) FROM prefix_usercheck WHERE ak = 4"),0)) {
$ar['joinu'] = '<a href="admin.php?groups-joinus"><b>Joinus Anfragen bearbeiten</b></a><br /><br />';
}
$tpl->set_ar_out($ar,0);
$class = 'Cnorm';
$erg = db_query("SELECT name,id FROM prefix_groups ORDER BY pos ASC");
while($row = db_fetch_assoc($erg) ) {
$row['useranz'] = db_count_query("SELECT COUNT(uid) FROM prefix_groupusers WHERE gid = ".$row['id']);
$class = ($class == 'Cnorm' ? 'Cmite' : 'Cnorm' );
$row['class'] = $class;
$tpl->set_ar_out($row,1);
}
$tpl->out(2);
if ($allgAr['groups_forall'] AND $_SESSION['authright'] > -8) { $tpl->out(3); }
$tpl->out(4);
}
$design->footer();
?>
Bitte schön
zum anmerk die DB tabellen sieht so aus
id , name , mod1 , mod2 , mod3 , mod4 , pos , zeigen , show_its , show_joinus , show_fightus, img , text , logo
kann sein das das Logo in der datei fehlt da ich die nirgends gefunden habe
Zuletzt modifiziert von Jam am 20.08.2011 - 14:00:51