<?php
/**
 * コンテナクラス
 *
 * PHP versions 5
 *
 * LICENSE: This source file is licensed under the terms of the GNU General Public License.
 *
 * @package    Magic3 Framework
 * @author     平田直毅(Naoki Hirata) <naoki@aplo.co.jp>
 * @copyright  Copyright 2006-2010 Magic3 Project.
 * @license    http://www.gnu.org/copyleft/gpl.html  GPL License
 * @version    SVN: $Id: admin_mainConfigsiteWidgetContainer.php 3867 2010-11-30 02:06:28Z fishbone $
 * @link       http://www.magic3.org
 */
require_once($gEnvManager->getCurrentWidgetContainerPath() .	'/admin_mainConfigbasicBaseWidgetContainer.php');
require_once($gEnvManager->getCurrentWidgetDbPath() . '/admin_mainDb.php');

class admin_mainConfigsiteWidgetContainer extends admin_mainConfigbasicBaseWidgetContainer
{
	private $db;	// DB接続オブジェクト
	private $defaultLang;		// デフォルト言語
	
	const TEST_MAIL_FORM = 'test';		// テストメールフォーム
	const LICENSE_KEY		= 'license_key';		// ライセンスキー
	const LICENSE_EMAIL		= 'license_email';		// ライセンスメール
	const LICENSE_NAME = 'license_company_name';	// ライセンス会社名
	const LICENSE_ZIPCODE	= 'license_company_zipcode';	// ライセンス郵便番号
	const LICENSE_ADDRESS	= 'license_company_address';	// ライセンス住所
	const LICENSE_FAX		= 'license_company_fax';	// ライセンスFAX
	const CF_GOOGLE_MAPS_KEY = 'google_maps_key';				// Googleマップ利用キー
	const GOOGLE_API_KEY_JA_URL = 'http://code.google.com/intl/ja/apis/maps/signup.html';		// 利用キー取得用URL(日本語)
	const GOOGLE_API_KEY_EN_URL = 'http://code.google.com/intl/en/apis/maps/signup.html';		// 利用キー取得用URL(英語用)
	
	/**
	 * コンストラクタ
	 */
	function __construct()
	{
		// 親クラスを呼び出す
		parent::__construct();
		
		// DB接続オブジェクト作成
		$this->db = new admin_mainDb();
	}
	/**
	 * テンプレートファイルを設定
	 *
	 * _assign()でデータを埋め込むテンプレートファイルのファイル名を返す。
	 * 読み込むディレクトリは、「自ウィジェットディレクトリ/include/template」に固定。
	 *
	 * @param RequestManager $request		HTTPリクエスト処理クラス
	 * @param object         $param			任意使用パラメータ。そのまま_assign()に渡る
	 * @return string 						テンプレートファイル名。テンプレートライブラリを使用しない場合は空文字列「''」を返す。
	 */
	function _setTemplate($request, &$param)
	{	
		return 'configsite.tmpl.html';
	}
	/**
	 * ヘルプデータを設定
	 *
	 * ヘルプの設定を行う場合はヘルプIDを返す。
	 * ヘルプデータの読み込むディレクトリは「自ウィジェットディレクトリ/include/help」に固定。
	 *
	 * @param RequestManager $request		HTTPリクエスト処理クラス
	 * @param object         $param			任意使用パラメータ。そのまま_assign()に渡る
	 * @return string 						ヘルプID。ヘルプデータはファイル名「help_[ヘルプID].php」で作成。ヘルプを使用しない場合は空文字列「''」を返す。
	 */
	function _setHelp($request, &$param)
	{	
		return 'configsite';
	}
	/**
	 * テンプレートにデータ埋め込む
	 *
	 * _setTemplate()で指定したテンプレートファイルにデータを埋め込む。
	 *
	 * @param RequestManager $request		HTTPリクエスト処理クラス
	 * @param object         $param			任意使用パラメータ。_setTemplate()と共有。
	 * @param								なし
	 */
	function _assign($request, &$param)
	{
		// ユーザ情報、表示言語
		$userInfo		= $this->gEnv->getCurrentUserInfo();
		$this->defaultLang		= $this->gEnv->getDefaultLanguage();
		$langId		= $this->gEnv->getCurrentLanguage();		// 現在の言語ID
			
		$act = $request->trimValueOf('act');
		if ($act == 'update'){		// 設定更新のとき
			$licenseKey = $request->trimValueOf('license_key');		// ライセンスキー
			$licenseEmail = $request->trimValueOf('license_email');		// ライセンスメールアドレス
			$licenseName = $request->trimValueOf('license_name');		// ライセンス会社名
			$licenseZipcode = $request->trimValueOf('license_zipcode');		// ライセンス郵便番号
			$licenseAddress = $request->trimValueOf('license_address');		// ライセンス住所
			$licenseFax = $request->trimValueOf('license_fax');		// ライセンスFAX
			//$siteOwner	= $request->trimValueOf('siteowner');		// サイト所有者
			$siteName	= $request->trimValueOf('sitename');		// サイト名称
			$siteEmail	= trim($request->valueOf('siteemail'));		// サイトEメール
			$siteCopyRight	= $request->trimValueOf('sitecopyright');		// サイト著作権
			
			$siteTitle = $request->trimValueOf('site_title');		// 画面タイトル
			if (empty($siteTitle)) $siteTitle = $siteName;			// タイトル名が設定されていないときはデフォルトでサイト名称を設定
			$siteDesc = $request->trimValueOf('site_description');		// サイト要約
			$siteKeyword = $request->trimValueOf('site_keyword');		// サイトキーワード
			// その他
			$googleMapsKey = $request->trimValueOf('google_maps_key');			// Googleマップ利用キー
			
			$isErr = false;
			/*if (!$isErr && !empty($lang)){
				if (!$this->db->updateSystemConfig(self::DEFAULT_LANG, $lang)) $isErr = true;
			}*/
			if (!$isErr){
				if (!$this->db->updateSiteDef($this->defaultLang, self::LICENSE_KEY, $licenseKey)) $isErr = true;
			}
			if (!$isErr){
				if (!$this->db->updateSiteDef($this->defaultLang, self::LICENSE_EMAIL, $licenseEmail)) $isErr = true;
			}
			if (!$isErr){
				if (!$this->db->updateSiteDef($this->defaultLang, self::LICENSE_NAME, $licenseName)) $isErr = true;
			}
			if (!$isErr){
				if (!$this->db->updateSiteDef($this->defaultLang, self::LICENSE_ZIPCODE, $licenseZipcode)) $isErr = true;
			}
			if (!$isErr){
				if (!$this->db->updateSiteDef($this->defaultLang, self::LICENSE_ADDRESS, $licenseAddress)) $isErr = true;
			}
			if (!$isErr){
				if (!$this->db->updateSiteDef($this->defaultLang, self::LICENSE_FAX, $licenseFax)) $isErr = true;
			}			
			/*
			if (!$isErr){
				if (!$this->db->updateSiteDef($this->defaultLang, M3_TB_FIELD_SITE_OWNER, $siteOwner)) $isErr = true;
			}*/
			if (!$isErr){		// サイト名
				if (!$this->db->updateSiteDef($this->defaultLang, M3_TB_FIELD_SITE_NAME, $siteName)) $isErr = true;
			}
			if (!$isErr){
				if (!$this->db->updateSiteDef($this->defaultLang, M3_TB_FIELD_SITE_EMAIL, $siteEmail)) $isErr = true;
			}
			if (!$isErr){		// 著作権
				if (!$this->db->updateSiteDef($this->defaultLang, M3_TB_FIELD_SITE_COPYRIGHT, $siteCopyRight)) $isErr = true;
			}
			if (!$isErr){
				if (!$this->db->updateSiteDef($this->defaultLang, M3_TB_FIELD_SITE_TITLE, $siteTitle)) $isErr = true;
			}
			if (!$isErr){
				if (!$this->db->updateSiteDef($this->defaultLang, M3_TB_FIELD_SITE_DESCRIPTION, $siteDesc)) $isErr = true;
			}
			if (!$isErr){
				if (!$this->db->updateSiteDef($this->defaultLang, M3_TB_FIELD_SITE_KEYWORDS, $siteKeyword)) $isErr = true;
			}
			if (!$isErr){
				if (!$this->db->updateSystemConfig(self::CF_GOOGLE_MAPS_KEY, $googleMapsKey)) $isErr = true;	// Googleマップ利用キー
			}
			if ($isErr){
				$this->setMsg(self::MSG_APP_ERR, $this->_('Failed in updating data.'));			// データ更新に失敗しました
			} else {
				$this->setMsg(self::MSG_GUIDANCE, $this->_('Data updated.'));		// データを更新しました
			}
			// システムパラメータを更新
			$this->gEnv->loadSystemParams();
			
			// 値を再取得
			$this->defaultLang		= $this->gEnv->getDefaultLanguage();
			$googleMapsKey			= $this->db->getSystemConfig(self::CF_GOOGLE_MAPS_KEY);			// Googleマップ利用キー
		} else if ($act == 'testmail'){		// テストメール送信のとき
			$mail = $this->gEnv->getSiteEmail(true);
			if (empty($mail)){
				$this->setAppErrorMsg($this->_('Input email address.'));		// メールアドレスが設定されていません
			} else {
				$mailParam = array();
				$mailParam['BODY']  = $this->_('URL   :') . ' ' . $this->gEnv->getRootUrl() . M3_NL;		// URL     :
				$mailParam['BODY'] .= $this->_('Date  :') . ' ' . date("Y年m月d日 H時i分s秒") . M3_NL;		// 送信日時:
				$mailParam['BODY'] .= $this->_('Sender:') . ' ' . $this->gEnv->getCurrentUserName() . M3_NL;	// 送信者  :
				$ret = $this->gInstance->getMailManager()->sendFormMail(2/*手動送信*/, $this->gEnv->getCurrentWidgetId(), $mail, $mail, '', '', self::TEST_MAIL_FORM, $mailParam);
				if ($ret){
					$this->setMsg(self::MSG_GUIDANCE, $this->_('Email sent. To:') . ' ' . $mail);// メールを送信しました。メールアドレス:
				} else {
					$this->setMsg(self::MSG_APP_ERR, $this->_('Failed in sending email. To:') . ' ' . $mail);			// メール送信に失敗しました。メールアドレス:
				}
			}
		} else {		// 初期表示の場合
			$googleMapsKey			= $this->db->getSystemConfig(self::CF_GOOGLE_MAPS_KEY);			// Googleマップ利用キー
		}
		// 画面にデータを埋め込む
		$siteEmail = $this->gEnv->getSiteEmail(true);
		$this->tmpl->addVar("_widget", "license_key", $this->db->getSiteDef($this->defaultLang, self::LICENSE_KEY));
		$this->tmpl->addVar("_widget", "license_email", $this->db->getSiteDef($this->defaultLang, self::LICENSE_EMAIL));
		$this->tmpl->addVar("_widget", "license_name", $this->db->getSiteDef($this->defaultLang, self::LICENSE_NAME));
		$this->tmpl->addVar("_widget", "license_zipcode", $this->db->getSiteDef($this->defaultLang, self::LICENSE_ZIPCODE));
		$this->tmpl->addVar("_widget", "license_address", $this->db->getSiteDef($this->defaultLang, self::LICENSE_ADDRESS));
		$this->tmpl->addVar("_widget", "license_fax", $this->db->getSiteDef($this->defaultLang, self::LICENSE_FAX));
		/*
		$this->tmpl->addVar("_widget", "site_owner", $this->gEnv->getSiteOwner(true));*/
		$this->tmpl->addVar("_widget", "site_name", $this->gEnv->getSiteName(true));		// サイト名
		$this->tmpl->addVar("_widget", "site_email", $siteEmail);
		$this->tmpl->addVar("_widget", "site_copyright", $this->gEnv->getSiteCopyRight(true));	// 著作権
		
		// SEO
		$this->tmpl->addVar("_widget", "site_title", $this->db->getSiteDef($this->defaultLang, M3_TB_FIELD_SITE_TITLE));
		$this->tmpl->addVar("_widget", "site_desc", $this->db->getSiteDef($this->defaultLang, M3_TB_FIELD_SITE_DESCRIPTION));
		$this->tmpl->addVar("_widget", "site_keyword", $this->db->getSiteDef($this->defaultLang, M3_TB_FIELD_SITE_KEYWORDS));
		
		// その他
		$this->tmpl->addVar("_widget", "google_maps_key", $googleMapsKey);// Googleマップ利用キー
		$apiKeyUrl = self::GOOGLE_API_KEY_EN_URL;
		if ($langId == 'ja') $apiKeyUrl = self::GOOGLE_API_KEY_JA_URL;
		$this->tmpl->addVar("_widget", "api_key_url",	$apiKeyUrl);		// キー取得用URL
		
		// メール送信ボタン
		if (empty($siteEmail)) $this->tmpl->addVar("_widget", "test_mail_disabled", 'disabled');
		
		// テキストをローカライズ
		$localeText = array();
		$localeText['msg_update'] = $this->_('Update config?');		// 設定を更新しますか?
		$localeText['msg_send_email'] = $this->_('Send test email to default email address?');		// デフォルトメールアドレス宛にテストメールを送信しますか?
		$localeText['label_site_info'] = $this->_('Site Information');			// サイト情報
		$localeText['label_site_name'] = $this->_('Site Name');// サイト名
		$localeText['label_required'] = $this->_('Required');	// 必須
		$localeText['label_site_email'] = $this->_('Site Email');// メールアドレス
		$localeText['label_send_test_email'] = $this->_('Send Test Email');// テストメール送信
		$localeText['label_site_copyright'] = $this->_('Site Copyright');// 著作権
		$localeText['label_header_info'] = $this->_('Page Header Info (Default)');// ページヘッダ情報(デフォルト値)
		$localeText['label_header_title'] = $this->_('Header Tilte');// タイトル名
		$localeText['label_header_desc'] = $this->_('Header Description');// ページ要約
		$localeText['label_header_keywords'] = $this->_('Header Keywords');// 検索キーワード
		$localeText['label_others'] = $this->_('Others');// その他
		$localeText['label_google_maps_key'] = $this->_('Google Maps Key');// Googleマップ利用キー
		$localeText['label_get_key'] = $this->_('Get Maps Key');// 利用キーを取得
		$localeText['label_update'] = $this->_('Update');// 更新
		$this->setLocaleText($localeText);
	}
}
?>
