/** * Construct * * @param \Sendmail\Sender\Smtp\Dialogue $dialogue */ public function __construct(Dialogue $dialogue) { $this->dialogue = $dialogue; $response = explode("\n", $dialogue->getLog()); $response = array_shift($response); if (preg_match('/^(\\d{3})(.+)/', $response, $match)) { parent::__construct(trim($match[2]), (int) $match[1]); } else { parent::__construct(trim($response), 500); } }
public static function replaceWithLink($content, $lang = null, $relatedType = null, $relatedId = null, $linkOptions = array()) { if (is_null($lang)) { $lang = Yii::app()->language; } $criteria = new CDbCriteria(); $criteria->compare('lang', $lang); $criteria->order = 'keyword ASC'; $internalLinkKeywords = self::model()->findAll($criteria); if (count($internalLinkKeywords)) { $matchKeywordList = array(); foreach ($internalLinkKeywords as $internalLinkKeyword) { if (stripos($content, $internalLinkKeyword->keyword)) { $matchKeywordList[$internalLinkKeyword->internal_link_keyword_id] = $internalLinkKeyword; } } $relatedList = array(); foreach ($matchKeywordList as $matchKeyword) { if (isset($relatedList[$matchKeyword->related_type]) == false) { $relatedList[$matchKeyword->related_type] = array(); } if (isset($relatedList[$matchKeyword->related_type][$matchKeyword->related_id]) == false) { $relatedList[$matchKeyword->related_type][$matchKeyword->related_id] = array(); } $relatedList[$matchKeyword->related_type][$matchKeyword->related_id][] = $matchKeyword->keyword; } if (is_null($relatedType) == false && is_null($relatedId) == false) { unset($relatedList[$relatedType][$relatedId]); } $replaceList = array(); foreach ($relatedList as $relatedType => $relatedIdList) { switch ($relatedType) { case 'brand_culture': $criteria = new CDbCriteria(); $criteria->addInCondition('brand_culture_id', array_keys($relatedIdList)); $brandCultures = BrandCulture::model()->localized()->findAll($criteria); foreach ($brandCultures as $brandCulture) { foreach ($relatedIdList as $relatedId => $keyword) { if ($brandCulture->brand_culture_id == $relatedId) { foreach ($keywords as $keyword) { $replaceList[$keyword] = $brandCulture->getPermalink(); } } } } break; case 'news': $criteria = new CDbCriteria(); $criteria->addInCondition('news_id', array_keys($relatedIdList)); $news = News::model()->localized()->findAll($criteria); foreach ($news as $article) { foreach ($relatedIdList as $relatedId => $keywords) { if ($article->news_id == $relatedId) { foreach ($keywords as $keyword) { $replaceList[$keyword] = $article->getPermalink(); } } } } break; case 'dialogue': $criteria = new CDbCriteria(); $criteria->addInCondition('dialogue_id', array_keys($relatedIdList)); $dialogues = Dialogue::model()->localized()->findAll($criteria); foreach ($dialogues as $dialogue) { foreach ($relatedIdList as $relatedId => $keywords) { if ($dialogue->dialogue_id == $relatedId) { foreach ($keywords as $keyword) { $replaceList[$keyword] = $dialogue->getPermalink(); } } } } break; case 'magazine_article': $criteria = new CDbCriteria(); $criteria->addInCondition('magazine_article_id', array_keys($relatedIdList)); $magazineArticles = MagazineArticle::model()->localized()->findAll($criteria); foreach ($magazineArticles as $magazineArticle) { foreach ($relatedIdList as $relatedId => $keywords) { if ($magazineArticle->magazine_article_id == $relatedId) { foreach ($keywords as $keyword) { $replaceList[$keyword] = $magazineArticle->getPermalink(); } } } } break; case 'page': $criteria = new CDbCriteria(); $criteria->addInCondition('page_id', array_keys($relatedIdList)); $pages = Page::model()->localized()->findAll($criteria); foreach ($pages as $page) { foreach ($relatedIdList as $relatedId => $keywords) { if ($page->page_id == $relatedId) { foreach ($keywords as $keyword) { $replaceList[$keyword] = $page->getPermalink(); } } } } break; case 'home': foreach ($relatedIdList as $relatedId => $keywords) { foreach ($keywords as $keyword) { $replaceList[$keyword] = Yii::app()->createUrl('site/index'); } } break; default: return false; break; } } $currentLinkOptions = $linkOptions; if (isset($currentLinkOptions['class'])) { $currentLinkOptions['class'] .= ' internal-link'; } else { $currentLinkOptions['class'] = 'internal-link'; } foreach ($replaceList as $keyword => $linkUrl) { $content = self::replaceOnce($keyword, $linkUrl, $currentLinkOptions, $content); } } return $content; }