All pastes #40612 Raw Edit

Stuff

public text v1 · immutable
#40612 ·published 2006-02-07 22:05 UTC
rendered paste body
<?php

	class todo extends IRCPlugin {
		
		public function run(IRCMessage $msg) {
			// si c'est un message sur un chan ou un msg en pv
			if($msg->command == 'PRIVMSG') { 
				$T = array();
				if(ereg("^!todo ([[:alnum:]]+)(.*)", $msg->msg, $T)) {
					
					$mytodo="plugins_no_data/todos/".str_replace("/","",$msg->nick);

if($T[1]=="listall"){ 
$rep=opendir("plugins_no_data/todos/");
if(empty($msg->chan)) { $this->main->servers[$msg->address]->users->getUserByNick($msg->nick)->sendMsg("TODOs de ".$msg->nick.":"); } else { $this->main->servers[$msg->address]->chans->getChanByName($msg->chan)->sendMsg("TODOs de ".$msg->nick.":"); }

while ($file = readdir($rep)){

if($file != '..' && $file !='.' && $file !='' && ereg($msg->nick."-",$file) && !ereg("~",$file)){ 
if (is_file("plugins_no_data/todos/".$file)){
if($file==$msg->nick){ $titre="Général:"; } else { $titre=str_replace($msg->nick."-","",$file).":"; }
if(empty($msg->chan)) { $this->main->servers[$msg->address]->users->getUserByNick($msg->nick)->sendMsg($titre); } 
else { $this->main->servers[$msg->address]->chans->getChanByName($msg->chan)->sendMsg($titre); }
$page = file_get_contents("plugins_no_data/todos/".$file);
$page=ereg_replace("(.*)\n","\\1",utf8_decode($page));
$npage=explode("\n",$page);
for($i=0;$i<count($npage);$i++){
if(empty($msg->chan)) { $this->main->servers[$msg->address]->users->getUserByNick($msg->nick)->sendMsg(($i+1).". ".$npage[$i]); } else {
if(!ereg(" (.*)",$T[2],$U)){ 
$this->main->servers[$msg->address]->chans->getChanByName($msg->chan)->sendMsg(($i+1).". ".$npage[$i]);
} else { $reponse .= ($i+1).". ".$npage[$i].$U[1]." "; }
}
} }
 } } }

if($T[1]=="add"){
$handle=fopen($mytodo,"a");
$BoA=ereg_replace(" (.*)","\\1",$T[2]);
fwrite($handle,$BoA."\n");
fclose($handle);
$reponse=$msg->nick."> TODO enregistré.";
 }
if($T[1]=="list"){
if($page = file_get_contents($mytodo)){
$page=ereg_replace("(.*)\n","\\1",utf8_decode($page));
//if(ereg(" (.*)",$T[2],$U)){ $separator = $U[1]; } else { $separator= "\n"; }
$npage=explode("\n",$page);
if(empty($msg->chan)) { $this->main->servers[$msg->address]->users->getUserByNick($msg->nick)->sendMsg("TODO de ".$msg->nick.":"); }
else { $this->main->servers[$msg->address]->chans->getChanByName($msg->chan)->sendMsg("TODO de ".$msg->nick.":"); }
for($i=0;$i<count($npage);$i++){
if(empty($msg->chan))  {$this->main->servers[$msg->address]->users->getUserByNick($msg->nick)->sendMsg(($i+1).". ".$npage[$i]); } 
else { 
if(!ereg(" (.*)",$T[2],$U)){ 
$this->main->servers[$msg->address]->chans->getChanByName($msg->chan)->sendMsg(($i+1).". ".$npage[$i]);
} else { $reponse .= ($i+1).". ".$npage[$i].$U[1]." "; }
 }
 } } else { $reponse="Il n'y a pas de TODO enregistré pour ".$msg->nick."."; }
}
if($T[1]=="del" or $T[1]=="sup"){
if($page = file_get_contents($mytodo)){
$page=ereg_replace("(.*)\n","\\1",utf8_decode($page));
$npage=explode("\n",$page);
for($i=0;$i<count($npage);$i++){
if(($T[2]-1)!=$i){
$newinput.=$npage[$i]."\n";
} else { $tss=$npage[$i]; } }
$handle=fopen($mytodo,"w");
fwrite($handle,utf8_encode($newinput));
fclose($handle);
$reponse=$msg->nick.'> "'.$tss.'" supprimé.';
} else { $reponse="Il n'y a pas de TODO enregistré pour ".$msg->nick."."; }
}

if($T[1]=="add2"){
ereg(" ([[:alnum:]]+) (.*)",$T[2],$BoA);
$handle=fopen($mytodo."-".$BoA[1],"a");
fwrite($handle,$BoA[2]."\n");
fclose($handle);
$reponse=$msg->nick."> todo enregistré dans ".$BoA[1].".";
}
if($T[1]=="list2"){
ereg(" ([[:alnum:]]+)",$T[2],$BoA);

if($page = file_get_contents($mytodo."-".$BoA[1])){
$page=ereg_replace("(.*)\n","\\1",utf8_decode($page));
$npage=explode("\n",$page);
if(empty($msg->chan)) {
$this->main->servers[$msg->address]->users->getUserByNick($msg->nick)->sendMsg("TODO ".$BoA[1]." de ".$msg->nick.":");}
else { $this->main->servers[$msg->address]->chans->getChanByName($msg->chan)->sendMsg("TODO ".$BoA[1]." de ".$msg->nick.":");  }
for($i=0;$i<count($npage);$i++){
if(empty($msg->chan)) {
$this->main->servers[$msg->address]->users->getUserByNick($msg->nick)->sendMsg(($i+1).". ".$npage[$i]); }
else {
if(ereg(" ([[:alnum:]]+) (.*)",$T[2],$U)){ $reponse .= ($i+1).". ".$npage[$i].$U[2]." "; } else {
 $this->main->servers[$msg->address]->chans->getChanByName($msg->chan)->sendMsg(($i+1).". ".$npage[$i]); } }

 } } else { $reponse="Il n'y a pas de TODO ".$BoA[1]." enregistré pour ".$msg->nick."."; }
}

if($T[1]=="del2" or $T[1]=="sup2"){
ereg(" ([[:alnum:]]+) ([[:digit:]]+)",$T[2],$BoA);
if($page = file_get_contents($mytodo."-".$BoA[1])){
$page=ereg_replace("(.*)\n","\\1",utf8_decode($page));
$npage=explode("\n",$page);
for($i=0;$i<count($npage);$i++){
if(($BoA[2]-1)!=$i){
$newinput.=$npage[$i]."\n";
} else { $tss=$npage[$i]; } }
$handle=fopen($mytodo."-".$BoA[1],"w");
fwrite($handle,utf8_encode($newinput));
fclose($handle);
$reponse=$msg->nick.'> "'.$tss.'" supprimé dans '.$BoA[1].'.';
} else { $reponse="Il n'y a pas de TODO enregistré pour ".$msg->nick."."; }
}
				
					
						if($reponse){ if(empty($msg->chan)) {
							// si la demande a été faie par PV, on réponds en PV
							$this->main->servers[$msg->address]->users->getUserByNick($msg->nick)->sendMsg($reponse);
						} else {
							// sinon, on réponds sur le chan
							$this->main->servers[$msg->address]->chans->getChanByName($msg->chan)->sendMsg($reponse);
						} }
					
				}
			}
		}
	}
?>