<?php
// mycssadmin ver 1.0.0
//  ------------------------------------------------------------------------ //
//                   This module; Copyright (c) 2005 gusagi                  //
//                        <http://good-tea.ddo.jp/trpg>                      //
//  ------------------------------------------------------------------------ //

//*****************************************************************************/
// 初期処理
//*****************************************************************************/
// 他のスクリプトから呼び出されたか確認
// 呼び出された場合は、定数を定義して以後の判定に使用する
$replace_array = array( '\\' => '/', '\\.\\' => '\\', '/./' => '/' );
if ( strtr($_SERVER['SCRIPT_FILENAME'], $replace_array) !== strtr(__FILE__, '\\', '/') ) {
	define( 'MYCSSADMIN_CALLED', true );
}
require_once( dirname(dirname(__FILE__)) .'/include/mycssadmin.inc.php' );
if ( ! defined('MYCSSADMIN_CALLED') ) {
	include_once( XOOPS_ROOT_PATH .'/modules/system/constants.php' ) ;
	require_once( $mod_path .'/include/gtickets.php' );

	// check access right (needs system_admin of BLOCK)
	$sysperm_handler =& xoops_gethandler('groupperm');
	if (!$sysperm_handler->checkRight('system_admin', XOOPS_SYSTEM_BLOCK, $xoopsUser->getGroups())) redirect_header( XOOPS_URL.'/user.php' , 1 , _NOPERM ) ;
	
	// ワンタイムチケットの確認
	if ( ! $xoopsGTicket->check($post = true, $mod_name) ) {
		redirect_header( $mod_url.'/', 3, $xoopsGTicket->getErrors() );
		exit;
	}

	// リダイレクト先の初期化
	$redirect = '';
}

// MyTextSanitizerインスタンスの生成
$myts =& MyTextSanitizer::getInstance();

// セッション情報が存在しない場合か、不正な値の場合は排除
if ( empty($_SESSION['cssadmin_op']) || $_SESSION['cssadmin_op'] !== 'save_blocks_css' ) {
	redirect_header( XOOPS_URL, 2, MYCSSADMIN_ERR_ILLEGITIMATE_OP );
	exit;
}

//*****************************************************************************/
// 前の画面からの情報を取得とsql生成
//*****************************************************************************/
// セッション情報の取得
$blocks = array();
$blocks = $_SESSION['cssadmin_blocks'];
$cssadmin_blocks = $xoopsDB->prefix( 'cssadmin_blocks' );
foreach( $blocks as $key => $block) {
	if ( ! empty($block['bid']) ) {
		$bid = intval( $block['bid'] );
		$mid = intval( $block['mid'] );
		// リダイレクト先の設定
		if ( empty($redirect) ) {
			$redirect = $mod_url .'/admin/mycssadmin.php?mid=' .$mid;
		} else {
			$redirect .= '?mid=' .$mid;
		}
		$block_css_field = 'BlockCssId' .$bid;
		$css = $myts->addslashes( $myts->stripSlashesGPC(basename($_POST[$block_css_field])) );
		// cssファイルの文字長チェック
		if ( strlen($css) > $css_max_length ) {
				redirect_header( $redirect, 2, sprintf(MYCSSADMIN_ERR_CSS_TOO_LONG, $css_max_length) );
				exit;
		}
		// 新規登録時
		if ( empty($block['selected']) && !empty($_POST[$block_css_field]) ) {
			$sql = "INSERT INTO $cssadmin_blocks";
			$sql .= " VALUES( $bid, $mid, '$css' )";
			$result = $xoopsDB->query( $sql );
			if ( ! $result ) {
				redirect_header( $redirect, 2, MYCSSADMIN_ERR_FAILED_DB_UPDATE );
				exit;
			}
		// CSS関連付けの変更時
		} elseif ( !empty($block['selected']) && !empty($_POST[$block_css_field]) 
				&& ($block['selected'] !== $_POST[$block_css_field]) ) {
			$sql = "UPDATE $cssadmin_blocks SET";
			$sql .= " css = '$css' ";
			$sql .= " WHERE bid = $bid";
			$result = $xoopsDB->query( $sql );
			if ( ! $result ) {
				redirect_header( $redirect, 2, MYCSSADMIN_ERR_FAILED_DB_UPDATE );
				exit;
			}
		// CSS関連付けの廃止時
		} elseif ( !empty($block['selected']) && empty($_POST[$block_css_field]) ) {
			$sql = "DELETE FROM $cssadmin_blocks";
			$sql .= " WHERE bid = $bid";
			$result = $xoopsDB->query( $sql );
			if ( ! $result ) {
				redirect_header( $redirect, 2, MYCSSADMIN_ERR_FAILED_DB_UPDATE );
				exit;
			}
		}
	}
}
// テーブルの最適化を行う
$sql = "OPTIMIZE TABLE $cssadmin_blocks";
$xoopsDB->query( $sql );

//*****************************************************************************/
// 終了処理
//*****************************************************************************/ 
// セッション情報のクリア
unset( $_SESSION['cssadmin_blocks'] );
unset( $_SESSION['cssadmin_del_blocks'] );
if ( ! defined('MYCSSADMIN_CALLED') ) {
	// モジュールCSS設定画面に遷移
	redirect_header( $redirect, 2, MYCSSADMIN_COPMLETE_DATA_UPDATE );
	exit;
}

?>