Pimcore\Log\Maintenance::checkErrorLogsDb PHP Метод

checkErrorLogsDb() публичный Метод

public checkErrorLogsDb ( )
    public function checkErrorLogsDb()
    {
        $db = \Pimcore\Db::get();
        $conf = Config::getSystemConfig();
        $config = $conf->applicationlog;
        if ($config->mail_notification->send_log_summary) {
            $receivers = preg_split("/,|;/", $config->mail_notification->mail_receiver);
            array_walk($receivers, function (&$value) {
                $value = trim($value);
            });
            $logLevel = (int) $config->mail_notification->filter_priority;
            $query = "SELECT * FROM " . \Pimcore\Log\Handler\ApplicationLoggerDb::TABLE_NAME . " WHERE maintenanceChecked IS NULL AND priority <= {$logLevel} order by id desc";
            $rows = $db->fetchAll($query);
            $limit = 100;
            $rowsProcessed = 0;
            $rowCount = count($rows);
            if ($rowCount) {
                while ($rowsProcessed < $rowCount) {
                    $entries = [];
                    if ($rowCount <= $limit) {
                        $entries = $rows;
                    } else {
                        for ($i = $rowsProcessed; $i < $rowCount && count($entries) < $limit; $i++) {
                            $entries[] = $rows[$i];
                        }
                    }
                    $rowsProcessed += count($entries);
                    $html = var_export($entries, true);
                    $html = "<pre>{$html}</pre>";
                    $mail = new \Pimcore\Mail();
                    $mail->setIgnoreDebugMode(true);
                    $mail->setBodyHtml($html);
                    $mail->addTo($receivers);
                    $mail->setSubject('Error Log ' . \Pimcore\Tool::getHostUrl());
                    $mail->send();
                }
            }
        }
        // flag them as checked, regardless if email notifications are enabled or not
        // otherwise, when activating email notifications, you'll receive all log-messages from the past and not
        // since the point when you enabled the notifications
        $db->query("UPDATE " . \Pimcore\Log\Handler\ApplicationLoggerDb::TABLE_NAME . " set maintenanceChecked = 1");
    }