OSDN Git Service

add ACS webapp, sql, htdocs
[acs/acs.git] / webapp / lib / class / ACSDB.class.php
diff --git a/webapp/lib/class/ACSDB.class.php b/webapp/lib/class/ACSDB.class.php
new file mode 100644 (file)
index 0000000..3cf342b
--- /dev/null
@@ -0,0 +1,211 @@
+<?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 -&gt; $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;
+       }
+}
+
+?>