/** * Show / process email template form * * @param void * @return null */ function edit() { if ($this->active_template->isNew()) { $this->httpError(HTTP_ERR_NOT_FOUND); } // if $locale = $this->request->get('locale', null); $template_data = $this->request->post('template'); if (!is_array($template_data)) { $template_data = array('subject' => $this->active_template->getSubject($locale), 'body' => $this->active_template->getBody($locale)); } // if $template_variables = $this->active_template->getVariables() ? explode("\n", $this->active_template->getVariables()) : null; $this->smarty->assign(array('template_data' => $template_data, 'template_variables' => $template_variables, 'locale' => $locale)); if ($this->request->isSubmitted()) { if ($locale) { $this->active_template->writeLocaleProperties(array_var($template_data, 'subject'), array_var($template_data, 'body'), $locale); } else { $this->active_template->setAttributes($template_data); } // if $save = $this->active_template->save(); if ($save && !is_error($save)) { flash_success('Email template has been updated'); $this->redirectToUrl($this->active_template->getUrl()); } else { $this->smarty->assign('errors', $save); } // if } // if }
/** * Add a new template action */ public function actionCreate() { // Check Access checkAccessThrowException('op_emailtemplate_add'); $model = new EmailTemplate(); if (isset($_POST['EmailTemplate'])) { $model->attributes = $_POST['EmailTemplate']; if (isset($_POST['submit'])) { if ($model->save()) { fok(at('Email Template Created.')); alog(at("Created Email Template '{name}'.", array('{name}' => $model->title))); $this->redirect(array('emailtemplate/index')); } } else { if (isset($_POST['preview'])) { $model->attributes = $_POST['EmailTemplate']; } } } // Add Breadcrumb $this->addBreadCrumb(at('Creating New Email Template')); $this->title[] = at('Creating New Email Template'); // Display form $this->render('form', array('model' => $model)); }
public static function setUpBeforeClass() { parent::setUpBeforeClass(); $super = User::getByUsername('super'); $super = User::getByUsername('super'); $super->primaryEmail = new Email(); $super->primaryEmail->emailAddress = '*****@*****.**'; assert($super->save()); // Not Coding Standard $bobby = UserTestHelper::createBasicUserWithEmailAddress('bobby'); $sarah = UserTestHelper::createBasicUserWithEmailAddress('sarah'); self::$superUserId = $super->id; self::$bobbyUserId = $bobby->id; self::$sarahUserId = $sarah->id; $emailTemplate = new EmailTemplate(); $emailTemplate->modelClassName = 'WorkflowModelTestItem'; $emailTemplate->type = 1; $emailTemplate->name = 'some template'; $emailTemplate->subject = 'some subject [[LAST^NAME]]'; $emailTemplate->htmlContent = 'html content [[STRING]]'; $emailTemplate->textContent = 'text content [[PHONE]]'; $saved = $emailTemplate->save(); if (!$saved) { throw new FailedToSaveModelException(); } self::$emailTemplate = $emailTemplate; }
protected function makeBuilderPredefinedEmailTemplate($name, $unserializedData, $subject = null, $modelClassName = null, $language = null, $type = null, $isDraft = 0, $textContent = null, $htmlContent = null) { $emailTemplate = new EmailTemplate(); $emailTemplate->type = $type; //EmailTemplate::TYPE_WORKFLOW; $emailTemplate->builtType = EmailTemplate::BUILT_TYPE_BUILDER_TEMPLATE; $emailTemplate->isDraft = $isDraft; $emailTemplate->modelClassName = $modelClassName; $emailTemplate->name = $name; if (empty($subject)) { $subject = $name; } $emailTemplate->subject = $subject; if (!isset($language)) { $language = Yii::app()->languageHelper->getForCurrentUser(); } $emailTemplate->language = $language; $emailTemplate->htmlContent = $htmlContent; $emailTemplate->textContent = $textContent; $emailTemplate->serializedData = CJSON::encode($unserializedData); $emailTemplate->addPermissions(Group::getByName(Group::EVERYONE_GROUP_NAME), Permission::READ_WRITE_CHANGE_PERMISSIONS_CHANGE_OWNER); $saved = $emailTemplate->save(false); if (!$saved) { throw new FailedToSaveModelException(); } $emailTemplate = EmailTemplate::getById($emailTemplate->id); ReadPermissionsOptimizationUtil::securableItemGivenPermissionsForGroup($emailTemplate, Group::getByName(Group::EVERYONE_GROUP_NAME)); $saved = $emailTemplate->save(false); assert('$saved'); }
/** * Test sending an email that should go out as a processing that this job would typically do. * Also tests that item does not get trashed when deleting the WorkflowMessageInQueue. * Also tests that if there is more than one emailmessage against the workflow, that it does not send * to all of them * @depends testWorkflowMessageInQueueProperlySavesWithoutTrashingRelatedModelItem */ public function testRun() { Yii::app()->user->userModel = User::getByUsername('super'); $emailTemplate = new EmailTemplate(); $emailTemplate->builtType = EmailTemplate::BUILT_TYPE_PASTED_HTML; $emailTemplate->name = 'the name'; $emailTemplate->modelClassName = 'Account'; $emailTemplate->type = 2; $emailTemplate->subject = 'subject'; $emailTemplate->textContent = 'sample text content'; $saved = $emailTemplate->save(); $this->assertTrue($saved); $this->assertEquals(0, Yii::app()->emailHelper->getQueuedCount()); $model = ContactTestHelper::createContactByNameForOwner('Jason', Yii::app()->user->userModel); $model->primaryEmail->emailAddress = '*****@*****.**'; $saved = $model->save(); $this->assertTrue($saved); $modelId = $model->id; $model->forget(); $model = Contact::getById($modelId); $trigger = array('attributeIndexOrDerivedType' => 'firstName', 'operator' => OperatorRules::TYPE_EQUALS, 'durationInterval' => '333'); $actions = array(array('type' => ActionForWorkflowForm::TYPE_UPDATE_SELF, ActionForWorkflowForm::ACTION_ATTRIBUTES => array('description' => array('shouldSetValue' => '1', 'type' => WorkflowActionAttributeForm::TYPE_STATIC, 'value' => 'some new description')))); $emailMessages = array(); $emailMessages[0]['emailTemplateId'] = $emailTemplate->id; $emailMessages[0]['sendFromType'] = EmailMessageForWorkflowForm::SEND_FROM_TYPE_DEFAULT; $emailMessages[0]['sendAfterDurationSeconds'] = '0'; $emailMessages[0][EmailMessageForWorkflowForm::EMAIL_MESSAGE_RECIPIENTS] = array(array('type' => WorkflowEmailMessageRecipientForm::TYPE_DYNAMIC_TRIGGERED_MODEL, 'audienceType' => EmailMessageRecipient::TYPE_TO)); $emailMessages[1]['emailTemplateId'] = $emailTemplate->id; $emailMessages[1]['sendFromType'] = EmailMessageForWorkflowForm::SEND_FROM_TYPE_DEFAULT; $emailMessages[1]['sendAfterDurationSeconds'] = '10000'; $emailMessages[1][EmailMessageForWorkflowForm::EMAIL_MESSAGE_RECIPIENTS] = array(array('type' => WorkflowEmailMessageRecipientForm::TYPE_DYNAMIC_TRIGGERED_MODEL, 'audienceType' => EmailMessageRecipient::TYPE_TO)); $savedWorkflow = new SavedWorkflow(); $savedWorkflow->name = 'some workflow'; $savedWorkflow->description = 'description'; $savedWorkflow->moduleClassName = 'ContactsModule'; $savedWorkflow->triggerOn = Workflow::TRIGGER_ON_NEW_AND_EXISTING; $savedWorkflow->type = Workflow::TYPE_ON_SAVE; $data[ComponentForWorkflowForm::TYPE_TRIGGERS] = array($trigger); $data[ComponentForWorkflowForm::TYPE_ACTIONS] = $actions; $data[ComponentForWorkflowForm::TYPE_EMAIL_MESSAGES] = $emailMessages; $savedWorkflow->serializedData = serialize($data); $savedWorkflow->isActive = true; $saved = $savedWorkflow->save(); $this->assertTrue($saved); WorkflowTestHelper::createExpiredWorkflowMessageInQueue($model, $savedWorkflow, serialize(array($emailMessages[1]))); RedBeanModelsCache::forgetAll(true); //simulates page change, required to confirm Item does not get trashed $this->assertEquals(1, WorkflowMessageInQueue::getCount()); $job = new WorkflowMessageInQueueJob(); $this->assertTrue($job->run()); $this->assertEquals(0, WorkflowMessageInQueue::getCount()); RedBeanModelsCache::forgetAll(true); //simulates page change, required to confirm Item does not get trashed $this->assertEquals(1, Yii::app()->emailHelper->getQueuedCount()); }
/** * Create */ public function actionCreate() { $emailTemplate = new EmailTemplate('create'); if (isset($_POST['EmailTemplate'])) { $emailTemplate->attributes = $_POST['EmailTemplate']; if ($emailTemplate->save()) { $this->redirect(array('template/view', 'id' => $emailTemplate->id)); } } $this->render('create', array('emailTemplate' => $emailTemplate)); }
protected function create() { $emailTemplate = new EmailTemplate('create'); $emailTemplate->name = 'the name'; $emailTemplate->subject = 'the subject'; $emailTemplate->heading = 'the heading'; $emailTemplate->message = 'the message'; $save = $emailTemplate->save(); $this->emailTemplate = $emailTemplate; $this->assertTrue($save); $this->codeGuy->seeInDatabase('email_template', array('name' => 'the name', 'subject' => 'the subject', 'heading' => 'the heading', 'message' => 'the message')); }
public function executeAjaxSave(sfWebRequest $request) { $template = trim($request->getParameter('template')); if (empty($template)) { return $this->renderText('Please specify template name'); } $email_template = new EmailTemplate(); $email_template->setName($template); $email_template->setSubject($request->getParameter('subject')); $email_template->setSenderEmail($request->getParameter('email')); $email_template->setSenderName($request->getParameter('name')); $email_template->setBody($request->getParameter('body')); $email_template->setPersonId($this->getUser()->getId()); $email_template->save(); return $this->renderText('#New template have successfully saved!'); }
function install_aoe() { require_once 'modules/Administration/Administration.php'; require_once 'modules/EmailTemplates/EmailTemplate.php'; $emailTemp = new EmailTemplate(); //$emailTemp->id = '7b618b3d-913b-6d2d-6bfb-519f7948a271'; $emailTemp->date_entered = '2013-05-24 14:31:45'; $emailTemp->date_modified = '2013-05-30 14:37:12'; $emailTemp->name = 'Event Invite Template'; $emailTemp->description = 'Default event invite template.'; $emailTemp->published = 'off'; $emailTemp->subject = "You have been invited to \$fp_events_name"; $emailTemp->body = "Dear \$contact_name,\r\nYou have been invited to \$fp_events_name on \$fp_events_date_start to \$fp_events_date_end\r\n\$fp_events_description\r\nYours Sincerely,\r\n"; $emailTemp->body_html = "\n<p>Dear \$contact_name,</p>\n<p>You have been invited to \$fp_events_name on \$fp_events_date_start to \$fp_events_date_end</p>\n<p>\$fp_events_description</p>\n<p>If you would like to accept this invititation please click accept.</p>\n<p> \$fp_events_link or \$fp_events_link_declined</p>\n<p>Yours Sincerely,</p>\n"; $emailTemp->type = 'email'; $emailTemp->save(); }
public function action() { if (isset($_POST['action']['save'])) { $fields = $_POST['fields']; $et = new EmailTemplate(); $et->subject = $fields['subject']; $et->type = $fields['type']; $et->body = $fields['body']; if (isset($fields['roles']) && strlen(trim($fields['roles'])) > 0) { $roles = preg_split('/\\s*,\\s*/i', $fields['roles'], -1, PREG_SPLIT_NO_EMPTY); foreach ($roles as $r) { $et->addRoleFromName($r); } } EmailTemplate::save($et); redirect(extension_members::baseURL() . 'email_templates_edit/' . $et->id . '/created/'); } }
/** * Creates a new model. * If creation is successful, the browser will be redirected to the 'update' page. */ public function actionCreate() { $this->breadcrumbs = array('Шаблоны' => array('/messages/emailtemplate'), 'Новая запись'); $model = new EmailTemplate(); // Uncomment the following line if AJAX validation is needed // $this->performAjaxValidation($model); // set attributes from get if (isset($_GET['EmailTemplate'])) { $model->attributes = $_GET['EmailTemplate']; } if (isset($_POST['EmailTemplate'])) { $model->attributes = $_POST['EmailTemplate']; if ($model->save()) { $url = isset($_POST['go_to_list']) ? $this->listUrl('index') : $this->itemUrl('update', $model->id); $this->redirect($url); } } $this->render('create', array('model' => $model)); }
/** * Creates a new model. * If creation is successful, the browser will be redirected to the 'view' page. */ public function actionCreate() { if (!isset($_SESSION['filemanager'])) { $_SESSION['filemanager'] = TRUE; } $_SESSION['currentFolder'] = 'emailTemplate/'; $model = new EmailTemplate('create'); if (isset($_POST['EmailTemplate'])) { $model->attributes = $_POST['EmailTemplate']; if ($model->validate()) { if ($model->save()) { Yii::app()->user->setFlash('success', Yii::t('emailTemplate', 'Add emailTemplate successfully.')); } else { Yii::app()->user->setFlash('error', Yii::t('emailTemplate', 'Add emailTemplate failed. Please try it later.')); } $this->redirect(array('/' . backend . '/emailTemplate/admin')); } } $this->render(strtolower($this->action->Id), array('model' => $model)); }
function install_aop() { require_once 'modules/EmailTemplates/EmailTemplate.php'; global $sugar_config; $sugar_config['aop']['enable_portal'] = false; $sugar_config['aop']['joomla_url'] = ''; $sugar_config['aop']['distribution_user_id'] = ''; $sugar_config['aop']['support_from_address'] = ''; $sugar_config['aop']['support_from_name'] = ''; $sugar_config['aop'] = array('distribution_method' => 'roundRobin'); $templates = getTemplates(); foreach ($templates as $configKey => $templateData) { $template = new EmailTemplate(); foreach ($templateData as $field => $value) { $template->{$field} = $value; } $template->save(); $sugar_config['aop'][$configKey . "_id"] = $template->id; } ksort($sugar_config); write_array_to_file('sugar_config', $sugar_config, 'config.php'); }
public function action() { $email_template_id = $this->_context[0]; $fields = $_POST['fields']; if (isset($_POST['action']['delete'])) { EmailTemplate::delete($email_template_id); redirect(extension_members::baseURL() . 'email_templates/'); } elseif (isset($_POST['action']['save'])) { $et = EmailTemplate::loadFromID($email_template_id); $et->removeAllRoles(); $et->subject = $fields['subject']; $et->type = $fields['type']; $et->body = $fields['body']; if (isset($fields['roles']) && strlen(trim($fields['roles'])) > 0) { $roles = preg_split('/\\s*,\\s*/i', $fields['roles'], -1, PREG_SPLIT_NO_EMPTY); foreach ($roles as $r) { $et->addRoleFromName($r); } } EmailTemplate::save($et); redirect(extension_members::baseURL() . 'email_templates_edit/' . $et->id . '/saved/'); } }
protected function makeSampleOnSaveWorkflow() { Yii::app()->user->userModel = User::getByUsername('super'); $emailTemplate = new EmailTemplate(); $emailTemplate->type = EmailTemplate::TYPE_WORKFLOW; $emailTemplate->builtType = EmailTemplate::BUILT_TYPE_BUILDER_TEMPLATE; $emailTemplate->subject = 'We closed a deal'; $emailTemplate->name = 'We closed a deal - Sample Email Template'; $emailTemplate->textContent = 'Hello!!! We just closed new deal, please check details: [[MODEL^URL]] Thanks!'; $emailTemplate->htmlContent = '<p>Hello!!!</p> <p>We just closed new deal, please check details: [[MODEL^URL]]</p> <p>Thanks!</p>'; $emailTemplate->modelClassName = 'Opportunity'; $emailTemplate->isDraft = false; $emailTemplate->save(); $trigger = new TriggerForWorkflowForm('OpportunitiesModule', 'Opportunity', Workflow::TYPE_ON_SAVE); $trigger->attributeIndexOrDerivedType = 'stage'; $trigger->value = 'Closed Won'; $trigger->operator = OperatorRules::TYPE_BECOMES; $trigger->relationFilter = TriggerForWorkflowForm::RELATION_FILTER_ANY; $message = new EmailMessageForWorkflowForm('Opportunity', Workflow::TYPE_ON_SAVE); $message->sendAfterDurationInterval = 0; $message->sendAfterDurationType = TimeDurationUtil::DURATION_TYPE_MINUTE; $message->emailTemplateId = $emailTemplate->id; $message->sendFromType = EmailMessageForWorkflowForm::SEND_FROM_TYPE_DEFAULT; $recipients = array(array('type' => WorkflowEmailMessageRecipientForm::TYPE_STATIC_ADDRESS, 'audienceType' => EmailMessageRecipient::TYPE_TO, 'toName' => 'The Sales Team', 'toAddress' => '*****@*****.**')); $message->setAttributes(array(EmailMessageForWorkflowForm::EMAIL_MESSAGE_RECIPIENTS => $recipients)); $workflow = new Workflow(); $workflow->setDescription('This will send an email to recipients that you choose when you close a deal!'); $workflow->setIsActive(false); $workflow->setOrder(2); $workflow->setModuleClassName('OpportunitiesModule'); $workflow->setName('Closed won Opportunity alert'); $workflow->setTriggerOn(Workflow::TRIGGER_ON_NEW_AND_EXISTING); $workflow->setType(Workflow::TYPE_ON_SAVE); $workflow->setTriggersStructure('1'); $workflow->addTrigger($trigger); $workflow->addEmailMessage($message); $savedWorkflow = new SavedWorkflow(); SavedWorkflowToWorkflowAdapter::resolveWorkflowToSavedWorkflow($workflow, $savedWorkflow); $savedWorkflow->save(); }
/** * To try to show failure of https://www.pivotaltracker.com/story/show/81571830 * Using trademark symbol to demonstrate merge tag resolution working correctly and it properly printing * text after the trademark symbol */ public function testNonAlphaNumericSymbolsAsMergeTagFields() { $account = AccountTestHelper::createAccountByNameForOwner('Candyland™', Yii::app()->user->userModel); $emailTemplate = new EmailTemplate(); $emailTemplate->builtType = EmailTemplate::BUILT_TYPE_PASTED_HTML; $emailTemplate->modelClassName = 'Account'; $emailTemplate->type = 1; $emailTemplate->name = 'some template'; $emailTemplate->subject = 'some subject [[NAME]] is great'; $emailTemplate->htmlContent = 'Account HTML: [[NAME]] after the merge tag is resolved'; $emailTemplate->textContent = 'Account Text: [[NAME]] after the merge tag is resolved'; $this->assertTrue($emailTemplate->save()); $message = new EmailMessageForWorkflowForm('Account', Workflow::TYPE_ON_SAVE); $recipients = array(array('type' => WorkflowEmailMessageRecipientForm::TYPE_DYNAMIC_TRIGGERED_MODEL_USER, 'audienceType' => EmailMessageRecipient::TYPE_TO, 'dynamicUserType' => DynamicTriggeredModelUserWorkflowEmailMessageRecipientForm::DYNAMIC_USER_TYPE_CREATED_BY_USER)); $message->emailTemplateId = $emailTemplate->id; $message->sendFromType = EmailMessageForWorkflowForm::SEND_FROM_TYPE_CUSTOM; $message->sendFromAddress = '*****@*****.**'; $message->sendFromName = 'Jason'; $message->setAttributes(array(EmailMessageForWorkflowForm::EMAIL_MESSAGE_RECIPIENTS => $recipients)); $helper = new WorkflowEmailMessageProcessingHelper($message, $account, Yii::app()->user->userModel); $this->assertEquals(0, Yii::app()->emailHelper->getQueuedCount()); $this->assertEquals(0, Yii::app()->emailHelper->getSentCount()); $helper->process(); $this->assertEquals(1, Yii::app()->emailHelper->getQueuedCount()); $this->assertEquals(0, Yii::app()->emailHelper->getSentCount()); $emailMessages = EmailMessage::getAllByFolderType(EmailFolder::TYPE_OUTBOX); $this->assertEquals('some subject Candyland™ is great', $emailMessages[0]->subject); $this->assertEquals('Account Text: Candyland™ after the merge tag is resolved', $emailMessages[0]->content->textContent); $this->assertEquals('Account HTML: Candyland™ after the merge tag is resolved', $emailMessages[0]->content->htmlContent); }
<?php require_once "../initialise_files.php"; include_once "sessioninc.php"; $allowedTags = '<p><strong><em><u><img><span><style><blockquote>'; $allowedTags .= '<li><ol><ul><span><div><br><ins><del><a><span>'; $email_template = new EmailTemplate(); if (isset($_POST['btn_add']) && $_POST['btn_add'] != "") { $template_name = $email_template->email_template_name = strip_html($_POST['txt_tem_name']); $template_key = $email_template->template_key = strtoupper(strip_html($_POST['txt_key'])); $template_email = $email_template->from_email = strip_html($_POST['txt_from_email']); $template_frm_name = $email_template->from_name = strip_html($_POST['txt_from_name']); $template_subject = $email_template->email_subject = strip_html($_POST['txt_subject']); $template_body = $email_template->email_text = strip_tags($_POST['txt_email_body'], $allowedTags); if ($email_template->save()) { $session->message("Email Template has been added Successfully"); redirect_to($_SERVER['PHP_SELF']); die; } else { $message = "<div class='error'> \r\n\t\t\t\t\t\tfollowing error(s) found:\r\n\t\t\t\t\t\t<ul> <li />"; $message .= join(" <li /> ", $email_template->errors); $message .= " </ul> \r\n\t\t\t\t\t </div>"; } } if (isset($_POST['btn_update']) && $_POST['btn_update'] != "") { $id = $email_template->id = (int) $_POST['id']; $template_name = $email_template->email_template_name = strip_html($_POST['txt_tem_name']); $template_key = $email_template->template_key = strtoupper(strip_html($_POST['txt_key'])); $template_email = $email_template->from_email = strip_html($_POST['txt_from_email']); $template_frm_name = $email_template->from_name = strip_html($_POST['txt_from_name']); $template_subject = $email_template->email_subject = strip_html($_POST['txt_subject']);
public function testProcessAfterSaveWhenSendIsImmediateAndToAContactThatIsRelatedToTheTriggeredModel() { foreach (EmailMessage::getAll() as $emailMessage) { $emailMessage->delete(); } $this->assertEquals(0, Yii::app()->emailHelper->getQueuedCount()); $this->assertEquals(0, Yii::app()->emailHelper->getSentCount()); $emailTemplate = new EmailTemplate(); $emailTemplate->name = 'the name'; $emailTemplate->modelClassName = 'Account'; $emailTemplate->textContent = 'some content'; $emailTemplate->type = 2; $emailTemplate->subject = 'subject'; $saved = $emailTemplate->save(); $this->assertTrue($saved); $workflow = new Workflow(); $workflow->setId(self::$savedWorkflow->id); $workflow->type = Workflow::TYPE_ON_SAVE; $emailMessageForm = new EmailMessageForWorkflowForm('Account', Workflow::TYPE_ON_SAVE); $emailMessageForm->sendAfterDurationSeconds = 0; $emailMessageForm->emailTemplateId = $emailTemplate->id; $emailMessageForm->sendFromType = EmailMessageForWorkflowForm::SEND_FROM_TYPE_DEFAULT; $recipients = array(array('type' => WorkflowEmailMessageRecipientForm::TYPE_DYNAMIC_TRIGGERED_MODEL_RELATION, 'audienceType' => EmailMessageRecipient::TYPE_TO, 'relation' => 'contacts')); $emailMessageForm->setAttributes(array(EmailMessageForWorkflowForm::EMAIL_MESSAGE_RECIPIENTS => $recipients)); $workflow->addEmailMessage($emailMessageForm); $model = new Account(); $model->name = 'the account'; $contact = new Contact(); $contact->firstName = 'Jason'; $contact->lastName = 'Blue'; $contact->state = ContactsUtil::getStartingState(); $contact->primaryEmail->emailAddress = '*****@*****.**'; $this->assertTrue($contact->save()); $contact2 = new Contact(); $contact2->firstName = 'Laura'; $contact2->lastName = 'Blue'; $contact2->state = ContactsUtil::getStartingState(); $contact2->primaryEmail->emailAddress = '*****@*****.**'; $this->assertTrue($contact2->save()); $model->contacts->add($contact); $model->contacts->add($contact2); $this->assertTrue($model->save()); WorkflowEmailMessagesUtil::processAfterSave($workflow, $model, Yii::app()->user->userModel); $this->assertEquals(1, Yii::app()->emailHelper->getQueuedCount()); $this->assertEquals(0, Yii::app()->emailHelper->getSentCount()); $queuedEmailMessages = EmailMessage::getAllByFolderType(EmailFolder::TYPE_OUTBOX); $this->assertEquals(1, count($queuedEmailMessages)); $this->assertEquals(2, count($queuedEmailMessages[0]->recipients)); $this->assertEquals('Jason Blue', $queuedEmailMessages[0]->recipients[0]->toName); $this->assertEquals('*****@*****.**', $queuedEmailMessages[0]->recipients[0]->toAddress); $this->assertEquals($contact->id, $queuedEmailMessages[0]->recipients[0]->personOrAccount->id); $this->assertEquals('Laura Blue', $queuedEmailMessages[0]->recipients[1]->toName); $this->assertEquals('*****@*****.**', $queuedEmailMessages[0]->recipients[1]->toAddress); $this->assertEquals($contact2->id, $queuedEmailMessages[0]->recipients[1]->personOrAccount->id); }
$EmailTemp->team_id = $Team_id; $EmailTemp->published = 'off'; $EmailTemp->text_only = 0; $id = $EmailTemp->save(); $sugar_config['passwordsetting']['generatepasswordtmpl'] = $id; //User generate a link to set a new password $EmailTemp = new EmailTemplate(); $EmailTemp->name = $mod_strings['advanced_password_forgot_password_email']['name']; $EmailTemp->description = $mod_strings['advanced_password_forgot_password_email']['description']; $EmailTemp->subject = $mod_strings['advanced_password_forgot_password_email']['subject']; $EmailTemp->body = $mod_strings['advanced_password_forgot_password_email']['txt_body']; $EmailTemp->body_html = $mod_strings['advanced_password_forgot_password_email']['body']; $EmailTemp->deleted = 0; $EmailTemp->team_id = $Team_id; $EmailTemp->published = 'off'; $EmailTemp->text_only = 0; $id = $EmailTemp->save(); $sugar_config['passwordsetting']['lostpasswordtmpl'] = $id; // set all other default settings $sugar_config['passwordsetting']['forgotpasswordON'] = true; $sugar_config['passwordsetting']['SystemGeneratedPasswordON'] = true; $sugar_config['passwordsetting']['systexpirationtime'] = 7; $sugar_config['passwordsetting']['systexpiration'] = 1; $sugar_config['passwordsetting']['linkexpiration'] = true; $sugar_config['passwordsetting']['linkexpirationtime'] = 24; $sugar_config['passwordsetting']['linkexpirationtype'] = 60; $sugar_config['passwordsetting']['minpwdlength'] = 6; $sugar_config['passwordsetting']['oneupper'] = true; $sugar_config['passwordsetting']['onelower'] = true; $sugar_config['passwordsetting']['onenumber'] = true; write_array_to_file("sugar_config", $sugar_config, "config.php");
public function updateTemplate() { if (Input::has('pk')) { if (!Request::ajax()) { return App::abort(404); } return self::updateQuickEdit(); } $prevURL = Request::header('referer'); if (!Request::isMethod('post')) { return App::abort(404); } if (Input::has('id')) { $create = false; try { $template = EmailTemplate::findorFail((int) Input::get('id')); } catch (Illuminate\Database\Eloquent\ModelNotFoundException $e) { return App::abort(404); } $message = 'has been updated successful'; } else { $create = true; $template = new EmailTemplate(); $message = 'has been created successful'; } $template->name = Input::has('name') ? Input::get('name') : ''; $template->type = Input::has('type') ? Input::get('type') : ''; $template->active = (int) Input::has('active'); $template->content = Input::has('content') ? Input::get('content') : ''; $pass = $template->valid(); if ($pass) { $template->save(); if (Input::has('continue')) { if ($create) { $prevURL = URL . '/admin/email-templates/edit-template/' . $template->id; } return Redirect::to($prevURL)->with('flash_success', "<b>{$template->name}</b> {$message}."); } return Redirect::to(URL . '/admin/email-templates')->with('flash_success', "<b>{$template->name}</b> {$message}."); } return Redirect::to($prevURL)->with('flash_error', $pass->messages()->all())->withInput(); }
public function testMergeTagsValidation() { // test against a invalid merge tags $emailTemplate = new EmailTemplate(); $emailTemplate->type = EmailTemplate::TYPE_CONTACT; $emailTemplate->subject = 'Another Test subject'; $emailTemplate->name = 'Another Test Email Template'; $emailTemplate->textContent = 'Text Content [[TEXT__INVALID^MERGE^TAG]]'; $emailTemplate->htmlContent = 'Html Content [[HTMLINVALIDMERGETAG]]'; $emailTemplate->modelClassName = 'Contact'; $this->assertFalse($emailTemplate->save()); $errorMessages = $emailTemplate->getErrors(); $this->assertEquals(2, count($errorMessages)); $this->assertTrue(array_key_exists('textContent', $errorMessages)); $this->assertTrue(array_key_exists('htmlContent', $errorMessages)); $this->assertEquals(1, count($errorMessages['textContent'])); $this->assertEquals(1, count($errorMessages['htmlContent'])); $this->assertTrue(strpos($errorMessages['textContent'][0], 'TEXT__INVALID^MERGE^TAG') !== false); $this->assertTrue(strpos($errorMessages['htmlContent'][0], 'HTMLINVALIDMERGETAG') !== false); // test with no merge tags $emailTemplate->textContent = 'Text Content without tags'; $emailTemplate->htmlContent = 'Html Content without tags'; $this->assertTrue($emailTemplate->save()); $this->assertEmpty($emailTemplate->getErrors()); $this->assertEquals(3, count(EmailTemplate::getAll())); // test with valid merge tags $emailTemplate->textContent = 'Name : [[FIRST^NAME]] [[LAST^NAME]]'; $emailTemplate->htmlContent = '<b>Name : [[FIRST^NAME]] [[LAST^NAME]]</b>'; $this->assertTrue($emailTemplate->save()); $this->assertEmpty($emailTemplate->getErrors()); $this->assertEquals(3, count(EmailTemplate::getAll())); }
} break; case 'createCopy': $bean = BeanFactory::getBean('EmailTemplates', $emailTemplateId); $newBean = new EmailTemplate(); $fieldsForCopy = array('type', 'description'); foreach ($bean as $key => $value) { if (in_array($key, $fields)) { $newBean->{$key} = $_POST[$key]; } else { if (in_array($key, $fieldsForCopy)) { $newBean->{$key} = $bean->{$key}; } } } if ($newBean->save()) { $msgs[] = 'LBL_TEMPLATE_SAVED'; } //$formBase = new EmailTemplateFormBase(); //$newBean = $formBase->handleAttachmentsProcessImages($newBean, false, true); $data['id'] = $newBean->id; $data['name'] = $newBean->name; break; case 'uploadAttachments': $formBase = new EmailTemplateFormBase(); $focus = BeanFactory::getBean('EmailTemplates', $_REQUEST['attach_to_template_id']); //$data = $formBase->handleAttachments($focus, false, null); $data = $formBase->handleAttachmentsProcessImages($focus, false, true, 'download', true); $redirectUrl = 'index.php?module=Campaigns&action=WizardMarketing&campaign_id=' . $_REQUEST['campaign_id'] . "&jump=2&template_id=" . $_REQUEST['attach_to_template_id']; // . '&marketing_id=' . $_REQUEST['attach_to_marketing_id'] . '&record=' . $_REQUEST['attach_to_marketing_id']; header('Location: ' . $redirectUrl);
$data['name'] = $bean->name; break; case 'createCopy': $bean = BeanFactory::getBean('EmailTemplates', $emailTemplateId); $newBean = new EmailTemplate(); $fieldsForCopy = array('type', 'description'); foreach($bean as $key => $value) { if(in_array($key, $fields)) { $newBean->$key = $_POST[$key]; } else if(in_array($key, $fieldsForCopy)) { $newBean->$key = $bean->$key; } } $newBean->save(); //$formBase = new EmailTemplateFormBase(); //$newBean = $formBase->handleAttachmentsProcessImages($newBean, false, true); $data['id'] = $newBean->id; $data['name'] = $newBean->name; break; case 'uploadAttachments': $formBase = new EmailTemplateFormBase(); $focus = BeanFactory::getBean('EmailTemplates', $_REQUEST['attach_to_template_id']); //$data = $formBase->handleAttachments($focus, false, null); $data = $formBase->handleAttachmentsProcessImages($focus, false, true, 'download', true); $redirectUrl = 'index.php?module=Campaigns&action=WizardMarketing&campaign_id=' . $_REQUEST['campaign_id'] . "&jump=2&template_id=" . $_REQUEST['attach_to_template_id']; // . '&marketing_id=' . $_REQUEST['attach_to_marketing_id'] . '&record=' . $_REQUEST['attach_to_marketing_id']; header('Location: ' . $redirectUrl); die(); break;
/** * Create new email template for this module * * @param string $name * @param string $subject * @param string $body * @param array $variables * @return boolean */ function addEmailTemplate($name, $subject, $body, $variables = null) { $email_template = new EmailTemplate(); $email_template->setAttributes(array('name' => $name, 'module' => $this->name, 'subject' => $subject, 'body' => $body, 'variables' => is_array($variables) ? implode("\n", $variables) : $variables)); return $email_template->save(); }
public function post_emailtemplatenew() { //Get our input fields $name = Input::get('inputName'); $subject = Input::get('inputSubject'); $content = Input::get('inputContent'); $public = Input::get('inputPublic'); //No need to run the validator for this. Let's just check and see if the fields are empty. if (empty($name)) { return Redirect::route('consoleemailtemplates')->with(array('error' => 'Please enter a template name.', 'inputContent' => $content, 'inputSubject' => $subject)); } if (empty($subject)) { return Redirect::route('consoleemailtemplates')->with(array('error' => 'Please enter a subject.', 'inputContent' => $content, 'inputName' => $name)); } if (empty($content)) { return Redirect::route('consoleemailtemplates')->with(array('error' => 'Please compose a body.', 'inputSubject' => $subject, 'inputName' => $name)); } //Create the record in the database if ($public != 1) { $public = 0; } $template = new EmailTemplate(); $template->name = $name; $template->author = Auth::consoleuser()->get()->cid; $template->subject = $subject; $template->content = $content; $template->public = $public; $template->save(); return Redirect::route('consoleemailtemplates')->with('message', 'New Template Created Successfully.'); }
/** * @depends testCreateAndGetEmailTemplateById */ public function testHtmlContentGetsSavedCorrectly() { $randomData = ZurmoRandomDataUtil::getRandomDataByModuleAndModelClassNames('EmailTemplatesModule', 'EmailTemplate'); $htmlContent = $randomData['htmlContent'][count($randomData['htmlContent']) - 1]; $emailTemplate = new EmailTemplate(); $emailTemplate->type = EmailTemplate::TYPE_CONTACT; $emailTemplate->builtType = EmailTemplate::BUILT_TYPE_PASTED_HTML; $emailTemplate->subject = 'Another Test subject'; $emailTemplate->name = 'Another Test Email Template'; $emailTemplate->textContent = 'Text Content'; $emailTemplate->htmlContent = $htmlContent; $emailTemplate->modelClassName = 'Contact'; $this->assertTrue($emailTemplate->save()); $emailTemplateId = $emailTemplate->id; $emailTemplate->forgetAll(); $emailTemplate = EmailTemplate::getById($emailTemplateId); $this->assertEquals($htmlContent, $emailTemplate->htmlContent); }
$database = gGetDb(); $database->transactionally(function () use($database) { global $baseurl; $emailTemplate = new EmailTemplate(); $emailTemplate->setDatabase($database); $emailTemplate->setName($_POST['name']); $emailTemplate->setText($_POST['text']); $emailTemplate->setJsquestion($_POST['jsquestion']); $emailTemplate->setDefaultAction($_POST['defaultaction']); $emailTemplate->setActive(isset($_POST['active'])); // Check if the entered name already exists (since these names are going to be used as the labels for buttons on the zoom page). // getByName(...) returns false on no records found. if (EmailTemplate::getByName($_POST['name'], $database)) { throw new TransactionException("That Email template name is already being used. Please choose another."); } $emailTemplate->save(); Logger::createEmail($database, $emailTemplate); Notification::emailCreated($emailTemplate); SessionAlert::success("Email template has been saved successfully."); header("Location: {$baseurl}/acc.php?action=emailmgmt"); }); die; } $smarty->assign('id', null); $smarty->assign('createdid', $createdid); $smarty->assign('requeststates', $availableRequestStates); $smarty->assign('emailTemplate', new EmailTemplate()); $smarty->assign('emailmgmtpage', 'Create'); //Use a variable so we don't need two Smarty templates for creating and editing. $smarty->display("email-management/edit.tpl"); BootstrapSkin::displayInternalFooter();
public function testGetData() { $moduleClassName = Contact::getModuleClassName(); $type = Report::TYPE_ROWS_AND_COLUMNS; $treeType = ComponentForReportForm::TYPE_FILTERS; $report = new Report(); $report->setModuleClassName($moduleClassName); $report->setType($type); $reportToTreeAdapter = new MergeTagsReportRelationsAndAttributesToTreeAdapter($report, $treeType, 'EmailTemplate'); $emailTemplate = new EmailTemplate(); $emailTemplate->type = EmailTemplate::TYPE_CONTACT; $emailTemplate->subject = 'Another Test subject'; $emailTemplate->name = 'Another Test Email Template'; $emailTemplate->textContent = 'Text Content '; $emailTemplate->htmlContent = 'Html Content '; $emailTemplate->builtType = EmailTemplate::BUILT_TYPE_PASTED_HTML; $emailTemplate->modelClassName = 'Contact'; // By testing the getData method we're actually testing that all Merge Tags are valid // and that we can save the EmailTemplate with each Merge Tag without having the error 'Invalid Merge Tag'. $data = $reportToTreeAdapter->getData('source'); foreach ($data[1]['children'] as $child) { if (isset($child['dataValue']) && $child['dataValue']) { $emailTemplate->textContent .= ' ' . $child['dataValue']; $emailTemplate->htmlContent .= ' ' . $child['dataValue']; } } $validated = $emailTemplate->validate(null, false, true); $this->assertTrue($validated); $this->assertEmpty($emailTemplate->getErrors()); $this->assertTrue($emailTemplate->save()); $data = $reportToTreeAdapter->getData('EmailTemplate_createdByUser'); $emailTemplate->textContent = ''; $emailTemplate->htmlContent = ''; foreach ($data as $child) { if (isset($child['dataValue']) && $child['dataValue']) { $emailTemplate->textContent .= ' ' . $child['dataValue']; $emailTemplate->htmlContent .= ' ' . $child['dataValue']; } } $validated = $emailTemplate->validate(null, false, true); $this->assertTrue($validated); $this->assertEmpty($emailTemplate->getErrors()); $this->assertTrue($emailTemplate->save()); $data = $reportToTreeAdapter->getData('EmailTemplate_owner'); $emailTemplate->textContent = ''; $emailTemplate->htmlContent = ''; foreach ($data as $child) { if (isset($child['dataValue']) && $child['dataValue']) { $emailTemplate->textContent .= ' ' . $child['dataValue']; $emailTemplate->htmlContent .= ' ' . $child['dataValue']; } } $validated = $emailTemplate->validate(null, false, true); $this->assertTrue($validated); $this->assertEmpty($emailTemplate->getErrors()); $this->assertTrue($emailTemplate->save()); $data = $reportToTreeAdapter->getData('EmailTemplate_owner___primaryEmail'); $emailTemplate->textContent = ''; $emailTemplate->htmlContent = ''; foreach ($data as $child) { if (isset($child['dataValue']) && $child['dataValue']) { $emailTemplate->textContent .= ' ' . $child['dataValue']; $emailTemplate->htmlContent .= ' ' . $child['dataValue']; } } $validated = $emailTemplate->validate(null, false, true); $this->assertTrue($validated); $this->assertEmpty($emailTemplate->getErrors()); $this->assertTrue($emailTemplate->save()); $data = $reportToTreeAdapter->getData('EmailTemplate_primaryAddress'); $emailTemplate->textContent = ''; $emailTemplate->htmlContent = ''; foreach ($data as $child) { if (isset($child['dataValue']) && $child['dataValue']) { $emailTemplate->textContent .= ' ' . $child['dataValue']; $emailTemplate->htmlContent .= ' ' . $child['dataValue']; } } $validated = $emailTemplate->validate(null, false, true); $this->assertTrue($validated); $this->assertEmpty($emailTemplate->getErrors()); $this->assertTrue($emailTemplate->save()); // Test against invalid Merge Tags $emailTemplate->textContent = 'Text Content [[TEXT__INVALID^MERGE^TAG]]'; $emailTemplate->htmlContent = 'Html Content [[HTMLINVALIDMERGETAG]]'; $validated = $emailTemplate->validate(null, false, true); $this->assertFalse($validated); $errorMessages = $emailTemplate->getErrors(); $this->assertEquals(2, count($errorMessages)); $this->assertTrue(array_key_exists('textContent', $errorMessages)); $this->assertTrue(array_key_exists('htmlContent', $errorMessages)); $this->assertEquals(1, count($errorMessages['textContent'])); $this->assertEquals(1, count($errorMessages['htmlContent'])); $this->assertContains('TEXT__INVALID^MERGE^TAG', $errorMessages['textContent'][0]); $this->assertContains('HTMLINVALIDMERGETAG', $errorMessages['htmlContent'][0]); }