<commit_before><?php
/**
 * Содержит общие функции для панели управления и фронтенда
 *
 * @category YupeComponents
 * @package  YupeCMS
 * @author   aopeykin <<EMAIL>>
 * @license  BSD https://raw.github.com/yupe/yupe/master/LICENSE
 * @version  0.0.1
 * @link     http://yupe.ru
 **/

 /**
 * Содержит общие функции для панели управления и фронтенда
 *
 * @category YupeComponents
 * @package  YupeCMS
 * @author   aopeykin <<EMAIL>>
 * @license  BSD https://raw.github.com/yupe/yupe/master/LICENSE
 * @version  0.1
 * @link     http://yupe.ru
 **/
class YMainController extends Controller
{
    public $yupe;

    public $headerTypeId = YContentType::TYPE_HTML;

    /**
     * Устанавливает заголовок страниц
     * @param string $title заголовок
     */
    public function setPageTitle($title,$savePrev=false,$separator='|')
    {
        if($savePrev)
            $this->pageTitle = $this->pageTitle . CHtml::encode($separator) . CHtml::encode($title);
        else
            $this->pageTitle = CHtml::encode($title);
    }

    /**
     * Функци определяющая мультиязычность:
     *
     * @return bool isMultilang
     **/
    public function isMultilang()
    {
        return isset(Yii::app()->urlManager->languages) && is_array(Yii::app()->urlManager->languages);
    }

    /**
     * Функция инициализации контроллера:
     *
     * @return void
     **/
    public function init()
    {
        parent::init();
        $this->yupe = Yii::app()->getModule('yupe');
    }

    /**
     * Функция отрисовки виджета:
     *
     * @param string $className     - имя класса
     * @param mixed  $properties    - параметры
     * @param bool   $captureOutput - требуется ли "захват" вывода виджета
     *
     * @return mixed Инстанс виджета в случае, когда $captureOutput является ложным,
     * или вывод виджета, когда $captureOutput - истина
     **/
    public function widget($className, $properties = array(), $captureOutput = false)
    {
        if (stripos($className, 'application.modules') !== false) {

            $modulePath = explode('.', $className);

            if (!empty($modulePath[2]) && !Yii::app()->hasModule($modulePath[2])) {
                echo CHtml::tag(
                    'p', array(
                        'class' => 'alert alert-error'
                    ), Yii::t(
                        'YupeModule.yupe', 'Виджет "{widget}" не найден! Подключите модуль "{module}" !', array(
                            '{widget}' => $className,
                            '{module}' => $modulePath[2]
                        )
                    )
                );
                return null;
            }
        }
        return parent::widget($className, $properties, $captureOutput);
    }

    /**
     * Действие обработки вывода:
     *
     * @param string $output - буфер для вывода
     *
     * @return string родительский вызов processOutput
     **/
    public function processOutput($output)
    {
        YContentType::setHeader($this->headerTypeId);
        return parent::processOutput($output);
    }

    /**
     * Отключение всех профайлеров и логгеров, используется, например при загрузке файлов
     *
     * @since 0.5
     * @see http://allframeworks.ru/blog/Yii/371.html
     **/
    public function disableProfilers()
    {
        if (Yii::app()->getComponent('log')) {
            foreach (Yii::app()->getComponent('log')->routes as $route) {
                if (in_array(get_class($route), array('CFileLogRoute','CProfileLogRoute', 'CWebLogRoute', 'YiiDebugToolbarRoute','DbProfileLogRoute'))) {
                    $route->enabled = false;
                }
            }
        }
    }
}<commit_msg>UPD: fix for access to messages of not current module<commit_after><?php
/**
 * Содержит общие функции для панели управления и фронтенда
 *
 * @category YupeComponents
 * @package  YupeCMS
 * @author   aopeykin <<EMAIL>>
 * @license  BSD https://raw.github.com/yupe/yupe/master/LICENSE
 * @version  0.0.1
 * @link     http://yupe.ru
 **/

 /**
 * Содержит общие функции для панели управления и фронтенда
 *
 * @category YupeComponents
 * @package  YupeCMS
 * @author   aopeykin <<EMAIL>>
 * @license  BSD https://raw.github.com/yupe/yupe/master/LICENSE
 * @version  0.1
 * @link     http://yupe.ru
 **/
class YMainController extends Controller
{
    public $yupe;

    public $headerTypeId = YContentType::TYPE_HTML;

    /**
     * Устанавливает заголовок страниц
     * @param string $title заголовок
     */
    public function setPageTitle($title,$savePrev=false,$separator='|')
    {
        if($savePrev)
            $this->pageTitle = $this->pageTitle . CHtml::encode($separator) . CHtml::encode($title);
        else
            $this->pageTitle = CHtml::encode($title);
    }

    /**
     * Функци определяющая мультиязычность:
     *
     * @return bool isMultilang
     **/
    public function isMultilang()
    {
        return isset(Yii::app()->urlManager->languages) && is_array(Yii::app()->urlManager->languages);
    }

    /**
     * Функция инициализации контроллера:
     *
     * @return void
     **/
    public function init()
    {
        parent::init();
        $this->yupe = Yii::app()->getModule('yupe');
    }

    /**
     * Функция отрисовки виджета:
     *
     * @param string $className     - имя класса
     * @param mixed  $properties    - параметры
     * @param bool   $captureOutput - требуется ли "захват" вывода виджета
     *
     * @return mixed Инстанс виджета в случае, когда $captureOutput является ложным,
     * или вывод виджета, когда $captureOutput - истина
     **/
    public function widget($className, $properties = array(), $captureOutput = false)
    {
        if (stripos($className, 'application.modules') !== false) {

            $modulePath = explode('.', $className);

            if (!empty($modulePath[2]) && !Yii::app()->hasModule($modulePath[2])) {
                echo CHtml::tag(
                    'p', array(
                        'class' => 'alert alert-error'
                    ), Yii::t(
                        'YupeModule.yupe', 'Виджет "{widget}" не найден! Подключите модуль "{module}" !', array(
                            '{widget}' => $className,
                            '{module}' => $modulePath[2]
                        )
                    )
                );
                return null;
            } elseif (Yii::app()->hasModule($modulePath[2]) && ($this->module === null || $this->module->getId() !== $modulePath[2])) {
                /**
                 * Решаем проблему с доступом к переводам другого модуля:
                 * @todo пока лучшее решение, если есть возможность решить
                 *       как-то иначе и быстрее - стоит переделать
                 */
                Yii::app()->getModule($modulePath[2]);
            }
        }
        return parent::widget($className, $properties, $captureOutput);
    }

    /**
     * Действие обработки вывода:
     *
     * @param string $output - буфер для вывода
     *
     * @return string родительский вызов processOutput
     **/
    public function processOutput($output)
    {
        YContentType::setHeader($this->headerTypeId);
        return parent::processOutput($output);
    }

    /**
     * Отключение всех профайлеров и логгеров, используется, например при загрузке файлов
     *
     * @since 0.5
     * @see http://allframeworks.ru/blog/Yii/371.html
     **/
    public function disableProfilers()
    {
        if (Yii::app()->getComponent('log')) {
            foreach (Yii::app()->getComponent('log')->routes as $route) {
                if (in_array(get_class($route), array('CFileLogRoute','CProfileLogRoute', 'CWebLogRoute', 'YiiDebugToolbarRoute','DbProfileLogRoute'))) {
                    $route->enabled = false;
                }
            }
        }
    }
}
{'fraction_non_alphanumeric': 0.13780783463059845, 'fraction_numerical': 0.0037003955595253284, 'mean_word_length': 2.064112587959343, 'pattern_counts': {'":': 0, '<': 13, '<?xml version=': 0, '>': 52, 'https://': 4, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3435921', 'n_tokens_mistral': 2506, 'n_tokens_neox': 2593, 'n_words': 488}