バリデーションで日付を比較する独自メソッド

CakePHP1.2には便利なバリデーションが組み込まれていますが、そのままではかゆい所に手が届きません。
例えば、今日からx日以降の日付を入力してほしい場合など。

今日は、日付に関する比較をなるべく汎用的に使えるようにバリデーションメソッドを書いてみました。
具体的には、以下のメソッドをAppModelに書き加えます。

	/**
	 * 日付を比較するバリデーションルール.
	 * デフォルトでは、現在の日付と対象の日付を比較演算子の通りに比較する.
	 * 現在の日付との差分がある場合、その分だけずらした日付と対象の日付を比較する.
	 * 比較演算子は、Validation::comparisonと同じものが使える.
	 * 現在の日付との差分は、strtotime()でtimestampで変換可能な文字列.
	 * @param string $check1 比較対象の日付
	 * @param string $operator 比較演算子
	 * @param string $timestamp 現在の日付との差分
	 */
	function comparisonDate($check1, $operator, $timestamp = null) {
		$check1 = is_array($check1) ? array_shift($check1) : $check1;
		$check2 = !empty($timestamp) ? date("Y/m/d") : $date("Y/m/d", strtotime($timestamp));
		$operator = str_replace(array(' ', "\t", "\n", "\r", "\0", "\x0B"), '', strtolower($operator));
				
		switch ($operator) {
			case 'isgreater':
			case '>':
				if ($check1 > $check2) {
					return true;
				}
				break;
			case 'isless':
			case '<':
				if ($check1 < $check2) {
					return true;
				}
				break;
			case 'greaterorequal':
			case '>=':
				if ($check1 >= $check2) {
					return true;
				}
				break;
			case 'lessorequal':
			case '<=':
				if ($check1 <= $check2) {
					return true;
				}
				break;
			case 'equalto':
			case '==':
				if ($check1 == $check2) {
					return true;
				}
				break;
			case 'notequal':
			case '!=':
				if ($check1 != $check2) {
					return true;
				}
				break;
			default:
				$_this =& Validation::getInstance();
				$_this->errors[] = __('You must define the $operator parameter for AppModel::comparisonDate()', true);
				break;
		}
		
		return false;
	}

モデル側で使用する場合は、以下のように記述します。

$validate = array(
	//今日以降の日付
	"date" => array(
		"rule" => array("comparisonDate", "<="),
		"message" => "今日以降の日付を入力してください。"
	),
	//今日-10日以前の日付
	"date" => array(
		"rule" => array("comparisonDate", ">", "-10days"),
		"message" => "10日以上前の日付を入力してください。"
	)
);

一応、それなりの配慮はしたつもりですが、実際に使用する際はくれぐれもお気をつけくださいませ。
また、「中二か!」的なツッコミお待ちしております。