You've already forked joomla_test
							
							first commit
This commit is contained in:
		
							
								
								
									
										189
									
								
								components/com_contact/controllers/contact.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										189
									
								
								components/com_contact/controllers/contact.php
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,189 @@
 | 
			
		||||
<?php
 | 
			
		||||
/**
 | 
			
		||||
 * @package     Joomla.Site
 | 
			
		||||
 * @subpackage  com_contact
 | 
			
		||||
 *
 | 
			
		||||
 * @copyright   Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
 | 
			
		||||
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
defined('_JEXEC') or die;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @package     Joomla.Site
 | 
			
		||||
 * @subpackage  com_contact
 | 
			
		||||
 */
 | 
			
		||||
class ContactControllerContact extends JControllerForm
 | 
			
		||||
{
 | 
			
		||||
	public function getModel($name = '', $prefix = '', $config = array('ignore_request' => true))
 | 
			
		||||
	{
 | 
			
		||||
		return parent::getModel($name, $prefix, array('ignore_request' => false));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public function submit()
 | 
			
		||||
	{
 | 
			
		||||
		// Check for request forgeries.
 | 
			
		||||
		JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
 | 
			
		||||
 | 
			
		||||
		$app    = JFactory::getApplication();
 | 
			
		||||
		$model  = $this->getModel('contact');
 | 
			
		||||
		$params = JComponentHelper::getParams('com_contact');
 | 
			
		||||
		$stub   = $this->input->getString('id');
 | 
			
		||||
		$id     = (int) $stub;
 | 
			
		||||
 | 
			
		||||
		// Get the data from POST
 | 
			
		||||
		$data  = $this->input->post->get('jform', array(), 'array');
 | 
			
		||||
 | 
			
		||||
		$contact = $model->getItem($id);
 | 
			
		||||
 | 
			
		||||
		$params->merge($contact->params);
 | 
			
		||||
 | 
			
		||||
		// Check for a valid session cookie
 | 
			
		||||
		if ($params->get('validate_session', 0))
 | 
			
		||||
		{
 | 
			
		||||
			if (JFactory::getSession()->getState() != 'active'){
 | 
			
		||||
				JError::raiseWarning(403, JText::_('COM_CONTACT_SESSION_INVALID'));
 | 
			
		||||
 | 
			
		||||
				// Save the data in the session.
 | 
			
		||||
				$app->setUserState('com_contact.contact.data', $data);
 | 
			
		||||
 | 
			
		||||
				// Redirect back to the contact form.
 | 
			
		||||
				$this->setRedirect(JRoute::_('index.php?option=com_contact&view=contact&id='.$stub, false));
 | 
			
		||||
				return false;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// Contact plugins
 | 
			
		||||
		JPluginHelper::importPlugin('contact');
 | 
			
		||||
		$dispatcher	= JEventDispatcher::getInstance();
 | 
			
		||||
 | 
			
		||||
		// Validate the posted data.
 | 
			
		||||
		$form = $model->getForm();
 | 
			
		||||
		if (!$form)
 | 
			
		||||
		{
 | 
			
		||||
			JError::raiseError(500, $model->getError());
 | 
			
		||||
			return false;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		$validate = $model->validate($form, $data);
 | 
			
		||||
 | 
			
		||||
		if ($validate === false)
 | 
			
		||||
		{
 | 
			
		||||
			// Get the validation messages.
 | 
			
		||||
			$errors	= $model->getErrors();
 | 
			
		||||
			// Push up to three validation messages out to the user.
 | 
			
		||||
			for ($i = 0, $n = count($errors); $i < $n && $i < 3; $i++)
 | 
			
		||||
			{
 | 
			
		||||
				if ($errors[$i] instanceof Exception)
 | 
			
		||||
				{
 | 
			
		||||
					$app->enqueueMessage($errors[$i]->getMessage(), 'warning');
 | 
			
		||||
				} else {
 | 
			
		||||
					$app->enqueueMessage($errors[$i], 'warning');
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// Save the data in the session.
 | 
			
		||||
			$app->setUserState('com_contact.contact.data', $data);
 | 
			
		||||
 | 
			
		||||
			// Redirect back to the contact form.
 | 
			
		||||
			$this->setRedirect(JRoute::_('index.php?option=com_contact&view=contact&id='.$stub, false));
 | 
			
		||||
			return false;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// Validation succeeded, continue with custom handlers
 | 
			
		||||
		$results	= $dispatcher->trigger('onValidateContact', array(&$contact, &$data));
 | 
			
		||||
 | 
			
		||||
		foreach ($results as $result)
 | 
			
		||||
		{
 | 
			
		||||
			if ($result instanceof Exception)
 | 
			
		||||
			{
 | 
			
		||||
				return false;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// Passed Validation: Process the contact plugins to integrate with other applications
 | 
			
		||||
		$dispatcher->trigger('onSubmitContact', array(&$contact, &$data));
 | 
			
		||||
 | 
			
		||||
		// Send the email
 | 
			
		||||
		$sent = false;
 | 
			
		||||
		if (!$params->get('custom_reply'))
 | 
			
		||||
		{
 | 
			
		||||
			$sent = $this->_sendEmail($data, $contact);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// Set the success message if it was a success
 | 
			
		||||
		if (!($sent instanceof Exception))
 | 
			
		||||
		{
 | 
			
		||||
			$msg = JText::_('COM_CONTACT_EMAIL_THANKS');
 | 
			
		||||
		}
 | 
			
		||||
		else
 | 
			
		||||
		{
 | 
			
		||||
			$msg = '';
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// Flush the data from the session
 | 
			
		||||
		$app->setUserState('com_contact.contact.data', null);
 | 
			
		||||
 | 
			
		||||
		// Redirect if it is set in the parameters, otherwise redirect back to where we came from
 | 
			
		||||
		if ($contact->params->get('redirect'))
 | 
			
		||||
		{
 | 
			
		||||
			$this->setRedirect($contact->params->get('redirect'), $msg);
 | 
			
		||||
		}
 | 
			
		||||
		else
 | 
			
		||||
		{
 | 
			
		||||
			$this->setRedirect(JRoute::_('index.php?option=com_contact&view=contact&id='.$stub, false), $msg);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		return true;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	private function _sendEmail($data, $contact)
 | 
			
		||||
	{
 | 
			
		||||
			$app		= JFactory::getApplication();
 | 
			
		||||
			if ($contact->email_to == '' && $contact->user_id != 0)
 | 
			
		||||
			{
 | 
			
		||||
				$contact_user = JUser::getInstance($contact->user_id);
 | 
			
		||||
				$contact->email_to = $contact_user->get('email');
 | 
			
		||||
			}
 | 
			
		||||
			$mailfrom	= $app->getCfg('mailfrom');
 | 
			
		||||
			$fromname	= $app->getCfg('fromname');
 | 
			
		||||
			$sitename	= $app->getCfg('sitename');
 | 
			
		||||
 | 
			
		||||
			$name		= $data['contact_name'];
 | 
			
		||||
			$email		= JstringPunycode::emailToPunycode($data['contact_email']);
 | 
			
		||||
			$subject	= $data['contact_subject'];
 | 
			
		||||
			$body		= $data['contact_message'];
 | 
			
		||||
 | 
			
		||||
			// Prepare email body
 | 
			
		||||
			$prefix = JText::sprintf('COM_CONTACT_ENQUIRY_TEXT', JUri::base());
 | 
			
		||||
			$body	= $prefix."\n".$name.' <'.$email.'>'."\r\n\r\n".stripslashes($body);
 | 
			
		||||
 | 
			
		||||
			$mail = JFactory::getMailer();
 | 
			
		||||
			$mail->addRecipient($contact->email_to);
 | 
			
		||||
			$mail->addReplyTo(array($email, $name));
 | 
			
		||||
			$mail->setSender(array($mailfrom, $fromname));
 | 
			
		||||
			$mail->setSubject($sitename.': '.$subject);
 | 
			
		||||
			$mail->setBody($body);
 | 
			
		||||
			$sent = $mail->Send();
 | 
			
		||||
 | 
			
		||||
			//If we are supposed to copy the sender, do so.
 | 
			
		||||
 | 
			
		||||
			// check whether email copy function activated
 | 
			
		||||
			if ( array_key_exists('contact_email_copy', $data)  )
 | 
			
		||||
			{
 | 
			
		||||
				$copytext		= JText::sprintf('COM_CONTACT_COPYTEXT_OF', $contact->name, $sitename);
 | 
			
		||||
				$copytext		.= "\r\n\r\n".$body;
 | 
			
		||||
				$copysubject	= JText::sprintf('COM_CONTACT_COPYSUBJECT_OF', $subject);
 | 
			
		||||
 | 
			
		||||
				$mail = JFactory::getMailer();
 | 
			
		||||
				$mail->addRecipient($email);
 | 
			
		||||
				$mail->addReplyTo(array($email, $name));
 | 
			
		||||
				$mail->setSender(array($mailfrom, $fromname));
 | 
			
		||||
				$mail->setSubject($copysubject);
 | 
			
		||||
				$mail->setBody($copytext);
 | 
			
		||||
				$sent = $mail->Send();
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			return $sent;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user