Tworzy połączenie z bazą danych
340200
public function connect()
    {
        //pdo do zapisu
        $this->_upstreamPdo = new \PDO(
            $this->_config->driver . ':' . $this->_config->host, null, null, [\PDO::ATTR_PERSISTENT => $this->_config->persistent]
        );
        //odczyt identycznie
        $this->_downstreamPdo = $this->_upstreamPdo;
        //połączono
        $this->_connected = true;
        //włączenie funkcjonalności kluczy obcych - domyślnie
        $this->query('PRAGMA foreign_keys = ON');
    }
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;
    }
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);
    }
1343350
public function beforeSave()
    {
        $mvcParams = [];
        //parsowanie mvcParams
        parse_str($this->getElement('mvcParams')->getValue(), $mvcParams);
        //zapis do obiektu
        $this->getRecord()->module = isset($mvcParams['module']) ? $mvcParams['module'] : null;
        $this->getRecord()->controller = isset($mvcParams['controller']) ? $mvcParams['controller'] : null;
        $this->getRecord()->action = isset($mvcParams['action']) ? $mvcParams['action'] : null;
    }
254187
public function afterSave()
    {
        //brak obiektu
        if (!$this->_saveToObject) {
            return parent::afterSave();
        }
        //czyszczenie relacji
        (new AttributeValueRelationModel($this->_saveToObject, $this->getRecord()->id))->deleteAttributeValueRelations();
        //iteracja po elementach
        foreach ($this->_cmsAttributeElements as $attributeId => $element) {
            //zapis relacji
            $this->_createValueRelationByElement($attributeId, $element);
        }
        //iteracja po atrybutach
        foreach ($this->_cmsAttributes as $attribute) {
            //nie jest zmaterializowany, odziedziczony
            if (!$attribute->getJoined('cms_attribute_relation')->isMaterializedInherited()) {
                continue;
            }
            //brak obiektu do dziedziczenia
            if (null === $element = $this->getElement($attribute->key)) {
                throw new \Exception('No inherited attribute: ' . $attribute->key);
            }
            //zapis relacji z odziedziczonego elementu formularza (występującego w oryginalnym formularzu)
            $this->_createValueRelationByElement($attribute->id, $element);
        }
        //zapis udany
        return parent::afterSave();
    }
613988
public function deleteAttributeRelationAction()
    {
        //wyszukiwanie rekordu relacji
        $record = (new \Cms\Orm\CmsAttributeRelationQuery)
            ->whereObjectId()->equals($this->id)
            ->findPk($this->relationId);
        //jeśli znaleziono rekord
        if ($record && $record->delete()) {
            //wyszukiwanie stron w zmienionym szablonie
            foreach ((new \Cms\Orm\CmsCategoryQuery)->whereCmsCategoryTypeId()
                ->equals($this->id)
                ->findPairs('id', 'id') as $categoryId) {
                //usuwanie wartości usuniętych atrybutów
                (new \Cms\Model\AttributeValueRelationModel('category', $categoryId))
                    ->deleteAttributeValueRelationsByAttributeId($record->cmsAttributeId);
            }
            $this->getMessenger()->addMessage('messenger.attribute.attributeRelation.deleted', true);
        }
    }
1272788
public function uploadAction()
    {
        $files = $this->getFiles()->toArray();
        //brak plików lub klasy
        $error = null;
        if (empty($files) || !isset($files['file']) || empty($files['file']) || !$this->class) {
            $error = 'Błąd: nie przesłano pliku';
        }
        //nieprawidłowy hash zabezpieczający
        if ($this->hash != md5($this->t . '+' . \Mmi\Session\Session::getId() . '+' . $this->class)) {
            $error = 'Błąd: nieprawidłowy hash';
        }
        //jeśli nie było błędu
        if ($error === null) {
            //dołączanie plików
            if (!\Cms\Model\File::appendFiles($this->object, $this->objectId, $files, $this->types ? $this->types : [])) {
                $error = 'Nieprawidłowy typ pliku';
            }
        }
        //rendering widgeta uploadera
        return $this->view->widget('cms', 'file', 'uploader', [
                'object' => $this->object,
                'objectId' => $this->objectId,
                'types' => $this->types,
                'error' => $error
        ]);
    }
606559
public function deleteAction()
    {
        //wyszukiwanie relacji do edycji
        if (null === $widgetRelation = (new \Cms\Orm\CmsCategoryWidgetCategoryQuery)
            ->whereCmsCategoryId()->equals($this->categoryId)
            ->findPk($this->id)) {
            return '';
        }
        //usuwanie relacji
        $widgetRelation->delete();
        return '';
    }
417186
protected final function _prepareFields()
    {
        //jeśli pusty schemat połączeń
        if (empty($this->_query->getQueryCompile()->joinSchema)) {
            return '*';
        }
        $fields = '';
        //pobranie struktury tabeli
        $mainStructure = DbConnector::getTableStructure($this->_query->getTableName());
        //przygotowanie tabeli
        $table = DbConnector::getAdapter()->prepareTable($this->_query->getTableName());
        //iteracja po polach tabeli głównej
        foreach ($mainStructure as $fieldName => $info) {
            //dodawanie pola
            $fields .= $table . '.' . DbConnector::getAdapter()->prepareField($fieldName) . ', ';
        }
        //pola z tabel dołączonych
        foreach ($this->_query->getQueryCompile()->joinSchema as $schema) {
            //pobranie struktury tabeli dołączonej
            $structure = DbConnector::getTableStructure($schema[0]);
            //alias połączenia
            $joinAlias = isset($schema[5]) ? $schema[5] : $schema[0];
            //pola tabeli dołączonej
            foreach ($structure as $fieldName => $info) {
                $fields .= DbConnector::getAdapter()->prepareTable($joinAlias) . '.' . DbConnector::getAdapter()->prepareField($fieldName) . ' AS ' . DbConnector::getAdapter()->prepareField($joinAlias . '__' . $schema[0] . '__' . $fieldName) . ', ';
            }
        }
        return rtrim($fields, ', ');
    }
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');
        }
    }
102318
public function indexAction()
    {
        $config = clone (\App\Registry::$config);
        //za długie dane do wyświetlenia
        $config->navigation = self::THREE_DOTS;
        $config->router = self::THREE_DOTS;
        $this->view->config = \Mmi\Http\ResponseDebugger\Colorify::colorify(print_r($config, true));
        $this->view->server = \Mmi\Http\ResponseDebugger\Colorify::colorify(print_r($_SERVER, true));
    }
501456
public function deleteAction()
    {
        //szukamy rekordu pliku
        if (!$this->getPost()->cmsFileId || null === $record = (new CmsFileQuery)->findPk($this->getPost()->cmsFileId)) {
            return $this->_jsonError(178);
        }
        //sprawdzenie zgodności z obiektem formularza
        if ($record->object === $this->getPost()->object && $record->objectId == $this->getPost()->objectId) {
            //usuwanie
            if ($record->delete()) {
                //jeśli wykonać operację po usunięciu
                if ($this->getPost()->afterDelete) {
                    $this->_operationAfter($this->getPost()->afterDelete, $record);
                }
                return json_encode(['result' => 'OK']);
            }
        }
        return $this->_jsonError(178);
    }
129777
public function filesAction()
    {
        //formularz
        $form = new Form\ConnectorImportFilesForm;
        //formularz zapisany
        if ($form->isSaved()) {
            //przekazanie listy plików do downloadu
            $this->view->files = $form->getOption('data');
            //otwarcie sesji
            $session = new \Mmi\Session\SessionSpace(\Cms\Model\ConnectorModel::SESSION_SPACE);
            $this->view->downloadUrl = base64_encode($session->url);
        } else {
            //form do widoku
            $this->view->form = $form;
        }
    }
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;
    }
1251987
public function delete()
    {
        //brak pk
        if ($this->getPk() === null) {
            return false;
        }
        //usuwanie historycznych, draftów i dzieci
        (new CmsCategoryQuery)
            ->whereCmsCategoryOriginalId()->equals($this->id)
            ->orFieldParentId()->equals($this->id)
            ->find()
            ->delete();
        //pobranie dzieci
        $children = (new \Cms\Model\CategoryModel)->getCategoryTree($this->getPk());
        if (!empty($children)) {
            throw new \Cms\Exception\ChildrenExistException();
        }
        //usuwanie plików
        (new CmsFileQuery)->whereObject()->equals(self::FILE_OBJECT)
            ->andFieldObjectId()->equals($this->getPk())
            ->find()
            ->delete();
        //usuwanie widgetów
        (new CmsCategoryWidgetCategoryQuery)
            ->whereCmsCategoryId()->equals($this->getPk())
            ->find()
            ->delete();
        //usuwanie kategorii i czyszczenie bufora
        return parent::delete() && $this->clearCache();
    }
1140261
protected function _setupDatabase()
    {
        //brak konfiguracji bazy
        if (!\App\Registry::$config->db || !\App\Registry::$config->db->driver) {
            return $this;
        }
        //obliczanie nazwy drivera
        $driver = '\\Mmi\\Db\\Adapter\\Pdo' . ucfirst(\App\Registry::$config->db->driver);
        //próba powołania drivera
        \App\Registry::$db = new $driver(\App\Registry::$config->db);
        //jeśli aplikacja w trybie debug
        if (\App\Registry::$config->debug) {
            //wstrzyknięcie profilera do adaptera bazodanowego
            \App\Registry::$db->setProfiler(new \Mmi\Db\DbProfiler);
        }
        //wstrzyknięcie do ORM
        \Mmi\Orm\DbConnector::setAdapter(\App\Registry::$db);
        return $this;
    }
987146
public function currentAction()
    {
        $objectId = !empty($this->getPost()->objectId) ? $this->getPost()->objectId : null;
        switch ($this->getPost()->fileTypes) {
            case 'images' :
                //zapytanie o obrazki
                $query = CmsFileQuery::imagesByObject($this->getPost()->object, $objectId);
                break;
            case 'notImages' :
                //wszystkie pliki bez obrazków
                $query = CmsFileQuery::notImagesByObject($this->getPost()->object, $objectId);
                break;
            default :
                //domyślne zapytanie o wszystkie pliki
                $query = CmsFileQuery::byObject($this->getPost()->object, $objectId);
        }

        $records = $query->find();
        foreach ($records as $record) {
            $record->data = $record->data->toArray();
        }

        //zwrot json'a z plikami
        return json_encode([
            'result' => 'OK',
            'files' => $records->toArray()
        ]);
    }