ilch Forum » Ilch Clan 1.1 » Fehlersuche und Probleme » Rechteänderung / Gruppenrechte

Geschlossen
  1. #1
    User Pic
    STRUWA Mitglied
    Registriert seit
    05.06.2013
    Beiträge
    38
    Beitragswertungen
    0 Beitragspunkte
    Hey ihr,

    ich möchte das nur eine bestimmte Gruppe sowie User ab dem Status SiteAdmin die Möglichkeit haben Einträge zu editieren und zu löschen.
    Eintragen soll jeder können der das Recht für das Modul besitzt.
    Wie kann ich das am besten machen?

    <?php
    defined ('main') or die ( 'no direct access' );
    defined ('admin') or die ( 'only admin access' );
    
    $design = new design ( 'Admins Area', 'Admins Area', 2 );
    $design->header();
    
    $tpl = new tpl ('radio/sendeplan.htm', 1);
    
    if ($menu->getA(1) == 'd')
    {
        $id = escape($menu->getE(1),'integer');
        
        db_query("DELETE FROM `prefix_radio_sendeplan` WHERE `id` = '$id'");
        
        wd('admin.php?sendeplan', 'Eintrag Nr.'.$id.' wurde gel&ouml;scht!');
    }
    elseif (isset($_POST['save']))
    {
        $date = escape($_POST['date'],'string');
        $time = escape($_POST['time'],'string');
        $dj = escape($_POST['dj'],'integer');    
        $txt = escape($_POST['txt'],'textarea');
        
        db_query("INSERT INTO `prefix_radio_sendeplan` (`date`,`time`,`dj_id`,`content`) VALUES ('$date','$time','$dj','$txt')");
        
        wd('admin.php?sendeplan', 'Neuer Eintrag wurde hinzugef&uuml;gt.');
    }
    elseif (isset($_POST['edit']))
    {
        $date = escape($_POST['date'],'string');
        $time = escape($_POST['time'],'string');
        $dj = escape($_POST['dj'],'integer');    
        $txt = escape($_POST['txt'],'textarea');
        $id = escape($_POST['id'],'integer');
        
        db_query("UPDATE `prefix_radio_sendeplan` SET `date` = '$date', `time` = '$time', `dj_id` = '$dj', `content` = '$txt' WHERE `id` = '$id'");
        echo $dj;
        wd('admin.php?sendeplan', 'Eintrag erfolgreich ge&auml;ndert.');
    }
    else
    {
        $tpl->out(0);
        
        $limit = 5;  // Limit
        $page = ($menu->getA(1) == 'p' ? $menu->getE(1) : 1 );
        $MPL = db_make_sites ($page , '' , $limit , "admin.php?sendeplan" , 'radio_sendeplan' );
        $anfang = ($page - 1) * $limit;
        
        $q = db_query("SELECT `id`,`date`,`time`,`dj_id` FROM `prefix_radio_sendeplan` LIMIT $anfang,$limit");
        
        while($row = db_fetch_assoc($q))
        {
            $dj = db_result(db_query("SELECT `name` FROM `prefix_user` WHERE `id` = '".$row['dj_id']."'"));
            $dj = empty($dj) ? 'Ex-DJ' : $dj;
            $entry = $row['date'].', '.$row['time'];
             
            $tpl->set('ID',$row['id']);
            $tpl->set('DJ',$dj);
            $tpl->set('ENTRY',$entry);
            $tpl->out(1);
        }
        
        $tpl->set('MPL', $MPL);
        
        if ($menu->getA(1) == 'e')
        {
            $id = escape($menu->getE(1),'integer');
            
            $row = db_fetch_assoc(db_query("SELECT * FROM `prefix_radio_sendeplan` WHERE `id` = '$id'"));
    
            $q = db_query("SELECT `a`.`name`,`b`.`userid` as djid FROM `prefix_radio_djs` b LEFT JOIN `prefix_user` a ON `a`.`id` = `b`.`userid`");
            $djs = '<select name="dj">';
        
            while ($row2 = db_fetch_assoc($q))
                $djs .= '<option value="'.$row2['djid'].'"'.($row2['djid'] == $row['dj_id'] ? 'selected="selected"' : '').'>'.$row2['name'].'</option>';
        
            $djs .= '</select>';
    
            $date = $row['date'];
            $time = $row['time'];
            $text = $row['content']."\n\n\n[i]Letzte Änderung am ".date('d.m.Y').' um '.date('H:i').'[/i]';
            
            $editid = '<input type="hidden" name="id" value="'.$id.'" />';
    
            $tpl->set('DJ',$djs);
            $tpl->set('DATE',$date);
            $tpl->set('TIME',$time);
            $tpl->set('TEXT',$text);
            $tpl->set('METHOD','edit');
            $tpl->set('EDITID',$editid);
            $tpl->out(2);
        }
        else
        {    
            $q = db_query("SELECT `a`.`name`,`b`.`userid` as djid FROM `prefix_radio_djs` b LEFT JOIN `prefix_user` a ON `a`.`id` = `b`.`userid`");
            $djs = '<select name="dj">';
        
            while ($row = db_fetch_assoc($q))
                $djs .= '<option value="'.$row['djid'].'"'.($row['djid'] == $_SESSION['authid'] ? 'selected="selected"' : '').'>'.$row['name'].'</option>';
        
            $djs .= '</select>';
    
            $date = date('Y-m-d');
            $time = date('H:i').' - '.date('H:i',mktime(date('H')+1,date('i'),date('s'),date('n'),date('j'),date('Y')));
            $text = '';
    
            $tpl->set('DJ',$djs);
            $tpl->set('DATE',$date);
            $tpl->set('TIME',$time);
            $tpl->set('TEXT',$text);
            $tpl->set('METHOD','save');
            $tpl->set('EDITID','');
            $tpl->out(2);
        }
    }
    
    require_once('include/includes/class/scRadioModul.php');
    echo getCopyright(false);
    $design->footer();
    ?>
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Rock@wulf Hall Of Fame
    Registriert seit
    03.06.2004
    Beiträge
    3.282
    Beitragswertungen
    239 Beitragspunkte
    externer Link

    Also ich fasse mal entwicklertechnisch zusammen:

    Soll:

    User mit den Rechten -7(Siteadmin), -8(CoAdmin), -9(Admin) sollen editieren und löschen können.

    User die der Gruppe (Sendeplan) angehören sollen editieren und löschen können

    Eintragen soll jeder können der das Recht für das Modul besitzt. (Wir reden hier von dem Recht das man im Adminbereich anklicken kann?)

    Ist -> = ?

    ------------------
    Vorweg, ilch ist für das was du möchtest nicht wirklich ausgelegt, Gruppen waren nie dazu bestimmt um rechte zu entscheiden, wohlgleich es im Quellcode eingebettet ist (habs noch nie benutzt aber grade gefunden).

    Funktionieren tut es folgender maßen:

    $recht = -7; #Recht ab dem editieren Erlaubt ist
    $gruppe = 1; #Gruppen ID mit Usern die Editieren dürfen
    $berechtigt = has_right (array($recht,$gruppe));


    Dementsprechend muss dann noch die Ausgabe etc angepasst werden:

    <?php
    defined ('main') or die ( 'no direct access' );
    defined ('admin') or die ( 'only admin access' );
    
    $design = new design ( 'Admins Area', 'Admins Area', 2 );
    $design->header();
    
    $tpl = new tpl ('radio/sendeplan.htm', 1);
    
    $recht = -7; #Recht ab dem editieren Erlaubt ist
    $gruppe = 1; #Gruppen ID mit Usern die Editieren dürfen
    $berechtigt = has_right (array($recht,$gruppe));
    
    if ($menu->getA(1) == 'd' AND $berechtigt)
    {
        $id = escape($menu->getE(1),'integer');
        
        db_query("DELETE FROM `prefix_radio_sendeplan` WHERE `id` = '$id'");
        
        wd('admin.php?sendeplan', 'Eintrag Nr.'.$id.' wurde gel&ouml;scht!');
    }
    elseif (isset($_POST['save']))
    {
        $date = escape($_POST['date'],'string');
        $time = escape($_POST['time'],'string');
        $dj = escape($_POST['dj'],'integer');    
        $txt = escape($_POST['txt'],'textarea');
        
        db_query("INSERT INTO `prefix_radio_sendeplan` (`date`,`time`,`dj_id`,`content`) VALUES ('$date','$time','$dj','$txt')");
        
        wd('admin.php?sendeplan', 'Neuer Eintrag wurde hinzugef&uuml;gt.');
    }
    elseif (isset($_POST['edit']) AND $berechtigt)
    {
        $date = escape($_POST['date'],'string');
        $time = escape($_POST['time'],'string');
        $dj = escape($_POST['dj'],'integer');    
        $txt = escape($_POST['txt'],'textarea');
        $id = escape($_POST['id'],'integer');
        
        db_query("UPDATE `prefix_radio_sendeplan` SET `date` = '$date', `time` = '$time', `dj_id` = '$dj', `content` = '$txt' WHERE `id` = '$id'");
        echo $dj;
        wd('admin.php?sendeplan', 'Eintrag erfolgreich ge&auml;ndert.');
    }
    else
    {
        $tpl->out(0);
        
        $limit = 5;  // Limit
        $page = ($menu->getA(1) == 'p' ? $menu->getE(1) : 1 );
        $MPL = db_make_sites ($page , '' , $limit , "admin.php?sendeplan" , 'radio_sendeplan' );
        $anfang = ($page - 1) * $limit;
        
        $q = db_query("SELECT `id`,`date`,`time`,`dj_id` FROM `prefix_radio_sendeplan` LIMIT $anfang,$limit");
        
        while($row = db_fetch_assoc($q))
        {
            $dj = db_result(db_query("SELECT `name` FROM `prefix_user` WHERE `id` = '".$row['dj_id']."'"));
            $dj = empty($dj) ? 'Ex-DJ' : $dj;
            $entry = $row['date'].', '.$row['time'];
             
            $tpl->set('ID',$row['id']);
            $tpl->set('DJ',$dj);
            $tpl->set('ENTRY',$entry);
            $tpl->out(1);
        }
        
        $tpl->set('MPL', $MPL);
        
        if ($menu->getA(1) == 'e')
        {
            $id = escape($menu->getE(1),'integer');
            
            $row = db_fetch_assoc(db_query("SELECT * FROM `prefix_radio_sendeplan` WHERE `id` = '$id'"));
    
            $q = db_query("SELECT `a`.`name`,`b`.`userid` as djid FROM `prefix_radio_djs` b LEFT JOIN `prefix_user` a ON `a`.`id` = `b`.`userid`");
            $djs = '<select name="dj">';
        
            while ($row2 = db_fetch_assoc($q))
                $djs .= '<option value="'.$row2['djid'].'"'.($row2['djid'] == $row['dj_id'] ? 'selected="selected"' : '').'>'.$row2['name'].'</option>';
        
            $djs .= '</select>';
    
            $date = $row['date'];
            $time = $row['time'];
            $text = $row['content']."\n\n\n[i]Letzte Änderung am ".date('d.m.Y').' um '.date('H:i').'[/i]';
            
            $editid = '<input type="hidden" name="id" value="'.$id.'" />';
    
            $tpl->set('DJ',$djs);
            $tpl->set('DATE',$date);
            $tpl->set('TIME',$time);
            $tpl->set('TEXT',$text);
            $tpl->set('METHOD','edit');
            $tpl->set('EDITID',$editid);
            $tpl->out(2);
        }
        else
        {    
            $q = db_query("SELECT `a`.`name`,`b`.`userid` as djid FROM `prefix_radio_djs` b LEFT JOIN `prefix_user` a ON `a`.`id` = `b`.`userid`");
            $djs = '<select name="dj">';
        
            while ($row = db_fetch_assoc($q))
                $djs .= '<option value="'.$row['djid'].'"'.($row['djid'] == $_SESSION['authid'] ? 'selected="selected"' : '').'>'.$row['name'].'</option>';
        
            $djs .= '</select>';
    
            $date = date('Y-m-d');
            $time = date('H:i').' - '.date('H:i',mktime(date('H')+1,date('i'),date('s'),date('n'),date('j'),date('Y')));
            $text = '';
    
            $tpl->set('DJ',$djs);
            $tpl->set('DATE',$date);
            $tpl->set('TIME',$time);
            $tpl->set('TEXT',$text);
            $tpl->set('METHOD','save');
            $tpl->set('EDITID','');
            $tpl->out(2);
        }
    }
    
    require_once('include/includes/class/scRadioModul.php');
    echo getCopyright(false);
    $design->footer();
    ?>


    muss halt dementsprechend noch in der Ausgabe geändert werden. Um all die Optionen wie edit und löschen für nicht berechtigte auszublenden.

    Um zu verhindern das gäste Eintragen bzw nur leute mit Modulrecht eintragen können währe die frage in etwa so

    $berechtigt = has_right (0,'modulname'); # 0 als recht für alle, irrellevant weil er noch auf das Modulrecht prüft.


    Gruß


    Zuletzt modifiziert von Rock@wulf am 19.06.2013 - 13:14:00
    Meine Postings repräsentieren meine Meinung wenn nicht anders gekennzeichnet.
    MFG Rock@wulf
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    STRUWA Mitglied
    Registriert seit
    05.06.2013
    Beiträge
    38
    Beitragswertungen
    0 Beitragspunkte
    Vielen Dank! lächeln
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Fehlersuche und Probleme

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten