Esempio n. 1
0
# Processing each partition
$query = false;
$partitions_affected = new stdClass();
while ($partition_data = mysqli_fetch_assoc($partition_results)) {
    # Connecting to our dblinks
    $partition_dblink = mysqli_shared_connect($partition_data['host'], $partition_data['username'], $partition_data['password'], $G_SHARED_DBLINKS);
    $partitions_affected->{$partition_data['id']} = (object) ['data' => $partition_data, 'dblink' => $partition_dblink, 'database' => $partition_data['database']];
    # First partition, new query object
    if ($query === false) {
        # Creating our new parser
        $query = new MySQLParser($partition_dblink, $partition_data['table_name'], $partition_data['database']);
        # Checking for whitelisting
        if (NQ_WHITELIST_COLUMNS) {
            $whitelist = get_whitelist_columns($G_CONTROLLER_DBLINK, $G_APP_DATA['id'], $G_TABLE_DETAILS['id'], $G_TOKEN_PRIVILEGE_DATA['id']);
            if (NQ_WHITELIST_EXISTENTIAL ? count($whitelist) > 0 : true) {
                $query->whitelist_columns($whitelist);
            }
        }
        # Blacklisting the locked and partitioned fields
        $query->blacklist_columns(explode(',', NQ_LOCKED_FIELDS));
        $query->blacklist_columns(explode(',', $partition_data['partition_column']));
        # Order by
        if (isset($_CGET['order'])) {
            $order_sort = isset($_CGET['ordersort']) ? explode(',', $_CGET['ordersort']) : [];
            $query->add_order_by(explode(',', $_CGET['order']), $order_sort);
        }
        # Adding our update columns
        $query->add_update_columns(PostParser::decode());
        # Where columns
        $query->add_where_columns($_CGET);
    }