//<?php
/**
 * SwitchDefaultTemplate
 * 
 * リソース新規作成時のデフォルトテンプレートを、任意のルールに基づいて切り替える。
 * 
 * @category	plugin
 * @version 	1.0.0
 * @license 	http://www.gnu.org/copyleft/gpl.html GNU Public License (GPL)
 * @internal	@properties &rules=rules;text;;
 * @internal	@events OnDocFormPrerender
 * @internal	@modx_category Manager and Admin
 * @internal    @installset base
 */

/*
 * @author		Kazuyuki Ikeda (HIKIDAS Co.,Ltd)
 * @link		http://www.hikidas.com/
 */

/*----------------------------------------------------------------------
ルール設定
	MODX管理画面のプラグイン設定で以下のパラメータを設定します。

パラメータ
	rules
		デフォルトテンプレートの切り替えルール
		書式：「＜ルールタグ＞:＜ルール指定値＞:＜デフォルトテンプレート＞,...」
		（複数指定はカンマ区切りで行います）
		複数指定時は、指定した順にルールをチェックします。
		どのルールにも該当しない場合は、グローバル設定の通りになります。
		例）parentAlias:news:4,parentAlias:event:5,parentId:2:3

ルールタグ
	parentTemplate	親フォルダ（コンテナ）の使用テンプレート(id)で切り替える
	parentAlias		親フォルダ（コンテナ）のエイリアスで切り替える
	parentId		親フォルダ（コンテナ）のリソースIDで切り替える
	userRole		ユーザのロール(id)で切り替える
----------------------------------------------------------------------*/

	global $content;

	$e = &$modx->event;
	switch($e->name) {
	case 'OnDocFormPrerender':
		break;
	default:
		return;
	}

	if (! isset($e->params['rules'])) {
		return;
	}
	$rules_exploded = explode(',', $e->params['rules']);
	$rules_exploded = array_map("trim", $rules_exploded);
	$rules_exploded = array_filter($rules_exploded);
	if (empty($rules_exploded)) {
		return;
	}
	$rule_matched = FALSE;
	foreach ($rules_exploded as $strRule) {
		if ($rule_matched) {
			break;
		}
		$arrRule = explode(':', $strRule);
		$arrRule = array_map("trim", $arrRule);
		$arrRule = array_filter($arrRule);
		if (count($arrRule) != 3) {
			$modx->logEvent(1, 1, 'Rule syntax error: "'.$strRule.'"', $e->activePlugin);
		}
		list($rtag, $rval, $dtmpl) = $arrRule;
		switch ($rtag) {
		case 'parentTemplate':
			$parentDoc = $modx->getPageInfo($_REQUEST['pid'],0,'template');
			if ($parentDoc['template'] === $rval) {
				$content['template'] = $dtmpl;
				$rule_matched = TRUE;
			}
			break;
		case 'parentAlias':
			$parentDoc = $modx->getPageInfo($_REQUEST['pid'],0,'alias');
			if ($parentDoc['alias'] === $rval) {
				$content['template'] = $dtmpl;
				$rule_matched = TRUE;
			}
			break;
		case 'parentId':
			if ($_REQUEST['pid'] === $rval) {
				$content['template'] = $dtmpl;
				$rule_matched = TRUE;
			}
			break;
		case 'userRole':
			if (isset($_SESSION['mgrRole']) && $_SESSION['mgrRole'] === $rval) {
				$content['template'] = $dtmpl;
				$rule_matched = TRUE;
			}
			break;
		default:
			$modx->logEvent(1, 1, 'Rule syntax error: "'.$strRule.'"', $e->activePlugin);
			break;
		}
	}
