/**
  * @depends testResolveQueryStringFromUrlAndCreateOrUpdateActivityThrowsExceptionWhenNoIdInQueryString
  */
 public function testResolveQueryStringFromUrlAndCreateOrUpdateActivityForEmailOpenTrackingWithoutExceptions()
 {
     // setup pre-req data
     $contact = ContactTestHelper::createContactByNameForOwner('contact 01', $this->user);
     $marketingList = MarketingListTestHelper::createMarketingListByName('marketingList 01', 'description 01', 'fromName 01', '*****@*****.**');
     $campaign = CampaignTestHelper::createCampaign('campaign 01', 'subject 01', 'text Content 01', 'html Content 01', 'fromName 01', '*****@*****.**', null, null, null, null, $marketingList);
     $processed = 0;
     $campaignItem = CampaignItemTestHelper::createCampaignItem($processed, $campaign, $contact);
     $modelId = $campaignItem->id;
     $modelType = get_class($campaignItem);
     $personId = $contact->getClassId('Person');
     $this->assertNotNull($personId);
     // get the modelClassName to use for activity object tests
     $className = 'CampaignItemActivityUtil';
     $resolveModelClassNameByModelTypeFunction = static::getProtectedMethod($className, 'resolveModelClassNameByModelType');
     $modelClassName = $resolveModelClassNameByModelTypeFunction->invokeArgs(null, array($modelType));
     $type = $modelClassName::TYPE_OPEN;
     $existingActivities = $modelClassName::getByType($type);
     $this->assertCount(0, $existingActivities);
     // get base query string
     $resolveBaseQueryStringArrayFunction = static::getProtectedMethod('ContentTrackingUtil', 'resolveBaseQueryStringArray');
     $queryStringArray = $resolveBaseQueryStringArrayFunction->invokeArgs(null, array($modelId, $modelType, $personId));
     $this->assertNotEmpty($queryStringArray);
     $this->assertCount(3, $queryStringArray);
     $this->assertArrayHasKey('modelId', $queryStringArray);
     $this->assertArrayHasKey('modelType', $queryStringArray);
     $this->assertArrayHasKey('personId', $queryStringArray);
     // get hash for query string and ensure its what we expect it to be.
     $queryStringArrayHash = StringUtil::resolveHashForQueryStringArray($queryStringArray);
     $queryStringArrayDecoded = $className::resolveQueryStringArrayForHash($queryStringArrayHash);
     $this->assertNotEmpty($queryStringArrayDecoded);
     $this->assertCount(5, $queryStringArrayDecoded);
     $this->assertArrayHasKey('modelId', $queryStringArrayDecoded);
     $this->assertArrayHasKey('modelType', $queryStringArrayDecoded);
     $this->assertArrayHasKey('personId', $queryStringArrayDecoded);
     $this->assertArrayHasKey('url', $queryStringArrayDecoded);
     $this->assertArrayHasKey('type', $queryStringArrayDecoded);
     $this->assertEquals($queryStringArray['modelId'], $queryStringArrayDecoded['modelId']);
     $this->assertEquals($queryStringArray['modelType'], $queryStringArrayDecoded['modelType']);
     $this->assertEquals($queryStringArray['personId'], $queryStringArrayDecoded['personId']);
     $this->assertNull($queryStringArrayDecoded['url']);
     $this->assertNull($queryStringArrayDecoded['type']);
     // do the magic, confirm magic worked by checking return value.
     $_GET['id'] = $queryStringArrayHash;
     $result = $className::resolveQueryStringFromUrlAndCreateOrUpdateActivity();
     $this->assertNotEmpty($result);
     $this->assertCount(2, $result);
     $this->assertArrayHasKey('redirect', $result);
     $this->assertArrayHasKey('imagePath', $result);
     $this->assertEquals(false, $result['redirect']);
     $this->assertEquals(PlaceholderImageUtil::resolveOneByOnePixelImagePath(), $result['imagePath']);
     // check activity object count to confirm we got a new activity
     $existingActivities = $modelClassName::getByType($type);
     $this->assertCount(1, $existingActivities);
     // try fetching an object matching criteria of the one we just inserted.
     $activity = $modelClassName::getByTypeAndModelIdAndPersonIdAndUrl($type, $modelId, $personId);
     $this->assertNotEmpty($activity);
     $this->assertCount(1, $activity);
     $this->assertEquals(1, $activity[0]->quantity);
     // do the magic again, this time it should update quantity
     $result = $className::resolveQueryStringFromUrlAndCreateOrUpdateActivity();
     $this->assertNotEmpty($result);
     $this->assertCount(2, $result);
     $this->assertArrayHasKey('redirect', $result);
     $this->assertArrayHasKey('imagePath', $result);
     $this->assertEquals(false, $result['redirect']);
     $this->assertEquals(PlaceholderImageUtil::resolveOneByOnePixelImagePath(), $result['imagePath']);
     // check activity object count to confirm we got a new activity
     $existingActivities = $modelClassName::getByType($type);
     $this->assertCount(1, $existingActivities);
     // try fetching an object matching criteria of the one we just inserted.
     $type = $modelClassName::TYPE_OPEN;
     $activity = $modelClassName::getByTypeAndModelIdAndPersonIdAndUrl($type, $modelId, $personId);
     $this->assertNotEmpty($activity);
     $this->assertCount(1, $activity);
     $this->assertEquals(2, $activity[0]->quantity);
 }
 /**
  * Resolve the divider image for the middle td
  * @return string
  */
 protected function resolveDividerImageUrl()
 {
     $imagePath = static::DEFAULT_STYLE_IMAGE_DIRECTORY_PATH . $this->properties['backend']['image'];
     $imageUrl = PlaceholderImageUtil::resolveUrlForThemeFile($imagePath, true);
     return $imageUrl;
 }
 protected static function processActivityFromQueryStringArray($queryStringArray)
 {
     $activityUpdated = static::createOrUpdateActivity($queryStringArray);
     if (!$activityUpdated) {
         throw new FailedToSaveModelException();
     }
     $trackingType = static::resolveTrackingTypeByQueryStringArray($queryStringArray);
     if ($trackingType === EmailMessageActivity::TYPE_CLICK) {
         // this shouldn't be here, its here to suppose no-scheme urls from previous versions' database
         $url = StringUtil::addSchemeIfMissing($queryStringArray['url']);
         return array('redirect' => true, 'url' => $url);
     } else {
         return array('redirect' => false, 'imagePath' => PlaceholderImageUtil::resolveOneByOnePixelImagePath());
     }
 }
 /**
  * resolve the url for td before and after divider image
  * @return string
  */
 protected function resolveDummyDividerImageUrl()
 {
     return PlaceholderImageUtil::resolveTransparentImageUrl(true);
 }
 protected static function getDummyImageUrl()
 {
     return PlaceholderImageUtil::resolveOneByOnePixelImageUrl(false);
 }
                                                            <table align="left" bgcolor="#cccccc" text="#333333" width="280" cellpadding="10" cellspacing="0" border="0" class="footer-left">
                                                                <tr>
                                                                    <td style="color:#333333;">
                                                                             <p> ' . GlobalMarketingFooterUtil::resolveUnsubscribeUrlMergeTag() . ' <br/> ' . GlobalMarketingFooterUtil::resolveManageSubscriptionsMergeTag() . '</p>
                                                                    </td>
                                                                </tr>
                                                            </table>
                                                            <table align="right" bgcolor="#cccccc" text="#333333" width="280" cellpadding="10" cellspacing="0" border="0" class="footer-right">
                                                                <tr>
                                                                    <td style="color:#333333;">
                                                                        <p>
                                                                            <a href="#" target="_blank"><img style="margin-left:1em;" align="right" src="' . PlaceholderImageUtil::resolveUrlForThemeFile('/default/images/demo/email-template-demo-one/facebook.gif') . '" width="32" height="32" border="0" alt="Facebook" /></a>
                                                                            <a href="#" target="_blank"><img style="margin-left:1em;" align="right" src="' . PlaceholderImageUtil::resolveUrlForThemeFile('/default/images/demo/email-template-demo-one/googleplus.gif') . '" width="32" height="32" border="0" alt="Google+" /></a>
                                                                            <a href="#" target="_blank"><img style="margin-left:1em;" align="right" src="' . PlaceholderImageUtil::resolveUrlForThemeFile('/default/images/demo/email-template-demo-one/linkedin.gif') . '" width="32" height="32" border="0" alt="LinkedIn" /></a>
                                                                            <a href="#" target="_blank"><img style="margin-left:1em;" align="right" src="' . PlaceholderImageUtil::resolveUrlForThemeFile('/default/images/demo/email-template-demo-one/twitter.gif') . '" width="32" height="32" border="0" alt="Twitter" /></a>
                                                                            <a href="#" target="_blank"><img style="margin-left:1em;" align="right" src="' . PlaceholderImageUtil::resolveUrlForThemeFile('/default/images/demo/email-template-demo-one/youtube.gif') . '" width="32" height="32" border="0" alt="YouTube" /></a>
                                                                        </p>
                                                                    </td>
                                                                </tr>
                                                            </table>
                                                        </td>
                                                    </tr>
                                                </table>
                                            </td>
                                        </tr>
                                        <!-- /FOOTER -->

                                        <!-- SUBFOOTER -->
                                        <tr>
                                            <td>
                                                <table width="100%" cellpadding="10" cellspacing="0" border="0">
Пример #7
0
 protected function renderImage($isThumb = false)
 {
     $altText = '';
     $htmlOptions = array();
     if (!$isThumb) {
         $altText = $this->getAltText();
         $htmlOptions = $this->getHtmlOptions();
     }
     if ($this->image != null) {
         $url = ImageFileModelUtil::getUrlForGetImageFromImageFileName($this->image->getImageCacheFileName(), $isThumb);
     } else {
         $url = PlaceholderImageUtil::resolvePlaceholderImageUrl();
     }
     return ZurmoHtml::image($url, $altText, $htmlOptions);
 }
 protected function resolveTdCloseAndOpenContentForHorizontalLayout()
 {
     if ($this->getLayout() == 'horizontal') {
         $urlToImage = PlaceholderImageUtil::resolveTransparentImageUrl(true);
         $content = ZurmoHtml::closeTag('td');
         $content .= ZurmoHtml::openTag('td', array('class' => 'social-horizontal-expander'));
         $content .= ZurmoHtml::image($urlToImage, '', array('width' => '15', 'height' => '15'));
         $content .= ZurmoHtml::closeTag('td');
         $content .= ZurmoHtml::openTag('td');
         return $content;
     }
 }