a:8:{s:4:"name";s:15:"sgb_url_handler";s:6:"author";s:3:"sgb";s:10:"author_uri";s:23:"http://mighthitgold.net";s:7:"version";s:5:"0.1.5";s:11:"description";s:43:"support all url variations at the same time";s:4:"help";s:3274:"

	<h3>sgb_url_handler</h3>
	<p>TxP 1.0 RC3 introduced a number of (long-awaited) URL options, however there were no options to preserver backwards compatibility with existing links (e.g. off-site links, forums, search engines, etc.). This plugin evolved to filled that gap, allowing authors the option of selecting, newer, cleaner schemes while still supporting existing links. This plugin also introduces the option to add additional link formats. Although manual edits will need to be made to several files for complete support.</p>

	<p>This plugin runs on top of the existing TxP URL parsing code. It parses URLs and adds the values to the super globals <code>$_GET</code>, <code>$_POST</code> and <code>$_REQUEST</code>. Typically TxP will see these requests values and runs as if it were in "messy" mode. If for some reason the plugin is unable to parse the URL it is designed to no alter anything and allow TxP to handle the URL normally.</p>

	<h3>What it Handles</h3>
	<p>As of this version (0.1.5) it handles the following URLs.</p>

	<ul>
		<li>example.com/section/id/title</li>
		<li>example.com/section/title</li>
		<li>example.com/section/category/title</li>
		<li>example.com/section/category</li>
		<li>example.com/section</li>
		<li>example.com/title</li>
		<li>example.com/id/title</li>
		<li>example.com/year/month/day/title</li>
	</ul>

	<p>Additionally, this plugin supports the following trigger words:</p>

	<ul>
		<li>example.com/{section}/Section</li>
		<li>example.com/{category}/Category</li>
		<li>example.com/{author}/Author</li>
		<li>example.com/atom</li>
		<li>example.com/rss</li>
	</ul>

	<p>The plugin supports all these modes with or without a trailing slash. In the event of collisions, the plugin will check the more general term first, e.g. /Section will be checked before /Title.</p>

	<p>Please note, as of TxP 1.0 RC3 (2005-03-05) there appears to be issues with correctly retrieving /Year/Month/Day/Title URLs.</p>

	<p>Also note that this plugin is designed to work with clean URLs on servers without mod_rewrite. You'll need to modify your links and append index.php/ to the beginning, e.g. example.com/index.php/section/id/title.</p>

	<h3>Configuration</h3>
	<p>There are no configuration options for this plugin. Activate and you're ready to go.</p>

	<p>If sgb_error_documents is installed and activated, this plugin will generate 404 Not Found errors for the following situations:</p>

	<ul>
		<li>example.com/validSection/Category/InvalidTitle</li>
		<li>example.com/InvalidSection/Category/ValidTitle</li>
		<li>example.com/validSection/InvalidTitle</li>
		<li>example.com/InvalidSection/ValidTitle</li>
		<li>example.com/AnySection/InvalidID/AnyTitle</li>
		<li>example.com/AnySection/InvalidCategory</li>
	</ul>

	<h3>Changelog</h3>

	<h4>0.1.5</h4>
	<ul>
		<li>Added trigger for file_download support.</li>
		<li>Fixed 404 handling bug.</li>
	</ul>

	<h4>0.1.4</h4>
	<ul>
		<li>Added 404 Not Found support (see documentation for details).</li>
		<li>Resolves articles based on Section &#38; Title whenever possible.</li>

	</ul>

	<h4>0.1.3</h4>
	<ul>
		<li>Fixed /Section/Category/Title parsing.</li>
		<li>Fixed version numbering</li>
	</ul>
	
";s:4:"code";s:5321:"
function sgb_url_checkPath() // void
{
	global $timeoffset;

	if ($_SERVER['PATH_INFO']) {
		$request = trim($_SERVER['PATH_INFO'], '/');
	} else {
		$raw_uri     = trim(array_shift(explode('?', $_SERVER['REQUEST_URI'])), '/');
		$script_path = trim(dirname($_SERVER['SCRIPT_NAME']), '/');
		$request     = trim(substr($raw_uri, strlen($script_path)), '/');
		$request     = ($request == basename($_SERVER['SCRIPT_NAME'])) ? null : $request;
	}

	$parts = explode('/', $request);
	$partsCount = count($parts);

	$triggers = array(
		strtolower(gTxt('section'))  => 'section', 
		strtolower(gTxt('category')) => 'category', 
		strtolower(gTxt('author'))   => 'author', 
		strtolower(gTxt('file_download')) => 'file_download', 
		'atom' => 'atom', 
		'rss' => 'rss', 
	);

	if (!empty($parts[0])) {
		/*
		** Run against know triggers
		*/
		foreach ($triggers as $trigger) {
			if ($parts[0] == $trigger) {
				sgb_url_doTrigger($trigger, $parts);
				return;
			}
		}

		/*
		** Nothing "tripped" our trigger, so we'll try against one of the URL 
		** cases
		*/

		$trip_404 = function_exists('sgb_error_document');

		// Could be /Title or /Section
		if ($partsCount < 2) {
			// Treat as /Section
			$s = (ckEx('section', $parts[0])) ? $parts[0] : null;

			// Must be /Title
			if (!isset($s)) {
				$rs = lookupByTitle($parts[0]);
				$id = (!empty($rs['ID'])) ? $rs['ID'] : null;
				$s  = (!empty($rs['Section'])) ? $rs['Section'] : null;

				// If an article is not found clear the cat. & sec.
				if ($trip_404 == 1 && !isset($id)) {
					$s = null;
					$c = null;
				}
			}
		
		// Could be /ID/Title, /Section/Title or /Section/Category
		} else if ($partsCount < 3) {
			// Treat as /ID/Title
			if (is_numeric($parts[0])) {
				$rs = lookupByID($parts[0]);
				$id = (!empty($rs['ID'])) ? $rs['ID'] : null;
				$s  = (!empty($rs['Section'])) ? $rs['Section'] : null;
			
			// Treat as /Section/Title or /Section/Category
			} else {
				// Might be /Section/Category
				$s  = (ckEx('section', $parts[0])) ? $parts[0] : null;
				$c  = (ckEx('category', $parts[1])) ? $parts[1] : null;

				// Must be /Section/Title
				if (!isset($c)) {
					$rs = sgb_lookupBySectionTitle($s, $parts[1]);
					$id = (!empty($rs['ID'])) ? $rs['ID'] : null;
					$s  = (!isset($s)) ? $rs['Section'] : $s;

					// If neither an article nor a category were found clear  & 
					if ($trip_404 == 1 && !isset($id)) {
						$s = null;
						$c = null;
					}
				}
			}
		
		// Could be /Section/ID/Title (Classic URL) or /Section/Category/Title
		} else if ($partsCount < 4) {
			$s  = (ckEx('section', $parts[0])) ? $parts[0] : null;

			// Must be /Section/ID/Title (Classic URL)
			if (is_numeric($parts[1])) {
				$id = (ckExID($parts[1])) ? $parts[1] : null;

			// Must be /Section/Category/Title
			} else {
				$rs = sgb_lookupBySectionTitle($s, $parts[2]);
				$id = (!empty($rs['ID'])) ? $rs['ID'] : null;
				$s  = (!isset($s)) ? $rs['Section'] : $s;
			}

			// If an article was not found and were tripping a 404, clear  & 
			if ($trip_404 == 1 && !isset($id)) {
				$s = null;
				$c = null;
			}
		
		// Could be /Year/Month/Day/Title
		} else if ($partsCount >= 4) {
			$when = date("Y-m-d", strtotime("$parts[0]-$parts[1]-$parts[2]") + $timeoffset);
			$rs = lookupByDateTitle($when, $parts[3]);
			$id = (!empty($rs['ID'])) ? $rs['ID'] : null;
			$s  = (!empty($rs['Section'])) ? $rs['Section'] : null;

			// If an article was not found and were tripping a 404, clear  & 
			if ($trip_404 == 1 && !isset($id)) {
					$s = null;
					$c = null;
			}
		}

		// Output the final bits
		if (isset($id) || (isset($s) || isset($c))) {
			if (empty($_GET['id']) && empty($_POST['id'])) {
				sgb_url_set('id', $id);
			}

			if (empty($_GET['s']) && empty($_POST['s'])) {
				sgb_url_set('s',  $s);
			}

			if (empty($_GET['c']) && empty($_POST['c'])) {
				sgb_url_set('c',  $c);
			}
		} else if ($trip_404 == 1) {
			sgb_error_document('404');
		}

		return;
	}
}

function sgb_url_set($key = null, $value = null) // void
{
	$_GET[$key]     = $value;
	$_POST[$key]    = $value;
	$_REQUEST[$key] = $value;
}

function sgb_url_doTrigger($trigger = 'none', $parts = array()) // void
{
	switch ($trigger)
	{
		case 'atom':
			include txpath.'/publish/atom.php'; exit(atom());

		case 'rss':
			include txpath.'/publish/rss.php'; exit(rss());
		
		case 'section':
			sgb_url_set('s', ((ckEx('section', $parts[1])) ? $parts[1] : 'default'));
		break;
		
		case 'category':
			sgb_url_set('c', ((ckEx('category', $parts[1])) ? $parts[1] : ''));
		break;
		
		case 'author': // right now this can't handle authors so don't do anything and let the regular stuff handle it
		break;
		
		case 'p':
			sgb_url_set('p', ((is_numeric($parts[1])) ? $parts[1] : ''));
		break;

		case 'file_download':
			sgb_url_set('s', 'file_download');
			sgb_url_set('id', (!empty($parts[1])) ? $parts[1] : '');
		break;
	}
}

function sgb_lookupBySectionTitle($s, $title) // array
{
	return safe_row("ID,Section", 'textpattern', "Section like '".doSlash($s)."' and url_title like '".doSlash($title)."' limit 1", '');
}

sgb_url_checkPath();
";s:3:"md5";s:32:"02bc4f1cdeaf728603ead62fccaf5729";}