/**
  * 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'));
 }
Beispiel #8
0
 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));
 }
Beispiel #13
0
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();
 }
Beispiel #21
0
 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);
Beispiel #23
0
            $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();
 }
Beispiel #25
0
 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);
 }
Beispiel #27
0
     $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]);
 }