SimplePortal

Customization => Blocks and Modifications => Topic started by: Kryzen on August 09, 2011, 09:57:42 AM

Title: gSearch v1.5.1
Post by: Kryzen on August 09, 2011, 09:57:42 AM
Google Search
v1.5.1

gSearch was originally created for Dream Portal, but I decided to port it to SP. This module allows users to use the google search function, which will redirect you to Google's website. The current version is 1.5.1 and I hope to release v1.6 soon.

Installing is very simple. Just create a new PHP code block and use this code:
Code: [Select]
/**
Google Search modification by Dr. Deejay
Module originally created for Dream Portal
Ported to SimplePortal by Dr. Deejay
Thanks to Leekoberries
Version 1.5.1
*/
global $txt, $language, $boardurl;

// Create some new variables
$languages = array();
$gsearch = array();

// Show a list of google domains. Forum language stuff...
$gdomain = array(
'afrikaans' => 'co.za',
'albanian' => 'com/webhp?hl=sq',
'arabic' => 'com/webhp?hl=ar',
'almenian' => 'am',
'dutch' => 'nl',
'english' => 'com',
'english_british' => 'co.uk',
'french' => 'fr',
'german' => 'de',
'russian' => 'ru',
'spanish_es' => 'es',
'spanish_latin' => 'mx',
'swedish' => 'se',
'turkish' => 'com.tr'
);

// Is our custom language available in the list?
if(!isset($gdomain[$language]))
$gdomain[$language] = 'com';

// English language strings
$languages['english-utf8'] = array(
'search_on' => 'Search on ',
'normal' => 'Normal',
'images' => 'Images',
'maps' => 'Maps',
'shopping' => 'Shopping',
'this_site' => 'Search on this site',
'exact' => 'Find exact match'
);

// Dutch language strings
$languages['dutch-utf8'] = array(
'search_on' => 'Zoeken op  ',
'normal' => 'Normaal',
'images' => 'Afbeeldingen',
'maps' => 'Maps',
'shopping' => 'Winkel',
'this_site' => 'Alleen van deze site',
'exact' => 'Letterlijk opzoeken'
);

// Do we have a custom language set?
if(isset($languages[$language . '-utf8']))
$gsearch['txt'] = $languages[$language . '-utf8'];
elseif(isset($languages[$language]))
$gsearch['txt'] = $languages[$language];
else
$gsearch['txt'] = $languages['english-utf8'];

// Echo the form
echo '
<div class="content">' . $gsearch['txt']['search_on'] . '<a href="http://www.google.' . $gdomain[$language] . '">Google</a><br />
<form action="' . $_SERVER['REQUEST_URI'] . '" method="post">
<input style="width: 90%;" name="q" type="text"><br />
<input type="radio" name="type" value="search" checked="checked">' . $gsearch['txt']['normal'] . '<br />
<input type="radio" name="type" value="images">' . $gsearch['txt']['images'] . '<br />
<input type="radio" name="type" value="maps">' . $gsearch['txt']['maps'] . '<br />
<input type="radio" name="type" value="shopping">' . $gsearch['txt']['shopping'] . '<br /><br />
<input type="checkbox" name="exact" /> ' . $gsearch['txt']['exact'] . '<br />
<input type="checkbox" name="this_site" /> ' . $gsearch['txt']['this_site'] . '
<input style="margin-top: 5px;" tabindex="35" class="button_submit" type="submit" value="' . $txt['search'] . '" />
</form>
</div>';

// We posted, so check our inputs
if($_SERVER['REQUEST_METHOD'] === 'POST' and (!empty($_POST['q'])))
{
// Inputs... I dunt laik tem D:<
$input['searchfor'] = str_replace(' ', '+', $_POST['q']);
$input['searchin'] = $_POST['type'];

// Make sure we don't have some invalid types
$supported_types = array(
'search' => true,
'images' => true,
'maps' => true,
'shopping' => true
);

// What is it? ;)
if (!isset($supported_types[$input['searchin']]))
$input['searchin'] = 'search';

// Do we have one of these set?
if(!isset($_POST['type']))
$_POST['type'] = 'search';

// Are we looking for an exact match?
if(isset($_POST['exact']))
$input['searchfor'] = '"' . $input['searchfor'] . '"';

// Perhaps we want to search for something on this site
if(isset($_POST['this_site']))
$input['searchfor'] .= ' site:' . $boardurl;

// Send us to google
$googleurl = 'http://google.' . $gdomain[$language] . '/' . $input['searchin'] . '?q=' . $input['searchfor'];
header("Location: $googleurl");

// Close the script
exit();
}

Enjoy!
Dr. Deejay
Title: Re: gSearch v1.3.2
Post by: Kryzen on March 30, 2012, 01:33:47 PM
1.3.2 released:
! Spanish doesn't exist as a language pack. spanish_es and spanish_latin do.
+ Added support for other languages
! Fixed invalid xHTML
! Don't allow empty search requests
! Fixed security issues
+ Added Google maps support
Title: Re: gSearch v1.3.2
Post by: kachan64 on April 01, 2012, 02:07:47 AM
This mod looks interesting, thanks for sharing!
Title: Re: gSearch v1.3.2
Post by: Kryzen on April 01, 2012, 02:39:54 AM
Thanks and you're welcome :) Glad you like it :)
Title: Re: gSearch v1.3.2
Post by: ccbtimewiz on April 01, 2012, 02:42:42 AM
Might be benefitcal to do this:

Code: (Find) [Select]
$input['searchfor'] = $_POST['q'];
Code: (Replace with) [Select]
$input['searchfor'] = str_replace(' ', '+', $_POST['q']);
Since Google uses plus signs for spaces, and inputting a space in a URL plainly *might* not work all the time.
Title: Re: gSearch v1.3.2
Post by: Kryzen on April 01, 2012, 02:45:49 AM
Thanks, I'll release a new version this afternoon :)
Title: Re: gSearch v1.3.2
Post by: ccbtimewiz on April 01, 2012, 02:45:57 AM
Oh, and I forgot to mention. This portion here:

Code: [Select]
// Make sure we don't have some invalid types
$supported_types = array(
'search' => true,
'images' => true,
'maps' => true
);

You never call this array anywhere, so it doesn't compare to the actual request. You need to check them first, using something such as array_intersect, isset, or other means. I would personally do something like;

Code: [Select]
// Make sure we don't have some invalid types
$supported_types = array(
'search' => true,
'images' => true,
'maps' => true
);

if (!isset($supported_types[$input['searchin']]))
      $input['searchin'] = 'search';
Title: Re: gSearch v1.3.3
Post by: Kryzen on April 01, 2012, 07:56:12 AM
Ok, released version 1.3.3, which fixes the security issues. Thanks Leekoberries :)
Title: Re: gSearch v1.3.3
Post by: Kryzen on April 22, 2012, 12:56:25 PM
Version 1.4 released!

Changelog:
! Fixed small issues in custom themes based on Core
- Cleaned up the code a bit
+ Added support for Google shopping
! Fixed small mistake
+ Added support for exact results.
! Removed some old code that didn't make sense anymore
+ You can now choose to search on the current site

Enjoy :)
Title: Re: gSearch v1.4
Post by: weerforum on April 23, 2012, 04:11:03 AM
I like this.
Can you make it in Dutch ?
Title: Re: gSearch v1.4
Post by: Kryzen on April 23, 2012, 09:00:49 AM
Glad you like it :) Of course, I might even release a 1.5 version today which includes localization support :)
Title: Re: gSearch v1.4
Post by: Kryzen on April 23, 2012, 09:26:17 AM
1.5 released!
! Removed useless setting
+ Added localization support

Enjoy :)
Title: Re: gSearch v1.5
Post by: weerforum on April 23, 2012, 11:28:36 AM
The onely dutch is search (zoek) ?
Title: Re: gSearch v1.5
Post by: Kryzen on April 23, 2012, 11:30:34 AM
The default language of your forum should be Dutch, but I might change it to user language in the future. :)
Title: Re: gSearch v1.5.1
Post by: Kryzen on June 05, 2012, 06:57:54 AM
1.5.1 released!
+ Added utf8 language file support. It's more like a hack actually, but I'm going to rewrite it in the future anyway
Title: Re: gSearch v1.5.1
Post by: Zuki on October 10, 2012, 03:24:43 PM
Hi Dr. Deejay,

I translated in french your gSearch v1.5.1 for my use.
I put it here for the community.

gSearch v1.5.1 French version - Version française.

Greetings,
Zuki.

See attached files.
SimplePortal 2.3.8 © 2008-2024, SimplePortal