<?php
/* Ulyxex version 1.6.7.8 ***************/
/* code http://ulyxex.logz.org **********/
/* Andre Lozano http://andre-lozano.org */

//~ destinataires préciser votre liste de diffusion (ovh)
//~ nom_de_votre_ML-subscribe@votredomaine.com
//~ nom_de_votre_ML-unsubscribe@votredomaine.com

class ViewListDiffusion extends Ulyxex {
	public object $h;
	public object $t;
	public int $id;
	
	public function __construct($paramId=0){
		$this->h = New Htmlz();
		$this->t = New Translate();
		$this->id = $paramId;
		list($this->nameAdmin,$this->mailAdmin) = $this->mail_adress(1);
		//~ problème ionos avec make_seed ?
		//~ srand($this->make_seed());
		//~ send mail => densamil
		//~ expeditor => xeepidrot
		//~ subject => busejct
		//~ mesage => semaseg
		//~ mailer => iamlre
	}
	function mail_adress($userId){
		$dat = $this->user_params($userId);
		return array($dat['USERNAME'],$dat['MAIL']);
	}
	function generateRandomString($length = 10) {
		$characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
		$charactersLength = mb_strlen($characters);
		$randomString = '';
		for ($i = 0; $i < $length; $i++) {
			$randomString .= $characters[rand(0, $charactersLength - 1)];
		}
		return $randomString;
	}
	public function send_mail($mailingList=null){
		$h = $this->h;$t = $this->t;
		if (empty($mailingList)) {
			return $h->h2("no mailing list !");
		}
		if (isset($_POST[$_SESSION['inputname']]) && $h->num($_POST[$_SESSION['inputname']]) != $_SESSION['captcha']){
			return $h->h2("error captcha");
		}
		if (filter_var($_POST["xeepidrot"], FILTER_VALIDATE_EMAIL)){
			$expeditor = $_POST["xeepidrot"];
		} else {
			return $h->h2("mail incorrect");
		}
		
		$arr = explode("@",$mailingList);
		$subscribeMail = $arr[0]."-subscribe@".$arr[1];
		$unsubscribeMail = $arr[0]."-unsubscribe@".$arr[1];
		
		if ($_POST["subunsub"] == "subscribe") {
			$state = "subscribe";
			$listMail = $subscribeMail;
		} else {
			$state = "unsubscribe";	
			$listMail = $unsubscribeMail;	
		}
		$subject = "mailing list";
		
		$endSpace = " ";
		$mailHeader  = "From: ".$this->mailAdmin.$endSpace; // from has to be adminstrator mail
		$mailHeader .= "Reply-To : ".$expeditor.$endSpace;
		
		$mailBody   = "Mailing list : ".$mailingList.$endSpace."\n";
		$mailBody  .= "Origin Script : ".getenv("SERVER_NAME").getenv('REQUEST_URI').$endSpace."\n";
		$mailBody  .= "Origin IP : ".getenv("REMOTE_ADDR").$endSpace."\n\n";
		$mailBody  .= "From : ".$expeditor.$endSpace."\n";
		$mailBody  .= "Subject : ".$subject.$endSpace."\n\n";
		$mailBody  .= "Message : ".$state." ".$listMail.$endSpace;

		if (empty($this->mailAdmin) or $this->mailAdmin == "none" or $this->mailAdmin == "none@none.org"){
			//~ if you are here with no website mail that's wrong !
			exit("error email website empty or none!");
		} else {
			mail($this->mailAdmin, $subject, $mailBody, $mailHeader);
			return $h->h1("mail ok");
		}
	}
	public function mail_form(){
		$h = $this->h;$t = $this->t;
		$a = rand(1,90);
		$b = rand(1,10);
		$_SESSION['captcha'] = $a + $b;
		$_SESSION['inputname'] = $this->generateRandomString();
		$_[] = $h->p($h->lbl($t->wr("subscribe to the mailing list"),"subscrib").$h->inputradio("subscrib","subunsub","subscribe","checked"));
		$_[] = $h->p($h->lbl($t->wr("unsubscribe mailing list"),"unsubscrib").$h->inputradio("unsubscrib","subunsub","unsubscribe"));
		$_[] = $h->input("hidden","densamil",1);
		$_[] = $h->p($h->lbl($t->w("your mail"),"xeepidrot")).$h->p($h->input("email","xeepidrot","",$h->v("size",FIELDWIDTH)));
		$_[] = $h->p(
			$h->lbl($t->wr("solve").$h->b($a)." + ".$h->b($b)." = ",$_SESSION['inputname']).
			$h->input("text",$_SESSION['inputname'],"?",$h->v("onclick","javascript:this.value='';").$h->v("size","2").$h->v("style","font-weight:bold;text-align:center;")).SP_." ".$h->input("submit",null,$t->w("Submit"))
		);
		$inputs = implode("",$_);
		return $h->form($inputs,"iamlre","post","index.php?k=liste&v=".$this->id);
	}
	function make_seed(){
	  list($usec, $sec) = explode(' ', microtime());
	  return (float) $sec + ((float) $usec * 100000);
	}
}
?>

page url