a:8:{s:4:"name";s:17:"tpy_google_search";s:7:"version";s:3:"0.1";s:11:"description";s:41:"Search replacement with Google's SOAP API";s:6:"author";s:20:"Don Sch&#246;nknecht";s:10:"author_uri";s:16:"http://tpyo.net/";s:4:"help";s:13837:"
	<h1>Google search plugin by Don Sch&#246;nknecht</h1>
	<div><ul>
		<li><b><a href="#usage">Usage</a></b></li>
		<li><b><a href="#installation">Installation</a> *NB*</b></li>
	</ul></div>
	<hr />
	<h2><a name="usage">Usage</a></h2>
	<div><ul>
		<li><a href="#tpy_google_search">&lt;txp:tpy_google_search /&gt;</a> - displays Google search results</li>
		<li><a href="#tpy_google_search_input">&lt;txp:tpy_google_search_input /&gt;</a> - displays search input form</li>
		<li><a href="#tpy_google_search_nav">&lt;txp:tpy_google_search_nav /&gt;</a> - displays previous/next browse buttons</li>
	</ul></div>
	<hr />
	<h3><a name="tpy_google_search">tpy_google_search</a></h3>
	<p>Generates and displays search results from Google</p>
	<p>&lt;txp:tpy_google_search form="search_results" apikey="-<a target="_blank" href="https://www.google.com/accounts/NewAccount?continue=http://api.google.com/createkey&followup=http://api.google.com/createkey">get-one-here</a>-" /&gt;</p>
	<div>Attributes:<ul>
		<li><i>apikey</i> - API key from Google *required*</li>
		<li><i>form</i> - Applies a form, <b>default:</b> "search_results"</li>
		<li><i>wraptag</i> - Tag to wrap search results with, <b>default:</b> "ul"</li>
		<li><i>limit</i> - Result limit, <b>default:</b> 10 (maximum is 10)</li>
		<li><i>site</i> - Site hostname to search, <b>default:</b> Site URL under preferences</li>
	</ul></div>
	<div>The following tags can be used in search result forms: (these are standard to textpattern but do not include &lt;txp:search_result_date /&gt;)<ul>
		<li><i>&lt;txp:search_result_title /&gt;</i></li>
		<li><i>&lt;txp:search_result_excerpt /&gt;</i></li>
		<li><i>&lt;txp:search_result_url /&gt;</i></li>
	</ul></div>
	<hr />
	<h3><a name="tpy_google_search_input">tpy_google_search_input</a></h3>
	<p>A replacement for &lt;txp:search_input /&gt; - generates a form for use with the plugin</p>
	<p>&lt;txp:tpy_google_search_input label="Search" button="Submit" /&gt;</p>
	<div>Attributes:<ul>
		<li><i>label</i> - Label for the search input field, <b>default:</b> "keywords:"</li>
		<li><i>wraptag</i> - Tag to wrap the search form with, <b>default:</b> "div"</li>
		<li><i>button</i> - Label for the next button, <b>default:</b> "search"</li>
		<li><i>onsubmit</i> - &lt;form onsubmit="" /&gt;</li>
	</ul></div>
	<hr />
	<h3><a name="tpy_google_search_nav">tpy_google_search_nav</a></h3>
	<p>Generates a (GET) form with previous/next buttons for browsing result pages</p>
	<p><b>NOTE: This tag must be placed <u>AFTER</u> &lt;txp:tpy_google_search /&gt; or it will not work</b></p>
	<p>&lt;txp:tpy_google_search_nav prev="Previous page" next="Next page" /&gt;</p>
	<div>Attributes:<ul>
		<li><i>prev</i> - Label for the previous button, <b>default:</b> "previous"</li>
		<li><i>next</i> - Label for the next button, <b>default:</b> "next"</li>
	</ul></div>
	<hr />
	<h2>Requirements</h2>
	<div><ul>
		<li><a title="Click here to view diagnostics" href="/textpattern/index.php?event=diag&step=high">PHP 5 with the php_soap extension</a></li>
		<li>A page to deal with queries to the URL /search?q=<i>search-string</i></li>
	</ul></div>
	<hr />
	<h2><a name="installation">Installation</a></h2>
	<h3>Step 1</h3>
	<p><a target="_blank" href="https://www.google.com/accounts/NewAccount?continue=http://api.google.com/createkey&followup=http://api.google.com/createkey">Obtain a Google API key</a>
	<br />(this is used for &lt;txp:tpy_google_search apikey="-- key here --" /&gt;)</p>
	<h3>Step 2</h3>
	<p>Create a file named <b>GoogleSearch.wsdl</b> with the following text (<span style="color:brown">in brown</span>) and place it in the textpattern/lib directory (<b>textpattern/lib/GoogleSearch.wsdl</b>)</p>
	<p><pre style="color:brown">
&lt;?xml version=&quot;1.0&quot;?&gt;

&lt;!-- WSDL description of the Google Web APIs.
     The Google Web APIs are in beta release. All interfaces are subject to
     change as we refine and extend our APIs. Please see the terms of use
     for more information. --&gt;

&lt;!-- Revision 2002-08-16 --&gt;

&lt;definitions name=&quot;GoogleSearch&quot;
             targetNamespace=&quot;urn:GoogleSearch&quot;
             xmlns:typens=&quot;urn:GoogleSearch&quot;
             xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot;
             xmlns:soap=&quot;http://schemas.xmlsoap.org/wsdl/soap/&quot;
             xmlns:soapenc=&quot;http://schemas.xmlsoap.org/soap/encoding/&quot;
             xmlns:wsdl=&quot;http://schemas.xmlsoap.org/wsdl/&quot;
             xmlns=&quot;http://schemas.xmlsoap.org/wsdl/&quot;&gt;

  &lt;!-- Types for search - result elements, directory categories --&gt;

  &lt;types&gt;
    &lt;xsd:schema xmlns=&quot;http://www.w3.org/2001/XMLSchema&quot; 
                targetNamespace=&quot;urn:GoogleSearch&quot;&gt;
            
      &lt;xsd:complexType name=&quot;GoogleSearchResult&quot;&gt;
        &lt;xsd:all&gt;
          &lt;xsd:element name=&quot;documentFiltering&quot;           type=&quot;xsd:boolean&quot;/&gt;
          &lt;xsd:element name=&quot;searchComments&quot;              type=&quot;xsd:string&quot;/&gt;
          &lt;xsd:element name=&quot;estimatedTotalResultsCount&quot;  type=&quot;xsd:int&quot;/&gt;
          &lt;xsd:element name=&quot;estimateIsExact&quot;             type=&quot;xsd:boolean&quot;/&gt;
          &lt;xsd:element name=&quot;resultElements&quot;              type=&quot;typens:ResultElementArray&quot;/&gt;
          &lt;xsd:element name=&quot;searchQuery&quot;                 type=&quot;xsd:string&quot;/&gt;
          &lt;xsd:element name=&quot;startIndex&quot;                  type=&quot;xsd:int&quot;/&gt;
          &lt;xsd:element name=&quot;endIndex&quot;                    type=&quot;xsd:int&quot;/&gt;
          &lt;xsd:element name=&quot;searchTips&quot;                  type=&quot;xsd:string&quot;/&gt;
          &lt;xsd:element name=&quot;directoryCategories&quot;         type=&quot;typens:DirectoryCategoryArray&quot;/&gt;
          &lt;xsd:element name=&quot;searchTime&quot;                  type=&quot;xsd:double&quot;/&gt;
        &lt;/xsd:all&gt;
      &lt;/xsd:complexType&gt;

      &lt;xsd:complexType name=&quot;ResultElement&quot;&gt;
        &lt;xsd:all&gt;
          &lt;xsd:element name=&quot;summary&quot; type=&quot;xsd:string&quot;/&gt;
          &lt;xsd:element name=&quot;URL&quot; type=&quot;xsd:string&quot;/&gt;
          &lt;xsd:element name=&quot;snippet&quot; type=&quot;xsd:string&quot;/&gt;
          &lt;xsd:element name=&quot;title&quot; type=&quot;xsd:string&quot;/&gt;
          &lt;xsd:element name=&quot;cachedSize&quot; type=&quot;xsd:string&quot;/&gt;
          &lt;xsd:element name=&quot;relatedInformationPresent&quot; type=&quot;xsd:boolean&quot;/&gt;
          &lt;xsd:element name=&quot;hostName&quot; type=&quot;xsd:string&quot;/&gt;
          &lt;xsd:element name=&quot;directoryCategory&quot; type=&quot;typens:DirectoryCategory&quot;/&gt;
          &lt;xsd:element name=&quot;directoryTitle&quot; type=&quot;xsd:string&quot;/&gt;
        &lt;/xsd:all&gt;
      &lt;/xsd:complexType&gt;
  
      &lt;xsd:complexType name=&quot;ResultElementArray&quot;&gt;
        &lt;xsd:complexContent&gt;
          &lt;xsd:restriction base=&quot;soapenc:Array&quot;&gt;
             &lt;xsd:attribute ref=&quot;soapenc:arrayType&quot; wsdl:arrayType=&quot;typens:ResultElement[]&quot;/&gt;
          &lt;/xsd:restriction&gt;
        &lt;/xsd:complexContent&gt;
      &lt;/xsd:complexType&gt;

      &lt;xsd:complexType name=&quot;DirectoryCategoryArray&quot;&gt;
        &lt;xsd:complexContent&gt;
          &lt;xsd:restriction base=&quot;soapenc:Array&quot;&gt;
             &lt;xsd:attribute ref=&quot;soapenc:arrayType&quot; wsdl:arrayType=&quot;typens:DirectoryCategory[]&quot;/&gt;
          &lt;/xsd:restriction&gt;
        &lt;/xsd:complexContent&gt;
      &lt;/xsd:complexType&gt;

      &lt;xsd:complexType name=&quot;DirectoryCategory&quot;&gt;
        &lt;xsd:all&gt;
          &lt;xsd:element name=&quot;fullViewableName&quot; type=&quot;xsd:string&quot;/&gt;
          &lt;xsd:element name=&quot;specialEncoding&quot; type=&quot;xsd:string&quot;/&gt;
        &lt;/xsd:all&gt;
      &lt;/xsd:complexType&gt;

    &lt;/xsd:schema&gt;
  &lt;/types&gt; 

  &lt;!-- Messages for Google Web APIs - cached page, search, spelling. --&gt;
             
  &lt;message name=&quot;doGetCachedPage&quot;&gt;
    &lt;part name=&quot;key&quot;            type=&quot;xsd:string&quot;/&gt;
    &lt;part name=&quot;url&quot;            type=&quot;xsd:string&quot;/&gt;
  &lt;/message&gt;

  &lt;message name=&quot;doGetCachedPageResponse&quot;&gt;
    &lt;part name=&quot;return&quot;         type=&quot;xsd:base64Binary&quot;/&gt;
  &lt;/message&gt;

  &lt;message name=&quot;doSpellingSuggestion&quot;&gt;
    &lt;part name=&quot;key&quot;            type=&quot;xsd:string&quot;/&gt;
    &lt;part name=&quot;phrase&quot;         type=&quot;xsd:string&quot;/&gt;
  &lt;/message&gt;

  &lt;message name=&quot;doSpellingSuggestionResponse&quot;&gt;
    &lt;part name=&quot;return&quot;         type=&quot;xsd:string&quot;/&gt;
  &lt;/message&gt;

  &lt;!-- note, ie and oe are ignored by server; all traffic is UTF-8. --&gt;

  &lt;message name=&quot;doGoogleSearch&quot;&gt;
    &lt;part name=&quot;key&quot;            type=&quot;xsd:string&quot;/&gt;
    &lt;part name=&quot;q&quot;              type=&quot;xsd:string&quot;/&gt;
    &lt;part name=&quot;start&quot;          type=&quot;xsd:int&quot;/&gt;
    &lt;part name=&quot;maxResults&quot;     type=&quot;xsd:int&quot;/&gt;
    &lt;part name=&quot;filter&quot;         type=&quot;xsd:boolean&quot;/&gt;
    &lt;part name=&quot;restrict&quot;       type=&quot;xsd:string&quot;/&gt;
    &lt;part name=&quot;safeSearch&quot;     type=&quot;xsd:boolean&quot;/&gt;
    &lt;part name=&quot;lr&quot;             type=&quot;xsd:string&quot;/&gt;
    &lt;part name=&quot;ie&quot;             type=&quot;xsd:string&quot;/&gt;
    &lt;part name=&quot;oe&quot;             type=&quot;xsd:string&quot;/&gt;
  &lt;/message&gt;

  &lt;message name=&quot;doGoogleSearchResponse&quot;&gt;
    &lt;part name=&quot;return&quot;         type=&quot;typens:GoogleSearchResult&quot;/&gt;           
  &lt;/message&gt;

  &lt;!-- Port for Google Web APIs, &quot;GoogleSearch&quot; --&gt;

  &lt;portType name=&quot;GoogleSearchPort&quot;&gt;

    &lt;operation name=&quot;doGetCachedPage&quot;&gt;
      &lt;input message=&quot;typens:doGetCachedPage&quot;/&gt;
      &lt;output message=&quot;typens:doGetCachedPageResponse&quot;/&gt;
    &lt;/operation&gt;

    &lt;operation name=&quot;doSpellingSuggestion&quot;&gt;
      &lt;input message=&quot;typens:doSpellingSuggestion&quot;/&gt;
      &lt;output message=&quot;typens:doSpellingSuggestionResponse&quot;/&gt;
    &lt;/operation&gt;

    &lt;operation name=&quot;doGoogleSearch&quot;&gt;
      &lt;input message=&quot;typens:doGoogleSearch&quot;/&gt;
      &lt;output message=&quot;typens:doGoogleSearchResponse&quot;/&gt;
    &lt;/operation&gt;

  &lt;/portType&gt;


  &lt;!-- Binding for Google Web APIs - RPC, SOAP over HTTP --&gt;

  &lt;binding name=&quot;GoogleSearchBinding&quot; type=&quot;typens:GoogleSearchPort&quot;&gt;
    &lt;soap:binding style=&quot;rpc&quot;
                  transport=&quot;http://schemas.xmlsoap.org/soap/http&quot;/&gt;

    &lt;operation name=&quot;doGetCachedPage&quot;&gt;
      &lt;soap:operation soapAction=&quot;urn:GoogleSearchAction&quot;/&gt;
      &lt;input&gt;
        &lt;soap:body use=&quot;encoded&quot;
                   namespace=&quot;urn:GoogleSearch&quot;
                   encodingStyle=&quot;http://schemas.xmlsoap.org/soap/encoding/&quot;/&gt;
      &lt;/input&gt;
      &lt;output&gt;
        &lt;soap:body use=&quot;encoded&quot;
                   namespace=&quot;urn:GoogleSearch&quot;
                   encodingStyle=&quot;http://schemas.xmlsoap.org/soap/encoding/&quot;/&gt;
      &lt;/output&gt;
    &lt;/operation&gt;

    &lt;operation name=&quot;doSpellingSuggestion&quot;&gt;
      &lt;soap:operation soapAction=&quot;urn:GoogleSearchAction&quot;/&gt;
      &lt;input&gt;
        &lt;soap:body use=&quot;encoded&quot;
                   namespace=&quot;urn:GoogleSearch&quot;
                   encodingStyle=&quot;http://schemas.xmlsoap.org/soap/encoding/&quot;/&gt;
      &lt;/input&gt;
      &lt;output&gt;
        &lt;soap:body use=&quot;encoded&quot;
                   namespace=&quot;urn:GoogleSearch&quot;
                   encodingStyle=&quot;http://schemas.xmlsoap.org/soap/encoding/&quot;/&gt;
      &lt;/output&gt;
    &lt;/operation&gt;

    &lt;operation name=&quot;doGoogleSearch&quot;&gt;
      &lt;soap:operation soapAction=&quot;urn:GoogleSearchAction&quot;/&gt;
      &lt;input&gt;
        &lt;soap:body use=&quot;encoded&quot;
                   namespace=&quot;urn:GoogleSearch&quot;
                   encodingStyle=&quot;http://schemas.xmlsoap.org/soap/encoding/&quot;/&gt;
      &lt;/input&gt;
      &lt;output&gt;
        &lt;soap:body use=&quot;encoded&quot;
                   namespace=&quot;urn:GoogleSearch&quot;
                   encodingStyle=&quot;http://schemas.xmlsoap.org/soap/encoding/&quot;/&gt;
      &lt;/output&gt;
    &lt;/operation&gt;
  &lt;/binding&gt;

  &lt;!-- Endpoint for Google Web APIs --&gt;
  &lt;service name=&quot;GoogleSearchService&quot;&gt;
    &lt;port name=&quot;GoogleSearchPort&quot; binding=&quot;typens:GoogleSearchBinding&quot;&gt;
      &lt;soap:address location=&quot;http://api.google.com/search/beta2&quot;/&gt;
    &lt;/port&gt;
  &lt;/service&gt;

&lt;/definitions&gt;
	</pre></p>
";s:4:"code";s:4670:"

/* 
*  tpy_google_search
*  v0.1, 9th May 2005 by Don Schonknecht
*  Released under the Creative Common License:
*  http://creativecommons.org/licenses/by-nc-nd/2.0/
*/

function tpy_google_search(&$atts) {
	global $siteurl, $q, $search;

	// Check plugin requirements
	if (!isset($atts['apikey']) || strlen($atts['apikey']) == 0) 
	return '<p>apiKey attribute not defined, please see plugin help for more information.</p>';
	if (!file_exists(txpath.'/lib/GoogleSearch.wsdl')) 
	return '<p>'.txpath.'/lib/GoogleSearch.wsdl does not exist, please see plugin help for installing this file.</p>';
	if (!extension_loaded('soap')) 
	return '<p>php_soap extension required for tpy_google_search plugin</p>';

	if (!isset($atts['form'])) $atts['form'] = 'search_results';
	if (!isset($atts['wraptag'])) $atts['wraptag'] = 'ul';
	if (!isset($atts['limit']) || intVal($atts['limit']) > 10 || intVal($atts['limit']) == 0) $atts['limit'] = 10;
	if (!isset($atts['site'])) $atts['site'] =& $siteurl;

	$query = $q.' site:'.$atts['site'];
	$start = isset($_GET['offset']) ? intVal($_GET['offset']) : 0;
	if (($search = tpy_google_search__getResults($atts['apikey'], 
	$query, $start, $atts['limit'])) === false)
	return '<p>Your search did not return any results.</p>';

	if (sizeof($search->resultElements) == 0)
	return '<p id="searchInfo">Your search did not return any results.</p>';

	// $search->searchTips, $search->searchComments
	$search->hasPrev = $search->startIndex > 1 ? true : false;
	$search->hasNext = $search->estimatedTotalResultsCount > $search->endIndex ? true : false;
	$search->searchQuery = str_replace(' site:'.$atts['site'], '', $search->searchQuery);

	$output = '<p id="searchInfo">Results <b>'.$search->startIndex.'</b> - <b>'.
	$search->endIndex.'</b> of about <b>'.$search->estimatedTotalResultsCount.'</b>'.
	' for <b>'.$search->searchQuery.'</b> ('.number_format($search->searchTime, 2).' seconds)</p>';

	$output .= '<'.$atts['wraptag'].'>'.n;
	$form = fetch('Form', 'txp_form', 'name', $atts['form']);
	foreach ($search->resultElements as $result) {
		$row = str_replace('<txp:search_result_title />', 
		'<a href="'.$result->URL.'">'.$result->title.'</a>', $form);
		$row = str_replace('<txp:search_result_excerpt />', $result->snippet, $row);
		$row = str_replace('<txp:search_result_url />', $result->URL, $row);
		$output .= n.$row;
	}
	$output .= '</'.$atts['wraptag'].'>'.n;
	return $output;
}

function tpy_google_search_nav(&$atts) {
	global $search;
	if ($search == false || (!$search->hasPrev && !$search->hasNext)) return '';
	extract(lAtts(array(
		'next' => 'next',
		'prev' => 'previous'
	), $atts));

	$out = '<form action="/search" method="get">';
	$out .= '<input type="hidden" name="q" value="'.$search->searchQuery.'">';
	if ($search->hasPrev) $out .= '<button type="submit" name="offset" value="'.($search->startIndex - 11).'">'.$prev.'</button>&#160;';
	if ($search->hasNext) $out .= '<button type="submit" name="offset" value="'.$search->endIndex.'">'.$next.'</button>';
	$out .= '</form>';
	return $out;
}

function tpy_google_search_input(&$atts) {
	global $q;
	extract(lAtts(array(
		'label'   => 'keywords:',
		'wraptag' => 'div',
		'button'  => 'search',
		'onsubmit' => "return document.getElementById('searchString').value ? true : false"
	), $atts));

	$out = '<'.$wraptag.' id="search"><form action="/search" method="get" onsubmit="'.$onsubmit.'">';
	$out .= '<label for="searchString">'.$label.'</label>&#160;';
	$out .= '<input type="text" id="searchString" name="q" maxlength="200" value="'.$q.'" />';
	$out .= '&#160;<button type="submit">'.$button.'</button/></form></'.$wraptag.'>';
	return $out;
}

function tpy_google_search__getResults(&$apiKey, &$query, &$start, &$limit) {
	$client = new SoapClient(txpath.'/lib/GoogleSearch.wsdl');
	try {
		if (($search = $client->doGoogleSearch($apiKey, $query, $start, $limit, 
		'false', '', 'false', '', 'latin1', 'latin1')) !== false) {
			foreach ($search->resultElements as $key => $result) {
				if (strlen($result->directoryCategory->fullViewableName) > 0)
					$search->resultElements[$key]->directory = str_replace('Top/', '', $result->directoryCategory->fullViewableName);
				else 
					$search->resultElements[$key]->directory = false;
				unset(
					$search->resultElements[$key]->directoryCategory,
					$search->resultElements[$key]->hostName,
					$search->resultElements[$key]->relatedInformationPresent
				);
				$search->resultElements[$key]->snippet = str_replace('<br>', '', $result->snippet);
			}
		}
		return $search;
	} catch (SoapFault $e) {
		return false;
	}
}


";s:3:"md5";s:32:"42d2f30a936c5febc074110dda0bfde4";}