<?php

/**
 * Backtick
 * Applies backticks to a string or array, with support for periods in names.
 * @author Sam Barrow
 * @param mixed $columns Column(s)
 * @return mixed Column(s) with backticks
**/

function db_bt($columns) {
    if (
is_array($columns)) {
        foreach (
$columns as $key => $column) {
            
$columns[$key] = db_bt($column);
        }
        return 
$columns;
    }
    else {
        if (
substr_count($columns'.')) {
            
$exploded explode('.'$columns);
            foreach (
$exploded as $key => $value) {
                
$exploded[$key] = db_bt($value);
            }
            return 
implode('.'$exploded);
        }
        else {
            return 
'`' $columns '`';
        }
    }
}

/**
 * Escape
 * Escapes a value or array of values.
 * @author Sam Barrow
 * @param mixed $values Value(s)
 * @param bool $quotes Use quotes
 * @return mixed Value(s)
**/

function db_escape($values$quotes true) {
    global 
$cfg;
    if (
is_array($values)) {
        foreach (
$values as $key => $value) {
            
$values[$key] = db_escape($value$quotes);
        }
    }
    else if (
$values === null) {
        
$values 'NULL';
    }
    else if (
is_bool($values)) {
        
$values $values 0;
    }
    else if (!
is_numeric($values)) {
        
$values mysql_real_escape_string($values);
        if (
$quotes) {
            
$values '"' $values '"';
        }
    }
    return 
$values;
}