<?php
	/*
		Plugin: ob1_title
		URL: http://rise.lewander.com/textpattern/68/ob1-title
		Released under the Creative Common License, http://creativecommons.org/licenses/by-nc-nd/2.0/
	*/
	
	function ob1_title($atts="")
	{
		global $sitename, $id, $c, $q, $parentid, $pg, $s;
		$ob1PatternSite = "/%sitename/i";
		$ob1PatternSection = "/%section/i";
		$ob1PatternCategory = "/%category/i";
		$ob1PatternArticle = "/%article/i";

		// Get ArticleID (if any)
		$fetchID = "";

		if ( !$parentid && $id ) {
			$fetchID = $id;
		} else if ( $parentid ) {
			$fetchID = $parentid;
		}

		extract(lAtts(array(
			"order"=>"%sitename,%article",
			"separator"=>" - ",
			"searchcriteria"=>"1",
			"searchword"=>" for ",
		),$atts));

		if($q){
			return gTxt("search_results").$searchword." &quot;".$q."&quot;".$separator.$sitename;
		}else{
			// check what the order attribute contains
			preg_match($ob1PatternSite,$order,$ob1MatchSite,PREG_OFFSET_CAPTURE);
			preg_match($ob1PatternSection,$order,$ob1MatchSection,PREG_OFFSET_CAPTURE);
			preg_match($ob1PatternCategory,$order,$ob1MatchCategory,PREG_OFFSET_CAPTURE);
			preg_match($ob1PatternArticle,$order,$ob1MatchArticle,PREG_OFFSET_CAPTURE);

			// if $order contains sitename, replace it
			if(count($ob1MatchSite[0])>0){
				$order = preg_replace($ob1PatternSite,$sitename,$order);
				unset($ob1PatternSite);
				unset($ob1MatchSite);
			}

			// if $order contains section, replace it
			if(count($ob1MatchSection[0])>0){
				if(empty($s)||$s=="default"){
					$ob1SectionName = ""; // set to empty since there is no section name available
				}else{
					// check for section title
					$rs = safe_row("title","txp_section","name = '$s' limit 1");
					$ob1SectionName = (empty($rs["title"])) ? $s : $rs["title"];
				}
				$order = preg_replace($ob1PatternSection,$ob1SectionName,$order);
				unset($ob1SectionName);
				unset($ob1PatternSection);
				unset($ob1MatchSection);
			}

			// if $order contains category, replace it
			if(count($ob1MatchCategory[0])>0){
				// get the category name(s)
				if(!empty($c)){
					$rs = safe_row("title","txp_category","name = '$c' limit 1");
					$ob1CategoryName = (empty($rs["title"])) ? $c : $rs["title"];
				}else{
					if(!empty($fetchID)){
						$rs = safe_row("category1, category2","textpattern","id = '$fetchID' limit 1");
						$ob1CategoryOne = $rs["category1"];
						$ob1CategoryTwo = $rs["category2"];
						unset($rs);
						if(!empty($ob1CategoryOne)){
							$rs = safe_row("title","txp_category","name = '$ob1CategoryOne' limit 1");
							$ob1CategoryOne = $rs["title"];
							unset($rs);
						}
						if(!empty($ob1CategoryTwo)){
							$rs = safe_row("title","txp_category","name = '$ob1CategoryTwo' limit 1");
							$ob1CategoryTwo = $rs["title"];
							unset($rs);
						}
						$ob1CategoryName = (empty($ob1CategoryOne)) ? "" : $ob1CategoryOne;
						if(!empty($ob1CategoryTwo)){
							$ob1CategoryName = (empty($ob1CategoryOne)) ? $ob1CategoryTwo : $ob1CategoryName.", ".$ob1CategoryTwo;
						}
					}else{
						$rs = safe_row("title","txp_category","name = '$c' limit 1");
						$ob1CategoryName = (empty($rs["title"])) ? $c : $rs["title"];
					}
				}
				$order = preg_replace($ob1PatternCategory,$ob1CategoryName,$order);
				unset($ob1CategoryName);
				unset($ob1PatternCategory);
				unset($ob1MatchCategory);
			}

			// if $order contains article, replace it
			if(count($ob1MatchArticle[0])>0){
				// get the article name
				if(!empty($fetchID)){
					$rs = safe_row("title","textpattern","id = '$fetchID' limit 1");
					$ob1ArticleName = (empty($rs["title"])) ? "" : $rs["title"];
				}else{
					$ob1ArticleName = "";
				}
				$order = preg_replace($ob1PatternArticle,$ob1ArticleName,$order);
				unset($ob1ArticleName);
				unset($ob1PatternArticle);
				unset($ob1MatchArticle);
			}
			unset($fetchID);
			$arrOb1Order = explode(",",$order);
			unset($order);
			for($i=0;$i<count($arrOb1Order);$i++){
				if(!empty($arrOb1Order[$i])) $arrOb1OrderNew[] = $arrOb1Order[$i];
			}
			unset($arrOb1Order);
			for($i=0;$i<count($arrOb1OrderNew);$i++){
				if($i==0){
					$out[] = $arrOb1OrderNew[$i];
				}else{
					$out[] = $separator.$arrOb1OrderNew[$i];
				}
			}
			unset($arrOb1OrderNew);
			return join("", $out);
		}
	}
?>