예제 #1
0
 /**
  * 登録オペレータを設定する内部処理です。
  */
 protected function updateOperatorInfo()
 {
     try {
         if (class_exists("VizualizerAdmin")) {
             $operator = Vizualizer_Session::get(VizualizerAdmin::SESSION_KEY);
             if (is_array($operator) && array_key_exists("operator_id", $operator) && $operator["operator_id"] > 0) {
                 if ($this->operator_id > 0) {
                     $this->create_operator_id = $this->update_operator_id = $operator["operator_id"];
                 } else {
                     $this->operator_id = $this->create_operator_id = $this->update_operator_id = $operator["operator_id"];
                 }
             }
         }
     } catch (Exception $e) {
         // Adminパッケージを使っていない場合は、登録者/更新者IDの設定をスキップする。
     }
 }
예제 #2
0
 /**
  * パラメータオブジェクトを初期化する。
  */
 public function __construct()
 {
     $this->index = 0;
     // HTTPのパラメータを統合する。(POST優先)
     $this->parameters = Vizualizer_Session::get(Vizualizer::INPUT_KEY);
     if (!is_array($this->parameters)) {
         $this->parameters = array();
     }
     if (Vizualizer_Parameter::$enableRefresh) {
         if (isset($this->parameters[TEMPLATE_DIRECTORY])) {
             $this->parameters = array(TEMPLATE_DIRECTORY => $this->parameters[TEMPLATE_DIRECTORY]);
         } else {
             $this->parameters = array(TEMPLATE_DIRECTORY => array());
         }
     } else {
         $this->parameters[TEMPLATE_DIRECTORY] = array();
     }
     if (is_array($_GET)) {
         foreach ($_GET as $name => $value) {
             if (is_array($value)) {
                 if (!array_key_exists($name, $this->parameters[TEMPLATE_DIRECTORY]) || !is_array($this->parameters[TEMPLATE_DIRECTORY][$name])) {
                     $this->parameters[TEMPLATE_DIRECTORY][$name] = array();
                 }
                 foreach ($value as $name2 => $value2) {
                     $this->parameters[TEMPLATE_DIRECTORY][$name][$name2] = $value2;
                 }
             } else {
                 $this->parameters[TEMPLATE_DIRECTORY][$name] = $value;
             }
         }
     }
     if (is_array($_POST)) {
         foreach ($_POST as $name => $value) {
             if (is_array($value)) {
                 if (!array_key_exists($name, $this->parameters[TEMPLATE_DIRECTORY]) || !is_array($this->parameters[TEMPLATE_DIRECTORY][$name])) {
                     $this->parameters[TEMPLATE_DIRECTORY][$name] = array();
                 }
                 foreach ($value as $name2 => $value2) {
                     $this->parameters[TEMPLATE_DIRECTORY][$name][$name2] = $value2;
                 }
             } else {
                 $this->parameters[TEMPLATE_DIRECTORY][$name] = $value;
             }
         }
     }
     // input-imageによって渡されたパラメータを展開
     $inputImageKeys = array();
     foreach ($this->parameters[TEMPLATE_DIRECTORY] as $name => $value) {
         if (substr_compare($name, "_x", -2) === 0) {
             $inputImageKeys[substr($name, 0, -2)]["x"] = $value;
         } elseif (substr_compare($name, "_y", -2) === 0) {
             $inputImageKeys[substr($name, 0, -2)]["y"] = $value;
         }
     }
     foreach ($inputImageKeys as $key => $inputImage) {
         if (isset($inputImage["x"]) && isset($inputImage["y"])) {
             $this->parameters[$key] = $inputImage["x"] . "," . $inputImage["y"];
             unset($this->parameters[TEMPLATE_DIRECTORY][$key . "_x"]);
             unset($this->parameters[TEMPLATE_DIRECTORY][$key . "_y"]);
         }
     }
     $this->parameters[TEMPLATE_DIRECTORY] = $this->normalize($this->parameters[TEMPLATE_DIRECTORY]);
     Vizualizer_Session::set(Vizualizer::INPUT_KEY, $this->parameters);
     $this->keys = array_keys($this->parameters[TEMPLATE_DIRECTORY]);
 }
예제 #3
0
 /**
  * メッセージログを出力する。
  *
  * @param string $prefix ログの種別
  * @param string $message エラーメッセージ
  * @param Exception $exception エラーの原因となった例外オブジェクト
  */
 private static function writeMessage($prefix, $message, $exception = null)
 {
     try {
         if (Vizualizer_Configure::get("site_code") !== null && Vizualizer_Configure::get("site_code") !== "") {
             $siteCode = self::$logFilePrefix . Vizualizer_Configure::get("site_code");
         } else {
             $siteCode = self::$logFilePrefix . "default";
         }
         // ログディレクトリが無い場合は自動的に作成
         $logHome = Vizualizer_Configure::get("log_root") . DIRECTORY_SEPARATOR;
         if (!is_dir($logHome)) {
             mkdir($logHome);
             @chmod($logHome, 0777);
         }
         if (is_dir($logHome) && is_writable($logHome)) {
             // 現在のログファイルが10MB以上の場合ローテーションする。
             if (file_exists($logHome . $siteCode . ".log") && filesize($logHome . $siteCode . ".log") > 1024 * 1024 * 10) {
                 // 現行のログファイルをoldに移動させる。
                 if (($fp = fopen($logHome . $siteCode . ".log", "r")) !== FALSE) {
                     if (flock($fp, LOCK_EX | LOCK_NB)) {
                         @rename($logHome . $siteCode . ".log", $logHome . $siteCode . "_old.log");
                         flock($fp, LOCK_UN);
                         fclose($fp);
                     }
                     if (file_exists($logHome . $siteCode . "_old.log")) {
                         $logHistorys = Vizualizer_Configure::get("max_logs");
                         for ($index = $logHistorys - 1; $index > 0; $index--) {
                             if (file_exists($logHome . $siteCode . "_" . $index . ".log")) {
                                 @rename($logHome . $siteCode . "_" . $index . ".log", $logHome . $siteCode . "_" . ($index + 1) . ".log");
                             }
                         }
                         @rename($logHome . $siteCode . "_old.log", $logHome . $siteCode . "_1.log");
                     }
                 }
             }
             // ログファイルに記載
             $logFile = $logHome . $siteCode . ".log";
             if (($fp = fopen($logFile, "a+")) !== FALSE) {
                 if (class_exists("VizualizerAdmin")) {
                     $operator = Vizualizer_Session::get(VizualizerAdmin::SESSION_KEY);
                     if (is_array($operator) && array_key_exists("operator_id", $operator) && $operator["operator_id"] > 0) {
                         $prefix .= "][" . $operator["login_id"];
                     }
                 }
                 fwrite($fp, "[" . $_SERVER["SERVER_NAME"] . "][" . Vizualizer_Data_Calendar::now() . "][" . $prefix . "]" . $message . "\r\n");
                 if (self::$logOutputStandard) {
                     echo "[" . $_SERVER["SERVER_NAME"] . "][" . Vizualizer_Data_Calendar::now() . "][" . $prefix . "]" . $message . "\r\n";
                 }
                 if ($exception != null) {
                     fwrite($fp, "[" . $_SERVER["SERVER_NAME"] . "][" . Vizualizer_Data_Calendar::now() . "][" . $prefix . "]" . $exception->getMessage() . "\r\n");
                     if (self::$logOutputStandard) {
                         echo "[" . $_SERVER["SERVER_NAME"] . "][" . Vizualizer_Data_Calendar::now() . "][" . $prefix . "]" . $exception->getMessage() . "\r\n";
                     }
                     fwrite($fp, "[" . $_SERVER["SERVER_NAME"] . "][" . Vizualizer_Data_Calendar::now() . "][" . $prefix . "]" . $exception->getTraceAsString());
                     if (self::$logOutputStandard) {
                         echo "[" . $_SERVER["SERVER_NAME"] . "][" . Vizualizer_Data_Calendar::now() . "][" . $prefix . "]" . $exception->getTraceAsString();
                     }
                 }
                 fclose($fp);
                 @chmod($logFile, 0666);
             }
         }
     } catch (Exception $e) {
         // エラーログ出力に失敗した場合は無限ネストの可能性があるため、例外を無効にする。
     }
 }
예제 #4
0
 /**
  * 登録日時や登録オペレータなどを設定する内部処理です。
  */
 protected function updateRegisterInfo()
 {
     // データ作成日/更新日は自動的に設定する。
     try {
         if (!$this->ignoreOperator && class_exists("VizualizerAdmin")) {
             $operator = Vizualizer_Session::get(VizualizerAdmin::SESSION_KEY);
             if (is_array($operator) && array_key_exists("operator_id", $operator) && $operator["operator_id"] > 0) {
                 if ($this->operator_id > 0) {
                     $this->create_operator_id = $this->update_operator_id = $operator["operator_id"];
                 } else {
                     $this->operator_id = $this->create_operator_id = $this->update_operator_id = $operator["operator_id"];
                 }
             }
         }
     } catch (Exception $e) {
         // Adminパッケージを使っていない場合は、登録者/更新者IDの設定をスキップする。
     }
     $this->create_time = $this->update_time = Vizualizer_Data_Calendar::now()->date("Y-m-d H:i:s");
 }