Here is a code framework for a mambot that it triggered by the onSearch event (affectionately known as search bots).
<?php
/**
* @version $Id $
* @package Joomla
* @copyright Copyright (C) 2005 Open Source Matters. All rights reserved.
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
* Joomla! is free software and parts of it may contain or be derived from the
* GNU General Public License or other free or open source software licenses.
* See COPYRIGHT.php for copyright notices and details.
*/
/** ensure this file is being included by a parent file */
defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );
$_PLUGINS->registerFunction( 'onSearch', 'botSearchContacts' );
/**
* Search method
* @param array Named 'text' element is the search term
*/
function botSearchContacts( $text ) {
global $database;
$text = trim( $text );
if ($text == '') {
return array();
}
$database->setQuery( "SELECT name AS title,"
. " '' AS created,"
. " misc AS text,"
. " 'Contact' AS section,"
. " CONCAT('index.php?option=com_contact&task=view&id=',id) AS href,"
. " '2' AS browsernav"
. " FROM #__contact_details"
. " INNER JOIN #__categories AS b ON b.id=a.catid AND b.access <='$my->gid'"
. " LEFT JOIN #__sections AS u ON u.id = a.sectionid"
. " WHERE name LIKE '%$text%' OR misc LIKE '%$text%'"
. " AND published='1'"
. " ORDER BY name"
);
return $database->loadObjectList();
}
?>
Firstly you have the usual header and security gate.
$_PLUGINS is a variable exposed to the mambot file when it is included. You don't have to declare it as a global.
It has a method called registerFunction in the form:$_PLUGINS->registerFunction( 'event_name', 'function_name' ); The event available for searching is 'onSearch' so we use this as our event_name.
The
function_name is the function that we want the Joomla script to execute
when it triggers the on search event. You can call it anything you like
as long as you ensure it is unique. For this example we have named the
function botSearchContacts. Functions called by the onSearch event have
a required arguments list:function function_name( string 'search_text' ) The
first argument is the text to search for. The rest of the function
simply queries the database and returns an array of results. The query
must return rows with the following fields:
- title
- A title for the search result
- created
- The date of the row
- section
- Where the row is from
- href:
- The href attribute for the link to the item
- browsernav
- Set to 2 to open in the current window.
|
|
Last Updated ( Thursday, 15 September 2005 )
|