/** * インスタンスの取得。 * * インスタンスが既に生成済みの場合は既存インスタンスを返し、 * 未生成であれば新たに生成したものを返す。 * * @return mixed 成功時はインスタンス、失敗時はfalseを返す */ public static function getInstance() { if (null === self::$_instance) { self::$_instance = new self(); } return self::$_instance; }
/** * コンストラクタ */ public function __construct() { // 設定データのインスタンスを取得 $this->_configOBJ = ComConfig::getInstance(); $requestOBJ = ComRequest::getInstance(); // ユーザーエージェント情報をセット $this->_httpUserAgent = $requestOBJ->getParameter("HTTP_USER_AGENT", "", "server"); }
/** * コンストラクタ */ public function __construct() { $requestOBJ = ComRequest::getInstance(); // ユーザーエージェント情報をセット $this->_httpUserAgent = $requestOBJ->getParameter("HTTP_USER_AGENT", "", "server"); // キャリア名をにセット $this->setCarrier($this->_httpUserAgent); // IPアドレスをセット $this->_ipAddress = $requestOBJ->getParameter("REMOTE_ADDR", "", "server"); // キャリア別クラス指定 $className = __CLASS__ . $this->_carrier; $classFile = dirname(__FILE__) . "/" . $className . ".php"; if (!$this->_carrier || !file_exists($classFile)) { exit($this->_carrier . "用クラスファイルが存在しません!"); } // キャリア別クラスインスタンスを生成 $this->_carrierOBJ = new $className($this->_httpUserAgent); }
$sessionSetOption = array("save_path" => "/tmp/" . $_config["define"]["PROJECT_NAME"] . "/www", "name" => $sesName, "gc_maxlifetime" => 60 * 60 * 24 * 7); } if (!ComSession::isStarted()) { ComSession::setOptions($sessionSetOption); if ($sessionId) { ComSession::setId($sessionId); } ComSession::start(); } // アクセスページ名 $accessPageName = $controllerOBJ->convertActionName($requestOBJ->getActionName()); // common用エラーセッション $ComErrSessOBJ = new ComSessionNamespace("common_err"); // セッションにセットします $userSessOBJ = new ComSessionNamespace("user"); $getRequestOBJ = new ComRequest(); $affiliateParam = $getRequestOBJ->getAllParameter("", "get"); $advCd = $affiliateParam["advcd"]; // 検索アドコード取得 if (preg_match("/^http:\\/\\/www.google.co.jp\\/search\\//", $server["HTTP_REFERER"])) { $advCd = $_config["define"]["GOOGLE_AD_CD_PC"]; } else { if (preg_match("/^http:\\/\\/search.yahoo.co.jp\\/search/", $server["HTTP_REFERER"])) { $advCd = $_config["define"]["YAHOO_AD_CD_PC"]; } else { if (preg_match("/^http:\\/\\/search.yahoo.co.jp\\/bin\\/search/", $server["HTTP_REFERER"])) { $advCd = $_config["define"]["YAHOO2_AD_CD_PC"]; } else { if (preg_match("/^http:\\/\\/search.msn.co.jp\\/results.aspx/", $server["HTTP_REFERER"])) { $advCd = $_config["define"]["MSN_AD_CD_PC"]; } else {
/** * コンストラクタ * * @param string $httpUserAgent $_SERVER["HTTP_USER_AGENT"]の値 */ public function __construct($httpUserAgent) { $this->_httpUserAgent = $httpUserAgent; $this->_requestOBJ = ComRequest::getInstance(); }
<?php /** * common.php * * Copyright (c) 2009 Fraise, Inc. * All rights reserved. */ /** * Web側/管理側共通処理。 * * @copyright 2009 Fraise, Inc. * @author mitsuhiro nakamura */ // プロジェクトディレクトリの絶対パス define("D_BASE_DIR", dirname(dirname(__FILE__))); // include pathを設定 ini_set("include_path", D_BASE_DIR . "/class"); // autoload関数定義ファイル require_once D_BASE_DIR . "/common/__autoload.php"; $requestOBJ = ComRequest::getInstance(); $configOBJ = ComConfig::getInstance(); $utilityOBJ = ComUtility::getInstance(); $smartyOBJ = ComSmarty::getInstance(); $_config = $configOBJ->toArray(); $smartyOBJ->assign("config", $_config);
/** * smtpMailToメソッド(SMTP) * * メール送信実行 * * @param array $$mailElements 送信する要素 * [from_address]:メール送信元アドレス * [from_name] :メール送信元名(任意) * [return_path] :リターンアドレス(任意) * [subject] :メールタイトル * [text_body] :メール本文(テキスト) * [html_body] :メール本文(HTML)(任意) * @return 送信成功:True 送信失敗:False */ public function smtpMailTo($mailElements, $sec = 0, $imageData = null, $imageType = null) { if (!isset($mailElements["to_address"]) || !isset($mailElements)) { return FALSE; } // http通信 //送信用にエンコード $sendSubject = $mailElements["subject"]; $sendTextBody = htmlspecialchars_decode($mailElements["text_body"], ENT_QUOTES); //$sendHtmlBody = base64_encode($mailElements["html_body"]); // 送信項目の設定 $postdata["to"] = $mailElements["to_address"]; //$postdata["to_nm"] = $mailElements["to_name"]; $postdata["rtn_path"] = $mailElements["return_path"] ? $mailElements["return_path"] : self::RETURN_PATH . $this->_configOBJ->define->MAIL_DOMAIN; $postdata["from"] = $mailElements["from_address"]; $postdata["from_nm"] = $mailElements["from_name"]; $postdata["sbj"] = $sendSubject; $postdata["body"] = $sendTextBody; //$postdata["html"] = $mailElements["html_body"]; $postdata["sec"] = $sec; // 画像があったら画像も送信 if ($imageData && $imageType) { foreach ($imageData as $image) { // base64エンコード $postdata["image"][] = $image; //$postdata["image"][] = base64_encode($image); } foreach ($imageType as $type) { // base64エンコード $postdata["image_type"][] = $type; } } // リメール用インスタンス生成 $sendMailComSendMagicDeliveryOBJ = new ComSendMagicDelivery(); if (!$this->_mailServerIp) { // 無ければメールサーバーは通常SendMagic $this->_mailServerIp = $this->_configOBJ->common_config->smtp_mail_server_ip->sendMagic; } // SMTPホスト設定 $sendMailComSendMagicDeliveryOBJ->setSendMailServerIp($this->_mailServerIp); // SMTP接続開始 if (!$sendMailComSendMagicDeliveryOBJ->openSmtpConnect()) { return false; } // 送信メールデータ生成 $sendMailData = $postdata; if ($sendMailData) { // 送信 try { // リメール送信 if (!$sendMailComSendMagicDeliveryOBJ->sendMagicDelivery($sendMailData)) { // SMTP切断 $sendMailComSendMagicDeliveryOBJ->closeSmtpConnect(); return false; } } catch (Zend_Exception $e) { $requestOBJ = ComRequest::getInstance(); $actionName = $requestOBJ->getActionName(); // 送れたものとして判断 // デバッグメール $debugMail = ""; $debugMail["subject"] = "リメール送信エラー"; $debugMail["text_body"][] = "file:" . __FILE__; $debugMail["text_body"][] = "line:" . __LINE__; $debugMail["text_body"][] = "err:" . $e->getMessage(); $debugMail["text_body"][] = "action_file_name:" . $actionName; $debugMail["text_body"] = implode("\n", $debugMail["text_body"]); // システムにエラーメール $this->debugSmtpMailTo($debugMail); // SMTP切断 $sendMailComSendMagicDeliveryOBJ->closeSmtpConnect(); return false; } } else { // SMTP切断 $sendMailComSendMagicDeliveryOBJ->closeSmtpConnect(); return false; } /* // 以下、デバッグメール ※当分の間残しといて下さい!! $requestOBJ = ComRequest::getInstance(); $actionName = $requestOBJ->getActionName(); $testMail = ""; $sendMailData = ""; $testMail["subject"] = "TESTリメール送信"; $testMail["text_body"][] = "file:" . __FILE__; $testMail["text_body"][] = "line:" . __LINE__; $testMail["text_body"][] = "action_file_name:" . $actionName; $testMail["text_body"][] = "result:OK"; $testMail["text_body"] = implode("\n", $testMail["text_body"]); $sendMailData = print_r($testMail, true); // 指定アドレスに送信 mb_send_mail("*****@*****.**", "smtp_remail_test", $sendMailData, ""); */ // SMTP切断 $sendMailComSendMagicDeliveryOBJ->closeSmtpConnect(); return $postdata; }
/** * SQLクエリを発行する。 * * @param string $queryString クエリ文字列 * @param string $fetchMethod フェッチメソッド * * @return mixed フェッチメソッドがfetch,fetchAllならオブジェクト、それ以外ならデータ配列を返す */ public function executeQuery($queryString, $fetchMethod = null) { if (!$queryString) { return FALSE; } //接続が切れていたら再接続 $this->reConnection(); try { // プロファイラの取得 $profOBJ = $this->_dbOBJ->getProfiler(); // クエリの発行処理 switch ($fetchMethod) { case "fetchRow": case "fetchOne": case "fetchCol": case "fetchPairs": $resultSet = self::$fetchMethod($queryString); break; default: $resultSet = $this->_dbOBJ->query($queryString); break; } // 最後のクエリのプロファイラの取得 $lastQueryProfOBJ = $profOBJ->getLastQueryProfile(); $requestOBJ = ComRequest::getInstance(); $actionName = $requestOBJ->getActionName(); // クエリ結果が返ってきた場合 if ($resultSet) { if ($actionName != "user_convertCsvExec") { // 出力用クエリログの格納 ※競馬間コンバートの場合は不要 self::setDebugSql($lastQueryProfOBJ, debug_backtrace()); } return $resultSet; } else { return FALSE; } // クエリ結果が返らない場合 } catch (Zend_Db_Statement_Exception $e) { $this->_errorMessage = mb_convert_encoding($e->getMessage() . "<br />SQL:" . $queryString, "UTF-8", "auto"); exit($this->_errorMessage); // クエリ結果が返らない場合以外の例外 } catch (Zend_Exception $e) { exit($e->getMessage()); } }
/** * コンストラクタ * * @param string $httpUserAgent $_SERVER["HTTP_USER_AGENT"]の値 */ public function __construct() { $this->_requestOBJ = ComRequest::getInstance(); // ユーザーエージェント情報をセット $this->_httpUserAgent = $this->_requestOBJ->getParameter("HTTP_USER_AGENT", "", "server"); }
/** * ページリンクを取得する。 * * ページリンク設定配列: * "total_count" => 全データ件数 * "offset" => オフセット値 * "disp_count" => 1ページ表示件数 * "link_count" => ページ番号リンク数※ * "action_name" => リンク先ページアクション名※ * "offset_name" => オフセットのパラメータキー名※ * "previous_name" => 前ページリンク名※ * "next_name" => 次ページリンク名※ * "additional_param" => 追加パラメータ※ * * ※の項目は省略可能 * * @param array $pagerArray ページリンク設定配列 * @return mixed ページリンク配列 */ public static function getLink($pagerArray) { if (!is_array($pagerArray)) { return false; } if (!is_numeric($pagerArray["total_count"]) || !is_numeric($pagerArray["offset"]) || !is_numeric($pagerArray["disp_count"])) { return false; } // デフォルトのページ番号リンク数は10 if (!is_numeric($pagerArray["link_count"])) { $pagerArray["link_count"] = 10; } // デフォルトのアクション名は現在ページ if (!$pagerArray["action_name"]) { $requestOBJ = ComRequest::getInstance(); $actionName = $requestOBJ->getActionName(); if ($actionName) { $pagerArray["action_name"] = $actionName; } else { $pagerArray["action_name"] = "index"; } } // デフォルトのオフセットのパラメータキー名はoffset if (!$pagerArray["offset_name"]) { $pagerArray["offset_name"] = "offset"; } // デフォルトの前ページリンク名はprev if (!$pagerArray["previous_name"]) { $pagerArray["previous_name"] = "prev"; } // デフォルトの次ページリンク名はnext if (!$pagerArray["next_name"]) { $pagerArray["next_name"] = "next"; } // デフォルトの次ページリンク名はhome if (!$pagerArray["home_name"]) { $pagerArray["home_name"] = "home"; } // 件数を0から数えるのでマイナス1 $pagerArray["total_count"]--; // 全ページ数 $totalPage = (int) ($pagerArray["total_count"] / $pagerArray["disp_count"]) + 1; // 現在表示中のページ $currentPage = (int) ($pagerArray["offset"] / $pagerArray["disp_count"]) + 1; // リンクの先頭ページ $startPage = (int) ($pagerArray["offset"] / ($pagerArray["disp_count"] * $pagerArray["link_count"])) * $pagerArray["link_count"]; $startPage++; // リンクの終端ページ $endPage = $startPage + ($pagerArray["link_count"] - 1); if ($totalPage < $endPage) { $endPage = $totalPage; } // 前のページに一気に移動するリンクを作る if ($startPage != 1) { $linkArray["pages"][] .= "<a href=\"./?action_" . $pagerArray["action_name"] . "&" . $pagerArray["offset_name"] . "=" . ($startPage - 2) * $pagerArray["disp_count"] . $pagerArray["additional_param"] . "\">" . "~" . ($startPage - 1) . "</a>\n"; } // ページ番号リンクを1ページ分ずつ作る for ($i = $startPage; $i <= $endPage; $i++) { $offset = ($i - 1) * $pagerArray["disp_count"]; // 表示中のページでなければリンク作成 if ($i != $currentPage) { $linkArray["pages"][] .= "<a href=\"./?action_" . $pagerArray["action_name"] . "&" . $pagerArray["offset_name"] . "=" . $offset . $pagerArray["additional_param"] . "\" title=\"" . $i . "\">" . $i . "</a>"; // 表示中のページならただの数字 } else { $linkArray["pages"][] = "<strong>" . $i . "</strong>"; } } // 次のページに一気に移動するリンクを作る if ($endPage < $totalPage) { $linkArray["pages"][] .= "<a href=\"./?action_" . $pagerArray["action_name"] . "&" . $pagerArray["offset_name"] . "=" . $endPage * $pagerArray["disp_count"] . $pagerArray["additional_param"] . "\">" . "" . ($endPage + 1) . "~</a>\n"; } // 前のページへリンク $linkArray["previous"] = ""; if ($currentPage != 1) { $linkArray["previous"] .= "<a href=\"./?action_" . $pagerArray["action_name"]; $linkArray["previous"] .= "&" . $pagerArray["offset_name"] . "=" . ($currentPage - 2) * $pagerArray["disp_count"] . $pagerArray["additional_param"] . "\" accesskey=\"4\">"; $linkArray["previous"] .= $pagerArray["previous_name"] . "</a>"; } // 次のページへリンク $linkArray["next"] = ""; if ($currentPage < $totalPage) { $linkArray["next"] .= "<a href=\"./?action_" . $pagerArray["action_name"]; $linkArray["next"] .= "&" . $pagerArray["offset_name"] . "=" . $currentPage * $pagerArray["disp_count"] . $pagerArray["additional_param"] . "\" accesskey=\"6\">"; $linkArray["next"] .= $pagerArray["next_name"] . "</a>"; } if ($pagerArray["show_home"] && (!$pagerArray["last_link"] || $currentPage >= $totalPage)) { $linkArray["home"] = "<a href=\"{$pagerArray["show_home"]}\">{$pagerArray["home_name"]}</a>"; } return $linkArray; }