upload_dir = realpath(dirname(__FILE__)) . '/upload';
}
function Formesmagiques(){
$this->PluginsClassiques();
}
function init()
{
$this->ajout_desc(
self::NOMMODULE,
"Plugin Formes Magiques",
"Ce plugin permet de créer très simplement des formulaires expédiés par email et/ou stockés en base de donnée",
1);
if (! (is_dir($this->upload_dir) || mkdir($this->upload_dir, 0777, true))) {
die("Ne peut créer le dossier de stockage des fichiers $this->upload_dir. Merci de vérifier les permissions.");
}
$fo = new Formulaire;
$fo->init();
$fi = new FormulaireInstance();
$fi->init();
$fc = new FormulaireChamp();
$fc->init();
$variable = new Variable();
if(!$variable->charger("contact")){
$emailcontact = new variable();
$emailcontact->charger("emailcontact");
$variable->nom = "contact";
$variable->valeur = $emailcontact->valeur;
$variable->add();
}
$message = new Message();
if (! $message->charger("envoiformulaire")) {
$message->nom = "envoiformulaire";
$lastid = $message->add();
$messagedesc = new Messagedesc();
$messagedesc->message = $lastid;
$messagedesc->intitule = "Message d'envoi de formulaire Formes Magiques";
$messagedesc->lang = 1;
$messagedesc->titre = "Envoi du formulaire __TITRE_FORMULAIRE__";
$messagedesc->chapo = "";
$messagedesc->descriptiontext = "
Bonjour,
Le formulaire __TITRE_FORMULAIRE__ a été envoyé à votre intention le __DATE_ENVOI__ à __HEURE_ENVOI__ depuis l'adresse IP __IP_ENVOI__. Les informations indiquées sont les suivantes :
Bonjour,
Le formulaire __TITRE_FORMULAIRE__ a été envoyé à votre intention le __DATE_ENVOI__ à __HEURE_ENVOI__ depuis l'adresse IP __IP_ENVOI__. Les informations indiquées sont les suivantes :
Envoyé depuis le site.
"; $messagedesc->add(); } $query = "CREATE TABLE `contact` ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `nom` VARCHAR( 255 ) NOT NULL , `prenom` VARCHAR( 255 ) NOT NULL , `email` VARCHAR( 255 ) NOT NULL , `tel` VARCHAR( 30 ) NOT NULL , `sujet` VARCHAR( 255 ) NOT NULL , `message` TEXT NOT NULL , `adresse` VARCHAR( 255 ) NOT NULL , `cpostal` VARCHAR( 255 ) NOT NULL , `ville` VARCHAR( 255 ) NOT NULL , `date` DATETIME NOT NULL , `lu` INT NOT NULL )"; $this->query($query); } function charger($id){ return $this->getVars("select * from $this->table where id=\"$id\""); } function destroy() { // $this->query("DROP TABLE `".self::TABLE."`"); } function action(){ global $action; switch($action){ case "contact": $this->crea_contact(); break; } } function demarrage(){ if(!isset($_SESSION["contact"])){ $_SESSION["contact"] = new Contact(); } } function crea_contact(){ $urlsite = new Variable("urlsite"); $contact = new Contact(); $contact->nom = strip_tags($_POST["nom"]); $contact->prenom = strip_tags($_POST["prenom"]); if( preg_match("/^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]{2,}[.][a-zA-Z.]+$/",$_POST["email"])) $contact->email = strip_tags($_POST["email"]); $contact->tel = strip_tags($_POST["tel"]); $contact->sujet = strip_tags($_POST["sujet"]); $contact->message = strip_tags($_POST["message"]); $contact->adresse = strip_tags($_POST["adresse"]); $contact->cpostal = strip_tags($_POST["cpostal"]); $contact->ville = strip_tags($_POST["ville"]); $contact->date = date("Y-m-d H:i:s"); $contact->lu = 0; $contact->add(); } public function traiter_formulaire($formdesc) { list($nomaction, $parametres) = explode(':', $formdesc->action); $nomaction = strtolower($nomaction); if ($nomaction == 'email') { $this->traiter_formulaire_email($formdesc, $parametres); } else { die("Action '$action' inconnue pour la form $formdesc->nom"); } } private function traiter_formulaire_bdd($formdesc, $parametres) { $form = new Formulaire(); if (! $form->charger($formdesc->nom)) { $form->nom = $formdesc->nom; $form->add(); $form->charger($formdesc->nom); } $instance = new FormulaireInstance(); $instance->formulaire = $form->id; $instance->date = time(); $instance->ip = $_SERVER[REMOTE_ADDR]; $instance->lu = false; $id = $instance->add(); foreach($formdesc->champs as $champ) { // Ignorer les captchas if ($champ->type == DescripteurChamp::TYPE_CAPTCHA) continue; $bd = new ChampInstance(); $bd->instance = $id; $bd->nom = $champ->formvar; $bd->label = $champ->label; $bd->valeur = $champ->valeur; $bd->add(); } } private function traiter_formulaire_email($formdesc, $parametres) { $adresses = explode(',', $parametres); $message = new Message("envoiformulaire"); $md = new Messagedesc($message->id); $sujet = $this->substitutions_email($md->titre, $formdesc); $texte = $this->substitutions_email($md->descriptiontext, $formdesc); $textehtml = $this->substitutions_email($md->description, $formdesc); foreach($adresses as $adresse) { $res = Mail::envoyer( $adresse, $adresse, Variable::lire('nomsite'), Variable::lire('emailfrom'), $sujet, $textehtml, $texte ); } } private function substitutions_email($texte, $formdesc) { $texte = str_replace("__TITRE_FORMULAIRE__", $formdesc->nom, $texte); $texte = str_replace("__DATE_ENVOI__", date("d/m/Y"), $texte); $texte = str_replace("__HEURE_ENVOI__", date("H:i:s"), $texte); $texte = str_replace("__IP_ENVOI__", $_SERVER['REMOTE_ADDR'], $texte); if (preg_match_all("`