protected function renderControlNonEditable()
 {
     assert('$this->model instanceof EmailMessage');
     $recipientsContent = EmailMessageMashableActivityRules::getRecipientsContent($this->model->recipients, EmailMessageRecipient::TYPE_BCC);
     if ($recipientsContent == null && $this->form != null) {
         $recipientsContent = ' ';
     }
     return Yii::app()->format->html($recipientsContent);
 }
 protected function renderControlNonEditable()
 {
     assert('$this->model->{$this->attribute} instanceof EmailMessageSender');
     $sender = $this->model->{$this->attribute};
     $senderContent = EmailMessageMashableActivityRules::getSenderContent($sender);
     if ($senderContent == null && $this->form != null) {
         $senderContent = ' ';
     }
     return Yii::app()->format->html($senderContent);
 }
 public function testResolveSearchAttributesDataByRelatedItemIdWithRegularUser()
 {
     Yii::app()->user->userModel = User::getByUsername('benny');
     $mungeIds = ReadPermissionsOptimizationUtil::getMungeIdsByUser(Yii::app()->user->userModel);
     $quote = DatabaseCompatibilityUtil::getQuote();
     $rules = new EmailMessageMashableActivityRules();
     $searchAttributeData = $rules->resolveSearchAttributesDataByRelatedItemId(5);
     $joinTablesAdapter = new RedBeanModelJoinTablesQueryAdapter('EmailMessage');
     $where = RedBeanModelDataProvider::makeWhere('EmailMessage', $searchAttributeData, $joinTablesAdapter);
     $compareWhere = "(({$quote}emailmessagesender{$quote}.{$quote}personoraccount_item_id{$quote} = 5) or (1 = ";
     $compareWhere .= "(select 1 from {$quote}emailmessagerecipient{$quote} emailmessagerecipient where ";
     $compareWhere .= "{$quote}emailmessagerecipient{$quote}.{$quote}emailmessage_id` = {$quote}emailmessage";
     $compareWhere .= "{$quote}.id and {$quote}emailmessagerecipient{$quote}.{$quote}personoraccount_item_id` = 5 limit 1)))";
     $this->assertEquals($compareWhere, $where);
     $sql = EmailMessage::makeSubsetOrCountSqlQuery('emailmessage', $joinTablesAdapter, 1, 5, $where, null);
     $compareSubsetSql = "select distinct {$quote}emailmessage{$quote}.{$quote}id{$quote} id ";
     $compareSubsetSql .= "from ({$quote}emailmessage{$quote}, {$quote}ownedsecurableitem{$quote}) ";
     $compareSubsetSql .= "left join {$quote}emailmessagesender{$quote} on ";
     $compareSubsetSql .= "{$quote}emailmessagesender{$quote}.{$quote}id{$quote} = {$quote}emailmessage{$quote}.";
     $compareSubsetSql .= "{$quote}sender_emailmessagesender_id{$quote} ";
     $compareSubsetSql .= "left join {$quote}emailmessage_read{$quote} on ";
     $compareSubsetSql .= "{$quote}emailmessage_read{$quote}.{$quote}securableitem_id{$quote} = ";
     $compareSubsetSql .= "{$quote}ownedsecurableitem{$quote}.{$quote}securableitem_id{$quote} ";
     $compareSubsetSql .= "and {$quote}munge_id{$quote} in ('" . join("', '", $mungeIds) . "') ";
     $compareSubsetSql .= "where (" . $compareWhere . ') ';
     $compareSubsetSql .= "and ({$quote}ownedsecurableitem{$quote}.{$quote}owner__user_id{$quote} = " . Yii::app()->user->userModel->id . " ";
     // Not Coding Standard
     $compareSubsetSql .= "OR {$quote}emailmessage_read{$quote}.{$quote}munge_id{$quote} IS NOT NULL) ";
     // Not Coding Standard
     $compareSubsetSql .= "and {$quote}ownedsecurableitem{$quote}.{$quote}id{$quote} = ";
     $compareSubsetSql .= "{$quote}emailmessage{$quote}.{$quote}ownedsecurableitem_id{$quote} ";
     $compareSubsetSql .= 'limit 5 offset 1';
     $this->assertEquals($compareSubsetSql, $sql);
     //Make sure the sql runs properly.
     $data = EmailMessage::getSubset($joinTablesAdapter, 0, 5, $where, null);
     $this->assertEquals(0, count($data));
 }
 public function testResolveContactToSenderOrRecipientForReceivedEmail()
 {
     $super = User::getByUsername('super');
     Yii::app()->user->userModel = $super;
     $message1 = self::$message1;
     $contact = new Contact();
     $contact->firstName = 'Jason';
     $contact->lastName = 'Green';
     $contact->state = ContactsUtil::getStartingState();
     $saved = $contact->save();
     $this->assertTrue($saved);
     $contactId = $contact->id;
     $contact->forget();
     $contact = Contact::getById($contactId);
     $this->assertNull($contact->primaryEmail->emailAddress);
     ArchivedEmailMatchingUtil::resolveContactToSenderOrRecipient($message1, $contact);
     $saved = $message1->save();
     $this->assertTrue($saved);
     $messageId = $message1->id;
     $message1->forget();
     $contact->forget();
     RedBeanModel::forgetAll();
     //simulates crossing page requests
     $message1 = EmailMessage::getById($messageId);
     $contact = Contact::getById($contactId);
     $this->assertEquals(1, $message1->sender->personsOrAccounts->count());
     $castedDownModel = EmailMessageMashableActivityRules::castDownItem($message1->sender->personsOrAccounts[0]);
     $this->assertEquals('Contact', get_class($castedDownModel));
     $this->assertEquals($contact->id, $castedDownModel->id);
 }
 public function testResolveSearchAttributeDataForAllLatestActivities()
 {
     $box = EmailBox::resolveAndGetByName(EmailBox::NOTIFICATIONS_NAME);
     $rules = new EmailMessageMashableActivityRules();
     $searchAttributeData = array();
     $searchAttributeData['clauses'] = array();
     $searchAttributeData['structure'] = null;
     $searchAttributeData = $rules->resolveSearchAttributeDataForAllLatestActivities($searchAttributeData);
     $compareData = array('clauses' => array(1 => array('attributeName' => 'folder', 'relatedModelData' => array('attributeName' => 'emailBox', 'operatorType' => 'doesNotEqual', 'value' => $box->id))), 'structure' => '1');
     $this->assertEquals($compareData, $searchAttributeData);
 }
 protected function renderControlNonEditable()
 {
     assert('$this->model instanceof EmailMessage');
     return Yii::app()->format->html(EmailMessageMashableActivityRules::getRecipientsContent($this->model->recipients, EmailMessageRecipient::TYPE_BCC));
 }
 public function testGetRecipientsContent()
 {
     //Test without personsOrAccounts
     $emailMessageRecipient1 = new EmailMessageRecipient();
     $emailMessageRecipient1->type = EmailMessageRecipient::TYPE_TO;
     $emailMessageRecipient1->toName = 'test name1';
     $emailMessageRecipient1->toAddress = '*****@*****.**';
     $emailMessageRecipient2 = new EmailMessageRecipient();
     $emailMessageRecipient2->type = EmailMessageRecipient::TYPE_TO;
     $emailMessageRecipient2->toName = 'test name2';
     $emailMessageRecipient2->toAddress = '*****@*****.**';
     $emailMessage = new EmailMessage();
     $emailMessage->recipients->add($emailMessageRecipient1);
     $emailMessage->recipients->add($emailMessageRecipient2);
     $content = EmailMessageMashableActivityRules::getRecipientsContent($emailMessage->recipients);
     $this->assertContains('test1@zurmo.com test name1', $content);
     $this->assertContains('test2@zurmo.com test name2', $content);
     //Test with personOrAccount
     $contact1 = new Contact();
     $contact2 = new Contact();
     $contact1->lastName = 'contact1';
     $contact2->lastName = 'contact2';
     $emailMessageRecipient1->personsOrAccounts->add($contact1);
     $emailMessageRecipient2->personsOrAccounts->add($contact1);
     $emailMessageRecipient2->personsOrAccounts->add($contact2);
     $content = EmailMessageMashableActivityRules::getRecipientsContent($emailMessage->recipients);
     $this->assertContains('href=', $content);
     $this->assertNotContains('*****@*****.**', $content);
     $this->assertContains('*****@*****.**', $content);
     $this->assertContains('contact1', $content);
     $this->assertContains('contact2', $content);
 }
 /**
  * Renders content for the view.
  * @return A string containing the element's content.
  */
 protected function renderContent()
 {
     $this->renderScriptsContent();
     $this->setView(new AnyContactSelectForEmailMatchingView($this->controllerId, $this->moduleId, $this->selectForm, $this->uniqueId, $this->saveActionId, $this->urlParameters), 0, 0);
     $row = 1;
     // $content = $this->renderEmailMessageContentAndResolveLink();
     if ($this->userCanCreateContact) {
         $this->setView(new ContactInlineCreateForArchivedEmailCreateView($this->controllerId, $this->moduleId, $this->emailMessage->id, $this->contact, $this->uniqueId, $this->saveActionId, $this->urlParameters), $row, 0);
         $row++;
     }
     if ($this->userCanCreateLead) {
         $this->setView(new LeadInlineCreateForArchivedEmailCreateView($this->controllerId, $this->moduleId, $this->emailMessage->id, $this->contact, $this->uniqueId, $this->saveActionId, $this->urlParameters), $row, 0);
     }
     $selectLink = $this->renderSelectLinkContent();
     $createContactLink = ZurmoHtml::link(Zurmo::t('ContactsModule', 'Create ContactsModuleSingularLabel', LabelUtil::getTranslationParamsForAllModules()), '#', array('class' => 'create-link contact-create-link z-action-link'));
     $createLeadLink = ZurmoHtml::link(Zurmo::t('LeadsModule', 'Create LeadsModuleSingularLabel', LabelUtil::getTranslationParamsForAllModules()), '#', array('class' => 'create-link lead-create-link z-action-link'));
     $deleteLink = $this->renderDeleteLink();
     $rules = new EmailMessageMashableActivityRules();
     $content = $rules->renderRelatedModelsByImportanceContent($this->emailMessage);
     $content .= ZurmoHtml::wrapLabel(strval($this->emailMessage), 'email-subject');
     $content .= '<div class="matching-actions-and-content"><div class="email-matching-actions">';
     $content .= $this->renderTitleDivContent($selectLink, $createLeadLink, $createContactLink, $deleteLink);
     $content .= '</div>';
     $content .= parent::renderContent() . '</div>';
     return '<div id="wrapper-' . $this->uniqueId . '" class="email-archive-item">' . $content . '</div>';
 }
 protected function renderControlNonEditable()
 {
     assert('$this->model->{$this->attribute} instanceof EmailMessageSender');
     $sender = $this->model->{$this->attribute};
     return Yii::app()->format->html(EmailMessageMashableActivityRules::getSenderContent($sender));
 }