예제 #1
0
 /**
  * Gets article data for tag functionality
  * @param $tag string search query
  * @return array
  */
 public function searchTags($tag)
 {
     $idw = FrontEndHelper::getWebIdFromTextId(\Yii::$app->request->get('web', \Yii::$app->params['defaultWeb']));
     $idl = FrontEndHelper::getLanguageIdFromAcronym();
     $sql = "( SELECT DISTINCT content.id AS article_id, content.title AS article_title, perex, content.updated_at AS article_updated_at, menu_item.id AS menu_item_id, menu_item.title AS menu_item_title\n\t\t\tFROM `content`\n\t\t\tINNER JOIN `article_category` ON article_category.article_id=content.id\n\t\t\tINNER JOIN `category` ON category.id=article_category.category_id\n\t\t\tINNER JOIN `menu_item_content` ON menu_item_content.category_id=category.id\n\t\t\tINNER JOIN `menu_item` ON menu_item.id=menu_item_content.menu_item_id\n\t\t\tINNER JOIN `menu` ON menu.id=menu_item.menu_id\n\t\t\tINNER JOIN `content_tag` ON content_tag.content_id=content.id\n\t\t\tINNER JOIN `tag` ON tag.id=content_tag.tag_id\n\t\t\tWHERE ((((((`content`.`content_type`=:content_type))\n\t\t\t\tAND (`content`.`active`=TRUE)) " . (Yii::$app->user->isGuest ? " AND (`content`.`public`=TRUE))" : '') . "\n\t\t\t\tAND (`content`.`language_id`=:language_id))\n\t\t\t\tAND (`menu`.`web_id`=:web_id))\n\t\t\t\tAND (`tag`.`name`=:tag))\n\t\t\tORDER BY `content`.`updated_at`";
     $query = ContentRecord::findBySql($sql, [':content_type' => ContentRecord::TYPE_ARTICLE, ':language_id' => $idl, ':web_id' => $idw, ':tag' => $tag]);
     return $query->asArray()->all();
 }
예제 #2
0
 /**
  * @inheritdoc
  */
 public function beforeAction($action)
 {
     /** @var PageController $controller */
     $controller = $this->owner;
     $menuItemId = \Yii::$app->request->get('id');
     if (!isset($menuItemId)) {
         $menuItemId = FrontEndHelper::getMainMenuItemId($controller->web->id, $controller->language->id);
     }
     $controller->setMenuContent($menuItemId);
     return parent::beforeAction($action);
 }
예제 #3
0
 public function init()
 {
     parent::init();
     $language_id = FrontEndHelper::getLanguageIdFromAcronym();
     $web_id = FrontEndHelper::getWebIdFromTextId(\Yii::$app->request->get('web', \Yii::$app->params['defaultWeb']));
     $query = ContentRecord::find()->distinct()->where(['content.content_type' => ContentRecord::TYPE_ARTICLE])->andWhere(['content.active' => true]);
     if (\Yii::$app->user->isGuest) {
         $query->andWhere(['content.public' => true]);
     }
     $query->andWhere(['content.language_id' => $language_id])->innerJoin('article_category', 'article_category.article_id=content.id')->innerJoin('category', 'category.id=article_category.category_id')->innerJoin('menu_item_content', 'menu_item_content.category_id=category.id')->innerJoin('menu_item', 'menu_item.id=menu_item_content.menu_item_id')->innerJoin('menu', 'menu.id=menu_item.menu_id')->andWhere(['menu.web_id' => $web_id])->orderBy(['updated_at' => SORT_DESC])->limit($this->recentArticlesCount);
     $this->_items = $query->all();
 }
예제 #4
0
 public function init()
 {
     Widget::init();
     if ($this->categoryId) {
         $language_id = FrontEndHelper::getLanguageIdFromAcronym();
         $web_id = FrontEndHelper::getWebIdFromTextId(\Yii::$app->request->get('web', \Yii::$app->params['defaultWeb']));
         $this->orderBy = 'content.content_date DESC';
         $this->withDate = true;
         $sql = "( SELECT DISTINCT `content`.*\n\t\t\t\tFROM `content`\n\t\t\t\tINNER JOIN `article_category` ON article_category.article_id=content.id\n\t\t\t\tINNER JOIN `category` ON (category.id=article_category.category_id AND category.id=:category_id)\n\t\t\t\tINNER JOIN `menu_item_content` ON menu_item_content.category_id=category.id\n\t\t\t\tINNER JOIN `menu_item` ON menu_item.id=menu_item_content.menu_item_id\n\t\t\t\tINNER JOIN `menu` ON menu.id=menu_item.menu_id\n\t\t\t\tWHERE (((((((`content`.`content_type`=:content_type))\n\t\t\t\t\tAND ((content.content_date<:actual_date) AND (IF(content.content_end_date IS NULL, content.content_end_date IS NULL, content.content_end_date<:actual_date))))\n\t\t\t\t\tAND (NOT (`content`.`id`" . ($this->articleId ? "=" . $this->articleId : " IS NULL") . ")))\n\t\t\t\t\tAND (`content`.`active`=TRUE)) " . (Yii::$app->user->isGuest ? " AND (`content`.`public`=TRUE))" : '') . "\n\t\t\t\t\tAND (`content`.`language_id`=:language_id))\n\t\t\t\t\tAND (`menu`.`web_id`=:web_id))\n\t\t\t\tORDER BY " . $this->orderBy . ($this->itemsCount ? " LIMIT " . $this->itemsCount : "");
         $query = ContentRecord::findBySql($sql, [':category_id' => $this->categoryId ?: $this->categoryId, ':content_type' => ContentRecord::TYPE_ARTICLE, ':language_id' => $language_id, ':web_id' => $web_id, ':actual_date' => Yii::$app->formatter->asDate('now', 'y-MM-dd')]);
         $this->_items = $query->all();
         $this->setMenuUrlParts();
     } else {
         throw new InvalidParamException(\Yii::t('front', 'No required parameter given') . ' - categoryId');
     }
 }
예제 #5
0
 public function run()
 {
     $model = new NewsletterForm();
     if ($model->load(\Yii::$app->request->post()) && $model->validate()) {
         $subscribe = \Yii::$app->request->post('subscribe-button');
         if (isset($subscribe)) {
             if ($model->agree == 0) {
                 $model->addError('agree', \Yii::t('front', 'You must agree with newsletter subscription.'));
             } else {
                 /** @var EmailRecord $email */
                 $email = EmailRecord::findOne(['email' => $model->email]);
                 if ($email && $email->active == 1) {
                     $model->addError('email', \Yii::t('front', 'This email is already in use.'));
                 } else {
                     if (!$email) {
                         $email = new EmailRecord();
                     }
                     $hashedEmail = $this->hashEmail($model->email);
                     $email->email = $model->email;
                     $email->hash = $hashedEmail;
                     $email->active = 0;
                     $email->created_at = new Expression('NOW()');
                     $email->language_id = FrontEndHelper::getLanguageIdFromAcronym();
                     $email->save();
                     $model->send(true, $hashedEmail);
                     \Yii::$app->session->setFlash('info', \Yii::t('front', 'Thank you for subscription request of our newsletter.'));
                 }
             }
         } else {
             /** @var EmailRecord $email */
             $email = EmailRecord::findOne(['email' => $model->email]);
             if (!$email || $email && $email->active == 0) {
                 $model->addError('email', \Yii::t('front', 'Email not found.'));
             } else {
                 $hashedEmail = $this->hashEmail($model->email);
                 $email->hash = $hashedEmail;
                 $email->save();
                 $model->send(false, $hashedEmail);
                 \Yii::$app->session->setFlash('newsletter-info', \Yii::t('front', 'Your unsubscription request was sent.'));
             }
         }
     }
     return $this->render('newsletter', compact('model'));
 }
예제 #6
0
 /**
  * @inheritdoc
  */
 public function init()
 {
     parent::init();
     $session = Yii::$app->session;
     if (WebRecord::existsMoreWebRecords()) {
         if (!$session->has('web')) {
             $session->set('web', \Yii::$app->request->get('web', \Yii::$app->params['defaultWeb']));
         }
         if (!($this->web = WebRecord::findOne(FrontEndHelper::getWebIdFromTextId($session->get('web'))))) {
             $session->set('web', \Yii::$app->params['defaultWeb']);
             throw new NotFoundHttpException(Yii::t('front', 'The requested page does not exist.'));
         }
     } else {
         $this->redirect(['install/default/index']);
     }
     if (!$this->web) {
         $this->web = WebRecord::findOne(FrontEndHelper::getWebIdFromTextId($session->get('web')));
     }
     $session->set('web', null);
     $this->setWebTheme($this->web->theme);
     \Yii::$app->language = \Yii::$app->request->get('language', \Yii::$app->params['defaultLanguage']);
     $this->language = LanguageRecord::findOne(FrontEndHelper::getLanguageIdFromAcronym());
 }
예제 #7
0
 public function init()
 {
     parent::init();
     if (!$this->invitationsCategoryId) {
         $this->invitationsCategoryId = Yii::$app->params[Yii::$app->language]['defaultInvitationsCategoryId'];
     }
     if (!$this->actualitiesCategoryId) {
         $this->actualitiesCategoryId = Yii::$app->params[Yii::$app->language]['defaultActualitiesCategoryId'];
     }
     $language_id = FrontEndHelper::getLanguageIdFromAcronym();
     $web_id = FrontEndHelper::getWebIdFromTextId(\Yii::$app->request->get('web', \Yii::$app->params['defaultWeb']));
     // Invitations
     $sql = "( SELECT DISTINCT `content`.*\n\t\t\t\tFROM `content`\n\t\t\t\tINNER JOIN `article_category` ON article_category.article_id=content.id\n\t\t\t\tINNER JOIN `category` ON (category.id=article_category.category_id AND category.id=:category_id)\n\t\t\t\tINNER JOIN `menu_item_content` ON menu_item_content.category_id=category.id\n\t\t\t\tINNER JOIN `menu_item` ON menu_item.id=menu_item_content.menu_item_id\n\t\t\t\tINNER JOIN `menu` ON menu.id=menu_item.menu_id\n\t\t\t\tWHERE ((((((`content`.`content_type`=:content_type))\n\t\t\t\t\tAND ((content.content_date>=:actual_date) OR (content.content_end_date>=:actual_date)))\n\t\t\t\t\tAND (`content`.`active`=TRUE)) " . (Yii::$app->user->isGuest ? " AND (`content`.`public`=TRUE))" : '') . "\n\t\t\t\t\tAND (`content`.`language_id`=:language_id))\n\t\t\t\t\tAND (`menu`.`web_id`=:web_id))\n\t\t\t\tORDER BY content.content_date, content.content_time ASC" . ($this->itemsCount ? " LIMIT " . $this->itemsCount : "");
     $this->_invitationsItems = ContentRecord::findBySql($sql, [':category_id' => $this->invitationsCategoryId, ':content_type' => ContentRecord::TYPE_ARTICLE, ':language_id' => $language_id, ':web_id' => $web_id, ':actual_date' => Yii::$app->formatter->asDate('now', 'y-MM-dd')])->all();
     $this->setMenuUrlParts('invitations');
     $invitationsCount = count($this->_invitationsItems);
     if ($invitationsCount < $this->itemsCount) {
         $limit = $this->itemsCount - $invitationsCount;
         $sql = "( SELECT DISTINCT `content`.*\n\t\t\t\t\tFROM `content`\n\t\t\t\t\tINNER JOIN `article_category` ON article_category.article_id=content.id\n\t\t\t\t\tINNER JOIN `category` ON (category.id=article_category.category_id AND category.id=:category_id)\n\t\t\t\t\tINNER JOIN `menu_item_content` ON menu_item_content.category_id=category.id\n\t\t\t\t\tINNER JOIN `menu_item` ON menu_item.id=menu_item_content.menu_item_id\n\t\t\t\t\tINNER JOIN `menu` ON menu.id=menu_item.menu_id\n\t\t\t\t\tWHERE (((((((`content`.`content_type`=:content_type))\n\t\t\t\t\t\tAND (IF(`content`.`content_date` IS NULL, `content`.`content_date` IS NULL, `content`.`content_date`<=:actual_date)))\n                        AND (IF(`content`.`content_end_date` IS NULL, `content`.`content_end_date` IS NULL, `content`.`content_end_date`>=:actual_date)))\n                        AND (`content`.`active`=TRUE)) " . (Yii::$app->user->isGuest ? " AND (`content`.`public`=TRUE))" : '') . "\n\t\t\t\t\t\tAND (`content`.`language_id`=:language_id))\n\t\t\t\t\t\tAND (`menu`.`web_id`=:web_id))\n\t\t\t\t\tORDER BY content.updated_at DESC" . ($this->itemsCount ? " LIMIT " . $limit : "");
         $this->_actualitiesItems = ContentRecord::findBySql($sql, [':category_id' => $this->actualitiesCategoryId, ':content_type' => ContentRecord::TYPE_ARTICLE, ':language_id' => $language_id, ':web_id' => $web_id, ':actual_date' => Yii::$app->formatter->asDate('now', 'y-MM-dd')])->all();
         $this->setMenuUrlParts('actualities');
     }
 }
예제 #8
0
<?php

/* @var $this yii\web\View */
/* @var $menuContent \frontend\models\MenuContent */
/* @var $articleContent \frontend\models\ArticleContent */
use frontend\utilities\FrontEndHelper;
$this->title = $menuContent->title . ' - ' . $articleContent->title;
$this->params['menuContent'] = $menuContent;
$this->params['articleContent'] = $articleContent;
/** @noinspection PhpUndefinedFieldInspection */
$this->context->layout = 'article-content';
if ($articleContent->perex) {
    echo '<div class="perex">' . $articleContent->perex . '</div>';
}
if ($articleContent->description) {
    echo '<div class="description">';
    echo FrontEndHelper::parseContent($articleContent->description);
    echo '</div>';
}
예제 #9
0
파일: hall.php 프로젝트: czechcamus/dasport
<?php

/* @var $this yii\web\View */
/* @var $menuContent \frontend\models\MenuContent */
/* @var $page \common\models\Page */
use frontend\components\CategoryArticlesList;
use frontend\components\InvitationsList;
use frontend\utilities\FrontEndHelper;
use pavlinter\display\DisplayImage;
$this->title = $menuContent->title;
$this->params['menuContent'] = $menuContent;
$page = $menuContent->content;
/** @noinspection PhpUndefinedFieldInspection */
$this->context->layout = 'page-content';
if ($page->image) {
    echo DisplayImage::widget(['options' => ['class' => 'responsive-img', 'title' => $menuContent->title], 'category' => 'all', 'image' => $page->image->filename]);
}
if ($page->perex) {
    echo '<div class="perex">' . $page->perex . '</div>';
}
if ($page->description) {
    echo '<div class="description" style="margin-bottom: 2rem">';
    echo FrontEndHelper::parseContent($page->description);
    echo '</div>';
}
echo InvitationsList::widget(['categoryId' => Yii::$app->params[Yii::$app->language]['hallInvitationsCategoryId'], 'viewName' => 'invitations', 'wordsCount' => 30, 'withImage' => true, 'maxImageWidth' => 200, 'columnsCount' => 1, 'imageEdgeRatio' => 0.5, 'noMessage' => true]);
echo CategoryArticlesList::widget(['categoryId' => Yii::$app->params[Yii::$app->language]['hallActualitiesCategoryId'], 'viewName' => 'actualities', 'wordsCount' => 50, 'withImage' => true, 'maxImageWidth' => 200, 'imageEdgeRatio' => 0.5, 'noMessage' => true]);
예제 #10
0
<?php

/* @var $this yii\web\View */
/* @var $content \frontend\models\MenuContent */
/* @var $category \common\models\Category */
use frontend\components\InvitationsArchiveList;
use frontend\utilities\FrontEndHelper;
$category = $content->category;
echo '<body>';
echo '<h1>' . $content->title . '</h1>';
if ($category->description) {
    echo '<div class="description category">';
    echo FrontEndHelper::parsePdfContent($category->description);
    echo '</div>';
}
if ($category->articles) {
    echo InvitationsArchiveList::widget(['categoryId' => $category->id, 'wordsCount' => 50, 'withImage' => true, 'maxImageWidth' => 200, 'viewName' => 'invitations']);
}
echo '</body>';
예제 #11
0
<?php

/* @var $this yii\web\View */
/* @var $content \frontend\models\ArticleContent */
use frontend\utilities\FrontEndHelper;
echo '<body>';
echo '<h1>' . $content->title . '</h1>';
if ($content->perex) {
    echo '<div class="perex">' . $content->perex . '</div>';
}
if ($content->description) {
    echo '<div class="description">';
    echo FrontEndHelper::parsePdfContent($content->description);
    echo '</div>';
}
echo '</body>';
예제 #12
0
 public static function getFirstArticleIdFromCategoryId($categoryId)
 {
     //TODO opravit - není zcela košér - nebere v potaz více webů
     $sql = "( SELECT DISTINCT `content`.`id`\n\t\t\t\tFROM `content`\n\t\t\t\tINNER JOIN `article_category` ON article_category.article_id=content.id\n\t\t\t\tINNER JOIN `category` ON category.id=article_category.category_id\n\t\t\t\tWHERE (((((((`article_category`.`category_id`=:category_id))\n\t\t\t\t\tAND (`content`.`content_type`=:content_type)))\n\t\t\t\t\tAND (`content`.`active`=TRUE)) " . (Yii::$app->user->isGuest ? " AND (`content`.`public`=TRUE))" : '') . "\n\t\t\t\t\tAND (`content`.`language_id`=:language_id)))\n\t\t\t\tORDER BY content.updated_at DESC LIMIT 1";
     return ContentRecord::findBySql($sql, [':category_id' => $categoryId, ':content_type' => ContentRecord::TYPE_ARTICLE, ':language_id' => FrontEndHelper::getLanguageIdFromAcronym()])->scalar();
 }
예제 #13
0
파일: tags.php 프로젝트: czechcamus/dasport
<?php

/* @var $items array */
/* @var  $contentId integer|null */
use frontend\utilities\FrontEndHelper;
use yii\helpers\Html;
if ($items) {
    echo '<div class="row side-menu-items">';
    echo '<div class="col s12">';
    echo '<h3><span>' . ($contentId ? Yii::t('front', 'Used tags') : Yii::t('front', 'Most used tags')) . '</span></h3>';
    $bullet = false;
    foreach ($items as $item) {
        if ($bullet) {
            echo ' <span class="tags-delimiter">&bigstar;</span> ';
        } else {
            $bullet = true;
        }
        echo '<span style="' . FrontEndHelper::getTagItemFontSize($item['frequency']) . '">' . Html::a($item['name'], ['page/tag', 'tag' => $item['name'], 'web' => \Yii::$app->request->get('web'), 'language' => \Yii::$app->request->get('language')]) . '</span> ';
    }
    echo '</div>';
    echo '</div>';
}
예제 #14
0
<?php

/* @var $this yii\web\View */
/* @var $gallery Gallery */
use common\models\Gallery;
use frontend\utilities\FrontEndHelper;
use pavlinter\display\DisplayImage;
use yii\helpers\Html;
$this->title = Yii::$app->name . ': ' . $gallery->title;
$this->params['title'] = $gallery->title;
$this->params['description'] = $gallery->description;
echo '<div class="row">';
echo '<div id="links" class="col s12">';
foreach ($gallery->imageGalleries as $imageGallery) {
    /** @var \common\models\Image $image */
    $image = $imageGallery->image;
    $title = $image->getFileTitle(FrontEndHelper::getLanguageIdFromAcronym());
    $thumbnail = DisplayImage::widget(['width' => \Yii::$app->params['galleryThumbnailSize'], 'height' => \Yii::$app->params['galleryThumbnailSize'], 'options' => ['class' => 'img-responsive hoverable', 'title' => $title], 'category' => 'all', 'image' => $image->filename]);
    echo Html::a($thumbnail, '@web/admin/' . Yii::$app->params['imageUploadDir'] . $image->filename, ['title' => $title, 'data-description' => $image->getFileDescription(FrontEndHelper::getLanguageIdFromAcronym()), 'data-gallery' => true]);
}
echo '</div>';
echo '</div>';