LoGD Standardrelease steht hier zum Download zur Verfügung!

Zeige Source: /logd/todolist.php

Hier klicken für den Source, ODER
Weitere Dateien, von denen du den Quelltext sehen kannst:
(Das Lesen des Source, um sich spielerische Vorteile zu verschaffen, ist nicht erlaubt. Solltest du Schwachstellen oder Fehler entdecken, bist du als Spieler verpflichtet, diese zu melden.)

Source von: /logd/todolist.php

<?php
/*
 * Author: Chaosmaker <webmaster@chaosonline.de>
 * Server: http://logd.chaosonline.de
 *
 * Todolist for superuser grotto

CREATE TABLE IF NOT EXISTS `todolist` (
  `taskid` int(10) unsigned NOT NULL auto_increment,
  `acctid` int(10) unsigned NOT NULL default '0',
  `postdate` datetime NOT NULL default '0000-00-00 00:00:00',
  `title` varchar(120) NOT NULL default '',
  `task` text NOT NULL,
  `importance` enum('unwichtig','nicht dringend','normal','dringend','sehr dringend') NOT NULL default 'normal',
  `implementation` int(10) unsigned NOT NULL default '0',
  `finished` datetime NOT NULL default '0000-00-00 00:00:00',
  `status` enum('offen','angenommen','abgelehnt','umgesetzt') NOT NULL default 'offen',
  `userinfo` enum('geheim','publik') NOT NULL default 'geheim',
  PRIMARY KEY  (`taskid`),
  KEY `status` (`status`),
  KEY `finished` (`finished`)
) TYPE=MyISAM COMMENT='Todoliste';

 */
require_once "common.php";
require_once 
"func/showform.php";
require_once 
"func/isnewday.php";
isnewday(2);

page_header('Todolist');

addnav("W?Zurück zum Weltlichen","village.php");
addnav("G?Zurück zur Grotte","superuser.php");

if (
$_GET['op']=='inserttask') {
    if (
trim($_POST['title'])!='' && trim($_POST['task'])!='') {
        
$_POST['task'] = mysqli_real_escape_string($mysqlistripslashes($_POST['task']));
        
$_POST['title'] = mysqli_real_escape_string($mysqlistripslashes($_POST['title']));
        
$sql 'INSERT INTO todolist (acctid,postdate,title,task,importance) VALUES ('.$session['user']['acctid'].',NOW(),"'.$_POST['title'].'","'.$_POST['task'].'","'.$_POST['importance'].'")';
        
db_query($sql);
        
$id db_insert_id(LINK);
        
redirect('todolist.php?op=viewtask&id='.$id);
    }
    else {
        
output('`4`bFehler: Bitte gib sowohl Titel als auch Beschreibung an!`b`0`n`n');
        
$_GET['op'] = 'newtask';
    }
}
elseif (
$_GET['op']=='deltask') {
    
$sql 'DELETE FROM commentary WHERE section="todolist-'.$_GET['id'].'"';
    
db_query($sql);
    
$sql 'DELETE FROM todolist WHERE taskid='.$_GET['id'];
    
db_query($sql);
    
$_GET['op'] = '';
}


if (
$_GET['op']=='viewtask' && $_GET['id']!='') {
    
addnav('Aktualisieren','todolist.php?op=viewtask&id='.$_GET['id']);
    
addnav('Zurück','todolist.php');
    
output('`c`bTodoliste - Aufgabendetails`b`c`n`n');

    
addcommentary();
    if (
$_POST['edittask']!='') {
        if (
trim($_POST['title'])!='' && trim($_POST['task'])!='') {
            
$_POST['task'] = mysqli_real_escape_string($mysqlistripslashes($_POST['task']));
            
$_POST['title'] = mysqli_real_escape_string($mysqlistripslashes($_POST['title']));
            
$sql 'UPDATE todolist SET title="'.$_POST['title'].'",task="'.$_POST['task'].'",importance="'.$_POST['importance'].'",status="'.$_POST['status'].'",userinfo="'.$_POST['userinfo'].'"'.($_POST['status']=='umgesetzt'||$_POST['status']=='abgelehnt'?',finished=NOW()':',finished=""').' WHERE taskid='.$_GET['id'];
            
db_query($sql);
            
$sql 'INSERT INTO commentary (section, author, comment, postdate) VALUES ("todolist-'.$_GET['id'].'",'.$session['user']['acctid'].',"/me hat den Eintrag am '.date('d.m.Y, H:i').' Uhr, geändert.",NOW())';
            
db_query($sql);
        }
        else {
            
output('`4`bFehler: Bitte gib sowohl Titel als auch Beschreibung an!`b`0`n`n');
        }
    }
    elseif (
$_GET['act']=='taketask') {
        
$sql 'UPDATE todolist SET implementation='.$session['user']['acctid'].' WHERE taskid='.$_GET['id'];
        
db_query($sql);
        
redirect('todolist.php?op=viewtask&id='.$_GET['id']);
    }
    elseif (
$_GET['act']=='droptask') {
        
$sql 'UPDATE todolist SET implementation=0 WHERE taskid='.$_GET['id'];
        
db_query($sql);
        
redirect('todolist.php?op=viewtask&id='.$_GET['id']);
    }

    
$session['todolist'][$_GET['id']] = date('Y-m-d H:i:s');

    
$sql 'SELECT t.*, a1.name AS poster, a2.name AS implementor FROM todolist t LEFT JOIN accounts a1 USING(acctid) LEFT JOIN accounts a2 ON a2.acctid=t.implementation WHERE t.taskid='.$_GET['id'];
    
$result db_query($sql);
    
$row db_fetch_assoc($result);

    if (
$row['implementation']==0) {
        
$row['implementor'] = '`iniemand`i [<a href="todolist.php?op=viewtask&act=taketask&id='.$_GET['id'].'">übernehmen</a>]';
        
addnav('','todolist.php?op=viewtask&act=taketask&id='.$_GET['id']);
    }
    else {
        if (
$row['implementation']==$session['user']['acctid']) {
            
$row['implementor'] .= ' [<a href="todolist.php?op=viewtask&act=droptask&id='.$_GET['id'].'">abgeben</a>]';
            
addnav('','todolist.php?op=viewtask&act=droptask&id='.$_GET['id']);
        }
        else {
            
$row['implementor'] .= ' [<a href="todolist.php?op=viewtask&act=droptask&id='.$_GET['id'].'">abnehmen</a> ';
            
addnav('','todolist.php?op=viewtask&act=droptask&id='.$_GET['id']);
            
$row['implementor'] .= '| <a href="todolist.php?op=viewtask&act=taketask&id='.$_GET['id'].'">übernehmen</a>]';
            
addnav('','todolist.php?op=viewtask&act=taketask&id='.$_GET['id']);
        }
    }

    if (
$row['finished']<=0$row['finished'] = '---';

    
output('<form action="todolist.php?op=deltask&id='.$_GET['id'].'" method="post">',true);
    
addnav('','todolist.php?op=deltask&id='.$_GET['id']);
    
output('<input type="submit" class="button" value="Eintrag löschen" onClick="return confirm(\'Soll der Eintrag wirklich gelöscht werden?\');" />',true);
    
output('</form>',true);

    
output('<form action="todolist.php?op=viewtask&id='.$_GET['id'].'" method="post">',true);
    
addnav('','todolist.php?op=viewtask&id='.$_GET['id']);
    
output('<input type="hidden" name="edittask" value="1" />',true);
    
$form = array(
            
'title'=>'Titel (max. 50 Zeichen)',
            
'task'=>'Beschreibung,textarea,80,25',
            
'postdate'=>'Erstellt,viewonly',
            
'poster'=>'Von,viewonly',
            
'implementor'=>'Umsetzung,viewonly',
            
'importance'=>'Dringlichkeit,enum,unwichtig,,nicht dringend,,normal,,dringend,,sehr dringend,',
            
'status'=>'Status,enum,offen,,angenommen,,abgelehnt,,umgesetzt,',
            
'userinfo'=>'Infos,enum,geheim,,publik,',
            
'finished'=>'Fertiggestellt,viewonly'
            
);
    
showform($form,$row);
    
output('</form>',true);

    
output("`n`@Kommentare:`n");
    
viewcommentary("todolist-{$_GET['id']}","Hinzufügen",200);
}
elseif (
$_GET['op']=='newtask') {
    
addnav('Zurück','todolist.php');
    
output('`c`bTodoliste - Aufgabe hinzufügen`b`c`n`n');
    
output('<form action="todolist.php?op=inserttask" method="post">',true);
    
addnav('','todolist.php?op=inserttask');
    
$form = array(
            
'title'=>'Titel (max. 120 Zeichen)',
            
'task'=>'Beschreibung,textarea,60,10',
            
'importance'=>'Dringlichkeit,enum,unwichtig,,nicht dringend,,normal,,dringend,,sehr dringend,'
            
);
    
$row = array('title'=>$_POST['title'],'task'=>$_POST['task'],'importance'=>$_POST['importance']);
    
showform($form,$row);
    
output('</form>',true);
}
else {
    
$sql="SELECT status FROM todolist WHERE status='offen'";
    
$dummy=db_query($sql);
    
$offene=db_num_rows($dummy);
    
$sql="SELECT status FROM todolist WHERE status='umgesetzt'";
    
$dummy=db_query($sql);
    
$umgesetzte=db_num_rows($dummy);
    
$sql="SELECT status FROM todolist WHERE status='abgelehnt'";
    
$dummy=db_query($sql);
    
$abgelehnte=db_num_rows($dummy);
    
    
addnav('Aktualisieren','todolist.php');
    
addnav('Offene ('.$offene.')','todolist.php?typ=offen');
    
addnav('Umgesetzte ('.$umgesetzte.')','todolist.php?typ=umgesetzt');
    
addnav('Abgelehnte ('.$abgelehnte.')','todolist.php?typ=abgelehnt');

    
output('`c`bTodoliste - aktuelle Aufgaben`b`c`n`n');
    
output("<table border=0 cellpadding=2 cellspacing=1 bgcolor='#999999'>",true);
    
output("<tr class='trhead'><td><b>Aufgabe</b></td><td><b>Erstellt</b></td><td><b>Von</b></td><td><b>Umsetzung</b></td><td><b>Kommentare</b></td><td><b>Letzter Kommentar</b></td><td><b>Dringlichkeit</b></td><td><b>Status</b></td><td><b>Infos</b></td></tr>",true);
    
$i 0;
    if(isset(
$_GET['typ']) && $_GET['typ']!=='offen' && $_GET['typ']!==''){
        
$sql 'SELECT t.*, a1.name AS poster, a2.name AS implementor, IF(c.section IS NULL,0,COUNT(*)) AS commentcount, MAX(c.postdate) AS lastcomment FROM todolist t LEFT JOIN accounts a1 USING(acctid) LEFT JOIN accounts a2 ON a2.acctid=t.implementation LEFT JOIN commentary c ON c.section=CONCAT("todolist-",t.taskid) WHERE t.status="'.$_GET['typ'].'" GROUP BY t.taskid ORDER BY t.status ASC, t.taskid DESC, t.importance DESC, lastcomment DESC, postdate DESC';
    }else{
        
$sql 'SELECT t.*, a1.name AS poster, a2.name AS implementor, IF(c.section IS NULL,0,COUNT(*)) AS commentcount, MAX(c.postdate) AS lastcomment FROM todolist t LEFT JOIN accounts a1 USING(acctid) LEFT JOIN accounts a2 ON a2.acctid=t.implementation LEFT JOIN commentary c ON c.section=CONCAT("todolist-",t.taskid) WHERE t.status="offen" GROUP BY t.taskid ORDER BY t.status ASC, t.taskid DESC, t.importance DESC, lastcomment DESC, postdate DESC';
    }
    
$result db_query($sql) or die(db_error(LINK));
    while (
$row db_fetch_assoc($result)) {
        
output("<tr class='".($i%2?"trdark":"trlight")."'><td>",true);
        if (
max($row['postdate'],$row['lastcomment'])>max($session['lastlogoff'],$session['todolist'][$row['taskid']])) {
            
output('`4*`0');
        }
        switch(
$row['status']) {
            case 
'angenommen':
                
$col '`6';
                break;
            case 
'abgelehnt':
                
$col '`4';
                break;
            case 
'umgesetzt':
                
$col '`2';
                break;
            case 
'offen':
            default:
                
$col '`Q';
        }
        
output('<a href="todolist.php?op=viewtask&id='.$row['taskid'].'">',true);
        
addnav('','todolist.php?op=viewtask&id='.$row['taskid']);
        
output($row['title']);
        
output('</a>',true);
        
output('</td><td>',true);
        
output($row['postdate']);
        
output('</td><td>',true);
        
output($row['poster']);
        
output('</td><td>',true);
        if (
$row['implementation']>0output($row['implementor']);
        else 
output('---');
        
output('</td><td>',true);
        
output($row['commentcount']);
        
output('</td><td>',true);
        if (
$row['lastcomment']>0output($row['lastcomment']);
        else 
output('---');
        
output('</td><td>',true);
        
output($row['importance']);
        
output('</td><td>',true);
        
output($col.$row['status'].'`0');
        
output('</td><td>',true);
        
output($row['userinfo']);
        
output('</td></tr>',true);
        
$i++;
    }
    
output('</table>',true);
    
addnav('Aufgabe hinzufügen','todolist.php?op=newtask');
}

page_footer();