示例#1
0
function sqlSubset($where = NULL)
{
    error_reporting(E_ALL);
    global $esc;
    $collation = current_collation();
    $sql = "";
    if (!empty($esc['mysql']['url_query']) && strstr($where, "u.") == false) {
        $sql .= ", " . $esc['mysql']['dataset'] . "_urls u";
    }
    $sql .= " WHERE ";
    if (!empty($where)) {
        $sql .= $where;
    }
    if (!empty($esc['mysql']['from_user_name'])) {
        if (strstr($esc['mysql']['from_user_name'], "AND") !== false) {
            $subqueries = explode(" AND ", $esc['mysql']['from_user_name']);
            foreach ($subqueries as $subquery) {
                $sql .= "LOWER(t.from_user_name COLLATE {$collation}) = LOWER('" . $subquery . "' COLLATE {$collation}) AND ";
            }
        } elseif (strstr($esc['mysql']['from_user_name'], "OR") !== false) {
            $subqueries = explode(" OR ", $esc['mysql']['from_user_name']);
            $sql .= "(";
            foreach ($subqueries as $subquery) {
                $sql .= "LOWER(t.from_user_name COLLATE {$collation}) = LOWER('" . $subquery . "' COLLATE {$collation}) OR ";
            }
            $sql = substr($sql, 0, -3) . ") AND ";
        } else {
            $sql .= "LOWER(t.from_user_name COLLATE {$collation}) = LOWER('" . $esc['mysql']['from_user_name'] . "' COLLATE {$collation}) AND ";
        }
    }
    if (!empty($esc['mysql']['query'])) {
        if (strstr($esc['mysql']['query'], "AND") !== false) {
            $subqueries = explode(" AND ", $esc['mysql']['query']);
            foreach ($subqueries as $subquery) {
                $sql .= "LOWER(t.text COLLATE {$collation}) LIKE LOWER('%" . $subquery . "%' COLLATE {$collation}) AND ";
            }
        } elseif (strstr($esc['mysql']['query'], "OR") !== false) {
            $subqueries = explode(" OR ", $esc['mysql']['query']);
            $sql .= "(";
            foreach ($subqueries as $subquery) {
                $sql .= "LOWER(t.text COLLATE {$collation}) LIKE LOWER('%" . $subquery . "%' COLLATE {$collation}) OR ";
            }
            $sql = substr($sql, 0, -3) . ") AND ";
        } else {
            $sql .= "LOWER(t.text COLLATE {$collation}) LIKE LOWER('%" . $esc['mysql']['query'] . "%' COLLATE {$collation}) AND ";
        }
    }
    if (!empty($esc['mysql']['url_query'])) {
        if (strstr($where, "u.") == false) {
            $sql .= " u.tweet_id = t.id AND ";
        }
        if (strstr($esc['mysql']['url_query'], "AND") !== false) {
            $subqueries = explode(" AND ", $esc['mysql']['url_query']);
            foreach ($subqueries as $subquery) {
                $sql .= "(";
                $sql .= "(LOWER(u.url_followed COLLATE {$collation}) LIKE LOWER('%" . $subquery . "%' COLLATE {$collation})) OR ";
                $sql .= "(LOWER(u.url_expanded COLLATE {$collation}) LIKE LOWER('%" . $subquery . "%' COLLATE {$collation}))";
                $sql .= ")";
                $sql .= " AND ";
            }
        } elseif (strstr($esc['mysql']['url_query'], "OR") !== false) {
            $subqueries = explode(" OR ", $esc['mysql']['url_query']);
            $sql .= "(";
            foreach ($subqueries as $subquery) {
                $sql .= "(";
                $sql .= "(LOWER(u.url_followed COLLATE {$collation}) LIKE LOWER('%" . $subquery . "%' COLLATE {$collation})) OR ";
                $sql .= "(LOWER(u.url_expanded COLLATE {$collation}) LIKE LOWER('%" . $subquery . "%' COLLATE {$collation}))";
                $sql .= ")";
                $sql .= " OR ";
            }
            $sql = substr($sql, 0, -3) . ") AND ";
        } else {
            $subquery = $esc['mysql']['url_query'];
            $sql .= "(";
            $sql .= "(LOWER(u.url_followed COLLATE {$collation}) LIKE LOWER('%" . $subquery . "%' COLLATE {$collation})) OR ";
            $sql .= "(LOWER(u.url_expanded COLLATE {$collation}) LIKE LOWER('%" . $subquery . "%' COLLATE {$collation}))";
            $sql .= ") AND ";
        }
    }
    if (!empty($esc['mysql']['geo_query']) && dbserver_has_geo_functions()) {
        $polygon = "POLYGON((" . $esc['mysql']['geo_query'] . "))";
        $polygonfromtext = "GeomFromText('" . $polygon . "')";
        $pointfromtext = "PointFromText(CONCAT('POINT(',t.geo_lng,' ',t.geo_lat,')'))";
        $sql .= " ( t.geo_lat != '0.00000' and t.geo_lng != '0.00000' and ST_Contains(" . $polygonfromtext . ", " . $pointfromtext . ") ";
        $sql .= " ) AND ";
    }
    if (!empty($esc['mysql']['from_source'])) {
        if (strstr($esc['mysql']['from_source'], "OR") !== false) {
            $subqueries = explode(" OR ", $esc['mysql']['from_source']);
            $sql .= "(";
            foreach ($subqueries as $subquery) {
                $sql .= "LOWER(t.source COLLATE {$collation}) LIKE LOWER('%" . $subquery . "%' COLLATE {$collation}) OR ";
            }
            $sql = substr($sql, 0, -3) . ") AND ";
        } else {
            $sql .= "LOWER(t.source COLLATE {$collation}) LIKE LOWER('%" . $esc['mysql']['from_source'] . "%' COLLATE {$collation}) AND ";
        }
    }
    if (!empty($esc['mysql']['exclude'])) {
        if (strstr($esc['mysql']['exclude'], "AND") !== false) {
            $subqueries = explode(" AND ", $esc['mysql']['exclude']);
            foreach ($subqueries as $subquery) {
                $sql .= "LOWER(t.text COLLATE {$collation}) NOT LIKE LOWER('%" . $subquery . "%' COLLATE {$collation}) AND ";
            }
        } elseif (strstr($esc['mysql']['exclude'], "OR") !== false) {
            $subqueries = explode(" OR ", $esc['mysql']['exclude']);
            $sql .= "(";
            foreach ($subqueries as $subquery) {
                $sql .= "LOWER(t.text COLLATE {$collation}) NOT LIKE LOWER('%" . $subquery . "%' COLLATE {$collation}) OR ";
            }
            $sql = substr($sql, 0, -3) . ") AND ";
        } else {
            $sql .= "LOWER(t.text COLLATE {$collation}) NOT LIKE LOWER('%" . $esc['mysql']['exclude'] . "%' COLLATE {$collation}) AND ";
        }
    }
    if (!empty($esc['mysql']['from_user_lang'])) {
        if (strstr($esc['mysql']['from_user_lang'], "AND") !== false) {
            $subqueries = explode(" AND ", $esc['mysql']['from_user_lang']);
            foreach ($subqueries as $subquery) {
                $sql .= "from_user_lang = '" . $subquery . "' AND ";
            }
        } elseif (strstr($esc['mysql']['from_user_lang'], "OR") !== false) {
            $subqueries = explode(" OR ", $esc['mysql']['from_user_lang']);
            $sql .= "(";
            foreach ($subqueries as $subquery) {
                $sql .= "from_user_lang = '" . $subquery . "' OR ";
            }
            $sql = substr($sql, 0, -3) . ") AND ";
        } else {
            $sql .= "from_user_lang = '" . $esc['mysql']['from_user_lang'] . "' AND ";
        }
    }
    $sql .= " t.created_at >= '" . $esc['datetime']['startdate'] . "' AND t.created_at <= '" . $esc['datetime']['enddate'] . "' ";
    //print $sql."<br>"; die;
    return $sql;
}
示例#2
0
</td>
                            </tr>
                            <tr>
                                <td class="tbl_head">From twitter client: </td><td><?php 
echo $esc['mysql']['from_source'];
?>
</td>
                            </tr>
                            <tr>
                                <td class="tbl_head">(Part of) URL:</td><td><?php 
echo $esc['mysql']['url_query'];
?>
</td>
                            </tr>
                            <?php 
if (dbserver_has_geo_functions()) {
    ?>
                                <tr>
                                    <td class="tbl_head">GEO polygon:</td><td><?php 
    echo $esc['mysql']['geo_query'];
    ?>
</td>
                                </tr>
                            <?php 
}
?>
                            <tr>
                                <td class="tbl_head">Startdate:</td><td><?php 
echo $startdate;
?>
</td>