function sendForm($form) { $objForms = new FormModel(); $objEmailer = new Emailer(); $objLayout = new LayoutModel(); $objTemplate = new TemplatesModel(); $formInfo = $objForms->loadForm($form['formSubmit']['id']); $formFields = $objForms->getSubmission($form['submission_id']); $this->view->assign('formFields', $formFields); $layoutInfo = $objLayout->loadLayout(28); $template = $objTemplate->loadTemplateFromKeyname('email-sendform'); // modify email subject if (!empty($form['pageTitle'])) { $subject = $formInfo['emailSubject'] . ' - ' . $form['pageTitle']; } else { if (!empty($form['returnUrlRequest'])) { $subject = $formInfo['emailSubject'] . ' - ' . $form['returnUrlRequest']; } else { $subject = $formInfo['emailSubject']; } } $objEmailer->setFrom($formInfo['emailFrom'], PRODUCT_NAME); $objEmailer->addTo($formInfo['emailTo']); $objEmailer->setSubject($subject); // assign vars to template $this->view->assign('content', $this->view->fetch('fromstring:' . $template['content'])); $this->view->assign('sidebar_left', $this->view->fetch('fromstring:' . $template['left_sidebar'])); $this->view->assign('sidebar_right', $this->view->fetch('fromstring:' . $template['right_sidebar'])); // render template $objEmailer->setBody($this->view->fetch('fromstring:' . $layoutInfo['code']), true); // send email $objEmailer->sendMail(); return true; }
/** * Smarty {form} function plugin * * Type: function<br> * Name: form<br> * Purpose: generates form from database<br> * @author Nathan Gardner <*****@*****.**> */ function smarty_function_form($localparams, &$smarty) { global $params; if (!empty($localparams['identifier'])) { $objForm = new FormModel(); $objAuth = Authentication::getInstance(); $objTemplate = new TemplatesModel(); $objUser = new UserModel($objAuth->user_id); $userInfo = $objUser->getInfo(); $form_id = $objForm->getFormId($localparams['identifier']); if ($form_id) { $formInfo = $objForm->loadForm($form_id); $templateInfo = $objTemplate->loadTemplateFromKeyname('form'); // assign values if already submitted if (!empty($params['formSubmit']['fields']) && !empty($formInfo['fields'])) { foreach ($formInfo['fields'] as &$formField) { foreach ($params['formSubmit']['fields'] as $submittedId => $submittedValue) { if ($formField['id'] == $submittedId) { if ($formField['type'] == 'checkbox' || $formField['type'] == 'radio') { $formField['checked'] = 'checked'; } else { $formField['value'] = $submittedValue; } break; } } } } // assign error flag and message if invalid if (!empty($params['formErrors']) && !empty($formInfo['fields'])) { foreach ($params['formErrors'] as $formError) { foreach ($formInfo['fields'] as &$formField) { if ($formError['field_id'] == $formField['id']) { $formField['hasError'] = true; $formField['errorMsg'] = $formError['errorMsg']; break; } } } } // assign var to template if (!empty($params['formSubmitted'])) { $smarty->assign('formSubmitted', 1); } if (!empty($params['formErrors'])) { $smarty->assign('formErrors', $params['formErrors']); } $smarty->assign('formInfo', $formInfo); $output = $smarty->fetch('fromstring:' . $templateInfo['content']); } else { return 'Unknown form identifier'; } } else { return 'Must pass an identifier'; } return $output; }
function actionEditForm($params = '') { $objForm = new FormModel(); $form_id = !empty($params['form_id']) ? intval($params['form_id']) : false; if (!empty($params['dosave'])) { $form_id = $this->saveForm($params); $this->messages[] = array('type' => 'success', 'message' => 'Form has been saved.'); if ($params['submit'] == 'Save and Close') { $this->actionForms(); return; } } if (!empty($form_id)) { $formInfo = $objForm->loadForm($form_id); $this->view->assign('formInfo', $formInfo); } $this->view->assign('content', $this->view->fetch('tpl/form/form.tpl')); $this->view->assign('messages', $this->messages); $this->finish(); }
function actionSubmit($params2 = '') { // loading $params from global so that the View can load the proper _urlrequest global $params; $params = array_merge($params, $params2); $hasError = false; $formErrors = array(); if (!empty($params['formSubmit'])) { $objEmail = new EmailSender(); $objForm = new FormModel(); if (!empty($params['formSubmit']['id'])) { $formInfo = $objForm->loadForm($params['formSubmit']['id']); // validate forms fields if (!empty($formInfo['fields'])) { foreach ($formInfo['fields'] as $formField) { if ($formField['required'] == 1) { if (empty($params['formSubmit']['fields'][$formField['id']])) { $hasError = true; $formError = array('field_id' => $formField['id'], 'errorMsg' => $formField['name'] . ' is required.'); $formErrors[] = $formError; } } } } if ($hasError) { // return to page with error message if (!empty($params['returnUrlRequest']) && $params['returnUrlRequest'] != 'Form/submit') { $objDispatcher = new Dispatcher(); $objFriendlyUrl = new FriendlyurlModel(); $objFriendlyUrl->parseRequest($params['returnUrlRequest']); $controller = $objFriendlyUrl->requestController; $action = $objFriendlyUrl->requestAction; $params = array_merge($params, $objFriendlyUrl->requestParams); $params['_urlrequest'] = $params['returnUrlRequest']; $params['formErrors'] = $formErrors; $objDispatcher->setDirectory('frontend'); $objDispatcher->setController($controller); $objDispatcher->setAction($action); $objDispatcher->setParams($params); $objDispatcher->dispatch(); exit; } else { die('Please go back and retry submitting the form. Errors: ' . print_r($formErrors)); } } // save to database $submission_id = $this->saveToDb($params); if ($submission_id) { $params['submission_id'] = $submission_id; } // email notification $objEmail->sendForm($params); // return to page with thanks message if (!empty($params['returnUrlRequest'])) { header("Location: http://" . URL . '/' . $params['returnUrlRequest'] . '?formSubmitted=true'); } else { header("Location: http://" . URL . '/'); } } } }