diff --git a/administrator/components/com_admin/script.php b/administrator/components/com_admin/script.php index 3656960988..8e8e58d3aa 100644 --- a/administrator/components/com_admin/script.php +++ b/administrator/components/com_admin/script.php @@ -170,7 +170,6 @@ protected function updateManifestCaches() $extensions[] = array('plugin', 'joomla', 'extension', 0); $extensions[] = array('plugin', 'joomla', 'content', 0); $extensions[] = array('plugin', 'languagecode', 'system', 0); - $extensions[] = array('plugin', 'recaptcha', 'captcha', 0); $extensions[] = array('plugin', 'categories', 'finder', 0); $extensions[] = array('plugin', 'content', 'finder', 0); $extensions[] = array('plugin', 'tags', 'finder', 0); diff --git a/administrator/language/en-GB/en-GB.plg_captcha_recaptcha.ini b/administrator/language/en-GB/en-GB.plg_captcha_recaptcha.ini deleted file mode 100644 index 6ba182347e..0000000000 --- a/administrator/language/en-GB/en-GB.plg_captcha_recaptcha.ini +++ /dev/null @@ -1,49 +0,0 @@ -; Joomla! Project -; Copyright (C) 2005 - 2014 Open Source Matters. All rights reserved. -; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php -; Note : All ini files need to be saved as UTF-8 - -PLG_CAPTCHA_RECAPTCHA_XML_DESCRIPTION="This CAPTCHA plugin uses the reCAPTCHA service to prevent spammers while it helps to digitize books, newspapers and old radio shows. To get a public and private key for your domain, go to http://www.google.com/recaptcha. To use this for new account registration, go to Options in the User Manager and select Captcha - reCaptcha as the Captcha." -PLG_CAPTCHA_RECAPTCHA="Captcha - ReCaptcha" - -; Params -PLG_RECAPTCHA_PUBLIC_KEY_LABEL="Public Key" -PLG_RECAPTCHA_PUBLIC_KEY_DESC="Used in the JavaScript code that is served to your users. See the plugin description for instructions on getting a public key." -PLG_RECAPTCHA_PRIVATE_KEY_LABEL="Private Key" -PLG_RECAPTCHA_PRIVATE_KEY_DESC="Used in the communication between your server and the ReCaptha server. Be sure to keep it a secret. See the plugin description for instructions on getting a private key." -PLG_RECAPTCHA_THEME_LABEL="Theme" -PLG_RECAPTCHA_THEME_DESC="Defines which theme to use for reCAPTCHA." -PLG_RECAPTCHA_THEME_RED="Red" -PLG_RECAPTCHA_THEME_WHITE="White" -PLG_RECAPTCHA_THEME_BLACKGLASS="BlackGlass" -PLG_RECAPTCHA_THEME_CLEAN="Clean" -PLG_RECAPTCHA_LANG_LABEL="Language" -PLG_RECAPTCHA_LANG_DESC="Select the language for the reCAPTCHA. If default is set and the language file has a custom translation, it will be used." - -; Error messages -PLG_RECAPTCHA_ERROR_NO_PRIVATE_KEY="ReCaptcha plugin needs a private key to be set in its parameters. Please contact a site administrator." -PLG_RECAPTCHA_ERROR_NO_PUBLIC_KEY="ReCaptcha plugin needs a public key to be set in its parameters. Please contact a site administrator." -PLG_RECAPTCHA_ERROR_EMPTY_SOLUTION="Empty solution not allowed." -PLG_RECAPTCHA_ERROR_NO_IP="For security reasons, you must pass the remote ip address to reCAPTCHA" -PLG_RECAPTCHA_ERROR_UNKNOWN="Unknown error." -PLG_RECAPTCHA_ERROR_INVALID_SITE_PUBLIC_KEY="We weren't able to verify the public key." -PLG_RECAPTCHA_ERROR_INVALID_SITE_PRIVATE_KEY="We weren't able to verify the private key." -PLG_RECAPTCHA_ERROR_INVALID_REQUEST_COOKIE="The challenge parameter of the verify script was incorrect." -PLG_RECAPTCHA_ERROR_INCORRECT_CAPTCHA_SOL="The CAPTCHA solution was incorrect." -PLG_RECAPTCHA_ERROR_VERIFY_PARAMS_INCORRECT="The parameters to verify were incorrect, make sure you are passing all the required parameters." -PLG_RECAPTCHA_ERROR_INVALID_REFERRER="reCAPTCHA API keys are tied to a specific domain name for security reasons." -PLG_RECAPTCHA_ERROR_RECAPTCHA_NOT_REACHABLE="Unable to contact the reCAPTCHA verify server." - -; Uncomment(remove the ";" from the beginning of the line) the following lines if reCAPTCHA is not available in your language -; When uncommenting, do NOT translate PLG_RECAPTCHA_CUSTOM_LANG -; As of 01/01/2012, the following languages do not need translation: en, nl, fr, de, pt, ru, es, tr -;PLG_RECAPTCHA_CUSTOM_LANG="true" -;PLG_RECAPTCHA_INSTRUCTIONS_VISUAL="Type the two words:" -;PLG_RECAPTCHA_INSTRUCTIONS_AUDIO="Type what you hear:" -;PLG_RECAPTCHA_PLAY_AGAIN="Play sound again" -;PLG_RECAPTCHA_CANT_HEAR_THIS="Download sound as MP3" -;PLG_RECAPTCHA_VISUAL_CHALLENGE="Get a visual challenge" -;PLG_RECAPTCHA_AUDIO_CHALLENGE="Get an audio challenge" -;PLG_RECAPTCHA_REFRESH_BTN="Get a new challenge" -;PLG_RECAPTCHA_HELP_BTN="Help" -;PLG_RECAPTCHA_INCORRECT_TRY_AGAIN="Incorrect. Try again." diff --git a/administrator/language/en-GB/en-GB.plg_captcha_recaptcha.sys.ini b/administrator/language/en-GB/en-GB.plg_captcha_recaptcha.sys.ini deleted file mode 100644 index dc20fd6ba5..0000000000 --- a/administrator/language/en-GB/en-GB.plg_captcha_recaptcha.sys.ini +++ /dev/null @@ -1,7 +0,0 @@ -; Joomla! Project -; Copyright (C) 2005 - 2014 Open Source Matters. All rights reserved. -; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php -; Note : All ini files need to be saved as UTF-8 - -PLG_CAPTCHA_RECAPTCHA_XML_DESCRIPTION="This CAPTCHA plugin uses the reCAPTCHA service to prevent spammers while it helps to digitize books, newspapers and old radio shows. To get a public and private key for your domain, go to http://www.google.com/recaptcha. To use this for new account registration, go to Options in the User Manager and select Captcha - reCaptcha as the Captcha." -PLG_CAPTCHA_RECAPTCHA="Captcha - ReCaptcha" diff --git a/administrator/language/en-GB/install.xml b/administrator/language/en-GB/install.xml index 4866618df7..62c8ca6f0c 100644 --- a/administrator/language/en-GB/install.xml +++ b/administrator/language/en-GB/install.xml @@ -84,8 +84,6 @@ en-GB.plg_authentication_joomla.sys.ini en-GB.plg_authentication_ldap.ini en-GB.plg_authentication_ldap.sys.ini - en-GB.plg_captcha_recaptcha.ini - en-GB.plg_captcha_recaptcha.sys.ini en-GB.plg_content_emailcloak.ini en-GB.plg_content_emailcloak.sys.ini en-GB.plg_content_finder.ini diff --git a/installation/sql/mysql/joomla.sql b/installation/sql/mysql/joomla.sql index 6c11f06c05..aa07d2faec 100644 --- a/installation/sql/mysql/joomla.sql +++ b/installation/sql/mysql/joomla.sql @@ -360,7 +360,6 @@ INSERT INTO `#__extensions` (`extension_id`, `name`, `type`, `element`, `folder` (434, 'plg_extension_joomla', 'plugin', 'joomla', 'extension', 0, 1, 1, 1, '', '', '', '', 0, '0000-00-00 00:00:00', 1, 0), (435, 'plg_content_joomla', 'plugin', 'joomla', 'content', 0, 1, 1, 0, '', '', '', '', 0, '0000-00-00 00:00:00', 0, 0), (436, 'plg_system_languagecode', 'plugin', 'languagecode', 'system', 0, 0, 1, 0, '', '', '', '', 0, '0000-00-00 00:00:00', 10, 0), -(439, 'plg_captcha_recaptcha', 'plugin', 'recaptcha', 'captcha', 0, 0, 1, 0, '', '{"public_key":"","private_key":"","theme":"clean"}', '', '', 0, '0000-00-00 00:00:00', 0, 0), (440, 'plg_system_highlight', 'plugin', 'highlight', 'system', 0, 1, 1, 0, '', '', '', '', 0, '0000-00-00 00:00:00', 7, 0), (441, 'plg_content_finder', 'plugin', 'finder', 'content', 0, 0, 1, 0, '', '', '', '', 0, '0000-00-00 00:00:00', 0, 0), (442, 'plg_finder_categories', 'plugin', 'categories', 'finder', 0, 1, 1, 0, '', '', '', '', 0, '0000-00-00 00:00:00', 1, 0), diff --git a/plugins/captcha/.gitignore b/plugins/captcha/.gitignore new file mode 100644 index 0000000000..e69de29bb2 diff --git a/plugins/captcha/recaptcha/recaptcha.php b/plugins/captcha/recaptcha/recaptcha.php deleted file mode 100644 index b3d650a77c..0000000000 --- a/plugins/captcha/recaptcha/recaptcha.php +++ /dev/null @@ -1,269 +0,0 @@ -_getLanguage(); - $pubkey = $this->params->get('public_key', ''); - $theme = $this->params->get('theme', 'clean'); - - if ($pubkey == null || $pubkey == '') - { - throw new Exception(JText::_('PLG_RECAPTCHA_ERROR_NO_PUBLIC_KEY')); - } - - $server = self::RECAPTCHA_API_SERVER; - - if ($app->isSSLConnection()) - { - $server = self::RECAPTCHA_API_SECURE_SERVER; - } - - JHtml::_('script', $server . '/js/recaptcha_ajax.js'); - $document->addScriptDeclaration('jQuery( document ).ready(function() - { - Recaptcha.create("' . $pubkey . '", "' . $id . '", {theme: "' . $theme . '",' . $lang . 'tabindex: 0});});' - ); - - return true; - } - - /** - * Gets the challenge HTML - * - * @param string $name The name of the field. - * @param string $id The id of the field. - * @param string $class The class of the field. This should be passed as - * e.g. 'class="required"'. - * - * @return string The HTML to be embedded in the form. - * - * @since 2.5 - */ - public function onDisplay($name, $id = 'dynamic_recaptcha_1', $class = '') - { - return '
'; - } - - /** - * Calls an HTTP POST function to verify if the user's guess was correct - * - * @param string $code Answer provided by user. - * - * @return True if the answer is correct, false otherwise - * - * @since 2.5 - */ - public function onCheckAnswer($code) - { - $input = JFactory::getApplication()->input; - $privatekey = $this->params->get('private_key'); - $remoteip = $input->server->get('REMOTE_ADDR', '', 'string'); - $challenge = $input->get('recaptcha_challenge_field', '', 'string'); - $response = $input->get('recaptcha_response_field', '', 'string'); - - // Check for Private Key - if (empty($privatekey)) - { - $this->_subject->setError(JText::_('PLG_RECAPTCHA_ERROR_NO_PRIVATE_KEY')); - - return false; - } - - // Check for IP - if (empty($remoteip)) - { - $this->_subject->setError(JText::_('PLG_RECAPTCHA_ERROR_NO_IP')); - - return false; - } - - // Discard spam submissions - if ($challenge == null || strlen($challenge) == 0 || $response == null || strlen($response) == 0) - { - $this->_subject->setError(JText::_('PLG_RECAPTCHA_ERROR_EMPTY_SOLUTION')); - - return false; - } - - $response = $this->_recaptcha_http_post( - self::RECAPTCHA_VERIFY_SERVER, "/recaptcha/api/verify", - array( - 'privatekey' => $privatekey, - 'remoteip' => $remoteip, - 'challenge' => $challenge, - 'response' => $response - ) - ); - - $answers = explode("\n", $response[1]); - - if (trim($answers[0]) == 'true') - { - return true; - } - else - { - // @todo use exceptions here - $this->_subject->setError(JText::_('PLG_RECAPTCHA_ERROR_' . strtoupper(str_replace('-', '_', $answers[1])))); - - return false; - } - } - - /** - * Encodes the given data into a query string format. - * - * @param array $data Array of string elements to be encoded - * - * @return string Encoded request - * - * @since 2.5 - */ - private function _recaptcha_qsencode($data) - { - $req = ""; - - foreach ($data as $key => $value) - { - $req .= $key . '=' . urlencode(stripslashes($value)) . '&'; - } - - // Cut the last '&' - $req = rtrim($req, '&'); - - return $req; - } - - /** - * Submits an HTTP POST to a reCAPTCHA server. - * - * @param string $host Host name to POST to. - * @param string $path Path on host to POST to. - * @param array $data Data to be POSTed. - * @param int $port Optional port number on host. - * - * @return array Response - * - * @since 2.5 - */ - private function _recaptcha_http_post($host, $path, $data, $port = 80) - { - $req = $this->_recaptcha_qsencode($data); - - $http_request = "POST $path HTTP/1.0\r\n"; - $http_request .= "Host: $host\r\n"; - $http_request .= "Content-Type: application/x-www-form-urlencoded;\r\n"; - $http_request .= "Content-Length: " . strlen($req) . "\r\n"; - $http_request .= "User-Agent: reCAPTCHA/PHP\r\n"; - $http_request .= "\r\n"; - $http_request .= $req; - - $response = ''; - - if (($fs = @fsockopen($host, $port, $errno, $errstr, 10)) == false ) - { - die('Could not open socket'); - } - - fwrite($fs, $http_request); - - while (!feof($fs)) - { - // One TCP-IP packet - $response .= fgets($fs, 1160); - } - - fclose($fs); - $response = explode("\r\n\r\n", $response, 2); - - return $response; - } - - /** - * Get the language tag or a custom translation - * - * @return string - * - * @since 2.5 - */ - private function _getLanguage() - { - $language = JFactory::getLanguage(); - - $tag = explode('-', $language->getTag()); - $tag = $tag[0]; - $available = array('en', 'pt', 'fr', 'de', 'nl', 'ru', 'es', 'tr'); - - if (in_array($tag, $available)) - { - return "lang : '" . $tag . "',"; - } - - // If the default language is not available, let's search for a custom translation - if ($language->hasKey('PLG_RECAPTCHA_CUSTOM_LANG')) - { - $custom[] = 'custom_translations : {'; - $custom[] = "\t" . 'instructions_visual : "' . JText::_('PLG_RECAPTCHA_INSTRUCTIONS_VISUAL') . '",'; - $custom[] = "\t" . 'instructions_audio : "' . JText::_('PLG_RECAPTCHA_INSTRUCTIONS_AUDIO') . '",'; - $custom[] = "\t" . 'play_again : "' . JText::_('PLG_RECAPTCHA_PLAY_AGAIN') . '",'; - $custom[] = "\t" . 'cant_hear_this : "' . JText::_('PLG_RECAPTCHA_CANT_HEAR_THIS') . '",'; - $custom[] = "\t" . 'visual_challenge : "' . JText::_('PLG_RECAPTCHA_VISUAL_CHALLENGE') . '",'; - $custom[] = "\t" . 'audio_challenge : "' . JText::_('PLG_RECAPTCHA_AUDIO_CHALLENGE') . '",'; - $custom[] = "\t" . 'refresh_btn : "' . JText::_('PLG_RECAPTCHA_REFRESH_BTN') . '",'; - $custom[] = "\t" . 'help_btn : "' . JText::_('PLG_RECAPTCHA_HELP_BTN') . '",'; - $custom[] = "\t" . 'incorrect_try_again : "' . JText::_('PLG_RECAPTCHA_INCORRECT_TRY_AGAIN') . '",'; - $custom[] = '},'; - $custom[] = "lang : '" . $tag . "',"; - - return implode("\n", $custom); - } - - // If nothing helps fall back to english - return ''; - } -} diff --git a/plugins/captcha/recaptcha/recaptcha.xml b/plugins/captcha/recaptcha/recaptcha.xml deleted file mode 100644 index 2cda724bdb..0000000000 --- a/plugins/captcha/recaptcha/recaptcha.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - plg_captcha_recaptcha - 3.0.0 - December 2011 - Joomla! Project - admin@joomla.org - www.joomla.org - Copyright (C) 2005 - 2014 Open Source Matters. All rights reserved. - GNU General Public License version 2 or later; see LICENSE.txt - PLG_CAPTCHA_RECAPTCHA_XML_DESCRIPTION - - recaptcha.php - - - -
- - - - - - - - - - -
-
-
-
diff --git a/tests/unit/stubs/database/jos_content.csv b/tests/unit/stubs/database/jos_content.csv index 0a937c7518..794c9b973d 100644 --- a/tests/unit/stubs/database/jos_content.csv +++ b/tests/unit/stubs/database/jos_content.csv @@ -285,12 +285,6 @@
  • A more sustainable and flexible framework for Component and Extension developers
  • Backward compatibility with previous releases of Components, Templates, Modules, and other Extensions
  • ',,'2','9','2011-01-01 00:00:01','100','Joomla','0000-00-00 00:00:00','0','0','0000-00-00 00:00:00','2011-01-01 00:00:01','0000-00-00 00:00:00',,,'{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_readmore":"","show_print_icon":"","show_email_icon":"","show_hits":"","page_title":"","alternative_readmore":"","layout":""}','1','0',,,'1','0','{"robots":"","author":"","rights":"","xreference":""}','0','*', -'68','170','Captcha','captcha','

    The Captcha plugins are used to prevent spam submissions on your forms such as registration, contact and login. You basic installation of Joomla includes one Captcha plugin which leverages the ReCaptcha® service but you may install other plugins connecting to different Captcha systems.

    -

    Default on:

    - -

    Note: ReCaptcha is a the trademark of Google Inc. and is an independent product not associated with or endorsed by the Joomla Project. You will need to register and agree to the Terms of Service at Recaptcha.net to use this plugin. Complete instructions are available if you edit the ReCaptcha plugin in the Plugin Manager.

    ',,'1','25','2011-01-01 00:00:01','100','Joomla','0000-00-00 00:00:00','0','0','0000-00-00 00:00:00','2012-01-17 03:20:45','0000-00-00 00:00:00','{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}','{"urla":"","urlatext":"","targeta":"","urlb":"","urlbtext":"","targetb":"","urlc":"","urlctext":"","targetc":""}','{"show_title":"","link_titles":"","show_intro":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}','1','1',,,'1','0','{"robots":"","author":"","rights":"","xreference":""}','0','*', '69','171','Quick Icons','quick-icons','

    The Quick Icon plugin group is used to provide notification that updates to Joomla! or installed extensions are available and should be applied. These notifications display on your administrator control panel, which is the page you see when you first log in to your site administrator.

    Default on: