Тема: Форма контактов с отправкой файла
Пытаюсь привязать файл к форме отправки сообщения (плагин contatcs) по этой схеме - http://www.php-mail.ru/?id=4.
В template-cms - все отлично получилось. Вот мой поправленный плагин - http://forum.template-cms.ru/post/4055/#p4055
Но для monstra не заработало в лоб. Может кто глянет чего не так. Вот код плагина с правками.
Сообщение отправляется, но не привязывается файл.
<?php
/**
* Contact plugin
*
* @package Monstra
* @subpackage Plugins
* @author Romanenko Sergey / Awilum
* @copyright 2012 Romanenko Sergey / Awilum
* @version 1.1.0
*
*/
// Register plugin
Plugin::register( __FILE__,
__('Contact', 'contact'),
__('Contact plugin for Monstra', 'contact'),
'1.1.0',
'Awilum',
'http://monstra.org/');
/**
* Shorcode: {contact recipient="admin@site.org"}
*/
Shortcode::add('contact', 'Contact::_shorcode');
/**
* Usage: <?php Contact::display('admin@site.org'); ?>
*/
class Contact {
public static function _shorcode($attributes) {
return Contact::form($attributes['recipient']);
}
public static function form($recipient) {
$name = Request::post('contact_name');
$email = Request::post('contact_email');
$body = Request::post('contact_body');
$errors = array();
if (Request::post('contact_submit')) {
if (Security::check(Request::post('csrf'))) {
if (Request::post('contact_name') == '' || Request::post('contact_email') == '' || Request::post('contact_body') == '') {
$errors['contact_empty_fields'] = __('Empty required fields!', 'contact');
}
if ( ! Valid::email(Request::post('contact_email'))) {
$errors['contact_email_not_valid'] = __('Email address is not valid!', 'contact');
}
if (Option::get('captcha_installed') == 'true' && ! CryptCaptcha::check(Request::post('answer'))) {
$errors['users_captcha_wrong'] = __('Captcha code is wrong', 'users');
}
if (count($errors) == 0) {
$time = date('H:i:s');
$date = date("d.m.y");
$mess = '
Дата отправки письма: '.$date.', время: '.$time.' <br/><br/>
Имя: '.Request::post('contact_name').'
E-mail: '.Request::post('contact_email').'
Текст сообщения: '.Request::post('contact_body').'
Отзыв: '.Request::post('review');
require 'class.phpmailer.php';
$mail = new PHPMailer();
$mail->From = 'mail@site.ru'; // от кого
$mail->FromName = 'site.ru'; // от кого
$mail->AddAddress('mne@gmail.com', 'Мне'); // кому - адрес, Имя
$mail->IsHTML(true); // выставляем формат письма HTML
$mail->Subject = 'С сайта'; // тема письма
// если был файл, то прикрепляем его к письму
if(isset($_FILES['foto'])) {
if($_FILES['foto']['error'] == 0){
$mail->AddAttachment($_FILES['foto']['tmp_name'], $_FILES['foto']['name']);
}
}
$mail->Body = $mess;
if (!$mail->Send()) {
Notification::set('error', __('A Letter was not sent!', 'contact'));
}
if (!empty($_POST['submit'])) {
send_mail();
Notification::set('success', __('A letter has been sent!', 'contact'));
Request::redirect(Page::url());
}
}
} else { die('csrf detected!'); }
}
return View::factory('contact/views/frontend/form')
->assign('name', $name)
->assign('email', $email)
->assign('body', $body)
->assign('errors', $errors)
->render();
}
public static function display($recipient) {
echo Contact::form($recipient);
}
}