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');
 }
示例#2
0
/**
 * Send a "close pend ticket" email to the end user. (created, taken, etc...)
 */
function sendemail($messageno, $target, $id)
{
    $template = EmailTemplate::getById($messageno, gGetDb());
    $headers = 'From: accounts-enwiki-l@lists.wikimedia.org';
    // Get the closing user's Email signature and append it to the Email.
    if (User::getCurrent()->getEmailSig() != "") {
        $emailsig = html_entity_decode(User::getCurrent()->getEmailSig(), ENT_QUOTES, "UTF-8");
        mail($target, "RE: [ACC #{$id}] English Wikipedia Account Request", $template->getText() . "\n\n" . $emailsig, $headers);
    } else {
        mail($target, "RE: [ACC #{$id}] English Wikipedia Account Request", $template->getText(), $headers);
    }
}
 protected static function resolveEmailTemplateContent(WorkflowMessageInQueue $model)
 {
     $unserializedData = unserialize($model->serializedData);
     try {
         if (isset($unserializedData[0]) && isset($unserializedData[0]['emailTemplateId'])) {
             $emailTemplate = EmailTemplate::getById((int) $unserializedData[0]['emailTemplateId']);
             $modelContent = strval($emailTemplate);
         } else {
             throw new NotFoundException();
         }
     } catch (AccessDeniedSecurityException $e) {
         $modelContent = Zurmo::t('Core', 'Restricted');
     } catch (NotFoundException $e) {
         $modelContent = Zurmo::t('ZurmoModule', 'Record no longer exists');
     }
     return ' &mdash; <span class="less-pronounced-text">' . $modelContent . '</span>';
 }
 /**
  * @throws MissingRecipientsForEmailMessageException
  */
 public function process()
 {
     $emailTemplate = EmailTemplate::getById((int) $this->emailMessageForm->emailTemplateId);
     $emailMessage = new EmailMessage();
     $emailMessage->owner = $this->triggeredByUser;
     $emailMessage->subject = $this->resolveEmailTemplateSubjectForModelData($emailTemplate);
     $emailContent = new EmailMessageContent();
     $emailContent->textContent = $this->resolveEmailTemplateTextContentForModelData($emailTemplate);
     $emailContent->htmlContent = $this->resolveEmailTemplateHtmlContentForModelData($emailTemplate);
     $emailMessage->content = $emailContent;
     $emailMessage->sender = $this->resolveSender();
     $this->resolveRecipients($emailMessage);
     if ($emailMessage->recipients->count() == 0) {
         throw new MissingRecipientsForEmailMessageException();
     }
     $box = EmailBox::resolveAndGetByName(EmailBox::NOTIFICATIONS_NAME);
     $emailMessage->folder = EmailFolder::getByBoxAndType($box, EmailFolder::TYPE_DRAFT);
     Yii::app()->emailHelper->send($emailMessage);
 }
示例#5
0
 public function testCreateAndGetEmailTemplateById()
 {
     $emailTemplate = new EmailTemplate();
     $emailTemplate->type = EmailTemplate::TYPE_CONTACT;
     $emailTemplate->subject = 'Test subject';
     $emailTemplate->modelClassName = 'Contact';
     $emailTemplate->name = 'Test Email Template';
     $emailTemplate->htmlContent = 'Test html Content';
     $emailTemplate->textContent = 'Test text Content';
     $this->assertTrue($emailTemplate->save());
     $id = $emailTemplate->id;
     unset($emailTemplate);
     $emailTemplate = EmailTemplate::getById($id);
     $this->assertEquals(EmailTemplate::TYPE_CONTACT, $emailTemplate->type);
     $this->assertEquals('Test subject', $emailTemplate->subject);
     $this->assertEquals('Test Email Template', $emailTemplate->name);
     $this->assertEquals('Test html Content', $emailTemplate->htmlContent);
     $this->assertEquals('Test text Content', $emailTemplate->textContent);
     $this->assertEquals(1, count(EmailTemplate::getAll()));
 }
 /**
  * @param DemoDataHelper $demoDataHelper
  */
 public function makeAll(&$demoDataHelper)
 {
     assert('$demoDataHelper instanceof DemoDataHelper');
     assert('$demoDataHelper->isSetRange("User")');
     $emailTemplates = array();
     $types = array_keys(EmailTemplate::getTypeDropDownArray());
     for ($this->index = 0; $this->index < 7; $this->index++) {
         $emailTemplate = new EmailTemplate();
         $emailTemplate->type = $types[$this->index % 2];
         $emailTemplate->owner = $demoDataHelper->getRandomByModelName('User');
         $this->populateModel($emailTemplate);
         $emailTemplate->addPermissions(Group::getByName(Group::EVERYONE_GROUP_NAME), Permission::READ_WRITE_CHANGE_PERMISSIONS_CHANGE_OWNER);
         $saved = $emailTemplate->save();
         assert('$saved');
         $emailTemplate = EmailTemplate::getById($emailTemplate->id);
         ReadPermissionsOptimizationUtil::securableItemGivenPermissionsForGroup($emailTemplate, Group::getByName(Group::EVERYONE_GROUP_NAME));
         $emailTemplate->save();
         $emailTemplates[] = $emailTemplate->id;
     }
     $demoDataHelper->setRangeByModelName('EmailTemplate', $emailTemplates[0], $emailTemplates[count($emailTemplates) - 1]);
 }
 /**
  * @depends testSaveWithValidDataWithValidation
  * @depends testGetHtmlContentActionForBuilder
  */
 public function testSaveWithBaseTemplateIdUpdate()
 {
     $emailTemplateId = self::getModelIdByModelNameAndName('EmailTemplate', 'builder 02');
     $emailTemplate = EmailTemplate::getById($emailTemplateId);
     $oldUnserializedData = CJSON::decode($emailTemplate->serializedData);
     $oldBaseTemplateId = ArrayUtil::getArrayValue($oldUnserializedData, 'baseTemplateId');
     $baseTemplateId = self::getModelIdByModelNameAndName('EmailTemplate', 'builder 01');
     $baseTemplate = EmailTemplate::getById($baseTemplateId);
     $expectedUnserializedData = CJSON::decode($baseTemplate->serializedData);
     unset($expectedUnserializedData['icon']);
     $expectedUnserializedData['baseTemplateId'] = $baseTemplate->id;
     $expectedHtmlContent = EmailTemplateSerializedDataToHtmlUtil::resolveHtmlByUnserializedData($expectedUnserializedData);
     $post = array('BuilderEmailTemplateWizardForm' => array('name' => 'builder 02', 'subject' => 'builder 02', 'type' => 2, 'builtType' => 3, 'isDraft' => 0, 'language' => '', 'hiddenId' => $emailTemplateId, 'modelClassName' => 'Contact', 'ownerId' => 1, 'ownerName' => 'Super User', 'explicitReadWriteModelPermissions' => array('nonEveryoneGroup' => 3, 'type' => 1), 'baseTemplateId' => $baseTemplateId, 'serializedData' => array('baseTemplateId' => $baseTemplateId, 'dom' => CJSON::encode($oldUnserializedData['dom'])), 'originalBaseTemplateId' => $oldBaseTemplateId, 'textContent' => 'some text changed'), 'validationScenario' => BuilderEmailTemplateWizardForm::PLAIN_AND_RICH_CONTENT_VALIDATION_SCENARIO, 'ajax' => 'edit-form');
     $this->setGetArray(array('builtType' => EmailTemplate::BUILT_TYPE_BUILDER_TEMPLATE));
     $this->setPostArray($post);
     $content = $this->runControllerWithExitExceptionAndGetContent('emailTemplates/default/save');
     $jsonDecodedContent = CJSON::decode($content);
     $this->assertEmpty($jsonDecodedContent);
     // now send the actual save request
     unset($post['ajax']);
     $this->setPostArray($post);
     $content = $this->runControllerWithExitExceptionAndGetContent('emailTemplates/default/save');
     $jsonDecodedContent = CJSON::decode($content);
     $this->assertNotEmpty($jsonDecodedContent);
     $this->assertCount(3, $jsonDecodedContent);
     $this->assertArrayHasKey('id', $jsonDecodedContent);
     $this->assertEquals($emailTemplateId, $jsonDecodedContent['id']);
     $this->assertArrayHasKey('redirectToList', $jsonDecodedContent);
     $this->assertFalse($jsonDecodedContent['redirectToList']);
     $this->assertArrayHasKey('moduleClassName', $jsonDecodedContent);
     $this->assertEquals('ContactsModule', $jsonDecodedContent['moduleClassName']);
     // ensure htmlContent was generated.
     $emailTemplate->forgetAll();
     unset($emailTemplate);
     $emailTemplate = EmailTemplate::getById($emailTemplateId);
     $unserializedData = CJSON::decode($emailTemplate->serializedData);
     $this->assertEquals($expectedUnserializedData, $unserializedData);
     $this->assertEquals('some text changed', $emailTemplate->textContent);
     $this->assertEquals($expectedHtmlContent, $emailTemplate->htmlContent);
 }
 public function actionSendTestEmail($id, $contactId = null, $emailAddress = null, $useHtmlContent = 1)
 {
     $emailTemplate = EmailTemplate::getById(intval($id));
     ControllerSecurityUtil::resolveAccessCanCurrentUserReadModel($emailTemplate);
     $htmlContent = $emailTemplate->htmlContent;
     if (!$useHtmlContent) {
         $htmlContent = EmailTemplateSerializedDataToHtmlUtil::resolveHtmlByEmailTemplateModel($emailTemplate, false);
     }
     $contact = null;
     if (isset($contactId)) {
         $contact = Contact::getById(intval($contactId));
     }
     static::resolveEmailMessage($emailTemplate, $contact, $htmlContent, $emailAddress);
 }
 protected static function resolveSerializedDataForTemplateByPostData()
 {
     $unserializedData = array();
     $postUnserializedData = ArrayUtil::getArrayValue(static::$data, 'serializedData');
     $templateUnserializedData = CJSON::decode(static::$emailTemplate->serializedData);
     if (empty($templateUnserializedData)) {
         $templateUnserializedData = array('baseTemplateId' => null);
     }
     // dom element would be empty till we get to canvas screen and hit save/finish at least once on create
     // we need to unset it so if user does not change pre-selected base template on step 2 and moves to canvas
     // during step 2, we don't end up purging baseTemplate's dom we loaded in step1's save.
     if (empty($postUnserializedData['dom'])) {
         unset($postUnserializedData['dom']);
     } else {
         // if it is set then it is most probably in
         $postUnserializedData['dom'] = CJSON::decode($postUnserializedData['dom']);
     }
     if (static::hasBaseTemplateIdChanged($postUnserializedData['baseTemplateId'], $templateUnserializedData['baseTemplateId'])) {
         // baseTemplateId has changed.
         $baseTemplateModel = EmailTemplate::getById(intval($postUnserializedData['baseTemplateId']));
         $unserializedData = CJSON::decode($baseTemplateModel->serializedData);
         unset($unserializedData['icon']);
         $unserializedData['baseTemplateId'] = $postUnserializedData['baseTemplateId'];
     } elseif ($templateUnserializedData != $postUnserializedData) {
         // baseTemplateId remains same, probably a post from canvas
         if (isset($postUnserializedData['dom']) && isset($templateUnserializedData['dom'])) {
             unset($templateUnserializedData['dom']);
         }
         $unserializedData = CMap::mergeArray($templateUnserializedData, $postUnserializedData);
     }
     if (!empty($unserializedData)) {
         static::$emailTemplate->serializedData = CJSON::encode($unserializedData);
     }
     // we don't need this as we "continue" in the invoker if block but still...
     unset(static::$data['serializedData']);
 }
 /**
  * @depends testSuperUserDetailsJsonActionForWorkflow
  */
 public function testSuperUserDetailsActionForWorkflow()
 {
     $emailTemplateId = self::getModelIdByModelNameAndName('EmailTemplate', 'New Test Workflow Email Template 00');
     $emailTemplate = EmailTemplate::getById($emailTemplateId);
     $this->setGetArray(array('id' => $emailTemplateId));
     $content = $this->runControllerWithNoExceptionsAndGetContent('emailTemplates/default/details');
     $this->assertTrue(strpos($content, '<span class="ellipsis-content">' . $emailTemplate->name . '</span>') !== false);
     $this->assertTrue(strpos($content, '<span>Options</span>') !== false);
     $this->assertTrue(strpos($content, 'emailTemplates/default/edit?id=' . $emailTemplateId) !== false);
     $this->assertTrue(strpos($content, 'emailTemplates/default/delete?id=' . $emailTemplateId) !== false);
     $this->assertTrue(strpos($content, '<th>Name</th><td colspan="1">' . $emailTemplate->name . '</td>') !== false);
     $this->assertTrue(strpos($content, '<th>Subject</th><td colspan="1">' . $emailTemplate->subject . '</td>') !== false);
     $this->assertTrue(strpos($content, '<div class="tabs-nav"><a class="active-tab" href="#tab1">') !== false);
     $this->assertTrue(strpos($content, '<a href="#tab2">') !== false);
 }
 /**
  * Resolve html for a builder template provided its id
  * @param $emailTemplateId
  * @param bool $renderForCanvas
  * @return bool|null|string
  */
 public static function resolveHtmlByEmailTemplateId($emailTemplateId, $renderForCanvas = false)
 {
     $emailTemplate = EmailTemplate::getById(intval($emailTemplateId));
     $resolvedHtml = static::resolveHtmlByEmailTemplateModel($emailTemplate, $renderForCanvas);
     return $resolvedHtml;
 }
示例#12
0
文件: acc.php 项目: FastLizard4/waca
         if ($nameCheck != false && $nameCheck->getId() != $_GET['edit']) {
             BootstrapSkin::displayAlertBox("That Email template name is already being used. Please choose another.");
             BootstrapSkin::displayInternalFooter();
             die;
         }
         $database->transactionally(function () use($database, $emailTemplate) {
             $emailTemplate->save();
             Logger::editedEmail($database, $emailTemplate);
             global $baseurl;
             Notification::emailEdited($emailTemplate);
             SessionAlert::success("Email template has been saved successfully.");
             header("Location: {$baseurl}/acc.php?action=emailmgmt");
         });
         die;
     }
     $emailTemplate = EmailTemplate::getById($_GET['edit'], gGetDb());
     $smarty->assign('id', $emailTemplate->getId());
     $smarty->assign('emailTemplate', $emailTemplate);
     $smarty->assign('createdid', $createdid);
     $smarty->assign('requeststates', $availableRequestStates);
     $smarty->assign('emailmgmtpage', 'Edit');
     // Use a variable so we don't need two Smarty templates for creating and editing.
     $smarty->display("email-management/edit.tpl");
     BootstrapSkin::displayInternalFooter();
     die;
 }
 $query = "SELECT * FROM emailtemplate WHERE active = 1";
 $statement = gGetDb()->prepare($query);
 $statement->execute();
 $rows = $statement->fetchAll(PDO::FETCH_CLASS, "EmailTemplate");
 $smarty->assign('activeemails', $rows);
 /**
  * @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);
 }
示例#14
0
文件: Logger.php 项目: Austin503/waca
 /**
  * Summary of getLogDescription
  * @param Log $entry 
  * @return string
  */
 public static function getLogDescription(Log $entry)
 {
     $text = "Deferred to ";
     if (substr($entry->getAction(), 0, strlen($text)) == $text) {
         // Deferred to a different queue
         // This is exactly what we want to display.
         return $entry->getAction();
     }
     $text = "Closed custom-n";
     if ($entry->getAction() == $text) {
         // Custom-closed
         return "closed (custom reason - account not created)";
     }
     $text = "Closed custom-y";
     if ($entry->getAction() == $text) {
         // Custom-closed
         return "closed (custom reason - account created)";
     }
     $text = "Closed 0";
     if ($entry->getAction() == $text) {
         // Dropped the request - short-circuit the lookup
         return "dropped request";
     }
     $text = "Closed ";
     if (substr($entry->getAction(), 0, strlen($text)) == $text) {
         // Closed with a reason - do a lookup here.
         $id = substr($entry->getAction(), strlen($text));
         $template = EmailTemplate::getById((int) $id, $entry->getDatabase());
         if ($template != false) {
             return "closed (" . $template->getName() . ")";
         }
     }
     // Fall back to the basic stuff
     $lookup = array('Reserved' => 'reserved', 'Email Confirmed' => 'email-confirmed', 'Unreserved' => 'unreserved', 'Approved' => 'approved', 'Suspended' => 'suspended', 'Banned' => 'banned', 'Edited' => 'edited interface message', 'Declined' => 'declined', 'EditComment-c' => 'edited a comment', 'EditComment-r' => 'edited a comment', 'Unbanned' => 'unbanned', 'Promoted' => 'promoted to tool admin', 'BreakReserve' => 'forcibly broke the reservation', 'Prefchange' => 'changed user preferences', 'Renamed' => 'renamed', 'Demoted' => 'demoted from tool admin', 'ReceiveReserved' => 'received the reservation', 'SendReserved' => 'sent the reservation', 'EditedEmail' => 'edited email', 'DeletedTemplate' => 'deleted template', 'EditedTemplate' => 'edited template', 'CreatedEmail' => 'created email', 'CreatedTemplate' => 'created template', 'SentMail' => 'sent an email to the requestor');
     if (array_key_exists($entry->getAction(), $lookup)) {
         return $lookup[$entry->getAction()];
     }
     // OK, I don't know what this is. Fall back to something sane.
     return "performed an unknown action ({$entry->getAction()})";
 }
 /**
  * Resolve html for a builder template provided its id
  * @param $emailTemplateId
  * @param bool $renderForCanvas
  * @param OwnedSecurableItem $attachedMergeTagModel
  * @return bool|null|string
  */
 public static function resolveHtmlByEmailTemplateId($emailTemplateId, $renderForCanvas = false, OwnedSecurableItem $attachedMergeTagModel = null)
 {
     $emailTemplate = EmailTemplate::getById(intval($emailTemplateId));
     $resolvedHtml = static::resolveHtmlByEmailTemplateModel($emailTemplate, $renderForCanvas, $attachedMergeTagModel);
     return $resolvedHtml;
 }
示例#16
0
function zoomPage($id, $urlhash)
{
    global $session, $availableRequestStates, $createdid;
    global $smarty, $locationProvider, $rdnsProvider, $antispoofProvider;
    global $xffTrustProvider, $enableEmailConfirm;
    $database = gGetDb();
    $request = Request::getById($id, $database);
    if ($request == false) {
        // Notifies the user and stops the script.
        BootstrapSkin::displayAlertBox("Could not load the requested request!", "alert-error", "Error", true, false);
        BootstrapSkin::displayInternalFooter();
        die;
    }
    $smarty->assign('ecenable', $enableEmailConfirm);
    if (isset($_GET['ecoverride']) && User::getCurrent()->isAdmin()) {
        $smarty->assign('ecoverride', true);
    } else {
        $smarty->assign('ecoverride', false);
    }
    $smarty->assign('request', $request);
    $smarty->assign("usernamerawunicode", html_entity_decode($request->getName()));
    $smarty->assign("iplocation", $locationProvider->getIpLocation($request->getTrustedIp()));
    $createdreason = EmailTemplate::getById($createdid, gGetDb());
    $smarty->assign("createdEmailTemplate", $createdreason);
    #region setup whether data is viewable or not
    $viewableDataStatement = $database->prepare(<<<SQL
        SELECT COUNT(*) 
        FROM request 
        WHERE 
            (
                email = :email 
                OR ip = :trustedIp 
                OR forwardedip LIKE :trustedProxy
            ) 
            AND reserved = :reserved 
            AND emailconfirm = 'Confirmed' 
            AND status != 'Closed';
SQL
);
    $viewableDataStatement->bindValue(":email", $request->getEmail());
    $viewableDataStatement->bindValue(":reserved", User::getCurrent()->getId());
    $viewableDataStatement->bindValue(":trustedIp", $request->getTrustedIp());
    $viewableDataStatement->bindValue(":trustedProxy", '%' . $request->getTrustedIp() . '%');
    $viewableDataStatement->execute();
    $viewableData = $viewableDataStatement->fetchColumn();
    $viewableDataStatement->closeCursor();
    $hideinfo = $viewableData == 0;
    #endregion
    if ($request->getStatus() == "Closed") {
        $hash = md5($request->getId() . $request->getEmail() . $request->getTrustedIp() . microtime());
        //If the request is closed, change the hash based on microseconds similar to the checksums.
        $smarty->assign("isclosed", true);
    } else {
        $hash = md5($request->getId() . $request->getEmail() . $request->getTrustedIp());
        $smarty->assign("isclosed", false);
    }
    $smarty->assign("hash", $hash);
    if ($hash == $urlhash) {
        $correcthash = true;
    } else {
        $correcthash = false;
    }
    $smarty->assign("showinfo", false);
    if ($hideinfo == false || $correcthash == true || User::getCurrent()->isAdmin() || User::getCurrent()->isCheckuser()) {
        $smarty->assign("showinfo", true);
    }
    // force to not show, overriden later
    $smarty->assign("proxyip", "");
    if ($hideinfo == false || $correcthash == true || User::getCurrent()->isAdmin() || User::getCurrent()->isCheckuser()) {
        $smarty->assign("proxyip", $request->getForwardedIp());
        if ($request->getForwardedIp()) {
            $smartyproxies = array();
            // Initialize array to store data to be output in Smarty template.
            $smartyproxiesindex = 0;
            $proxies = explode(",", $request->getForwardedIp());
            $proxies[] = $request->getIp();
            $origin = $proxies[0];
            $smarty->assign("origin", $origin);
            $proxies = array_reverse($proxies);
            $trust = true;
            global $rfc1918ips;
            foreach ($proxies as $proxynum => $p) {
                $p2 = trim($p);
                $smartyproxies[$smartyproxiesindex]['ip'] = $p2;
                // get data on this IP.
                $trusted = $xffTrustProvider->isTrusted($p2);
                $ipisprivate = ipInRange($rfc1918ips, $p2);
                if (!$ipisprivate) {
                    $iprdns = $rdnsProvider->getRdns($p2);
                    $iplocation = $locationProvider->getIpLocation($p2);
                } else {
                    // this is going to fail, so why bother trying?
                    $iprdns = false;
                    $iplocation = false;
                }
                // current trust chain status BEFORE this link
                $pretrust = $trust;
                // is *this* link trusted?
                $smartyproxies[$smartyproxiesindex]['trustedlink'] = $trusted;
                // current trust chain status AFTER this link
                $trust = $trust & $trusted;
                if ($pretrust && $p2 == $origin) {
                    $trust = true;
                }
                $smartyproxies[$smartyproxiesindex]['trust'] = $trust;
                $smartyproxies[$smartyproxiesindex]['rdnsfailed'] = $iprdns === false;
                $smartyproxies[$smartyproxiesindex]['rdns'] = $iprdns;
                $smartyproxies[$smartyproxiesindex]['routable'] = !$ipisprivate;
                $smartyproxies[$smartyproxiesindex]['location'] = $iplocation;
                if ($iprdns == $p2 && $ipisprivate == false) {
                    $smartyproxies[$smartyproxiesindex]['rdns'] = null;
                }
                $smartyproxies[$smartyproxiesindex]['showlinks'] = (!$trust || $p2 == $origin) && !$ipisprivate;
                $smartyproxiesindex++;
            }
            $smarty->assign("proxies", $smartyproxies);
        }
    }
    global $defaultRequestStateKey;
    // TODO: remove me and replace with call in the template directly
    $smarty->assign("isprotected", $request->isProtected());
    $smarty->assign("defaultstate", $defaultRequestStateKey);
    $smarty->assign("requeststates", $availableRequestStates);
    try {
        $spoofs = $antispoofProvider->getSpoofs($request->getName());
    } catch (Exception $ex) {
        $spoofs = $ex->getMessage();
    }
    $smarty->assign("spoofs", $spoofs);
    // START LOG DISPLAY
    $logs = Logger::getRequestLogsWithComments($request->getId(), $request->getDatabase());
    $requestLogs = array();
    if (trim($request->getComment()) !== "") {
        $requestLogs[] = array('type' => 'comment', 'security' => 'user', 'userid' => null, 'user' => $request->getName(), 'entry' => null, 'time' => $request->getDate(), 'canedit' => false, 'id' => $request->getId(), 'comment' => $request->getComment());
    }
    $namecache = array();
    $editableComments = false;
    if (User::getCurrent()->isAdmin() || User::getCurrent()->isCheckuser()) {
        $editableComments = true;
    }
    foreach ($logs as $entry) {
        // both log and comment have a 'user' field
        if (!array_key_exists($entry->getUser(), $namecache)) {
            $namecache[$entry->getUser()] = $entry->getUserObject();
        }
        if ($entry instanceof Comment) {
            $requestLogs[] = array('type' => 'comment', 'security' => $entry->getVisibility(), 'user' => $namecache[$entry->getUser()]->getUsername(), 'userid' => $entry->getUser() == -1 ? null : $entry->getUser(), 'entry' => null, 'time' => $entry->getTime(), 'canedit' => $editableComments || $entry->getUser() == User::getCurrent()->getId(), 'id' => $entry->getId(), 'comment' => $entry->getComment());
        }
        if ($entry instanceof Log) {
            $requestLogs[] = array('type' => 'log', 'security' => 'user', 'userid' => $entry->getUser() == -1 ? null : $entry->getUser(), 'user' => $namecache[$entry->getUser()]->getUsername(), 'entry' => Logger::getLogDescription($entry), 'time' => $entry->getTimestamp(), 'canedit' => false, 'id' => $entry->getId(), 'comment' => $entry->getComment());
        }
    }
    $smarty->assign("requestLogs", $requestLogs);
    // START OTHER REQUESTS BY IP AND EMAIL STUFF
    // Displays other requests from this ip.
    // assign to user
    $userListQuery = "SELECT username FROM user WHERE status = 'User' or status = 'Admin';";
    $userListResult = gGetDb()->query($userListQuery);
    $userListData = $userListResult->fetchAll(PDO::FETCH_COLUMN);
    $userListProcessedData = array();
    foreach ($userListData as $userListItem) {
        $userListProcessedData[] = "\"" . htmlentities($userListItem) . "\"";
    }
    $userList = '[' . implode(",", $userListProcessedData) . ']';
    $smarty->assign("jsuserlist", $userList);
    // end: assign to user
    // TODO: refactor this!
    $createreasons = EmailTemplate::getActiveTemplates(EmailTemplate::CREATED);
    $smarty->assign("createreasons", $createreasons);
    $declinereasons = EmailTemplate::getActiveTemplates(EmailTemplate::NOT_CREATED);
    $smarty->assign("declinereasons", $declinereasons);
    $allcreatereasons = EmailTemplate::getAllActiveTemplates(EmailTemplate::CREATED);
    $smarty->assign("allcreatereasons", $allcreatereasons);
    $alldeclinereasons = EmailTemplate::getAllActiveTemplates(EmailTemplate::NOT_CREATED);
    $smarty->assign("alldeclinereasons", $alldeclinereasons);
    $allotherreasons = EmailTemplate::getAllActiveTemplates(false);
    $smarty->assign("allotherreasons", $allotherreasons);
    return $smarty->fetch("request-zoom.tpl");
}
 /**
  * @depends testRegularUserAllDefaultControllerActions
  */
 public function testRegularUserCreateActionForWorkflow()
 {
     // TODO: @Shoaibi/@Jason: Medium: Even if a user doesn't have module permission he can sent that modelClassName in POST
     // nobody needs access to meetings ans contact to have that in ddl.
     $this->user->setRight('ContactsModule', ContactsModule::getAccessRight());
     $this->user->setRight('MeetingsModule', MeetingsModule::getAccessRight());
     $this->assertTrue($this->user->save());
     // Create a new emailTemplate and test validator.
     $this->setGetArray(array('type' => EmailTemplate::TYPE_WORKFLOW));
     $this->setPostArray(array('EmailTemplate' => array('type' => EmailTemplate::TYPE_WORKFLOW, 'name' => 'New Test Workflow EmailTemplate', 'subject' => 'New Test Subject')));
     $content = $this->runControllerWithNoExceptionsAndGetContent('emailTemplates/default/create');
     $this->assertTrue(strpos($content, 'Create Email Template') !== false);
     $this->assertFalse(strpos($content, '<select name="EmailTemplate[type]" id="EmailTemplate_type">') !== false);
     $this->assertTrue(strpos($content, '<select name="EmailTemplate[modelClassName]" id="EmailTemplate_modelClassName_value"') !== false);
     $this->assertTrue(strpos($content, 'Please provide at least one of the contents field.') !== false);
     $this->assertTrue(strpos($content, 'Module cannot be blank.') !== false);
     // Create a new emailTemplate and test merge tags validator.
     $this->setPostArray(array('EmailTemplate' => array('type' => EmailTemplate::TYPE_WORKFLOW, 'modelClassName' => 'Meeting', 'name' => 'New Test Workflow EmailTemplate', 'subject' => 'New Test Subject', 'textContent' => 'This is text content [[INVALID^TAG]]', 'htmlContent' => 'This is Html content [[INVALIDTAG]]')));
     $content = $this->runControllerWithNoExceptionsAndGetContent('emailTemplates/default/create');
     $this->assertTrue(strpos($content, 'Create Email Template') !== false);
     $this->assertFalse(strpos($content, '<select name="EmailTemplate[type]" id="EmailTemplate_type">') !== false);
     $this->assertTrue(strpos($content, '<select name="EmailTemplate[modelClassName]" id="EmailTemplate_modelClassName_value">') !== false);
     $this->assertTrue(strpos($content, '<option value="Meeting" selected="selected">Meetings</option>') !== false);
     $this->assertTrue(strpos($content, 'INVALID^TAG') !== false);
     $this->assertTrue(strpos($content, 'INVALIDTAG') !== false);
     $this->assertEquals(2, substr_count($content, 'INVALID^TAG'));
     $this->assertEquals(2, substr_count($content, 'INVALIDTAG'));
     // Create a new emailTemplate and save it.
     $this->setPostArray(array('EmailTemplate' => array('type' => EmailTemplate::TYPE_WORKFLOW, 'name' => 'New Test Workflow EmailTemplate', 'modelClassName' => 'Contact', 'subject' => 'New Test Subject [[FIRST^NAME]]', 'textContent' => 'New Text Content [[FIRST^NAME]]')));
     $redirectUrl = $this->runControllerWithRedirectExceptionAndGetUrl('emailTemplates/default/create');
     $emailTemplateId = self::getModelIdByModelNameAndName('EmailTemplate', 'New Test Workflow EmailTemplate');
     $emailTemplate = EmailTemplate::getById($emailTemplateId);
     $this->assertTrue($emailTemplate->id > 0);
     $this->assertEquals('New Test Subject [[FIRST^NAME]]', $emailTemplate->subject);
     $this->assertEquals('New Text Content [[FIRST^NAME]]', $emailTemplate->textContent);
     $this->assertTrue($emailTemplate->owner == $this->user);
     $compareRedirectUrl = Yii::app()->createUrl('emailTemplates/default/details', array('id' => $emailTemplate->id));
     $this->assertEquals($compareRedirectUrl, $redirectUrl);
     $emailTemplates = EmailTemplate::getAll();
     $this->assertEquals(1, count($emailTemplates));
 }
 public function actionConvertEmail($id, $converter = null)
 {
     $emailTemplate = EmailTemplate::getById(intval($id));
     ControllerSecurityUtil::resolveAccessCanCurrentUserReadModel($emailTemplate);
     $htmlContent = ZurmoCssInlineConverterUtil::convertAndPrettifyEmailByModel($emailTemplate, $converter);
     echo $htmlContent;
 }