예제 #1
0
function getDomainHistory($domain, $pageNumber, $testType)
{
    global $history;
    global $totalPages;
    global $sourceIdentifiers;
    $query = "\r\n\t\t\tSELECT\r\n\t\t\t\t\t\t\ttests.id AS id,\r\n\t\t\t\t\t\t\tUNIX_TIMESTAMP(tests.begin) AS time,\r\n\t\t\t\t\t\t\tIF(0 < tests.count_error, 'error', IF(0 < tests.count_warning, 'warn', 'ok')) AS status\r\n\t\t\t\tFROM\ttests\r\n\t\t\t\t\tINNER JOIN source ON source.id  = tests.source_id\r\n\t\t\t\t\t\tAND source.name = '" . DatabasePackage::escape($sourceIdentifiers[$testType]) . "'\r\n\t\t\t\tWHERE\ttests.domain = '" . DatabasePackage::escape($domain) . "'\r\n\t\t\t\t\t\tAND NOT(ISNULL(tests.end))\r\n\t\t\t\tORDER BY time DESC\r\n\t\t\t\tLIMIT\t" . ($pageNumber - 1) * PAGER_SIZE . ", " . PAGER_SIZE . "\r\n\t\t";
    $result = null;
    $status = DatabasePackage::query($query, $result);
    if (false === $status) {
        return false;
    }
    foreach ($result as $resultItem) {
        $history[] = array('class' => $resultItem['status'], 'time' => $resultItem['time'], 'id' => $resultItem['id']);
    }
    $query = "\r\n\t\t\tSELECT\r\n\t\t\t\t\t\t\tCOUNT(*) AS num_rows\r\n\t\t\t\tFROM\ttests\r\n\t\t\t\t\tINNER JOIN source ON source.id  = tests.source_id\r\n\t\t\t\t\t\tAND source.name = '" . DatabasePackage::escape($sourceIdentifiers[$testType]) . "'\r\n\t\t\t\tWHERE\ttests.domain = '" . DatabasePackage::escape($domain) . "'\r\n\t\t\t\t\t\tAND NOT(ISNULL(tests.end))\r\n\t\t";
    $result = null;
    $status = DatabasePackage::query($query, $result);
    if (false === $status) {
        return false;
    }
    $totalPages = intval(ceil($result[0]['num_rows'] / PAGER_SIZE));
    if (0 == $totalPages) {
        $totalPages = 1;
    }
    return true;
}
예제 #2
0
파일: common.php 프로젝트: kelixin/dnscheck
/**
 * Gets source ID. It checks if ID is already there, and if it is not, it creates one and returns it.
 * @param $source String identifier of the source
 * @return int Id of the source. -1 If database query failed.
 */
function getSourceID($source)
{
    $result;
    // 	Get the value
    $query = "SELECT id FROM source WHERE name = '" . DatabasePackage::escape($source) . "'";
    $status = DatabasePackage::query($query, $result);
    if (true !== $status) {
        return -1;
    }
    if (count($result) == 0) {
        // Make a new insert, if we do not have the result
        $query = "INSERT IGNORE INTO source (name) VALUES ('" . DatabasePackage::escape($source) . "')";
        $status = DatabasePackage::query($query, $result);
        if (true !== $status) {
            return -1;
        }
        // Get the value
        $query = "SELECT id FROM source WHERE name = '" . DatabasePackage::escape($source) . "'";
        $status = DatabasePackage::query($query, $result);
        if (true !== $status) {
            return -1;
        }
    }
    if (count($result) <= 0) {
        return -1;
    }
    return intval($result[0]['id']);
}
예제 #3
0
function main(&$tree, &$list)
{
    global $time;
    global $domain;
    global $testId;
    global $languageId;
    global $sourceIdentifiers;
    global $sourceData;
    global $thisVersion;
    $IDN = new idna_convert();
    $domain = $IDN->encode(trim(strtolower($_REQUEST['domain'])));
    $sourceData = isset($_REQUEST['parameters']) ? trim(strtolower($_REQUEST['parameters'])) : '';
    $testId = 0;
    if (isset($_REQUEST['historyId'])) {
        $testId = intval($_REQUEST['historyId']);
        $query = "SELECT UNIX_TIMESTAMP(tests.begin) AS time,\r\n\t\t\t\t\t\t\tsource_data AS source_data\r\n\t\t\t\t\t  FROM tests WHERE tests.id = {$testId}";
        $result = null;
        $status = DatabasePackage::query($query, $result);
        if (true != $status) {
            return STATUS_INTERNAL_ERROR;
        }
        $time = intval($result[0]['time']);
        $sourceData = $result[0]['source_data'];
    } else {
        $query = "\r\n\t\t\t\t(\r\n\t\t\t\t\tSELECT\r\n\t\t\t\t\t\t\t\t\tNULL AS id,\r\n\t\t\t\t\t\t\t\t\tNULL AS time,\r\n\t\t\t\t\t\t\t\t\t'NO' AS finished,\r\n\t\t\t\t\t\t\t\t\tsource_data AS source_data\r\n\t\t\t\t\t\tFROM\tqueue\r\n\t\t\t\t\t\t\tINNER JOIN source ON source.id  = queue.source_id\r\n\t\t\t\t\t\t\t\tAND source.name = '" . DatabasePackage::escape($sourceIdentifiers[$_REQUEST['test']]) . "'\r\n\t\t\t\t\t\tWHERE\tqueue.domain = '" . DatabasePackage::escape($domain) . "'\r\n\t\t\t\t\t\t\t\tAND queue.source_data = '" . DatabasePackage::escape($sourceData) . "'\r\n\t\t\t\t)\r\n\t\t\t\tUNION\r\n\t\t\t\t(\r\n\t\t\t\t\tSELECT\r\n\t\t\t\t\t\t\t\t\ttests.id AS id,\r\n\t\t\t\t\t\t\t\t\tUNIX_TIMESTAMP(tests.begin) AS time,\r\n\t\t\t\t\t\t\t\t\tIF(ISNULL(tests.end), 'NO', 'YES') AS finished,\r\n\t\t\t\t\t\t\t\t\tsource_data AS source_data\r\n\t\t\t\t\t\tFROM\ttests\r\n\t\t\t\t\t\t\tINNER JOIN source ON source.id  = tests.source_id\r\n\t\t\t\t\t\t\t\tAND source.name = '" . DatabasePackage::escape($sourceIdentifiers[$_REQUEST['test']]) . "'\r\n\t\t\t\t\t\tWHERE\ttests.domain = '" . DatabasePackage::escape($domain) . "'\r\n\t\t\t\t\t\t\t\tAND (ISNULL(tests.end) OR (UNIX_TIMESTAMP() - UNIX_TIMESTAMP(tests.end) < 300))\r\n\t\t\t\t\t\t\t\tAND tests.source_data = '" . DatabasePackage::escape($sourceData) . "'\r\n\t\t\t\t)\r\n\t\t\t";
        $result = null;
        $status = DatabasePackage::query($query, $result);
        if (true != $status) {
            return STATUS_INTERNAL_ERROR;
        }
        if (0 == count($result)) {
            $id = getSourceID($sourceIdentifiers[$_REQUEST['test']]);
            $query = "INSERT INTO queue (domain, priority, source_id, source_data, fake_parent_glue) VALUES ('" . DatabasePackage::escape($domain) . "', 10, {$id}, '" . DatabasePackage::escape($sourceData) . "', '" . DatabasePackage::escape($sourceData) . "')";
            $result;
            $status = DatabasePackage::query($query, $result);
            if (true !== $status) {
                return STATUS_INTERNAL_ERROR;
            }
            return STATUS_IN_PROGRESS;
        }
        if ('NO' == $result[0]['finished']) {
            return STATUS_IN_PROGRESS;
        }
        $testId = intval($result[0]['id']);
        $time = intval($result[0]['time']);
        $sourceData = $result[0]['source_data'];
    }
    $languageId = __("languageId");
    $rawResultTree = null;
    getRawResultTree($testId, $languageId, $rawResultTree);
    $tree = null;
    $result = constructFinalTree($rawResultTree, false, true, $tree);
    $list = null;
    constructFinalTree($rawResultTree, true, false, $list);
    return $result;
}