Inicjalizacja tłumaczeń
357220
protected function _initTranslation(\Mmi\Http\Request $request)
    {
        //języki nie zdefiniowane
        if (empty(\App\Registry::$config->languages)) {
            return;
        }
        //niepoprawny język
        if ($request->__get('lang') && !in_array($request->__get('lang'), \App\Registry::$config->languages)) {
            throw new \Mmi\Mvc\MvcNotFoundException('Language not found');
        }
        //ustawianie języka z requesta
        if ($request->__get('lang')) {
            return \App\Registry::$translate->setLocale($request->__get('lang'));
        }
        //ustawienie języka edycji
        $session = new \Mmi\Session\SessionSpace('cms-language');
        $lang = in_array($session->lang, \App\Registry::$config->languages) ? $session->lang : \App\Registry::$config->languages[0];
        \App\Registry::$translate->setLocale($lang);
    }
682575
public function beforeSave()
    {
        $auth = new \Cms\Model\Auth;
        $record = $auth->authenticate(\App\Registry::$auth->getUsername(), $this->getElement('password')->getValue());
        //logowanie niepoprawne
        if (!$record) {
            $this->getElement('password')->addError('form.index.password.current.invalid');
            return false;
        }
        //hasła niezgodne
        if ($this->getElement('changePassword')->getValue() != $this->getElement('confirmPassword')->getValue()) {
            $this->getElement('confirmPassword')->addError('form.index.password.repeat.invalid');
            return false;
        }
        //znajdowanie rekordu użytkownika
        $authRecord = (new \Cms\Orm\CmsAuthQuery)->findPk(\App\Registry::$auth->getId());
        if (null === $authRecord) {
            return false;
        }
        $authRecord->password = \Cms\Model\Auth::getSaltedPasswordHash($this->getElement('changePassword')->getValue());
        return $authRecord->save();
    }
938671
protected function _render()
    {
        $renderer = new GridRenderer($this->_grid);
        //ustawianie odpowiedzi
        FrontController::getInstance()->getResponse()
            ->setTypeJson()
            ->setContent(json_encode(['body' => $renderer->renderHeader() . $renderer->renderBody(), 'paginator' => $renderer->renderFooter()]));
        exit;
    }
702452
public function dispatch()
    {
        //wpięcie dla pluginów przed routingiem
        $this->routeStartup();
        $frontController = FrontController::getInstance();
        //ustawianie requestu po zdekodowaniu żądania przez router
        $frontController->getRequest()
            ->setParams($frontController->getRouter()->decodeUrl($frontController->getEnvironment()->requestUri));
        //informacja o zakończeniu ustawiania routingu
        $frontController->getProfiler()->event('Mvc\Dispatcher: routing applied');
        //wpięcie dla pluginów przed dispatchem
        $this->preDispatch();
        //ustawianie contentu po wykonaniu requestu
        return $frontController->getResponse()->setContent(\Mmi\Mvc\ActionHelper::getInstance()->forward($frontController->getRequest()));
    }
1179840
public function previewAction()
    {
        //wyłączenie layout
        $this->view->setLayoutDisabled();
        //wyszukiwanie kategorii
        if (null === $this->view->category = (new \Cms\Orm\CmsCategoryQuery)->findPk($this->categoryId)) {
            $this->getResponse()->redirect('cmsAdmin', 'category', 'tree');
        }
    }
267821
public final function fetchBegin()
    {
        $class = get_class($this);
        //dodawanie klasy z klasą forma
        $this->addClass(strtolower(substr($class, strrpos($class, '\\') + 1)));
        //dodawanie klasy błędu jeśli wystąpiły
        if ($this->getErrors()) {
            $this->addClass('error');
        }
        //element do widoku
        \Mmi\App\FrontController::getInstance()->getView()->_element = $this;
        //render szablonu
        return \Mmi\App\FrontController::getInstance()->getView()->renderTemplate(static::TEMPLATE_BEGIN);
    }
1307383
public function init()
    {

        //nazwa
        $this->addElement((new Element\Text('name'))
            ->setLabel('form.contact.option.name.label'));

        //wyślij wiadomość
        $this->addElement((new Element\Text('sendTo'))
            ->setLabel('form.contact.option.sendTo.label')
            ->setDescription('form.contact.option.sendTo.description')
            ->addValidator(new \Mmi\Validator\EmailAddressList([])));

        //submit
        $this->addElement((new Element\Submit('submit'))
            ->setLabel('form.contact.option.submit.label'));
    }
800632
public function clearCache()
    {
        //iteracja po relacjach widgetów
        foreach ((new CmsCategoryWidgetCategoryQuery)
            ->join('cms_category')->on('cms_category_id')
            ->whereCmsCategoryWidgetId()
            ->equals($this->id)
            ->findPairs('cms_category_widget_category.id', 'cms_category.id') as $id => $categoryId) {
            //usuwanie bufora
            \App\Registry::$cache->remove('category-widget-html-' . $id);
            \App\Registry::$cache->remove('category-widget-model-' . $categoryId);
            \App\Registry::$cache->remove('category-html-' . $categoryId);
        }
        return true;
    }
1004280
public function configAction()
    {
        //wyszukiwanie kategorii
        if ((null === $category = (new \Cms\Orm\CmsCategoryQuery)->findPk($this->categoryId)) || $category->status != \Cms\Orm\CmsCategoryRecord::STATUS_DRAFT) {
            return;
        }
        //wyszukiwanie widgeta
        if (null === $widgetRecord = (new \Cms\Orm\CmsCategoryWidgetQuery)->findPk($this->widgetId)) {
            //brak widgeta
            return;
        }
        //wyszukiwanie relacji do edycji
        if (null === $widgetRelationRecord = (new \Cms\Orm\CmsCategoryWidgetCategoryQuery)
            ->whereCmsCategoryId()->equals($this->categoryId)
            ->andFieldCmsCategoryWidgetId()->equals($widgetRecord->id)
            ->findPk($this->id)) {
            //nowy rekord relacji
            $widgetRelationRecord = new \Cms\Orm\CmsCategoryWidgetCategoryRecord();
            //parametry relacji
            $widgetRelationRecord->cmsCategoryWidgetId = $widgetRecord->id;
            $widgetRelationRecord->cmsCategoryId = $this->categoryId;
            //maksymalna wartość posortowania
            $maxOrder = (new \Cms\Orm\CmsCategoryWidgetCategoryQuery)
                ->whereCmsCategoryId()->equals($this->categoryId)
                ->findMax('order');
            $widgetRelationRecord->order = $maxOrder !== null ? $maxOrder + 1 : 0;
        }
        //rekord widgeta do widoku
        $this->view->widgetRecord = $widgetRecord;
        //rekord do formularza to rekord wiązania
        $record = $widgetRelationRecord;
        //domyślna klasa formularza
        $widgetRecord->formClass = $widgetRecord->formClass ? : '\CmsAdmin\Form\CategoryAttributeWidgetForm';
        //instancja formularza
        $form = new $widgetRecord->formClass($record, ['widgetId' => $widgetRecord->id]);
        //wartości z zapisanej konfiguracji
        $formValues = $widgetRelationRecord->getConfig()->toArray();
        //nadpisanie wartościami z POSTA, jeśli zosały przesłane
        if (!$this->getPost()->isEmpty() && is_array($this->getPost()->__get($form->getBaseName()))) {
            $formValues = array_merge($formValues, $this->getPost()->__get($form->getBaseName()));
        }
        $form->setFromArray($formValues);
        //form zapisany
        if ($form->isSaved()) {
            //zapis konfiguracji
            $widgetRelationRecord->setConfigFromArray($record->getOptions());
            $this->getResponse()->redirect('cmsAdmin', 'categoryWidgetRelation', 'config');
        }
        //form do widoku
        $this->view->widgetRelationForm = $form;
    }
493429
public function sendHeaders()
    {
        //iteracja po nagłówkach
        foreach ($this->_headers as $key => $header) {
            //usuwanie nagłówka z rejestru
            unset($this->_headers[$key]);
            //wysłanie nagłówka
            $header->send();
        }
        return $this;
    }
1047125
public function updateAction()
    {
        $msg = $this->view->getTranslate()->_('Zmiana właściwości nie powiodła się.');
        $this->getResponse()->setTypePlain();
        $params = explode('-', $this->id);

        //błędne dane wejściowe
        if (!($this->getPost()->selected) || count($params) != 3) {
            return $msg;
        }
        $record = (new \Cms\Orm\CmsAclQuery)->findPk($params[2]);
        if (!$record) {
            return $msg;
        }
        //zmiana zasobu
        if ($params[1] == 'resource') {
            $resource = [];
            parse_str($this->getPost()->selected, $resource);
            $record->module = strtolower($resource['module']);
            $record->controller = isset($resource['controller']) ? strtolower($resource['controller']) : null;
            $record->action = isset($resource['action']) ? strtolower($resource['action']) : null;
        } else {
            //zmiana uprawnienia z allow na deny lub odwrotnie
            $record->access = $this->getPost()->selected == 'allow' ? 'allow' : 'deny';
        }
        $record->save();
        return 1;
    }
696980
public static function run()
    {
        foreach (Orm\CmsCronQuery::active()->find() as $cron) {
            if (!self::_getToExecute($cron)) {
                continue;
            }
            $output = '';
            try {
                $start = microtime(true);
                $output = \Mmi\Mvc\ActionHelper::getInstance()->action(new \Mmi\Http\Request(['module' => $cron->module, 'controller' => $cron->controller, 'action' => $cron->action]));
                $elapsed = round(microtime(true) - $start, 2);
            } catch (\Exception $e) {
                //error logging
                \Mmi\App\FrontController::getInstance()->getLogger()->error('CRON failed: @' . gethostname() . $cron->name . ' ' . $e->getMessage());
                return;
            }
            //zmień datę ostatniego wywołania
            $cron->dateLastExecute = date('Y-m-d H:i:s');
            //ponowne łączenie
            \App\Registry::$db->connect();
            //zapis do bazy bez modyfikowania daty ostatniej modyfikacji
            $cron->saveWithoutLastDateModify();
            //logowanie uruchomienia
            \Mmi\App\FrontController::getInstance()->getLogger()->info('CRON done: @' . gethostname() . ' ' . $cron->name . ' ' . $output .  ' in ' . $elapsed . 's');
        }
    }
530586
private static function _configureLogger()
    {
        //brak konfiguracji
        if (!self::$_config) {
            //tworzy pustą konfigurację
            return new \Psr\Log\NullLogger;
        }
        //nowy obiekt loggera
        $logger = new Logger(self::$_config->getName());
        //iteracja po konfiguracjach instancji
        foreach (self::$_config as $config) {
            self::_configureInstance($config, $logger);
        }
        return $logger;
    }
825258
private function _authenticate()
    {
        //sprawdzenie odcisku wersji CMS
        if ((new Model\ConnectorModel)->getInstanceHash() != $this->getPost()->instanceHash) {
            //not found
            throw new \Mmi\Mvc\MvcNotFoundException('Version mismatch');
        }
        //próba autoryzacji credentialami
        if (false === \App\Registry::$auth->setIdentity($this->getPost()->identity)
                ->setCredential($this->getPost()->credential)
                ->authenticate()) {
            //forbidden
            throw new \Mmi\Mvc\MvcForbiddenException('Transaction forbidden');
        }
    }
201756
public function fetchField()
    {
        $value = $this->getValue();
        if ($this->issetOption('multiple')) {
            $this->setName($this->getName() . '[]');
        }
        unset($this->_options['value']);
        //nagłówek selecta
        $html = '<select ' . $this->_getHtmlOptions() . '>';
        //generowanie opcji
        foreach (($this->getMultioptions() ? $this->getMultioptions() : []) as $key => $caption) {
            $disabled = '';
            //disabled
            if (strpos($key, ':disabled') !== false && !is_array($caption)) {
                $key = '';
                $disabled = ' disabled="disabled"';
            }
            //jeśli wystąpi zagnieżdżenie - generowanie grupy opcji
            if (is_array($caption)) {
                $html .= '<optgroup label="' . $key . '">';
                foreach ($caption as $k => $c) {
                    $html .= '<option value="' . $k . '" ' . $this->_calculateSelected($k, $value) . $disabled . '>' . \App\Registry::$translate->_($c) . '</option>';
                }
                $html .= '</optgroup>';
                continue;
            }
            //dodawanie pojedynczej opcji
            $html .= '<option value="' . $key . '"' . $this->_calculateSelected($key, $value) . $disabled . '>' . \App\Registry::$translate->_($caption) . '</option>';
        }
        $html .= '</select>';
        return $html;
    }
1270571
public function nodeAction()
    {
        //wyłączenie layout
        FrontController::getInstance()->getView()->setLayoutDisabled();
        //id węzła rodzica
        $this->view->parentId = ($this->parentId > 0) ? $this->parentId : null;
        //pobranie drzewiastej struktury stron CMS
        $this->view->categoryTree = (new \Cms\Model\CategoryModel)->getCategoryTree($this->view->parentId);
    }
733600
public function getRealPath()
    {
        //brak prawidłowej nazwy pliku
        if (strlen($this->_name) < 4) {
            return;
        }
        //ścieżka na dysku
        return BASE_PATH . '/var/data/' . $this->_name[0] . '/' . $this->_name[1] . '/' . $this->_name[2] . '/' . $this->_name[3] . '/' . $this->_name;
    }