<?php
//Amo запись utm меток для ajax через SESSION
if (session_status() == PHP_SESSION_NONE) {
  session_start();
}

file_put_contents(__DIR__ .'/inputs.txt', print_r(['GET'=>$_GET, 'COOKIE'=>$_COOKIE], true));

$start = microtime(true);

error_reporting(E_ALL ^ E_NOTICE);

// уставливаем таймзону и внутренню кодировку
date_default_timezone_set('Europe/Moscow');
mb_internal_encoding('utf-8');

// Сервера
define('SERVER_TYPE_LOCAL', 'local');
define('SERVER_TYPE_DEV', 'dev');
define('SERVER_TYPE_LIVE', 'live');

// Сайты
define('SITE_TYPE_AUDIO_RECLAMA_EN', 'audio-reclama-en');
define('SITE_TYPE_AUDIO_RECLAMA_RU', 'audio-reclama-ru');
define('SITE_TYPE_DIKTORS', 'diktors');

switch ($_SERVER['HTTP_HOST']) {
  case 'audio-reclama.local':
  case 'www.audio-reclama.local':
    define('SERVER_TYPE', SERVER_TYPE_LOCAL);
    define('SITE_TYPE', SITE_TYPE_AUDIO_RECLAMA_RU);
    break;

  case 'audio_new.loc':
  case 'audio-reclama.ru.local':
    define('SERVER_TYPE', SERVER_TYPE_LOCAL);
    define('SITE_TYPE', SITE_TYPE_AUDIO_RECLAMA_RU);
    break;

  case 'diktors.local':
  case 'www.diktors.local':
    define('SERVER_TYPE', SERVER_TYPE_LOCAL);
    define('SITE_TYPE', SITE_TYPE_DIKTORS);
    break;

  /*
  case 'diktors.pro':
  case 'www.diktors.pro':
  define('SERVER_TYPE', SERVER_TYPE_LIVE);
  break;
   */

  case 'dev.audio-reclama.com':
    define('SERVER_TYPE', SERVER_TYPE_DEV);
    define('SITE_TYPE', SITE_TYPE_AUDIO_RECLAMA_EN);
    break;
  case 'dev.audio-reclama.local':
    define('SERVER_TYPE', SERVER_TYPE_DEV);
    define('SITE_TYPE', SITE_TYPE_AUDIO_RECLAMA_RU);
    break;
  case 'dev.audio-reclama.ru':
    define('SERVER_TYPE', SERVER_TYPE_DEV);
    define('SITE_TYPE', SITE_TYPE_AUDIO_RECLAMA_RU);
    break;

  case 'audio-reclama.com':
  case 'www.audio-reclama.com':
    define('SERVER_TYPE', SERVER_TYPE_LIVE);
    define('SITE_TYPE', SITE_TYPE_AUDIO_RECLAMA_EN);
    break;
  case 'audio-reclama.ru':
  case 'www.audio-reclama.ru':
    define('SERVER_TYPE', SERVER_TYPE_LIVE);
    define('SITE_TYPE', SITE_TYPE_AUDIO_RECLAMA_RU);
    break;

  case 'diktors.ru':
    define('SERVER_TYPE', SERVER_TYPE_LIVE);
    define('SITE_TYPE', SITE_TYPE_DIKTORS);
    break;

  default:
    define('SERVER_TYPE', SERVER_TYPE_LIVE);
    define('SITE_TYPE', SITE_TYPE_AUDIO_RECLAMA_EN);
}

// Редиректы
$redirectList = array(
    '/perevodchiki/perevod-tekstov-zakaz/perevod-audio-v-tekst.html' => '/perevodchiki/perevod-audio-v-tekst.html',
    '/perevodchiki/perevod-tekstov-zakaz/lokalizatsiya-video.html' => '/perevodchiki/lokalizatsiya-video.html',
    '/perevodchiki/perevod-tekstov-zakaz/perevod-mobiljnyh-prilozhenij.html' => '/perevodchiki/perevod-mobiljnyh-prilozhenij.html',
    '/perevodchiki/perevod-tekstov-zakaz/lokalizatsiya-sajtov.html' => '/perevodchiki/lokalizatsiya-sajtov.html',
    '/perevodchiki/perevod-tekstov-zakaz/tehnicheskij-perevod-teksta.html' => '/perevodchiki/tehnicheskij-perevod-teksta.html',
    '/perevodchiki/perevod-tekstov-zakaz/lokalizatsiya-kompjyuternyh-igr.html' => '/perevodchiki/lokalizatsiya-kompjyuternyh-igr.html',
    '/perevodchiki/perevod-tekstov-zakaz/lokalizatsiya-uchebnyh-materialov.html' => '/perevodchiki/lokalizatsiya-uchebnyh-materialov.html',

    // Пока закомментировал, т.к. вызывает ошибку
    // '/perevodchiki/' => '/perevodchiki/perevod-tekstov-zakaz.html',
);

$url = explode('?', $_SERVER['REQUEST_URI']);
if (isset($url[0]) && isset($redirectList[$url[0]])) {
  $param = isset($url[1]) && !empty($url[1]) ? '?' . $url[1] : '';
  header('Location: ' . $redirectList[$url[0]] . $param, true, 301);
  exit;
}

// change the following paths if necessary
$yii = dirname(__FILE__) . '/framework/yii.php';

if (preg_match('/^\/admin/', $_SERVER['REQUEST_URI'])) {
  $config = dirname(__FILE__) . '/protected/config/admin.php';
} else {
  $config = dirname(__FILE__) . '/protected/config/sites/' . SITE_TYPE . '.php';
}

if (SERVER_TYPE != SERVER_TYPE_LIVE) {
  // remove the following lines when in production mode
  defined('YII_DEBUG') or define('YII_DEBUG', true);
  // specify how many levels of call stack should be shown in each log message
  defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL', 3);
} elseif (is_file(dirname(__FILE__) . '/index.html')) {
  header('Location: /index.html');
  exit;
} else {
  defined('YII_DEBUG') or define('YII_DEBUG', false);
//    defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',3);
  //$yii=dirname(__FILE__).'/framework/yiilite.php';
}

// !!! Раскомментировать для автоматического добавления новых сообщений для перевода
$GLOBALS['DEBUG_TRANSLATE_MESSAGES'] = array();

require_once $yii;
//Yii::beginProfile('total');

Yii::createWebApplication($config)->run();
//Yii::endProfile('total');

//pprint(Yii::app()->controllerMap);

if (count($GLOBALS['DEBUG_TRANSLATE_MESSAGES'])) {
  $newMessageCount = 0;
  // Смотрим, есть ли в базе данная фраза и если нет - добавляем
  foreach ($GLOBALS['DEBUG_TRANSLATE_MESSAGES'] as $category => $messages) {
    foreach ($messages as $message) {
      if (Yii::app()->db->createCommand('SELECT COUNT(1) FROM {{message_source}} WHERE category = ? AND message = ?')->queryScalar(array($category, $message)) == 0) {
        Yii::app()->db->createCommand('INSERT INTO {{message_source}} (category, message) VALUES (?, ?)')->execute(array($category, $message));
        $newMessageCount++;
      }
    }
  }

  echo '<!--Добавлено сообщений: ' . $newMessageCount . '-->';
}

if (
  defined('__SHOW_EXEC_TIME_' && __SHOW_EXEC_TIME_)
) {
  echo '<div style="color:red;background-color:white;position:absolute; top: 0px; left: 0px">' . (microtime(true) - $start) . '</div>';
}
