Feedback Action


[Note: The feedback action is now included in Wikka by default starting with Wikka 1.1.3.1]

An upgrade of this action, working as a module for the UserAdmin tool or as a standalone action, is available here



This action displays a form for sending user feedback to the site administrator email, as specified in wakka.config.php.
It first validates the form, then sends it using the mail() function and displays a "thanks for your feedback"message

To use it you will first need to save the code below in a file called feedback.php in the actions folder.
Then simply add {{feedback}} in the page in which you want the feedback form to be displayed.

-- DarTar

<?php

// Displays a form to send feedback to the site administrator, as specified in wakka.config.php
// It first validates the form, then sends it using the mail() function;

$form = '<p>Fill in the form below to send us your comments:</p>
    <form method="post" action="'
.$this->tag.'&mail=result">
    Name: <input name="name" value="'
.$_POST["name"].'"type="text" /><br />
    Email: <input name="email" value="'
.$_POST["email"].'" type="text" /><br />
    Comments:<br />
    <textarea name="comments" rows="15" cols="40">'
.$_POST["comments"].'</textarea><br />
    <input type="submit" />
    </form>'
;

if ($_GET["mail"]=="result") {
    $name = $_POST["name"];
    $email = $_POST["email"];
    $comments = $_POST["comments"];
      list($user, $host) = sscanf($email, "%[a-zA-Z0-9._-]@%[a-zA-Z0-9._-]");
    if (!$name) {
        // a valid name must be entered
        echo "<p class=\"error\">Please enter your name</p>";  
        echo $form;
    } elseif (!$email || !strchr($email, "@") || !$user || !$host) {
        // a valid email address must be entered
        echo "<p class=\"error\">Please enter a valid email address</p>";  
        echo $form;
    } elseif (!$comments) {
        // some text must be entered
        echo "<p class=\"error\">Please enter some text</p>";  
        echo $alert;
        echo $form;
    } else {
        // send email and display message
        $msg = "Name:\t".$name."\n";
        $msg .= "Email:\t".$email."\n";
        $msg .= "Comments:".$comments."\n";
        $recipient = $this->GetConfigValue("admin_email");
        $subject = "Feedback from ".$this->GetConfigValue("wakka_name");
        $mailheaders = "From:".$email."\n";
        $mailheaders .= "Reply-To:".$email."\n\n";
        mail($recipient, $subject, $msg, $mailheaders);
        echo $this->Format("Thanks for your interest! Your feedback has been sent to [[".$recipient."]] ---");
        echo $this->Format("Return to the [[".$this->GetConfigValue("root_page")." | main page]]");
        // optionally displays the feedback text
        //echo $this->Format("---- **Name:** ".$name."---**Email:** ".$email."---**Comments:** ---".$comments);
    }  
} else {
    echo $form;
}
?>


with some simple modifications this form can be used to send a mail to any registered user.

the idea is to use either a given parameter "to" or the page-tag to fetch the mail-address out of the wakka_users table

replace the line $recipient = $this->GetConfigValue("admin_email"); with the following:

        if (!$to) $to = $this->tag;
        $record = $this->LoadUser($to);
        if ($recipient = $record["email"]) {
            // proceed with mailing
        } else echo "<p class='error'>Sorry, can't address recipient</p>";


after saving the modified code as mail.php in the actions folder, you can address me with the action {{mail to="DreckFehler"}} or simply place a {{mail}} onto your personal userpage to have a contact-form without publishing your email-address (don't echo the address in the tnx-message ;) this should rather be changed to "...your feedback has been sent to [[".$to."]] ---"). -- DreckFehler

--

Bug found!


There is a bug in the feedback action when this is used on wikka installations that don't adopt rewriterules.
The submit button currently posts the form to:
$this->tag.'?mail=result'
which opens an invalid URL if rewrite_mode is set to "0" in wikka.config.php.
The form should be posted instead to:
$this->tag.'&mail=result'
Note: this should work in any case, whether rewrite_mode is set to "0" or "1"

I've fixed the code above.
Comments
Comment by WazoO
2006-06-04 16:50:14
Busy little spammer .. where oh where are any of the Moderators?
Comment by DarTar
2006-06-04 20:35:11
Spam removed - I had one day off :p
If the spam continues, I'm afraid we'll have to restrict comment ACLs.
Comment by DarTar
2006-06-05 03:46:18
> I'm afraid we'll have to restrict comment ACLs.
done
Comment by KairoMiami
2007-11-22 01:04:48
Hi DarTar, I have your very beautiful script included to my site http://www.genfusion.net, and it looks as i f my corrections (which actually seem unnecessary (concerning this line:
$this->tag.'&mail=result') still don't make my script work:

I get:

"Not Found The requested URL /ww/TobiasAellig&mail=result was not found on this server."

Can you help me with that? Your NotifyOnChange-Script works perfectly nice and fine over here :-)

Thanks, Tobias Kalle Aellig
http://www.genfusion.info
info@genfusion.info
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki