a:8:{s:4:"name";s:10:"chs_cookie";s:7:"version";s:3:"0.1";s:6:"author";s:11:"Noam Samuel";s:10:"author_uri";s:21:"http://chigh.org/noam";s:11:"description";s:76:"Will enable you to make certain areas conditional based on cookies variables";s:4:"help";s:998:"
h1. Usage

 &lt;txp:chs_if_cookie cookie="genericCookie" value="genericValue"&gt;
	this text will appear only if the cookie "genericCookie" has the value "genericValue".
 &lt;/txp:chs_if_cookie&gt;

 &lt;txp:chs_cookie_exists cookie="genericCookie"&gt;
	this text will appear only if the cookie "genericCookie" exists (this does not count cookies that were set by chs_set_cookie during the same request).
 &lt;/txp:chs_cookie_exists&gt;

 &lt;txp:chs_cookie_default cookie="genericCookie"&gt;
	this text will appear only if the cookie "genericCookie" does not exist (this does not count cookies that were set by chs_set_cookie during the same request).
 &lt;/txp:chs_cookie_exists&gt;

 this will be the value of the cookie "genericCookie" before the page was requested:&lt;txp:chs_echo_cookie cookie="genericCookie"&gt;

 the following (to be used only at top of document) will set the cookie genericCookie to genericValue: $lt;txp:chs_set_cookie cookie="genericCookie" value="genericValue"&gt;

";s:4:"code";s:1226:"global $cookieunset;
$cookieunset = array();
global $cookiebvalue;
$cookiebvalue= array();


function chs_if_cookie($atts,$thing) {
                global $cookieunset;
		$thevar = ($atts["cookie"]) ? $atts["cookie"] : "thingie";
		return ($_COOKIE[$thevar] == $atts["value"] && !$cookieunset[$thevar]) ? parse($thing) : "";
}

function chs_cookie_default($atts,$thing) {
               global $cookieunset;
		$thevar = ($atts["cookie"]) ? $atts["cookie"] : "thingie";
		return ($_COOKIE[$thevar] || $cookieunset[$thevar]) ? "" : parse($thing);
}


function chs_cookie_exists($atts,$thing) {
               global $cookieunset;
	 	$thevar = ($atts["cookie"]) ? $atts["cookie"] : "thingie";
		return ($_COOKIE[$thevar]) ? parse($thing) : "";
}

function chs_echo_cookie ($atts) {
        global $cookieunset;
	$thevar = ($atts["cookie"]) ? $atts["cookie"] : "thingie";
	return ($cookiebvalue[$thevar]) ? $cookiebvalue[$thevar] : $_COOKIE[$thevar];
}

function chs_set_cookie ($atts) {
	$thevar = ($atts["cookie"]) ? $atts["cookie"] : "thingie";
        if (!$cookieunset[$thevar]) $cookiebvalue = $_COOKIE[$thevar];
        if ($_COOKIE[$thevar]) $cookieunset[$thevar]=true;

	setcookie($thevar, $atts['value']);
	return "";
}
";s:3:"md5";s:32:"121b955f82f04070d9f501c3cc4479a6";}