Exakat\Reports\Json::generate PHP Метод

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

public generate ( $folder, $name = null )
    public function generate($folder, $name = null)
    {
        $list = Analyzer::getThemeAnalyzers($this->themesToShow);
        $list = '"' . join('", "', $list) . '"';
        $sqlite = new \Sqlite3($folder . '/dump.sqlite');
        $sqlQuery = 'SELECT * FROM results WHERE analyzer in (' . $list . ')';
        $res = $sqlite->query($sqlQuery);
        $results = array();
        $titleCache = array();
        $severityCache = array();
        while ($row = $res->fetchArray(SQLITE3_ASSOC)) {
            if (!isset($results[$row['file']])) {
                $file = array('errors' => 0, 'warnings' => 0, 'fixable' => 0, 'filename' => $row['file'], 'messages' => array());
                $results[$row['file']] = $file;
            }
            if (!isset($titleCache[$row['analyzer']])) {
                $analyzer = Analyzer::getInstance($row['analyzer']);
                $titleCache[$row['analyzer']] = $analyzer->getDescription()->getName();
                $severityCache[$row['analyzer']] = $analyzer->getSeverity();
            }
            $message = array('type' => 'warning', 'source' => $row['analyzer'], 'severity' => $severityCache[$row['analyzer']], 'fixable' => 'fixable', 'message' => $titleCache[$row['analyzer']]);
            if (!isset($results[$row['file']]['messages'][$row['line']])) {
                $results[$row['file']]['messages'][$row['line']] = array(0 => array());
            }
            $results[$row['file']]['messages'][$row['line']][0][] = $message;
            ++$results[$row['file']]['warnings'];
            $this->count();
        }
        if ($name === null) {
            return json_encode($results);
        } else {
            file_put_contents($folder . '/' . $name . '.' . self::FILE_EXTENSION, json_encode($results));
            return true;
        }
    }