Czyści wysłane starsze niż tydzień
@return integer ilość usuniętych
179168
public static function clean()
    {
        return (new Orm\CmsMailQuery)
            ->whereActive()->equals(1)
            ->andFieldDateSent()->less(date('Y-m-d H:i:s', strtotime('-1 week')))
            ->find()
            //kasowanie całej kolekcji
            ->delete();
    }
943274
public function toArray()
    {
        //tworzy array z opcji
        $array = $this->_options;
        //dołącza joinowane tabele
        foreach ($this->_joined as $name => $value) {
            if ($value instanceof \Mmi\Orm\RecordRo) {
                $value = $value->toArray();
            }
            $array[$name] = $value;
        }
        //dołącza pola obiektu
        foreach ($this as $name => $value) {
            //tylko publiczne zmienne
            if (substr($name, 0, 1) == '_') {
                continue;
            }
            $array[$name] = $value;
        }
        return $array;
    }
1075658
public static function send()
    {
        //rezultat wysyłania
        $result = ['error' => 0, 'success' => 0];
        //pobieranie maili
        $emails = (new Orm\CmsMailQuery)
            ->join('cms_mail_definition')->on('cms_mail_definition_id')
            ->join('cms_mail_server', 'cms_mail_definition')->on('cms_mail_server_id')
            ->whereActive()->equals(0)
            ->andFieldDateSendAfter()->lessOrEquals(date('Y-m-d H:i:s'))
            ->orderAscDateSendAfter()
            ->limit(500)
            ->find();
        //brak maili do wysyłki
        if (count($emails) == 0) {
            return $result;
        }
        //tymczasowy stan (w wysyłce)
        foreach ($emails as $email) {
            $email->active = 2;
            $email->save();
        }
        //wysyłka pojedynczego maila
        foreach ($emails as $email) {
            //instancja PHPMailer'a
            $mail = new \PHPMailer(true);
            try {
                $mail->CharSet = 'utf-8';
                //ustawiam SMTP
                $mail->isSMTP();
                //ustawianie hosta
                $mail->Host = $email->getJoined('cms_mail_server')->address;
                //ustawianie portu
                $mail->Port = $email->getJoined('cms_mail_server')->port;
                //jezeli podana nazwa uzytkownika i haslo to wlaczamy uwierzytelnienie
                if ($email->getJoined('cms_mail_server')->username && $email->getJoined('cms_mail_server')->password) {
                    //uwierzytelnianie serwera
                    $mail->SMTPAuth = true;
                    //typ uwierzytelniania
                    $mail->AuthType = 'LOGIN';
                    //uzytkownik SMTP
                    $mail->Username = $email->getJoined('cms_mail_server')->username;
                    //haslo SMTP
                    $mail->Password = $email->getJoined('cms_mail_server')->password;
                }
                if ($email->getJoined('cms_mail_server')->ssl != 'plain') {
                    //szyfrowanie polaczenia
                    $mail->SMTPSecure = $email->getJoined('cms_mail_server')->ssl;
                }
                //ustawianie treści wiadomości
                $mail->Body = strip_tags($email->message);
                //jezeli HTML to ustawiam typ wiadomości na HTML
                if ($email->getJoined('cms_mail_definition')->html) {
                    $mail->isHTML(true);
                    $mail->Body = $email->message;
                }
                //ustawianie "from"
                $mail->setFrom($email->getJoined('cms_mail_server')->from, $email->fromName);
                //ustawianie "do"
                $recipients = explode(';', $email->to);
                foreach ($recipients as $recipient) {
                    $mail->addAddress(trim($recipient));
                }
                //ustawianie reply
                if ($email->replyTo) {
                    $mail->addReplyTo($email->replyTo);
                }
                //ustawianie tematu
                $mail->Subject = $email->subject;
                //dołączanie załączników
                $attachments = unserialize($email->attachements);
                if (!empty($attachments)) {
                    foreach ($attachments as $fileName => $filePath) {
                        if (!file_exists($filePath)) {
                            continue;
                        }
                        $file = [
                            'content' => base64_encode(file_get_contents($filePath)),
                            'type' => \Mmi\FileSystem::mimeType($filePath)
                        ];
                        $mail->addStringAttachment(base64_decode($file['content']), $fileName, 'base64', $file['type'], 'attachment');
                    }
                }
                //wysyłka maila
                $mail->send();
                //logowanie wysyłki
                \Mmi\App\FrontController::getInstance()->getLogger()->info('Sent: ' . $email->to . ' ' . $email->subject);
                //czyszczenie załączników
                $email->attachements = null;
                //ustawienie pol po wysłaniu
                $email->active = 1;
                $email->dateSent = date('Y-m-d H:i:s');
                $email->save();
                //podwyzszenie licznika udanych
                $result['success'] ++;
            } catch (\Exception $e) {
                //bład wysyłki
                \Mmi\App\FrontController::getInstance()->getLogger()->warning($e->getMessage());
                //podwyzszenie licznika nieudanych
                $result['error'] ++;
            }
        }
        return $result;
    }
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;
    }
1151724
public final function find()
    {
        //ustalenie klasy rekordu
        $recordName = $this->_query->getRecordName();
        //ustalenie klasy kolekcji rekordów
        $collectionName = $this->_query->getCollectionName();
        //tworznie pustej kolekcji
        $collection = new $collectionName();
        //iteracja po danych z bazy
        foreach (DbConnector::getAdapter()->select($this->_prepareFields(), $this->_prepareFrom(), $this->_query->getQueryCompile()->where, $this->_query->getQueryCompile()->groupBy, $this->_query->getQueryCompile()->order, $this->_query->getQueryCompile()->limit, $this->_query->getQueryCompile()->offset, $this->_query->getQueryCompile()->bind) as $row) {
            //tworzenie i dodawanie rekordu
            $collection->append((new $recordName)->setFromArray($row)->clearModified());
        }
        //zwrot kolekcji
        return $collection;
    }
598529
public function toUnit()
    {
        if ($this->divisibility <= 0)
            return $this->toMicro();

        $div = pow(10, $this->getDivisibility());
        return ($this->toMicro() / $div);
    }
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 '';
    }
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);
    }
122528
public function deleteAction()
    {
        $value = (new \Cms\Orm\CmsAttributeValueQuery)->findPk($this->id);
        //usuwanie wartości
        if ($value && $value->delete()) {
            $this->getMessenger()->addMessage('messenger.attributeValue.deleted', true);
        }
        //przekierowanie na atrybut
        $this->getResponse()->redirect('cmsAdmin', 'attribute', 'edit', ['id' => $value->cmsAttributeId]);
    }
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;
    }
1243994
public function isVisible()
    {
        //jeśli nie jest aktywna
        if (!$this->active) {
            return false;
        }
        //jeśli status różny od aktywna (bieżąca)
        if ($this->status != \Cms\Orm\CmsCategoryRecord::STATUS_ACTIVE) {
            return false;
        }
        //nie osiągnięto czasu publikacji
        if (null !== $this->dateStart && $this->dateStart > date('Y-m-d H:i:s')) {
            return false;
        }
        //przekroczono czas publikacji
        if (null !== $this->dateEnd && $this->dateEnd < date('Y-m-d H:i:s')) {
            return false;
        }
        return true;
    }
898837
protected function _getData()
    {
        //pobranie kolekcji rekordów
        $rawCollection = $this->_grid->getState()
            ->setupQuery($this->_grid->getQuery())
            //eksport maksimum 100k rekordów
            ->limit(100000)
            ->offset(null)
            ->find();
        $exportTable = [];
        //iteracja po kolekcji
        foreach ($rawCollection as $record) {
            $recordTable = [];
            //iteracja po kolumnach
            foreach ($this->_grid->getColumns() as $column) {
                if ('?' === $value = $column->getValueFromRecord($record)) {
                    //jeśli kolumna typu custom i eksportowalna
                    if ($column instanceof Column\CustomColumn && $column->getExporting()) {
                        $recordTable[] = $column->renderCell($record);
                    }
                    continue;
                }
                //kolumna to select ale nie checkbox
                if ($column instanceof Column\SelectColumn && !($column instanceof Column\CheckboxColumn)) {
                    $recordTable[] = html_entity_decode($column->renderCell($record));
                    continue;
                }
                //domyślnie przepisujemy wartość z rekordu
                $recordTable[] = $value;
            }
            $exportTable[] = $recordTable;
        }
        return $exportTable;
    }
1057314
public function thumbnailAction()
    {
        if (!$this->getPost()->cmsFileId) {
            return $this->_jsonError(179);
        }
        //szukamy rekordu pliku
        if (null !== $record = (new CmsFileQuery)->findPk($this->getPost()->cmsFileId)) {
            //sprawdzenie czy obrazek
            if ($record->class === 'image') {
                try {
                    $thumb = new \Cms\Mvc\ViewHelper\Thumb();
                    $url = $thumb->thumb($record, 'scaley', '60');
                    if (!empty($url)) {
                        return json_encode(['result' => 'OK', 'url' => $url]);
                    }
                } catch (\Exception $ex) {
                    
                }
            }
        }
        return $this->_jsonError(179);
    }
1274453
public function isValid()
    {
        $result = true;
        //waliduje poprawnie jeśli niewymagane, ale tylko gdy niepuste
        if (!($this->getRequired() || empty($this->getFiles()))) {
            return $result;
        }
        //iteracja po walidatorach
        foreach ($this->getValidators() as $validator) {
            if ($validator->isValid($this->getFiles())) {
                continue;
            }
            $result = false;
            //dodawanie wiadomości z walidatora
            $this->addError($validator->getMessage() ? $validator->getMessage() : $validator->getError());
        }
        //zwrot rezultatu wszystkich walidacji (iloczyn)
        return $result;
    }
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;
    }
1238932
public function getHeight()
    {
        //jeśli podana explicit
        if (isset($this->_exif['ExifImageLength'])) {
            return round($this->_exif['ExifImageLength']);
        }
        //obliczenia z COMPUTED
        return isset($this->_exif['COMPUTED']['Height']) ? round($this->_exif['COMPUTED']['Height']) : null;
    }
292895
public function vincenty()
    {
        Ellipsoid::checkCoordinatesEllipsoid($this->from, $this->to);

        $a = $this->from->getEllipsoid()->getA();
        $b = $this->from->getEllipsoid()->getB();
        $f = 1 / $this->from->getEllipsoid()->getInvF();

        $lL = deg2rad($this->to->getLongitude() - $this->from->getLongitude());
        $u1 = atan((1 - $f) * tan(deg2rad($this->from->getLatitude())));
        $u2 = atan((1 - $f) * tan(deg2rad($this->to->getLatitude())));

        $sinU1 = sin($u1);
        $cosU1 = cos($u1);
        $sinU2 = sin($u2);
        $cosU2 = cos($u2);

        $lambda    = $lL;
        $iterLimit = 100;

        do {
            $sinLambda = sin($lambda);
            $cosLambda = cos($lambda);
            $sinSigma  = sqrt(($cosU2 * $sinLambda) * ($cosU2 * $sinLambda) +
                ($cosU1 * $sinU2 - $sinU1 * $cosU2 * $cosLambda) * ($cosU1 * $sinU2 - $sinU1 * $cosU2 * $cosLambda));

            if (0.0 === $sinSigma) {
                return 0.0; // co-incident points
            }

            $cosSigma   = $sinU1 * $sinU2 + $cosU1 * $cosU2 * $cosLambda;
            $sigma      = atan2($sinSigma, $cosSigma);
            $sinAlpha   = $cosU1 * $cosU2 * $sinLambda / $sinSigma;
            $cosSqAlpha = 1 - $sinAlpha * $sinAlpha;
            if ($cosSqAlpha != 0.0) {
                $cos2SigmaM = $cosSigma - 2 * $sinU1 * $sinU2 / $cosSqAlpha;
            }
            else {
                $cos2SigmaM = 0.0;
            }
            $cC      = $f / 16 * $cosSqAlpha * (4 + $f * (4 - 3 * $cosSqAlpha));
            $lambdaP = $lambda;
            $lambda  = $lL + (1 - $cC) * $f * $sinAlpha * ($sigma + $cC * $sinSigma *
                ($cos2SigmaM + $cC * $cosSigma * (-1 + 2 * $cos2SigmaM * $cos2SigmaM)));
        } while (abs($lambda - $lambdaP) > 1e-12 && --$iterLimit > 0);

        // @codeCoverageIgnoreStart
        if (0 === $iterLimit) {
            throw new NotConvergingException('Vincenty formula failed to converge !');
        }
        // @codeCoverageIgnoreEnd

        $uSq        = $cosSqAlpha * ($a * $a - $b * $b) / ($b * $b);
        $aA         = 1 + $uSq / 16384 * (4096 + $uSq * (-768 + $uSq * (320 - 175 * $uSq)));
        $bB         = $uSq / 1024 * (256 + $uSq * (-128 + $uSq * (74 - 47 * $uSq)));
        $deltaSigma = $bB * $sinSigma * ($cos2SigmaM + $bB / 4 * ($cosSigma * (-1 + 2 * $cos2SigmaM * $cos2SigmaM) -
            $bB / 6 * $cos2SigmaM * (-3 + 4 * $sinSigma * $sinSigma) * (-3 + 4 * $cos2SigmaM * $cos2SigmaM)));
        $s          = $b * $aA * ($sigma - $deltaSigma);

        return $this->convertToUserUnit($s);
    }