PageRenderTime 54ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/wp-plugins/wp-abs/wp-abs.php

http://undolibrary.googlecode.com/
PHP | 186 lines | 107 code | 22 blank | 57 comment | 12 complexity | b55122c79f614a2cf341af11b5d9d8b2 MD5 | raw file
  1. <?php
  2. /*
  3. Plugin Name: Add Browser Search
  4. Plugin URI: http://undolibrary.googlecode.com/svn/trunk/wp-plugins/wp-abs/wp-abs.php
  5. Description: Add you WordPress Blog search to Browser menu. See <a href="options-general.php?page=wp-abs.php">configuration panel</a> for more settings. Visit my Blog <a href="http://www.undolog.com">Undolog.com</a> for others plugin
  6. Version: 1.12
  7. Author: Giovambattista Fazioli
  8. Author URI: http://www.undolog.com/
  9. Disclaimer: Use at your own risk. No warranty expressed or implied is provided.
  10. */
  11. /*
  12. Copyright 2008 Giovambattista Fazioli (email : g.fazioli@undolog.com)
  13. This program is free software; you can redistribute it and/or modify
  14. it under the terms of the GNU General Public License as published by
  15. the Free Software Foundation; either version 2 of the License, or
  16. (at your option) any later version.
  17. This program is distributed in the hope that it will be useful,
  18. but WITHOUT ANY WARRANTY; without even the implied warranty of
  19. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  20. GNU General Public License for more details.
  21. You should have received a copy of the GNU General Public License
  22. along with this program; if not, write to the Free Software
  23. Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  24. */
  25. define('OPENSEARCH_XML', 'opensearch.xml');
  26. define('WPABS_OPTIONSKEY', 'wp_abs_settings');
  27. define('WPABS_VERSION', '1.12');
  28. add_action("wp_head", 'abs_wp_header', 1);
  29. add_action('parse_query', 'abs_parse_query', 1);
  30. // ________________________________________________________________________________ INIT OPTIONS
  31. // setting start default value
  32. $wb_abs_init_options = array(
  33. 'wp_abs_blogname' => get_option( 'blogname' ),
  34. 'wp_abs_description' => get_option( 'blogdescription' ),
  35. 'wp_abs_favicon' => get_option( 'home' ).'/favicon.ico',
  36. 'wp_abs_searchurl' => get_option( 'home' ).'/?s={searchTerms}',
  37. 'wp_abs_searchform' => get_option( 'home' )
  38. );
  39. // add to database
  40. add_option(WPABS_OPTIONSKEY,$wb_abs_init_options,'WP ABS Options');
  41. // retrive: load setting
  42. $wb_abs_options = get_option( WPABS_OPTIONSKEY );
  43. /**
  44. * Add link rel search
  45. */
  46. function abs_wp_header() {
  47. $o = '<!-- Start Of Script Generated By WP-ABS '.WPABS_VERSION.' -->'."\n".
  48. '<link rel="search" type="application/opensearchdescription+xml" href="'.get_option('home').'/'.OPENSEARCH_XML.'" title="'.get_option('blogname').'" />'."\n".
  49. '<!-- End Of Script Generated By WP-ABS '.WPABS_VERSION.' -->'."\n";
  50. echo $o;
  51. }
  52. /**
  53. * Parse the query string
  54. *
  55. * @param Object WP query
  56. */
  57. function abs_parse_query( $query ) {
  58. if( $query->query_vars['pagename'] == OPENSEARCH_XML ) {
  59. add_action('template_redirect', 'abs_template_redirect', 1);
  60. }
  61. }
  62. /**
  63. * Overwrite standard template
  64. */
  65. function abs_template_redirect() {
  66. global $wb_abs_options;
  67. //
  68. ob_end_clean();
  69. //
  70. header("HTTP/1.0 200 OK");
  71. header("Content-type: text/html; charset=utf-8");
  72. //
  73. $o = '<?xml version="1.0" encoding="utf-8"?>'."\n".
  74. '<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/"'."\n".
  75. ' xmlns:moz="http://www.mozilla.org/2006/browser/search/">'."\n".
  76. '<ShortName>'.$wb_abs_options['wp_abs_blogname'].'</ShortName>'."\n".
  77. '<Description>'.$wb_abs_options['wp_abs_description'].'</Description>'."\n".
  78. '<Image height="16" width="16" type="image/x-icon">'.$wb_abs_options['wp_abs_favicon'].'</Image>'."\n".
  79. '<Url type="text/html" method="get" template="'.$wb_abs_options['wp_abs_searchurl'].'"/>'."\n".
  80. '<moz:SearchForm>'.$wb_abs_options['wp_abs_searchform'].'</moz:SearchForm>'."\n".
  81. '</OpenSearchDescription>';
  82. echo $o;
  83. exit();
  84. }
  85. // ________________________________________________________________________________________ OPTIONS
  86. /**
  87. * Add callback for adding options panel
  88. */
  89. function abs_add_options_page() {
  90. if (function_exists('add_options_page')) {
  91. add_options_page('WP Add Browser Search', 'WP Add Browser Search', 8, basename(__FILE__), 'abs_options_subpanel');
  92. }
  93. }
  94. /**
  95. * Draw Option Panel
  96. */
  97. function abs_options_subpanel() {
  98. global $wb_abs_options, $_POST;
  99. //
  100. $any_error = "";
  101. // check for save setting
  102. if( isset($_POST['wp_abs_blogname'] ) ) {
  103. $any_error = 'Your settings have been saved.';
  104. // check any error
  105. if( $_POST['wp_abs_blogname'] == '' ||
  106. $_POST['wp_abs_description'] == '' ||
  107. $_POST['wp_abs_searchurl'] == '' ||
  108. $_POST['wp_abs_searchform'] == '' ) {
  109. $any_error = 'Some field is empty! Check and try again!';
  110. } else {
  111. $wb_abs_options['wp_abs_blogname'] = $_POST['wp_abs_blogname'];
  112. $wb_abs_options['wp_abs_description'] = $_POST['wp_abs_description'];
  113. $wb_abs_options['wp_abs_favicon'] = $_POST['wp_abs_favicon'];
  114. $wb_abs_options['wp_abs_searchurl'] = $_POST['wp_abs_searchurl'];
  115. $wb_abs_options['wp_abs_searchform'] = $_POST['wp_abs_searchform'];
  116. update_option(WPABS_OPTIONSKEY,$wb_abs_options);
  117. }
  118. }
  119. // show error or OK
  120. if( $any_error != '') echo '<div id="message" class="updated fade"><p>' . $any_error . '</p></div>';
  121. // show interface
  122. $o = '<style type="text/css">'.
  123. '.wrap h3 { color: black; background-color: #e5f3ff; padding: 4px 8px; }'.
  124. '</style>'.
  125. '<div class="wrap">'.
  126. '<h2>WP-ABS Settings</h2>'.
  127. '<p><strong>Set some info for OpenSearch file</strong></p>'.
  128. '<form action="" method="post">'.
  129. '<p><label for="wp_abs_blogname">Blog Name: '.
  130. '<input name="wp_abs_blogname" id="wp_abs_blogname" type="text" size="45" value="'.htmlentities($wb_abs_options['wp_abs_blogname']).'" />'.
  131. '</label> (Your blog name)</p>'.
  132. '<p><label for="wp_abs_description">Blog Search Description: '.
  133. '<input name="wp_abs_description" id="wp_abs_description" type="text" size="45" value="'.htmlentities($wb_abs_options['wp_abs_description']).'" />'.
  134. '</label> (Your search engine description)</p>'.
  135. '<p><label for="wp_abs_favicon">Favicon URL: '.
  136. '<input name="wp_abs_favicon" id="wp_abs_favicon" type="text" size="45" value="'.htmlentities($wb_abs_options['wp_abs_favicon']).'" />'.
  137. '</label> optional (Favicon address: used in browser menu )</p>'.
  138. '<hr/><p><label for="wp_abs_searchurl">Search URL: '.
  139. '<input name="wp_abs_searchurl" id="wp_abs_searchurl" type="text" size="65" value="'.htmlentities($wb_abs_options['wp_abs_searchurl']).'" />'.
  140. '</label> (Search URL)</p>'.
  141. '<strong>Note:</strong>'.
  142. '<p>This Search URL can be setting to others URL address, like <strong>Google AdSense for Search</strong> for Examples. '.
  143. 'For do this, look for URL Address Bar in your browser when you search with <strong>Google AdSense for Search</strong> and <strong>Copy the URL</strong>. '.
  144. 'Look for "q" parameter in this string and replace it with q={searchTerms}. That\'s all!'.
  145. '</p>'.
  146. '<hr/><p><label for="wp_abs_searchform">Search Form Page: '.
  147. '<input name="wp_abs_searchform" id="wp_abs_searchform" type="text" size="45" value="'.htmlentities($wb_abs_options['wp_abs_searchform']).'" />'.
  148. '</label> (Page with your search Form)</p>'.
  149. '<p><input type="submit" value="Save" /></p>'.
  150. '</form>'.
  151. '<h3>Support and Donate</h3>'.
  152. '<p>Thanks for using WP Add Browser Search: '.
  153. '<form action="https://www.paypal.com/cgi-bin/webscr" method="post"><input type="hidden" name="cmd" value="_s-xclick"><input type="image" src="http://www.undolog.com/images/paypal.png" border="0" name="submit" alt="PayPal - Il sistema di pagamento online pi? facile e sicuro!"><img alt="" border="0" src="https://www.paypal.com/it_IT/i/scr/pixel.gif" width="1" height="1"><input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----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-----END PKCS7-----"></form>'.
  154. '<h3>Links</h3>'.
  155. '<p>Visit <a target="_blank" href="http://www.undolog.com">Undolog.com</a> for more information about author and WordPress Plugin</a>'.
  156. '</div>';
  157. echo $o;
  158. }
  159. add_action('admin_menu', 'abs_add_options_page');
  160. ?>