Example #1
0
 public static function updateStatusAd()
 {
     if (Yii::app()->request->getIsAjaxRequest() || !issetModule('paidservices')) {
         return false;
     }
     if (!oreInstall::isInstalled()) {
         return false;
     }
     $data = Yii::app()->statePersister->load();
     // Обновляем статусы 1 раз в сутки
     if (isset($data['next_check_status'])) {
         if ($data['next_check_status'] < time()) {
             $data['next_check_status'] = time() + self::TIME_UPDATE;
             Yii::app()->statePersister->save($data);
             self::checkStatusAd();
             self::clearApartmentsStats();
             // обновляем курсы валют
             Currency::model()->parseCbr();
         }
     } else {
         $data['next_check_status'] = time() + self::TIME_UPDATE;
         Yii::app()->statePersister->save($data);
         self::checkStatusAd();
         self::clearApartmentsStats();
     }
 }
Example #2
0
 public function parseUrl($request)
 {
     if (issetModule('seo') && $this->parseReady === false && oreInstall::isInstalled()) {
         if (preg_match('#^([\\w-]+)#i', $request->pathInfo, $matches)) {
             $activeLangs = Lang::getActiveLangs();
             $arr = array();
             foreach ($activeLangs as $lang) {
                 $arr[] = 'url_' . $lang . ' = :alias';
             }
             $condition = '(' . implode(' OR ', $arr) . ')';
             $seo = SeoFriendlyUrl::model()->find(array('condition' => 'direct_url = 1 AND ' . $condition, 'params' => array('alias' => $matches[1])));
             if ($seo !== null) {
                 foreach ($activeLangs as $lang) {
                     $field = 'url_' . $lang;
                     if ($seo->{$field} == $matches[1]) {
                         setLangCookie($lang);
                         Yii::app()->setLanguage($lang);
                         //$_GET['lang'] = $lang;
                     }
                 }
                 $_GET['url'] = $matches[1];
                 //$_GET['id'] = $seo->model_id;
                 //Yii::app()->controller->seo = $seo;
                 return 'infopages/main/view';
             }
         }
         $this->parseReady = true;
     }
     return parent::parseUrl($request);
 }
Example #3
0
 protected function beforeAction($action)
 {
     if (oreInstall::isInstalled()) {
         throw404();
     }
     $this->setLangInstall();
     return parent::beforeAction($action);
 }
Example #4
0
 public function init()
 {
     $this->cachingTime = param('cachingTime', 5184000);
     // default caching for 60 days
     if (oreInstall::isInstalled()) {
         $this->loadConfig();
     }
 }
Example #5
0
 public static function updateStatusAd()
 {
     if (Yii::app()->request->getIsAjaxRequest()) {
         return false;
     }
     if (!oreInstall::isInstalled()) {
         return false;
     }
     $data = Yii::app()->statePersister->load();
     // Обновляем статусы 1 раз в сутки
     if (isset($data['next_check_status'])) {
         if ($data['next_check_status'] < time()) {
             $data['next_check_status'] = time() + self::TIME_UPDATE;
             Yii::app()->statePersister->save($data);
             if (issetModule('paidservices')) {
                 self::checkStatusAd();
                 // обновляем курсы валют
                 Currency::model()->parseCbr();
             }
             self::clearDrafts();
             self::clearApartmentsStats();
             self::clearUsersSessions();
             self::checkDateEndActivity();
             self::deleteIPFromBlocklist();
         }
     } else {
         $data['next_check_status'] = time() + self::TIME_UPDATE;
         Yii::app()->statePersister->save($data);
         if (issetModule('paidservices')) {
             self::checkStatusAd();
             // обновляем курсы валют
             Currency::model()->parseCbr();
         }
         self::clearDrafts();
         self::clearApartmentsStats();
         self::clearUsersSessions();
         self::checkDateEndActivity();
         self::deleteIPFromBlocklist();
     }
     // Тарифные планы - 2 раза в сутки
     if (issetModule('tariffPlans') && issetModule('paidservices')) {
         if (isset($data['next_check_status_users_tariffs'])) {
             if ($data['next_check_status_users_tariffs'] < time()) {
                 $data['next_check_status_users_tariffs'] = time() + self::TIME_UPDATE_TARIFF_PLANS;
                 Yii::app()->statePersister->save($data);
                 self::checkTariffPlansUsers();
             }
         } else {
             $data['next_check_status_users_tariffs'] = time() + self::TIME_UPDATE_TARIFF_PLANS;
             Yii::app()->statePersister->save($data);
             self::checkTariffPlansUsers();
         }
     }
     Yii::app()->cache->flush();
 }
Example #6
0
 public static function cityInit()
 {
     $cityActive = array();
     if (oreInstall::isInstalled()) {
         Yii::import('application.modules.apartmentCity.models.ApartmentCity');
         $cityActive = ApartmentCity::getActiveCity();
         if ($cityActive === null) {
             $cityActive = array();
         }
     }
     return $cityActive;
 }
Example #7
0
 public static function getDefaultLang()
 {
     if (!oreInstall::isInstalled()) {
         return Yii::app()->language;
     }
     if (!isset(self::$_mainLang)) {
         $sql = "SELECT name_iso FROM {{lang}} WHERE active=1 AND main=1";
         self::$_mainLang = Yii::app()->db->createCommand($sql)->queryScalar();
     }
     return self::$_mainLang;
 }
Example #8
0
 public static function getActiveLangs($full = false, $requery = false)
 {
     if (!oreInstall::isInstalled()) {
         return array('ru', 'en', 'de');
     }
     if (!isset(self::$_activeLangs) || $requery) {
         $sql = "SELECT id, name_iso, flag_img, main, name_" . Yii::app()->language . " AS name, name_rfc3066, currency_id\n                    FROM {{lang}}\n                    WHERE active=1\n                    ORDER BY sorter ASC";
         $activeLangs = Yii::app()->db->createCommand($sql)->queryAll();
         // Загружаем данные актвных языков и определяем главный ( дефолтный )
         foreach ($activeLangs as $lang) {
             self::$_activeLangs[$lang['name_iso']] = $lang['name_iso'];
             self::$_activeLangsFull[$lang['name_iso']] = $lang;
             self::$_activeLangsTranslated[$lang['name_iso']] = $lang['name'];
             self::$_activeLangsTranslated[$lang['name_iso']] = $lang['name_rfc3066'];
             if ($lang['main']) {
                 self::$_mainLang = $lang['name_iso'];
             }
         }
     }
     return $full ? self::$_activeLangsFull : self::$_activeLangs;
 }
Example #9
0
<?php

require_once dirname(__FILE__) . '/../helpers/common.php';
require_once dirname(__FILE__) . '/../helpers/strings.php';
Yii::setPathOfAlias('bootstrap', dirname(__FILE__) . '/../extensions/bootstrap');
Yii::setPathOfAlias('editable', dirname(__FILE__) . '/../extensions/x-editable');
$config = array('basePath' => dirname(__FILE__) . DIRECTORY_SEPARATOR . '..', 'name' => 'Open Real Estate PRO', 'sourceLanguage' => 'en', 'language' => 'en', 'theme' => 'classic', 'preload' => array('log', 'configuration'), 'onBeginRequest' => array('BeginRequest', 'updateStatusAd'), 'import' => array('editable.*', 'ext.eoauth.*', 'ext.eoauth.lib.*', 'ext.lightopenid.*', 'ext.eauth.*', 'ext.eauth.services.*', 'ext.eauth.custom_services.CustomGoogleService', 'ext.eauth.custom_services.CustomVKService', 'ext.eauth.custom_services.CustomFBService', 'ext.eauth.custom_services.CustomTwitterService', 'ext.eauth.custom_services.CustomMailruService', 'ext.setReturnUrl.ESetReturnUrlFilter', 'ext.idna.IdnaConvert', 'zii.behaviors.CTimestampBehavior', 'application.models.*', 'application.components.*', 'application.helpers.*', 'application.modules.configuration.components.*', 'application.modules.notifier.components.Notifier', 'application.modules.booking.models.*', 'application.modules.paidservices.models.*', 'application.modules.lang.models.Lang', 'application.modules.comments.models.Comment', 'application.modules.comments.models.CommentForm', 'application.modules.windowto.models.WindowTo', 'application.modules.apartments.models.*', 'application.modules.news.models.*', 'application.modules.blog.models.*', 'application.modules.metrostations.models.MetroStation', 'application.modules.slider.models.Slider', 'application.extensions.image.Image', 'application.modules.selecttoslider.models.SelectToSlider', 'application.modules.sitemap.models.Sitemap', 'application.modules.similarads.models.SimilarAds', 'application.modules.menumanager.models.Menu', 'application.modules.apartments.components.*', 'application.modules.apartmentCity.models.ApartmentCity', 'application.modules.apartmentObjType.models.ApartmentObjType', 'application.modules.translateMessage.models.TranslateMessage', 'application.modules.currency.models.Currency', 'application.components.behaviors.ERememberFiltersBehavior', 'application.modules.seo.models.*', 'application.modules.service.models.Service', 'application.modules.payment.models.*', 'application.modules.bookingcalendar.models.Bookingcalendar', 'application.modules.advertising.models.Advert', 'application.modules.socialauth.models.SocialauthModel', 'application.modules.antispam.components.MathCCaptchaAction', 'application.modules.antispam.components.jquerySimpleCCaptcha.SimpleCaptcha', 'application.modules.antispam.components.jQuerySimpleCCaptchaAction', 'application.modules.apartmentsComplain.models.ApartmentsComplain', 'application.modules.apartmentsComplain.models.ApartmentsComplainReason', 'application.modules.images.models.*', 'application.modules.images.components.*', 'application.modules.location.models.*', 'application.modules.yandexRealty.models.YandexRealty', 'application.modules.comparisonList.models.ComparisonList', 'application.modules.formdesigner.models.*', 'application.modules.articles.models.Article', 'application.modules.infopages.models.InfoPages', 'application.modules.socialposting.models.SocialpostingModel', 'application.modules.socialposting.components.*', 'application.modules.reviews.models.Reviews', 'application.modules.vacancy.models.Vacancy', 'application.modules.bookingtable.models.Bookingtable', 'application.modules.themes.models.Themes', 'application.components.oldbrowsers.CheckBrowser', 'application.modules.messages.components.BaseMessagesController', 'application.modules.messages.models.Mailing', 'application.modules.messages.models.Messages', 'application.modules.messages.models.MessagesFiles', 'application.modules.clients.models.Clients', 'application.modules.tariffPlans.models.*', 'application.modules.tariffPlans.components.*', 'application.modules.blockIp.models.BlockIp', 'application.modules.userprofile'), 'modules' => array('news', 'blog', 'referencecategories', 'referencevalues', 'apartments', 'apartmentObjType', 'apartmentCity', 'comments', 'booking', 'windowto', 'contactform', 'articles', 'usercpanel', 'users', 'quicksearch', 'configuration', 'timesin', 'timesout', 'adminpass', 'specialoffers', 'install', 'slider', 'selecttoslider', 'sitemap', 'similarads', 'menumanager', 'userads', 'lang', 'translateMessage', 'currency', 'seo', 'payment', 'paidservices', 'service', 'bookingcalendar', 'advertising', 'socialauth', 'antispam', 'rss', 'pricelist', 'images', 'apartmentsComplain', 'iecsv', 'formdesigner', 'location', 'yandexRealty', 'formeditor', 'comparisonList', 'guestad', 'infopages', 'notifier', 'socialposting', 'reviews', 'vacancy', 'bookingtable', 'modules', 'themes', 'messages', 'clients', 'rbac', 'tariffPlans', 'blockIp', 'userprofile', 'gii' => array('class' => 'system.gii.GiiModule', 'password' => 'admin1', 'ipFilters' => array('127.0.0.1', '::1'), 'generatorPaths' => array('bootstrap.gii'))), 'controllerMap' => array('min' => array('class' => 'ext.minScript.controllers.ExtMinScriptController')), 'components' => array('editable' => array('class' => 'editable.EditableConfig', 'form' => 'bootstrap', 'mode' => 'popup', 'defaults' => array('emptytext' => 'Click to edit')), 'loid' => array('class' => 'application.extensions.lightopenid.loid'), 'eauth' => array('class' => 'ext.eauth.EAuth', 'popup' => true), 'user' => array('class' => 'WebUser', 'allowAutoLogin' => true, 'loginUrl' => array('login')), 'authManager' => array('class' => 'PhpAuthManager', 'defaultRoles' => array('guest')), 'configuration' => array('class' => 'Configuration', 'cachingTime' => 0), 'cache' => array('class' => 'system.caching.CFileCache'), 'request' => array('class' => 'application.components.CustomHttpRequest'), 'urlManager' => array('urlFormat' => 'path', 'showScriptName' => false, 'class' => 'application.components.CustomUrlManager'), 'mailer' => array('class' => 'application.extensions.mailer.EMailer'), 'errorHandler' => array('errorAction' => 'site/error'), 'log' => array('class' => 'CLogRouter', 'routes' => array(array('class' => 'ext.yii-debug-toolbar.YiiDebugToolbarRoute', 'ipFilters' => array('127.0.0.1')))), 'messages' => array('class' => 'DbMessageSource', 'forceTranslation' => true, 'onMissingTranslation' => array('CustomEventHandler', 'handleMissingTranslation')), 'messagesInFile' => array('class' => 'CPhpMessageSource', 'forceTranslation' => true), 'bootstrap' => array('class' => 'bootstrap.components.Bootstrap')), 'params' => array('module_rss_itemsPerFeed' => 20, 'allowedImgExtensions' => array('jpg', 'jpeg', 'gif', 'png'), 'maxImgFileSize' => 8 * 1024 * 1024, 'minImgFileSize' => 5 * 1024, 'useLangPrefixIfOneLang' => 1, 'countListingsInComparisonList' => 6, 'searchMaxField' => 15, 'useMinify' => true, 'module_reviews_itemsPerPage' => 10, 'module_vacancy_itemsPerPage' => 10, 'genUrlWithID' => 0, 'qrcode_in_listing_view' => 1));
$addons['components'] = array('session' => array('class' => 'CDbHttpSession', 'connectionID' => 'db', 'sessionTableName' => '{{users_sessions}}', 'autoCreateSessionTable' => false), 'clientScript' => array('class' => 'ext.minScript.components.ExtMinScript', 'minScriptLmCache' => YII_DEBUG ? 0 : 3600, 'minScriptDisableMin' => array('/[-\\.]min\\.(?:js|css)$/i', '/bootstrap.js$/i', '/jquery.js$/i', '/ckeditor.js$/i', '/[-\\.]pack\\.(?:js|css)$/i')));
$addons['import'] = array('application.modules.configuration.models.ConfigurationModel', 'application.modules.rbac.components.*');
if (oreInstall::isInstalled()) {
    $config = CMap::mergeArray($config, $addons);
}
$db = (require dirname(__FILE__) . '/db.php');
if ($db === 1) {
    $db = array();
}
return CMap::mergeArray($config, $db);
Example #10
0
 public static function isInstalled()
 {
     if (self::$isInstalled === null) {
         self::$isInstalled = file_exists(ALREADY_INSTALL_FILE);
     }
     return self::$isInstalled;
 }
Example #11
0
 function init()
 {
     if (!oreInstall::isInstalled() && !(Yii::app()->controller->module && Yii::app()->controller->module->id == 'install')) {
         $this->redirect(array('/install'));
     }
     setLang();
     $modulesToCheck = ConfigurationModel::getModulesList();
     foreach ($modulesToCheck as $module) {
         if (param('module_enabled_' . $module) === null) {
             ConfigurationModel::createValue('module_enabled_' . $module, 0);
             Yii::app()->params['module_enabled_' . $module] = 0;
         }
     }
     unset($modulesToCheck);
     $this->assetsGenPath = Yii::getPathOfAlias('webroot.assets');
     $this->assetsGenUrl = Yii::app()->getBaseUrl(true) . '/assets/';
     Yii::app()->user->setState('menu_active', '');
     $this->pageTitle = tt('siteName', 'seo');
     $this->pageKeywords = tt('siteKeywords', 'seo');
     $this->pageDescription = tt('siteDescription', 'seo');
     Yii::app()->name = $this->pageTitle;
     $this->defaultTheme = Themes::getDefaultTheme();
     if (!$this->defaultTheme) {
         $this->defaultTheme = 'classic';
     }
     Yii::app()->theme = $this->defaultTheme;
     $this->baseUrl = Yii::app()->baseUrl;
     $this->baseThemeUrl = Yii::app()->theme->baseUrl;
     if (Yii::app()->getModule('menumanager')) {
         if (!(Yii::app()->controller->module && Yii::app()->controller->module->id == 'install')) {
             $this->infoPages = Menu::getMenuItems(true, 2);
         }
     }
     $subItems = array();
     if (!Yii::app()->user->isGuest) {
         $subItems = HUser::getMenu();
     }
     $this->aData['userCpanelItems'] = Menu::getMenuItems(true, 1);
     $this->aData['userCpanelItems'][] = array('label' => tt('Reserve apartment', 'common'), 'url' => array('/booking/main/mainform'), 'visible' => Yii::app()->user->checkAccess('backend_access') === false, 'linkOptions' => array('class' => 'fancy'), 'itemOptions' => array('class' => 'depth_zero'));
     $this->aData['userCpanelItems'][] = array('label' => Yii::t('common', 'Control panel'), 'url' => array('/usercpanel/main/index'), 'visible' => Yii::app()->user->checkAccess('backend_access') === false, 'items' => $subItems, 'itemOptions' => array('class' => 'depth_zero'), 'submenuOptions' => array('class' => 'sub_menu_dropdown'));
     if (!Yii::app()->user->isGuest) {
         $user = HUser::getModel();
         $this->aData['userCpanelItems'][] = array('label' => '(' . $user->username . ') ' . tt('Logout', 'common'), 'url' => array('/site/logout'), 'itemOptions' => array('class' => 'depth_zero'));
     }
     $this->aData['topMenuItems'] = $this->infoPages;
     // comparison list
     if (issetModule('comparisonList')) {
         if (!Yii::app()->user->isGuest) {
             $resultCompare = ComparisonList::model()->findAllByAttributes(array('user_id' => Yii::app()->user->id));
         } else {
             $resultCompare = ComparisonList::model()->findAllByAttributes(array('session_id' => Yii::app()->session->sessionId));
         }
         if ($resultCompare) {
             foreach ($resultCompare as $item) {
                 $this->apInComparison[] = $item->apartment_id;
             }
         }
     }
     $this->currentUserIp = Yii::app()->request->getUserHostAddress();
     $this->currentUserIpLong = ip2long($this->currentUserIp);
     $this->datePickerLang = Yii::app()->language;
     if ($this->datePickerLang == 'en') {
         $this->datePickerLang = 'en-GB';
     }
     if (demo()) {
         if (isset($_GET['theme']) && array_key_exists($_GET['theme'], Themes::getColorThemesList())) {
             $theme = $_GET['theme'];
             $cookie = new CHttpCookie('theme', $theme);
             $cookie->expire = time() + 86400;
             Yii::app()->request->cookies['theme'] = $cookie;
         }
     }
     parent::init();
 }
Example #12
0
 function init()
 {
     if (!oreInstall::isInstalled() && !(Yii::app()->controller->module && Yii::app()->controller->module->id == 'install')) {
         $this->redirect(array('/install'));
     }
     setLang();
     $modulesToCheck = ConfigurationModel::getModulesList();
     foreach ($modulesToCheck as $module) {
         if (param('module_enabled_' . $module) === null) {
             ConfigurationModel::createValue('module_enabled_' . $module, 0);
             Yii::app()->params['module_enabled_' . $module] = 0;
         }
     }
     unset($modulesToCheck);
     $this->assetsGenPath = Yii::getPathOfAlias('webroot.assets');
     $this->assetsGenUrl = Yii::app()->getBaseUrl(true) . '/assets/';
     Yii::app()->user->setState('menu_active', '');
     if (isFree()) {
         $this->pageTitle = param('siteTitle');
         $this->pageKeywords = param('siteKeywords');
         $this->pageDescription = param('siteDescription');
     } else {
         if (issetModule('seo')) {
             $this->pageTitle = Seo::getSeoValue('siteName');
             $this->pageKeywords = Seo::getSeoValue('siteKeywords');
             $this->pageDescription = Seo::getSeoValue('siteDescription');
         } else {
             $this->pageTitle = tt('siteName', 'seo');
             $this->pageKeywords = tt('siteKeywords', 'seo');
             $this->pageDescription = tt('siteDescription', 'seo');
         }
     }
     Yii::app()->name = $this->pageTitle;
     if (Yii::app()->getModule('menumanager')) {
         if (!(Yii::app()->controller->module && Yii::app()->controller->module->id == 'install')) {
             $this->infoPages = Menu::getMenuItems(0);
         }
     }
     if (!Yii::app()->user->isGuest && !Yii::app()->user->getState('isAdmin')) {
         $subItems = HUser::getMenu();
     } else {
         $subItems = array();
     }
     $urlAddAd = Yii::app()->user->isGuest && issetModule('guestad') ? array('/guestad/main/create') : array('/userads/main/create');
     $this->aData['userCpanelItems'] = array(array('label' => tt('Add ad', 'common'), 'url' => $urlAddAd, 'visible' => Yii::app()->user->isGuest == false), array('label' => '|', 'visible' => param('useUserads', 0) == 1), array('label' => tt('Special offers', 'common'), 'url' => array('/specialoffers/main/index')), array('label' => tt('Search for listings on the map', 'common'), 'url' => array('/page/2')), array('label' => tt('Contact us', 'common'), 'url' => array('/contactform/main/index')), array('label' => '|', 'visible' => Yii::app()->user->getState('isAdmin') === null), array('label' => tt('Reserve apartment', 'common'), 'url' => array('/booking/main/mainform'), 'visible' => Yii::app()->user->getState('isAdmin') === null, 'linkOptions' => array('class' => 'fancy')), array('label' => '|', 'visible' => Yii::app()->user->getState('isAdmin') === null), array('label' => Yii::t('common', 'Control panel'), 'url' => array('/usercpanel/main/index'), 'visible' => Yii::app()->user->getState('isAdmin') === null, 'items' => $subItems, 'submenuOptions' => array('class' => 'sub_menu_dropdown')));
     if (!Yii::app()->user->isGuest) {
         $user = HUser::getModel();
         $this->aData['userCpanelItems'][] = array('label' => '|');
         $this->aData['userCpanelItems'][] = array('label' => '(' . $user->username . ') ' . tt('Logout', 'common'), 'url' => array('/site/logout'));
     }
     $this->aData['topMenuItems'] = $this->infoPages;
     // comparison list
     if (issetModule('comparisonList')) {
         if (!Yii::app()->user->isGuest) {
             $resultCompare = ComparisonList::model()->findAllByAttributes(array('user_id' => Yii::app()->user->id));
         } else {
             $resultCompare = ComparisonList::model()->findAllByAttributes(array('session_id' => Yii::app()->session->sessionId));
         }
         if ($resultCompare) {
             foreach ($resultCompare as $item) {
                 $this->apInComparison[] = $item->apartment_id;
             }
         }
     }
     parent::init();
 }