static function lfExecuteSQL($filepath, $dsn, $disp_err = true)
 {
     $result = true;
     if (!file_exists($filepath)) {
         AddProduct::lfTriggerError('SQLファイル[' . $filepath . ']が見つかりません');
         $result = false;
     } else {
         if ($fp = fopen($filepath, "r")) {
             $sql = fread($fp, filesize($filepath));
             fclose($fp);
         }
         // Debugモード指定
         $options['debug'] = PEAR_DB_DEBUG;
         $objDB = MDB2::connect($dsn, $options);
         // 接続エラー
         if (!PEAR::isError($objDB)) {
             $sql_split = split(";", $sql);
             foreach ($sql_split as $key => $val) {
                 SC_Utils::sfFlush();
                 if (trim($val) != "") {
                     $ret = $objDB->query($val);
                     if (PEAR::isError($ret) && $disp_err) {
                         AddProduct::lfTriggerError("DB query Error message = " . $ret->message);
                         $result = false;
                         break;
                     }
                 }
             }
         } else {
             AddProduct::lfTriggerError("DB connect Error message = " . $objDB->message);
             $result = false;
         }
     }
     return $result;
 }
 public function testSfFlush_文字列を指定した場合_フラッシュされる()
 {
     $this->expectOutputString('');
     echo 'Hello, World!!';
     SC_Utils::sfFlush('Hello');
 }
/**
 * シーケンスを生成する.
 *
 * @param array $arrSequences シーケンスのテーブル名, カラム名の配列
 * @param array $arrDsn データソース名の配列
 * @return array エラーが発生した場合はエラーメッセージの配列
 */
function lfCreateSequence($arrSequences, $arrDsn)
{
    $arrErr = array();
    // Debugモード指定
    $options['debug'] = PEAR_DB_DEBUG;
    // 接続エラー
    if (!PEAR::isError($objDB)) {
        $objDB = MDB2::connect($arrDsn, $options);
        $objManager =& $objDB->loadModule('Manager');
        $exists = $objManager->listSequences();
        $objDB->disconnect();
        foreach ($arrSequences as $seq) {
            SC_Utils::sfFlush(true);
            $objDB = MDB2::connect($arrDsn, $options);
            $objManager =& $objDB->loadModule('Manager');
            $res = $objDB->query('SELECT max(' . $seq[1] . ') FROM ' . $seq[0]);
            if (PEAR::isError($res)) {
                $arrErr['all'] = '>> ' . $res->userinfo . '<br />';
                GC_Utils_Ex::gfPrintLog($res->userinfo, INSTALL_LOG);
                return $arrErr;
            }
            $max = $res->fetchOne();
            $seq_name = $seq[0] . '_' . $seq[1];
            $result = $objManager->createSequence($seq_name, $max + 1);
            if (PEAR::isError($result)) {
                $arrErr['all'] = '>> ' . $result->message . '<br />';
                GC_Utils_Ex::gfPrintLog($result->userinfo, INSTALL_LOG);
            } else {
                GC_Utils_Ex::gfPrintLog('OK:' . $seq_name, INSTALL_LOG);
            }
            $objDB->disconnect();
        }
    } else {
        $arrErr['all'] = '>> ' . $objDB->message;
        GC_Utils_Ex::gfPrintLog($objDB->userinfo, INSTALL_LOG);
    }
    return $arrErr;
}
Beispiel #4
0
function lfExecuteSQL($filepath, $dsn, $disp_err = true)
{
    $arrErr = array();
    if (!file_exists($filepath)) {
        $arrErr['all'] = ">> スクリプトファイルが見つかりません";
    } else {
        if ($fp = fopen($filepath, "r")) {
            $sql = fread($fp, filesize($filepath));
            fclose($fp);
        }
        // Debugモード指定
        $options['debug'] = PEAR_DB_DEBUG;
        $objDB = DB::connect($dsn, $options);
        // 接続エラー
        if (!PEAR::isError($objDB)) {
            $sql_split = split(";", $sql);
            foreach ($sql_split as $key => $val) {
                SC_Utils::sfFlush();
                if (trim($val) != "") {
                    $ret = $objDB->query($val);
                    if (PEAR::isError($ret) && $disp_err) {
                        $arrErr['all'] = ">> " . $ret->message . "<br>";
                        // エラー文を取得する
                        ereg("\\[(.*)\\]", $ret->userinfo, $arrKey);
                        $arrErr['all'] .= $arrKey[0] . "<br>";
                        $objPage->update_mess .= ">> テーブル構成の変更に失敗しました。<br>";
                        GC_Utils_Ex::gfPrintLog($ret->userinfo, INSTALL_LOG);
                    } else {
                        GC_Utils_Ex::gfPrintLog("OK:" . $val, INSTALL_LOG);
                    }
                }
            }
        } else {
            $arrErr['all'] = ">> " . $objDB->message;
            GC_Utils_Ex::gfPrintLog($objDB->userinfo, INSTALL_LOG);
        }
    }
    return $arrErr;
}
 /**
  * ブラウザに強制的に送出する
  *
  * @param  boolean|string $output 半角スペース256文字+改行を出力するか。または、送信する文字列を指定。
  * @param int $sleep
  * @return void
  */
 public static function sfFlush($output = false, $sleep = 0)
 {
     static $ignore_user_abort = false;
     if (!$ignore_user_abort) {
         ignore_user_abort(true);
         $ignore_user_abort = true;
     }
     if (connection_status() != CONNECTION_NORMAL) {
         $customer = $_SESSION["customer"];
         trigger_error("connection aborted agent (" . $_SERVER["HTTP_USER_AGENT"] . ") customer_id=" . $customer["customer_id"]);
         break;
     }
     parent::sfFlush($output, $sleep);
 }