Current File : /home/karenpetzb/application/modules/default/controllers/ContactController.php
<?php

class ContactController  extends Modules_Default_Controllers_MainController
{

	public function init()
	{
		$this->view->baseUrl = $this->getBaseUrl();
	}

	public function indexAction()
	{
        $isAjaxResponse = false;
		if ($this->_request->isPost())
        {
	        $this->sendEmail();
            $isAjaxResponse = true;
        } else if (isset($_GET["required"]) || isset($_GET["type"]) || isset($_GET["value"])) {
	        $this->validateData();
            $isAjaxResponse = true;
        }

        if ($isAjaxResponse) {
		    $layout = Zend_Layout::getMvcInstance();
		    $layout->disableLayout();
		    $this->render('empty');
        }
	} 
    
    // Validates data and sending e-mail
    function sendEmail()
    {
        $filter = new Zend_Filter();
		$filter	->addFilter(new Zend_Filter_StripTags())
		->addFilter(new Zend_Filter_StringTrim());
        
		$validator = new Zend_Validate();
		$validator -> addValidator(new Zend_Validate_NotEmpty());

		$params = $this->_request->getPost();

	    $output = '';
	    $error = 0;
	    if(!$validator->isValid($params['name']))
	    {
		    $output .= '<p>Ins�rer votre nom</p>';
		    $error = 1;
	    }
        
        $validatorEmail = new Zend_Validate_EmailAddress();
        
	    if(!$validator->isValid($params['email']))
	    {
		    $output .= '<p>Ins�rer votre e-mail</p>';
		    $error = 1;
	    }
	    elseif(!$validatorEmail->isValid($params['email']))
	    {
		    $output .= '<p>Mauvais e-mail</p>';
		    $error = 1;
	    }
	
	    if(!$validator->isValid($params['message']))
	    {
		    $output .= '<p>Ins�rer votre message</p>';
		    $error = 1;
	    }
	    if($error)
	    {
		    echo '<blockquote class="error margin_1line margin_bottom_1line">'.utf8_encode($output).'</blockquote>';
	    }
	    else
	    {
			$this->trySendEmail($params, 0);
	    }
    }
	 function trySendEmail($params, $count) {
		 
		$to = $this->contact_Mail;
		$subject = "Message depuis la gallery";
		$mbody = "
		Emetteur:
		".$params['name']."
		".$params['email']."
		
		Message:
		".$params['message']."
		
		";
		try {  
			$mail = new Zend_Mail();
			$mail->setBodyHtml($mbody);
			$mail->setFrom(strip_tags($params['email']), $params['name']);
			$mail->addTo($to);
			$mail->setSubject($subject);
			$mail->send();

			echo '<blockquote class="success margin_1line margin_bottom_1line">'.utf8_encode('E-mail envoy�').'</blockquote>';
			   
		} catch (Zend_Exception $e) { 
			if ($count <= 3) {
				$count += 1; 
				$this->trySendEmail($params, $count);
			} else { 
				echo '<blockquote class="error margin_1line margin_bottom_1line">'.utf8_encode('Une erreur est survenue ... Veuillez r�essayer.').'</blockquote>';		
				$this->log($e->getMessage(),'err'); 
			}
		} 
	 }

    function validateData() {
	 
	    $required = $this->_request->getParam('required');
	    $type = $this->_request->getParam('type');
	    $value = $this->_request->getParam('value');

	    $this->validateRequired($required, $value, $type);

	    switch ($type) {
		    case 'number':
			    $this->validateNumber($value);
			    break;
		    case 'alphanum':
			    $this->validateAlphanum($value);
			    break;
		    case 'alpha':
			    $this->validateAlpha($value);
			    break;
		    case 'date':
			    $this->validateDate($value);
			    break;
		    case 'email':
			    $this->validateEmail($value);
			    break;
		    case 'url':
			    $this->validateUrl($value);
		    case 'all':
			    $this->validateAll($value);
			    break;
	    }
    }

    // The function to check if a field is required or not
    function validateRequired($required, $value, $type) {
	    if($required == "required") {

		    // Check if we got an empty value
		    if($value == "") {
			    echo "false";
			    exit();
		    }
	    } else {
		    if($value == "") {
			    echo "none";
			    exit();
		    }
	    }
    }

    // Validation of an Email Address
    function validateEmail($value) {
        $validatorEmail = new Zend_Validate_EmailAddress();        
	    if($validatorEmail->isValid($value)) {
		    echo "true";
	    } else {
		    echo "false";
	    }
    }

    // Validation of a date
    function validateDate($value) {
	    if(ereg("^(([1-9])|(0[1-9])|(1[0-2]))\/(([0-9])|([0-2][0-9])|(3[0-1]))\/(([0-9][0-9])|([1-2][0,9][0-9][0-9]))$", $value, $regs)) {
		    echo "true";
	    } else {
		    echo "false";
	    }
    }

    // Validation of an URL
    function validateUrl($value) {
	    if(ereg("^(http|https|ftp)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&amp;%\$#\=~])*[^\.\,\)\(\s]$", $value, $regs)) {
		    echo "true";
	    } else {
		    echo "false";
	    }
    }

    // Validation of characters
    function validateAlpha($value) {
	    if(ereg("^[a-zA-Z]+$", $value, $regs)) {
		    echo "true";
	    } else {
		    echo "false";
	    }
    }

    // Validation of characters and numbers
    function validateAlphanum($value) {
	    if(ereg("^[a-zA-Z0-9]+$", $value, $regs)) {
		    echo "true";
	    } else {
		    echo "false";
	    }
    }

    // Validation of numbers
    function validateNumber($value) {
	    if(ereg("^[0-9]+$", $value, $regs)) {
		    echo "true";
	    } else {
		    echo "false";
	    }
    }

    // Validation of numbers
    function validateAll($value) {
		    echo "true";
    }

}



?>