Jump to content

im0not

Newbie
  • Posts

    12
  • Joined

  • Last visited

Everything posted by im0not

  1. В любом случае, спасибо за помощь и ввиду необходимости других доработок на уровне пхп+джумла, придется отдать это на аутсорс.
  2. Сайт существует на движке Joomla. Сюда его не пишу, потому что нет защиты от спама, но есть достаточно конкретное ТЗ, которое могу выслать при личном общении. В общих чертах необходимо реализовать функции, указанные желтым. Комментарии - оранжевым. По стоимости - пишите в личку. Срок - до воскресенья. Все необходимые файлы, пароли, фтп будут предоставлены.
  3. Ну я вроде как бы уже давно поставила на печать во здесь: // Prepare email body $prefix = JText::sprintf('COM_CONTACT_ENQUIRY_TEXT', JURI::base()); $body = $prefix."\n".$name.' <'.$email.'>'."\r\n\r\n" .'Фамилия: '.$surname."\r\n\r\n" .'Телефон: '.$phone."\r\n\r\n" .'Должность, Организация: '.$positi."\r\n\r\n" .'Attach: '.$data."\r\n\r\n" .stripslashes($body); Видите в конце строчка .'Attach: '.$data."\r\n\r\n" И мне на почту приходит сообщение: ... Attach: Array ...
  4. Сделала как сказал Fatal error: Call to private method ContactControllerContact::_sendEmail() from context 'JController' in /Applications/MAMP/htdocs/vega77web/components/com_contact/controllers/contact.php on line 197
  5. Не получается загнать под спойлер, сорри.. Массив $data я пробовала распечатать, правда по дурацки - через $prefix = JText::sprintf там внизу - получила Array, но то о чем вы говорите, я вообще не представляю себе куда пихать( Вот где можно вставить ? <?php /** * @package Joomla.Site * @subpackage Contact * @copyright Copyright (C) 2005 - 2012 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; jimport('joomla.application.component.controllerform'); 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')); // Initialise variables. $app = JFactory::getApplication(); $model = $this->getModel('contact'); $params = JComponentHelper::getParams('com_contact'); $stub = JRequest::getString('id'); $id = (int)$stub; // Get the data from POST $data = JRequest::getVar('jform', array(), 'post', '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 = JDispatcher::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 $results = $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(); $params = JComponentHelper::getParams('com_contact'); 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'); $copytext = JText::sprintf('COM_CONTACT_COPYTEXT_OF', $contact->name, $sitename); /*****/ $name = $data['contact_name']; $surname = $data['contact_surname']; $email = $data['contact_email']; $phone = $data['contact_phone']; $positi = $data['contact_positis']; $subject = $data['contact_subject']; $body = $data['contact_message']; $attachmentos = $data['fileattachment']; // Prepare email body $prefix = JText::sprintf('COM_CONTACT_ENQUIRY_TEXT', JURI::base()); $body = $prefix."\n".$name.' <'.$email.'>'."\r\n\r\n" .'Фамилия: '.$surname."\r\n\r\n" .'Телефон: '.$phone."\r\n\r\n" .'Должность, Организация: '.$positi."\r\n\r\n" .'Attach: '.$data."\r\n\r\n" .stripslashes($body); /* $body = $prefix."\n".$name.' ('.$email.','.$surname.','.$phone.','.$positis.','.$organ.')'."\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); $mail->addAttachment($attachmentos); $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; } }
  6. Вот это то как раз и непонятно, потому что в джумле три файла в который можно это вставить.. Вот что у меня в contact.xml <field name="fileattachment" type="file" size="40" id="fileattachment" enctype="multipart/form-data" description="COM_CONTACT_CONTACT_FILEATTACH_DESC" label="COM_CONTACT_CONTACT_FILEATTACH_LABEL" default="0" /> Вот что в default_form.php <dt id="fileattach"><?php echo $this->form->getLabel('fileattachment'); ?></dt> <dd id="fileattach"><?php echo $this->form->getInput('fileattachment'); ?></dd> Вот что в contact.php // Get the data from POST $data = JRequest::getVar('jform', array(), 'post', 'array'); .... $name = $data['contact_name']; $surname = $data['contact_surname']; $email = $data['contact_email']; $phone = $data['contact_phone']; $positi = $data['contact_positis']; $subject = $data['contact_subject']; $body = $data['contact_message']; $attachmentos = $data['fileattachment']; ... $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); $mail->addAttachment($attachmentos); $sent = $mail->Send(); Добавлю что я шлю файл с локального сервера, если это имеет вообще значение..
  7. Если бы еще понятно было куда это вставлять, учитывая структуру джумловской формы обратной связи ))
  8. Да, но здесь я не понимаю именно вот этот момент: $mail->addAttachment(JPATH_BASE.DS.'tmp'.DS.'document.pdf'); Ведь JPATH_BASE указывает в корень приложения - тогда как файл грузится с любого места компа клиента. А второе - "document.pdf" - это какое-то конкретное имя и расширение.. а ведь у меня имя и расширение должно быть любое..
  9. Ойойой! Я забыла написать что речь идет о Joomla.. У меня не получается именно туда вставить правильный код, чтоб письмо отправлялось Там как-то все взаимосвязано и используются свои, джумловские переменные, классы и методы. К тому же, сам путь к файлу - может быть любой - и с рабочего стола и с какой-нибудь папки.. Я могу выложить код, если нужно! Насколько я вижу проблему: В ситуацию $mail->addAttachment($attachmentos); в $attachmentos нужно прописать полный путь к загружаемому с ПК файлу, я в текущей ситуации у меня от ипута передается только название файла, например vasia.jpg. Но возможно проблема глубже..(
  10. Z+sdf84)_ds dsfg88

  11. Привет! Собственно, я добавила само поле - но не могу заставить его работать - т.е. письмо приходит без прикрепленного файла. Я догадываюсь, что нужно ковырять contact.php, но в PHP я ноль, поэтому если можно максимально подробно
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy