<?php

function db_init() {
  global $var;
  $link = @mysql_pconnect($var->db['server'], $var->db['user'], $var->db['password']);
  $var->db_link = $link;
  if(!$link) {
    return false;
  } else {
    mysql_select_db($var->db['database']);
  }
}

function db_insert($sql) {
  global $var;
  if(mysql_query($sql)) {
    return mysql_insert_id();
  } else {
    return false;
  }
}

function db_update($sql) {
  global $var;
  return mysql_query($sql);
}

function db_fetch($sql, $list = false, $all = false) {
  global $var;
  $limit = isset($var->items_per_page)?$var->items_per_page:10;
  $result = array();
  $tmp = $var->tmp;
  if(isset($tmp[$sql])) {
    unset($result);
    return $tmp[$sql];
  } else {
    //echo(str_replace(substr($sql, 0, strpos($sql, "from")), "select count(*) ", $sql));
    if($list && $all == false && strpos(strtolower($sql), "limit") === false) {
      //echo str_replace(substr($sql, 0, strpos($sql, "from")), "select count(*) ", $sql); _x();
      $tmp_qr = @mysql_query(str_replace(substr($sql, 0, strpos($sql, "from")), "select count(*) ", $sql));
      $count = @mysql_fetch_row($tmp_qr);
      if($count === false) {
        $var->row_count = array( $var->request_uri => 0);
      } else {
        $var->row_count = array( $var->request_uri => $count[0]);
      }
      if(isset($var->get['page'])) {
        $sql = $sql." limit ".(($var->get['page']-1)*$limit).", ".$limit;
      } else {
        $sql = $sql." limit 0, ".$limit;
      }
    }
    
    if(isset($_GET['test']))
        fprint($sql, '$sql');
    
    $qr = mysql_query($sql);
    if($qr !== false) {
      if(mysql_num_rows($qr) > 1) {
        while($row = mysql_fetch_assoc($qr)) {
          $result[] = $row;
        }
      } else {
        if(mysql_num_rows($qr) == 1) {
          if($list) {
            $result[] = mysql_fetch_assoc($qr);
          } elseif(mysql_num_fields($qr) ==  1) {
            $r = mysql_fetch_row($qr);
            $result = $r[0];
            unset($r);
          } else {
            $result = mysql_fetch_assoc($qr);
          }
        } else {
          $result = mysql_fetch_assoc($qr);
        }
      }
      $tmp[$sql] = $result;
    } else {
      $result = false;
    }
    $var->tmp = $tmp;
    unset($tmp);
    return $result;
  }
}

function db_delete($sql) {
  global $var;
  return mysql_query($sql);
}
