/** * 登録オペレータを設定する内部処理です。 */ 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の設定をスキップする。 } }
/** * パラメータオブジェクトを初期化する。 */ 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]); }
/** * メッセージログを出力する。 * * @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) { // エラーログ出力に失敗した場合は無限ネストの可能性があるため、例外を無効にする。 } }
/** * 登録日時や登録オペレータなどを設定する内部処理です。 */ 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"); }