Budowa formularza
175310
public function init()
    {
        $this->addElement((new Element\Text('url'))
            ->addValidator(new \Mmi\Validator\Regex(['/^https?:\/\/[a-z0-9\.\/]+$/', 'link nie jest poprawnym adresem HTTPS']))
            ->setDescription('form.connectorImportContentForm.url.description')
            ->setRequired()
            ->setLabel('form.connectorImportContentForm.url.label'));

        $this->addElement((new Element\Text('identity'))
            ->setLabel('form.connectorImportContentForm.identity.label')
            ->setRequired());

        $this->addElement((new Element\Password('credential'))
            ->setLabel('form.connectorImportContentForm.credential.label')
            ->setRequired());

        $this->addElement((new Element\Checkbox('acl'))
            ->setLabel('form.connectorImportContentForm.acl.label'));

        $this->addElement((new Element\Checkbox('content'))
            ->setLabel('form.connectorImportContentForm.content.label'));

        $this->addElement((new Element\Checkbox('file'))
            ->setLabel('form.connectorImportContentForm.file.label'));

        $this->addElement((new Element\Submit('submit'))
            ->setLabel('form.connectorImportContentForm.submit.label'));
    }
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, ', ');
    }
1271967
public function getCamera()
    {
        //brak camera make - zwrot camera model
        if (!$this->getCameraMake()) {
            return $this->getCameraModel();
        }
        //brak camera model - zwrot camera model
        if (!$this->getCameraModel()) {
            return $this->getCameraMake();
        }
        //łączenie camera make i model jeśli nie zawierają jedno drugiego
        if (strpos(strtolower($this->getCameraModel()), strtolower($this->getCameraMake())) === false) {
            return $this->getCameraMake() . ' ' . $this->getCameraModel();
        }
        //zwrot modelu w pozostałych przypadkach
        return $this->getCameraModel();
    }
214730
protected function createComponentSocialForm() : Form
    {
        $form = new Form;

        $form->addText('title')
            ->setRequired('Titulek pro sociální sítě je povinný.')
            ->addRule(Form::MIN_LENGTH, 'Minimální délka titulku jsou %d znaky.', 3)
            ->addRule(Form::MAX_LENGTH, 'Maximální délka titulku je %d znaků.', 50);

        $form->addText('description')
            ->setRequired(FALSE)
            ->addRule(Form::MIN_LENGTH, 'Minimální délka popisu jsou %d znaky.', 3)
            ->addRule(Form::MAX_LENGTH, 'Maximální délka popisu je %d znaků.', 50);

        $form->addUpload('image')
            ->setRequired(FALSE)
            ->addRule(Form::IMAGE, 'Obrázek může být pouze JPG or PNG.')
            ->addRule(Form::MIME_TYPE, 'Obrázek musí mít správný mime-type.', ['image/jpeg', 'image/png'])
            ->addRule(Form::MAX_FILE_SIZE, 'Maximální velikost obrázku je 8 MB.', 1024 * 1024 * 8)
            ->addRule(Form::PATTERN, 'Obrázek musí mít koncovku .jpg, .png.', '.*\.(jpg|png)');

        $form->addSubmit('save');


        $onPageSocial = $this->activePage->getSocial();

        if ($onPageSocial)
        {
            $form->setDefaults([
                'title' => $onPageSocial->getTitle(),
                'description' => $onPageSocial->getDescription()
            ]);
        }

        $form->onValidate[] = function (Form $form) { $this->validate($form); };
        $form->onSuccess[] = function (Form $form) { $this->success($form); };

        if (!$this->presenter->user->isAllowed(OnPageAuthorizator::RES_SOCIAL))
        {
            $this->setDisabledForm($form);
        }

        return $form;
    }
1207365
public function init()
    {
        //wczytywanie sesji
        $session = new \Mmi\Session\SessionSpace(\Cms\Model\ConnectorModel::SESSION_SPACE);
        try {
            $data = (new \Cms\Model\ConnectorModel)->getData($session->url, 'exportFileObject', [], $session->identity, $session->credential);
        } catch (\Cms\Exception\ConnectorException $e) {
            //rollback - puste dane
            $data = [];
        }

        //obiekty do przesłania
        if (!empty($data)) {
            //lista obiektów
            $this->addElement((new Element\MultiCheckbox('fileObjects'))
                ->setLabel('form.connectorImportFilesForm.fileObjects.label')
                ->setMultioptions($data)
                ->setValue($data));

            //submit
            $this->addElement((new Element\Submit('submit'))
                ->setLabel('form.connectorImportFilesForm.submit.label'));
        }
    }
72092
public function ldapAutocomplete($query = '*')
    {
        //tworzenie klienta
        $ldapClient = new \Mmi\Ldap\LdapClient(\App\Registry::$config->ldap);
        try {
            //wyszukiwanie w LDAPie
            $ldapResults = $ldapClient->findUser($query, 10, ['sAMAccountname']);
        } catch (\Mmi\Ldap\LdapException $e) {
            //błąd usługi
            \Mmi\App\FrontController::getInstance()->getLogger()->error($e);
            return [];
        }
        //budowa tablicy z użytkownikami
        $userTable = [];
        foreach ($ldapResults as $key => $user) {
            /* @var $user \Mmi\Ldap\LdapUserRecord */
            $userTable[$key]['label'] = $user->sAMAccountname;
            $userTable[$key]['name'] = $user->cn;
            $userTable[$key]['email'] = $user->mail;
        }
        return $userTable;
    }
1234536
public static function crop($input, $x, $y, $newWidth, $newHeight)
    {
        //brak zasobu
        $resource = self::inputToResource($input);
        //obliczanie nowej szerokości
        if (imagesx($resource) < $newWidth + $x) {
            $newWidth = imagesx($resource) - $x;
        }
        //obliczanie nowej wysokości
        if (imagesy($resource) < $newHeight + $y) {
            $newHeight = imagesy($resource) - $y;
        }
        //wycinanie obrazka
        $destination = imagecreatetruecolor($newWidth, $newHeight);
        //zapis przeźroczystości
        self::_saveAlpha($destination);
        //przycinanie
        imagecopy($destination, $resource, 0, 0, $x, $y, $newWidth, $newHeight);
        //zwrot
        return $destination;
    }
1157614
protected function _prepareColumnQuery($columnName, $tableName = null, $condition = '=')
    {
        //inicjalizacja zapytania
        $this->_initQuery();
        //porównanie z kolumną
        $this->_query->getQueryCompile()->where .= $this->_fieldName . ' ' . $condition . ' ' . DbConnector::getAdapter()->prepareTable((null === $tableName) ? $this->_query->getTableName() : $tableName) . '.' . DbConnector::getAdapter()->prepareField($columnName);
        return $this->_query;
    }
735450
protected function _buildBreadcrumbs()
    {
        //obiekt nawigatora niezdefiniowany
        if (null === self::$_navigation) {
            return $this;
        }
        //pobieranie breadcrumbów
        $data = $this->getBreadcrumbsData();
        //błędny format danych
        if (!is_array($data)) {
            return $this;
        }
        //inicjalizacja zmiennych
        $title = [];
        $breadcrumbs = [];
        $descriptions = [];
        $i = 0;
        //iteracja po odwróconej tablicy breadcrumbów
        foreach (array_reverse($data) as $breadcrumb) {
            $i++;
            $breadcrumb['label'] = isset($breadcrumb['label']) ? $breadcrumb['label'] : '';
            //dodawanie breadcrumbów (ostatni nie ma linku)
            $breadcrumbs[] = ($i == 1) ? ('<span>' . strip_tags($breadcrumb['label']) . '</span>') :
                ('<a href="' . $breadcrumb['uri'] . '">' . strip_tags($breadcrumb['label']) . '</a>');
            //liść wyłączony (poza ostatnim)
            if (($i != 1) && $breadcrumb['disabled']) {
                continue;
            }
            //dodawanie tytułu
            $title[] = isset($breadcrumb['title']) ? strip_tags($breadcrumb['title']) : strip_tags($breadcrumb['label']);
            //dodawanie opisów
            if (isset($breadcrumb['description'])) {
                $descriptions[] = strip_tags($breadcrumb['description']);
            }
            //ustawiony jest tytuł - nie łączymy z poprzednikami
            if (isset($breadcrumb['title'])) {
                break;
            }
        }
        //ustawianie pól
        return $this->setTitle(trim(implode($this->_metaSeparator, $title)))
                ->setDescription(trim(implode($this->_metaSeparator, $descriptions)))
                //breadcrumby muszą zostać odwrócone
                ->setBreadcrumbs(trim(implode($this->_separator, array_reverse($breadcrumbs))));
    }
440377
public function getGrouppedAttributeValues()
    {
        $grouppedByAttributeKey = new \Mmi\DataObject();
        //wyszukiwanie wartości
        foreach ($this->getAttributeValues() as $record) {
            //pobieranie klucza atrybutu (w celu zgrupowania
            $key = $record->getJoined('cms_attribute')->key;
            if ($record->getJoined('cms_attribute_type')->multiple) {
                if (!$grouppedByAttributeKey->$key) {
                    $grouppedByAttributeKey->$key = new \Mmi\Orm\RecordCollection;
                }
                $grouppedByAttributeKey->$key->append($record);
                continue;
            }
            //atrybut to uploader
            if ($record->getJoined('cms_attribute_type')->uploader) {
                //dołączanie plików
                $grouppedByAttributeKey->$key = \Cms\Orm\CmsFileQuery::byObject($record->value, $this->_objectId)->find();
                continue;
            }
            //atrybut zwykły
            $grouppedByAttributeKey->$key = $record->value;
        }
        //zwrot zgrupowanych wartości atrybutów
        return $grouppedByAttributeKey;
    }
700141
public static function daily($object, $objectId, $year, $month)
    {
        $days = date('t', strtotime($year . '-' . $month . '01 00:00:00'));
        $statArray = [];
        $month = str_pad($month, 2, '0', STR_PAD_LEFT);
        //pobieranie wierszy
        foreach (self::getRows($object, $objectId, $year, $month, true, null) as $stat) {
            $stat->day = str_pad($stat->day, 2, '0', STR_PAD_LEFT);
            $statArray[$stat->year . '-' . $month . '-' . $stat->day] = $stat->count;
        }
        $stats = [];
        //układanie wierszy w kubełkach dni
        for ($i = 1; $i <= $days; $i++) {
            $day = str_pad($i, 2, '0', STR_PAD_LEFT);
            $count = 0;
            if (isset($statArray[$year . '-' . $month . '-' . $day])) {
                $count = $statArray[$year . '-' . $month . '-' . $day];
            }
            $stats[$year . '-' . $month . '-' . $day] = $count;
        }
        return $stats;
    }
553795
public function update($table, array $data = [], $where = '', array $whereBind = [])
    {
        $fields = '';
        $bind = [];
        //jeśli brak danych wyjście z metody
        if (empty($data)) {
            return 1;
        }
        //wiązanie parametrów
        foreach ($data as $key => $value) {
            $bindKey = PdoBindHelper::generateBindKey();
            $fields .= $this->prepareField($key) . ' = :' . $bindKey . ', ';
            $bind[$bindKey] = $value;
        }
        //budowanie zapytania aktualizującego
        $sql = 'UPDATE ' . $this->prepareTable($table) . ' SET ' . rtrim($fields, ', ') . ' ' . $where;
        return $this->query($sql, array_merge($bind, $whereBind))->rowCount();
    }
739273
public function deleteTagRelations()
    {
        //czyszczenie relacji
        (new CmsTagRelationQuery)
            ->whereObject()->equals($this->_object)
            ->andFieldObjectId()->equals($this->_objectId)
            ->find()
            ->delete();
    }
1129372
public function dispatchAction()
    {
        //pobranie kategorii
        $category = $this->_getPublishedCategoryByUri($this->uri);
        //wpięcie kategorii do głównego widoku aplikacji
        FrontController::getInstance()->getView()->category = $category;
        //klucz bufora
        $cacheKey = 'category-html-' . $category->id;
        //buforowanie dozwolone
        $bufferingAllowed = $this->_bufferingAllowed();
        //wczytanie zbuforowanej strony (dla niezalogowanych i z pustym requestem)
        if ($bufferingAllowed && (null !== $html = \App\Registry::$cache->load($cacheKey))) {
            //wysyłanie nagłówka o buforowaniu strony
            $this->getResponse()->setHeader('X-Cache', 'HIT');
            //zwrot html
            return $this->_decorateHtmlWithEditButton($html, $category);
        }
        //wysyłanie nagłówka o braku buforowaniu strony
        $this->getResponse()->setHeader('X-Cache', 'MISS');
        //przekazanie rekordu kategorii do widoku
        $this->view->category = $category;
        //renderowanie docelowej akcji
        $html = \Mmi\Mvc\ActionHelper::getInstance()->forward($this->_prepareForwardRequest($category));
        //buforowanie niedozwolone
        if (!$bufferingAllowed || 0 == $cacheLifetime = $this->_getCategoryCacheLifetime($category)) {
            //zwrot html
            return $this->_decorateHtmlWithEditButton($html, $category);
        }
        //zapis html kategorii do cache
        \App\Registry::$cache->save($html, $cacheKey, $cacheLifetime);
        //zwrot html
        return $this->_decorateHtmlWithEditButton($html, $category);
    }
280516
public function validateAction()
    {
        //typ odpowiedzi: plain
        $this->getResponse()->setTypePlain();
        //wyłączenie layoutu
        $this->view->setLayoutDisabled();

        //sprawdzenie obecności obowiązkowych pól w poscie
        if (!$this->getPost()->class || !$this->getPost()->field) {
            return '';
        }
        //nazwa klasy forma
        $className = $this->getPost()->class;
        //klasa rekordu
        $recordClassName = $this->getPost()->recordClass;
        //powoływanie forma
        $form = new $className($recordClassName ? new $recordClassName($this->getPost()->recordId ? $this->getPost()->recordId : null) : null);
        /* @var $form \Mmi\Form\Form */
        //pobieranie elementu do walidacji
        $element = $form->getElement($this->getPost()->field);
        //jeśli brak elementu - wyjście
        if (!$element instanceof \Mmi\Form\Element\ElementAbstract) {
            return '';
        }
        //ustawienie wartości elementu
        $element->setValue(urldecode($this->getPost()->value));
        //walidacja i zwrot wyniku
        if (!$element->isValid()) {
            $this->view->errors = $element->getErrors();
            return;
        }
        //poprawna walidacja
        return '';
    }
519222
public function run()
    {
        $request = new \Mmi\Http\Request;
        //ustawianie domyślnego języka jeśli istnieje
        if (isset(\App\Registry::$config->languages[0])) {
            $request->lang = \App\Registry::$config->languages[0];
        }
        $request->setModuleName('mmi')
            ->setControllerName('index')
            ->setActionName('index');
        //ustawianie żądania
        FrontController::getInstance()->setRequest($request)
            ->getView()->setRequest($request);
        FrontController::getInstance()->getResponse()->clearHeaders();
    }
651012
public function deleteAttributeValueRelations()
    {
        //czyszczenie relacji
        (new CmsAttributeValueRelationQuery)
            ->whereObject()->equals($this->_object)
            ->andFieldObjectId()->equals($this->_objectId)
            ->find()
            ->delete();
    }