Beispiel #1
0
         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);
 }
 # Updating our partition
 $query->set_table($partition_data['table_name'], false, false, $partition_data['database']);
 $update_query = $query->get_update_query($limit, false, false);
 mysqli_sub_query($partition_dblink, $update_query);
 # Getting our updated info
 $info = mysqli_info_array($partition_dblink);
 $limit -= (int) $info['Rows matched'];
 # Tracking our internal changed numbers
 $content->affected_rows += (int) $info['Changed'];
 $content->matched_rows += (int) $info['Rows matched'];
 # We are done updating
 if ($limit !== false && $limit <= 0) {
     break;
 }
     # 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 fields and the partition columns
     $query->blacklist_columns(explode(',', NQ_LOCKED_FIELDS));
     $query->blacklist_columns(explode(',', $partition->data['partition_column']));
 }
 # Adding our update columns
 $query->add_update_columns($row);
 # Adding our global session values
 if (isset($G_TOKEN_SESSION_DATA->{NQ_SESSION_GROUP}->global->{$G_TABLE_DETAILS['alias']})) {
     $query->add_where_columns($G_TOKEN_SESSION_DATA->{NQ_SESSION_GROUP}->global->{$G_TABLE_DETAILS['alias']});
 }
 # Adding our specific session values
 if (isset($G_TOKEN_SESSION_DATA->{NQ_SESSION_GROUP}->update->{$G_TABLE_DETAILS['alias']})) {
     $query->add_where_columns($G_TOKEN_SESSION_DATA->{NQ_SESSION_GROUP}->update->{$G_TABLE_DETAILS['alias']});
 }
 # Where columns
 $query->add_where_columns(['id' => $row->id]);
 # Updating the partition
 $query->set_table($partition->data['table_name'], false, false, $partition->database);
 $update_query = $query->get_update_query(1);
 mysqli_sub_query($partition->dblink, $update_query);
 # Updating the response data
 $info = mysqli_info_array($partition->dblink);
 $content->affected_rows += (int) $info['Changed'];
 $content->matched_rows += (int) $info['Rows matched'];
Beispiel #3
0
         $whitelist = get_whitelist_columns($G_CONTROLLER_DBLINK, $G_APP_DATA['id'], $table_settings['id'], $G_TOKEN_DATA['id']);
         if (NQ_WHITELIST_EXISTENTIAL ? count($whitelist) > 0 : true) {
             $query->whitelist_columns($whitelist);
         }
     }
     # Excluding from the table
     $query->blacklist_columns($G_COLUMNS_EXCLUDED);
     # Adding our select columns
     $select_columns = $G_COLUMNS_SELECTED;
     if ($select_columns != '*' && !in_array($attached['column'], $select_columns)) {
         $select_columns[] = $attached['column'];
         $unset_link_id = true;
     }
     $query->add_select_columns($select_columns, false, $table_settings['alias'], true);
     # Where columns
     $query->add_where_columns([$attached['column'] => '[]' . implode(',', $column_values)], false, $table_settings['alias']);
     # Order by
     if ($G_ORDER_BY !== false) {
         $query->add_order_by($G_ORDER_BY, $G_ORDER_DESC, false, $table_settings['alias']);
     }
 }
 # Getting our results
 $query->set_table($partition_data['table_name'], false, false, $partition_data['database']);
 $select_query = $query->get_select_query($G_APP_DATA['db_attach_multi_limit'], false, COLUMNS_SORTED);
 $select_result = mysqli_multi_result_query($dblink, $select_query);
 # Saving the indices before processing (optimization)
 $acol = $attached['column'];
 $aname = $attached['name'];
 # Processing our results
 while ($attached_data = mysqli_fetch_assoc($select_result)) {
     # Saving the indices and column name
Beispiel #4
0
 $from_partition_data['dblink'] = mysqli_shared_connect($from_partition_data['host'], $from_partition_data['username'], $from_partition_data['password'], $G_SHARED_DBLINKS);
 # We need a new query class on first partition
 if ($from_query == false) {
     # Creating our new parser
     $from_query = new MySQLParser($from_partition_data['dblink'], $from_partition_data['table_name'], $from_partition_data['database']);
     # Checking for whitelisting
     if (NQ_WHITELIST_COLUMNS) {
         $whitelist = get_whitelist_columns($G_CONTROLLER_DBLINK, $G_APP_DATA['id'], $G_FROM_TABLE_SETTINGS['id'], $G_TOKEN_PRIVILEGE_DATA['id']);
         if (NQ_WHITELIST_EXISTENTIAL ? count($whitelist) > 0 : true) {
             $from_query->whitelist_columns($whitelist);
         }
     }
     # Adding our select columns
     $from_query->add_select_columns($G_FROM_TABLE_COLUMNS);
     # Where columns
     $from_query->add_where_columns($_CGET);
     # Order by
     if (isset($_CGET['order'])) {
         $order_sort = isset($_CGET['ordersort']) ? explode(',', $_CGET['ordersort']) : [];
         $from_query->add_order_by(explode(',', $_CGET['order']), $order_sort);
     }
     # Group by
     if (isset($_CGET['group'])) {
         $from_query->add_group_by(explode(',', $_CGET['group']));
     }
     # Where columns
     $from_query->add_where_columns($_CGET);
     # Overwriting with our global session where values
     if (isset($G_TOKEN_SESSION_DATA->{NQ_SESSION_GROUP}->global->{$G_FROM_TABLE_SETTINGS['alias']})) {
         $from_query->add_where_columns($G_TOKEN_SESSION_DATA->{NQ_SESSION_GROUP}->global->{$G_FROM_TABLE_SETTINGS['alias']});
     }
Beispiel #5
0
$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'], 'deleted_rows' => 0];
    # First partition, new query object
    if ($query === false) {
        # Creating our new parser
        $query = new MySQLParser($partition_dblink, $partition_data['table_name'], $partition_data['database']);
        # Order by
        if (isset($_JPOST->order)) {
            $order_sort = isset($_JPOST->order_sort) ? explode(',', $_JPOST->order_sort) : [];
            $query->add_order_by(explode(',', $_JPOST->order), $order_sort);
        }
        # Where columns
        $query->add_where_columns($_JPOST);
    }
    # Deleting from the partition
    $query->set_table($partition_data['table_name'], false, false, $partition_data['database']);
    $delete_query = $query->get_delete_query($limit, false);
    mysqli_sub_query($partition_dblink, $delete_query);
    # Getting our deleted info
    $affected = mysqli_affected_rows($partition_dblink);
    $limit -= (int) $affected;
    # Tracking our internal changed numbers
    $content->affected_rows += $affected;
    $deleted_count += $affected;
    $partitions_affected->{$partition_data['id']}->deleted_rows += $affected;
    # We are done updating
    if ($limit !== false && $limit <= 0) {
        break;