--- /dev/null
+<?php
+// $Id: ACSDB.class.php,v 1.5 2007/03/27 02:12:31 w-ota Exp $
+
+require_once(ACS_LIB_MESSAGE_DIR . 'ACSMsg.class.php');
+
+/*
+ * DB¥¢¥¯¥»¥¹¥¯¥é¥¹
+ */
+class ACSDB {
+
+ /**
+ * ¥Ç¥Ð¥Ã¥°ÍÑ: ¼Â¹Ô¤Ë¼ºÇÔ¤·¤¿SQLʸ¤È¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤òɽ¼¨¤¹¤ë
+ */
+ static function _print_debug_msg($sql, $msg = '') {
+ if (ACS_DEBUG_MODE == 1) {
+ echo "<span style=\"background-color:#ffffcc\"><code>$sql</code></span><br>\n";
+ echo "<span style=\"background-color:#ffcccc\"><code>" . pg_last_error() ."</code></span><br>\n";
+ if ($msg) {
+ echo "<span style=\"background-color:#ccccff\"><code>[msg: $msg]</code></span><br>\n";
+ }
+ }
+ }
+
+
+ /**
+ * (ÆâÉô´Ø¿ô) SQLʸ¤ò¼Â¹Ô¤¹¤ë
+ *
+ * @param SQLʸ
+ * @return ¥¯¥¨¥ê·ë²Ì¥ê¥½¡¼¥¹
+ */
+ static function _query($sql) {
+ static $db;
+
+ // DBÀܳ
+ if (!$db) {
+ $db = DB::Connect(ACS_DSN);
+ $db->setFetchMode(DB_FETCHMODE_ASSOC);
+ }
+
+ // Ä̾ï¥Æ¡¼¥Ö¥ë̾¤ò¸À¸ì»ÅÍͥơ¼¥Ö¥ë̾¤ËÊÑ´¹
+ $lang = ACSMsg::get_lang(FALSE);
+ if ($lang != ACS_DEFAULT_LANG && $lang != "") {
+ $tables_array = ACSMsg::get_lang_tables_array();
+ foreach ($tables_array as $table) {
+ $sql = mb_ereg_replace(
+ "([, \t\n\(\)\*\+\-\/]+)".
+ "(".$table.")".
+ "([., \t\n\(\)\*\+\-\/]+|$)",
+ "\\1".$table."_".$lang."\\3", $sql);
+ }
+ }
+
+ if (ACS_DEBUG_MODE && isset($_GET['timer'])) {
+ $timelimit = $_GET['timer'];
+ if (empty($timelimit)) {
+ $timelimit = 0; // ¥Ç¥Õ¥©¥ë¥È0ÉÃ
+ }
+
+ $time_array = explode(' ', microtime());
+ $start_time = substr(($time_array[1] . substr($time_array[0], 1)), 0, 14);
+
+ $res = $db->query($sql);
+
+ $time_array = explode(' ', microtime());
+ $end_time = substr(($time_array[1] . substr($time_array[0], 1)), 0, 14);
+
+ $diff_time = substr($end_time - $start_time, 0, 5);
+ if (floatval($diff_time) >= $timelimit) {
+ _debug($sql);
+ echo "<code>$start_time -> $end_time (<font color=red>$diff_time</font> sec)</code>";
+ }
+
+ } else {
+ $res = $db->query($sql);
+ }
+
+ return $res;
+ }
+
+
+ /**
+ * (ÆâÉô´Ø¿ô) SQLʸ¤ò¼Â¹Ô¤·¤Æ¥¯¥¨¥ê·ë²Ì¥ê¥½¡¼¥¹¤ò¼èÆÀ¤¹¤ë
+ *
+ * @param SQLʸ
+ * @return ¥¯¥¨¥ê·ë²Ì¥ê¥½¡¼¥¹
+ */
+ static function _get_res($sql) {
+ $res = ACSDB::_query($sql);
+ if (DB::isError($res)) {
+ ACSDB::_print_debug_msg($sql);
+ }
+ return $res;
+ }
+
+ /**
+ * (ÆâÉô´Ø¿ô) SQLʸ¤ò¼Â¹Ô¤·¤Æ¥ì¥³¡¼¥ÉÁ´ÂΤò¼èÆÀ¤¹¤ë
+ *
+ * @param SQLʸ
+ * @return Ï¢ÁÛÇÛÎó¤ÎÇÛÎó
+ */
+ static function _get_row_array($sql) {
+ $row_array = array();
+ $res = ACSDB::_get_res($sql);
+ if (!DB::isError($res)) {
+ while ($row = $res->fetchRow()) {
+ array_push($row_array, $row);
+ }
+ }
+ return $row_array;
+ }
+
+ /**
+ * (ÆâÉô´Ø¿ô) SQLʸ¤ò¼Â¹Ô¤·¤Æ1¥ì¥³¡¼¥É¤Î¤ß¤òÏ¢ÁÛÇÛÎó¤Ç¼èÆÀ¤¹¤ë
+ *
+ * @param SQLʸ
+ * @return Ï¢ÁÛÇÛÎó
+ */
+ static function _get_row($sql) {
+ $res = ACSDB::_get_res($sql);
+ if (!DB::isError($res)) {
+ $row = $res->fetchRow();
+ if (($num_rows = $res->numRows()) > 1) {
+ // ¥¯¥¨¥ê·ë²Ì¤¬Ê£¿ô¥ì¥³¡¼¥É¤¢¤ë¾ì¹ç¤Ï·Ù¹ð¥á¥Ã¥»¡¼¥¸¤òɽ¼¨¤¹¤ë
+ ACSDB::_print_debug_msg($sql, "Warning: rows = $num_rows");
+ }
+ }
+ return $row;
+ }
+
+ /**
+ * (ÆâÉô´Ø¿ô) SQLʸ¤ò¼Â¹Ô¤·¤Æ1¥ì¥³¡¼¥É1¥«¥é¥à¤ò¼èÆÀ¤¹¤ë
+ *
+ * @param SQLʸ
+ * @return ¥¹¥«¥é¡¼
+ */
+ static function _get_value($sql) {
+ $res = ACSDB::_get_res($sql);
+ if (!DB::isError($res)) {
+ $row = $res->fetchRow(DB_FETCHMODE_ORDERED); // ¿ôÃͤΥ¤¥ó¥Ç¥Ã¥¯¥¹¤Ç¥«¥é¥à¤Ë¥¢¥¯¥»¥¹¤Ç¤¤ë¤è¤¦¤ËÊѹ¹
+ if (($num_rows = $res->numRows()) > 1 || ($num_cols = $res->numCols()) > 1) {
+ // ¥¯¥¨¥ê·ë²Ì¥ê¥½¡¼¥¹¤¬Ê£¿ô¥ì¥³¡¼¥É¤Þ¤¿¤ÏÊ£¿ô¥«¥é¥à¤¢¤ë¾ì¹ç¤Ï·Ù¹ð¥á¥Ã¥»¡¼¥¸¤òɽ¼¨¤¹¤ë
+ ACSDB::_print_debug_msg($sql, "Warning: rows = $num_rows, cols = $num_cols");
+ }
+ }
+ return $row[0];
+ }
+
+ /**
+ * (ÆâÉô´Ø¿ô) Áàºî·ÏSQLʸ¤ò¼Â¹Ô¤¹¤ë (INSERT, UPDATE)
+ *
+ * @param DBÀܳ¥ê¥½¡¼¥¹
+ * @param SQLʸ
+ * @return À®¸ù(true) / ¼ºÇÔ(false)
+ */
+ static function _do_query($sql) {
+ $res = ACSDB::_query($sql);
+ if (DB::isError($res)) {
+ ACSDB::_print_debug_msg($sql);
+ $ret = false;
+ } else {
+ $ret = true;
+ }
+ return $ret;
+ }
+
+
+ /**
+ * ¼¡¤Î¥·¡¼¥±¥ó¥¹ÈÖ¹æ¤ò¼èÆÀ¤¹¤ë
+ *
+ * @param ¥·¡¼¥±¥ó¥¹Ì¾
+ * @return ¥·¡¼¥±¥ó¥¹ÈÖ¹æ
+ */
+ static function get_next_seq($seq_name) {
+ $sql = "SELECT nextval('$seq_name')";
+ $seq = ACSDB::_get_value($sql);
+ return $seq;
+ }
+
+ /**
+ * ¥Þ¥¹¥¿¥Ç¡¼¥¿¤òÏ¢ÁÛÇÛÎó¤È¤·¤Æ¼èÆÀ¤¹¤ë
+ *
+ * @param ¥Þ¥¹¥¿¥Æ¡¼¥Ö¥ë̾¤Îprefix (***_master)
+ * @return ¥Þ¥¹¥¿¥Ç¡¼¥¿¤ÎÏ¢ÁÛÇÛÎó
+ */
+ static function get_master_array($prefix, $where="") {
+ $ret_array = array();
+
+ $master_table = $prefix . '_master';
+ $code = $prefix . '_code';
+ $name = $prefix . '_name';
+
+ $sql = "SELECT *";
+ $sql .= " FROM $master_table";
+
+ if($where != ""){
+ $sql .= " WHERE " . $where;
+ }
+
+ $sql .= " ORDER BY $code ASC";
+
+ $res = ACSDB::_get_res($sql);
+ while ($row = $res->fetchRow()) {
+ $ret_array[$row[$code]] = $row[$name];
+ }
+
+ ksort($ret_array);
+ return $ret_array;
+ }
+}
+
+?>