From e5ee3eb6620754571ed65233a822403152e2f4ba Mon Sep 17 00:00:00 2001
From: Rika Fujiwara
Date: Mon, 1 Jun 2015 10:43:29 +0900
Subject: [PATCH 1/4] visual captcha added
---
.../NetCommonsVisualCaptchaComponent.php | 152 ++++++++++++++++++
Locale/jpn/LC_MESSAGES/net_commons.po | 25 +++
Locale/net_commons.pot | 23 +++
Vendor/visual_captcha/audios/12times2.mp3 | Bin 0 -> 8496 bytes
Vendor/visual_captcha/audios/12times2.ogg | Bin 0 -> 14790 bytes
Vendor/visual_captcha/audios/2times10.mp3 | Bin 0 -> 8352 bytes
Vendor/visual_captcha/audios/2times10.ogg | Bin 0 -> 14866 bytes
Vendor/visual_captcha/audios/2times10_ja.m4a | Bin 0 -> 44528 bytes
Vendor/visual_captcha/audios/2times10_ja.mp3 | Bin 0 -> 16531 bytes
Vendor/visual_captcha/audios/2times10_ja.ogg | Bin 0 -> 24926 bytes
Vendor/visual_captcha/audios/4plus1.mp3 | Bin 0 -> 8064 bytes
Vendor/visual_captcha/audios/4plus1.ogg | Bin 0 -> 14248 bytes
Vendor/visual_captcha/audios/4plus3.mp3 | Bin 0 -> 7920 bytes
Vendor/visual_captcha/audios/4plus3.ogg | Bin 0 -> 14141 bytes
Vendor/visual_captcha/audios/5plus1.mp3 | Bin 0 -> 8496 bytes
Vendor/visual_captcha/audios/5plus1.ogg | Bin 0 -> 14857 bytes
Vendor/visual_captcha/audios/5times2.mp3 | Bin 0 -> 8352 bytes
Vendor/visual_captcha/audios/5times2.ogg | Bin 0 -> 14477 bytes
Vendor/visual_captcha/audios/6plus6.mp3 | Bin 0 -> 8352 bytes
Vendor/visual_captcha/audios/6plus6.ogg | Bin 0 -> 14920 bytes
Vendor/visual_captcha/audios/99plus1.mp3 | Bin 0 -> 10080 bytes
Vendor/visual_captcha/audios/99plus1.ogg | Bin 0 -> 16808 bytes
Vendor/visual_captcha/audios/add3to1.mp3 | Bin 0 -> 10512 bytes
Vendor/visual_captcha/audios/add3to1.ogg | Bin 0 -> 17093 bytes
.../audios/addblueandyellow.mp3 | Bin 0 -> 12240 bytes
.../audios/addblueandyellow.ogg | Bin 0 -> 19331 bytes
Vendor/visual_captcha/audios/after2.mp3 | Bin 0 -> 7920 bytes
Vendor/visual_captcha/audios/after2.ogg | Bin 0 -> 14301 bytes
.../visual_captcha/audios/capitaloffrance.mp3 | Bin 0 -> 8640 bytes
.../visual_captcha/audios/capitaloffrance.ogg | Bin 0 -> 26621 bytes
Vendor/visual_captcha/audios/divide4by2.mp3 | Bin 0 -> 14112 bytes
Vendor/visual_captcha/audios/divide4by2.ogg | Bin 0 -> 21784 bytes
.../audios/firstletteralphabet.mp3 | Bin 0 -> 10512 bytes
.../audios/firstletteralphabet.ogg | Bin 0 -> 31842 bytes
Vendor/visual_captcha/audios/milkcolor.mp3 | Bin 0 -> 5904 bytes
Vendor/visual_captcha/audios/milkcolor.ogg | Bin 0 -> 11517 bytes
Vendor/visual_captcha/audios/skycolor.mp3 | Bin 0 -> 6768 bytes
Vendor/visual_captcha/audios/skycolor.ogg | Bin 0 -> 12654 bytes
Vendor/visual_captcha/audios/skynight.mp3 | Bin 0 -> 8784 bytes
Vendor/visual_captcha/audios/skynight.ogg | Bin 0 -> 28174 bytes
Vendor/visual_captcha/audios/sunastar.mp3 | Bin 0 -> 5760 bytes
Vendor/visual_captcha/audios/sunastar.ogg | Bin 0 -> 11479 bytes
Vendor/visual_captcha/audios/thirdmonth.mp3 | Bin 0 -> 8784 bytes
Vendor/visual_captcha/audios/thirdmonth.ogg | Bin 0 -> 27452 bytes
Vendor/visual_captcha/audios/yourobot.mp3 | Bin 0 -> 5328 bytes
Vendor/visual_captcha/audios/yourobot.ogg | Bin 0 -> 10054 bytes
Vendor/visual_captcha/eng/audios.json | 82 ++++++++++
Vendor/visual_captcha/eng/images.json | 150 +++++++++++++++++
Vendor/visual_captcha/images/airplane.png | Bin 0 -> 1746 bytes
Vendor/visual_captcha/images/airplane@2x.png | Bin 0 -> 3664 bytes
Vendor/visual_captcha/images/balloons.png | Bin 0 -> 1496 bytes
Vendor/visual_captcha/images/balloons@2x.png | Bin 0 -> 3203 bytes
Vendor/visual_captcha/images/camera.png | Bin 0 -> 1417 bytes
Vendor/visual_captcha/images/camera@2x.png | Bin 0 -> 2982 bytes
Vendor/visual_captcha/images/car.png | Bin 0 -> 1163 bytes
Vendor/visual_captcha/images/car@2x.png | Bin 0 -> 2370 bytes
Vendor/visual_captcha/images/cat.png | Bin 0 -> 1179 bytes
Vendor/visual_captcha/images/cat@2x.png | Bin 0 -> 2405 bytes
Vendor/visual_captcha/images/chair.png | Bin 0 -> 936 bytes
Vendor/visual_captcha/images/chair@2x.png | Bin 0 -> 1585 bytes
Vendor/visual_captcha/images/clip.png | Bin 0 -> 1759 bytes
Vendor/visual_captcha/images/clip@2x.png | Bin 0 -> 3923 bytes
Vendor/visual_captcha/images/clock.png | Bin 0 -> 2236 bytes
Vendor/visual_captcha/images/clock@2x.png | Bin 0 -> 5117 bytes
Vendor/visual_captcha/images/cloud.png | Bin 0 -> 1050 bytes
Vendor/visual_captcha/images/cloud@2x.png | Bin 0 -> 2154 bytes
Vendor/visual_captcha/images/computer.png | Bin 0 -> 774 bytes
Vendor/visual_captcha/images/computer@2x.png | Bin 0 -> 1394 bytes
Vendor/visual_captcha/images/envelope.png | Bin 0 -> 1199 bytes
Vendor/visual_captcha/images/envelope@2x.png | Bin 0 -> 2803 bytes
Vendor/visual_captcha/images/eye.png | Bin 0 -> 1315 bytes
Vendor/visual_captcha/images/eye@2x.png | Bin 0 -> 2725 bytes
Vendor/visual_captcha/images/flag.png | Bin 0 -> 1046 bytes
Vendor/visual_captcha/images/flag@2x.png | Bin 0 -> 1928 bytes
Vendor/visual_captcha/images/folder.png | Bin 0 -> 1043 bytes
Vendor/visual_captcha/images/folder@2x.png | Bin 0 -> 1987 bytes
Vendor/visual_captcha/images/foot.png | Bin 0 -> 1110 bytes
Vendor/visual_captcha/images/foot@2x.png | Bin 0 -> 2287 bytes
Vendor/visual_captcha/images/graph.png | Bin 0 -> 1375 bytes
Vendor/visual_captcha/images/graph@2x.png | Bin 0 -> 2721 bytes
Vendor/visual_captcha/images/house.png | Bin 0 -> 1185 bytes
Vendor/visual_captcha/images/house@2x.png | Bin 0 -> 2164 bytes
Vendor/visual_captcha/images/key.png | Bin 0 -> 1134 bytes
Vendor/visual_captcha/images/key@2x.png | Bin 0 -> 2229 bytes
Vendor/visual_captcha/images/leaf.png | Bin 0 -> 1678 bytes
Vendor/visual_captcha/images/leaf@2x.png | Bin 0 -> 3839 bytes
Vendor/visual_captcha/images/light-bulb.png | Bin 0 -> 1268 bytes
.../visual_captcha/images/light-bulb@2x.png | Bin 0 -> 2803 bytes
Vendor/visual_captcha/images/lock.png | Bin 0 -> 1342 bytes
Vendor/visual_captcha/images/lock@2x.png | Bin 0 -> 2612 bytes
.../images/magnifying-glass.png | Bin 0 -> 1469 bytes
.../images/magnifying-glass@2x.png | Bin 0 -> 2981 bytes
Vendor/visual_captcha/images/man.png | Bin 0 -> 966 bytes
Vendor/visual_captcha/images/man@2x.png | Bin 0 -> 1745 bytes
Vendor/visual_captcha/images/music-note.png | Bin 0 -> 1611 bytes
.../visual_captcha/images/music-note@2x.png | Bin 0 -> 3620 bytes
Vendor/visual_captcha/images/pants.png | Bin 0 -> 1082 bytes
Vendor/visual_captcha/images/pants@2x.png | Bin 0 -> 1928 bytes
Vendor/visual_captcha/images/pencil.png | Bin 0 -> 1182 bytes
Vendor/visual_captcha/images/pencil@2x.png | Bin 0 -> 2488 bytes
Vendor/visual_captcha/images/printer.png | Bin 0 -> 1195 bytes
Vendor/visual_captcha/images/printer@2x.png | Bin 0 -> 2179 bytes
Vendor/visual_captcha/images/robot.png | Bin 0 -> 1519 bytes
Vendor/visual_captcha/images/robot@2x.png | Bin 0 -> 3210 bytes
Vendor/visual_captcha/images/scissors.png | Bin 0 -> 1707 bytes
Vendor/visual_captcha/images/scissors@2x.png | Bin 0 -> 3780 bytes
Vendor/visual_captcha/images/sunglasses.png | Bin 0 -> 965 bytes
.../visual_captcha/images/sunglasses@2x.png | Bin 0 -> 1889 bytes
Vendor/visual_captcha/images/t-shirt.png | Bin 0 -> 1292 bytes
Vendor/visual_captcha/images/t-shirt@2x.png | Bin 0 -> 2478 bytes
Vendor/visual_captcha/images/tag.png | Bin 0 -> 1306 bytes
Vendor/visual_captcha/images/tag@2x.png | Bin 0 -> 2352 bytes
Vendor/visual_captcha/images/tree.png | Bin 0 -> 1293 bytes
Vendor/visual_captcha/images/tree@2x.png | Bin 0 -> 2341 bytes
Vendor/visual_captcha/images/truck.png | Bin 0 -> 1157 bytes
Vendor/visual_captcha/images/truck@2x.png | Bin 0 -> 2279 bytes
Vendor/visual_captcha/images/umbrella.png | Bin 0 -> 1249 bytes
Vendor/visual_captcha/images/umbrella@2x.png | Bin 0 -> 2457 bytes
Vendor/visual_captcha/images/woman.png | Bin 0 -> 1171 bytes
Vendor/visual_captcha/images/woman@2x.png | Bin 0 -> 2402 bytes
Vendor/visual_captcha/images/world.png | Bin 0 -> 2345 bytes
Vendor/visual_captcha/images/world@2x.png | Bin 0 -> 5372 bytes
Vendor/visual_captcha/ja/audios.json | 26 +++
Vendor/visual_captcha/ja/images.json | 150 +++++++++++++++++
View/Elements/visual_captcha.ctp | 44 +++++
125 files changed, 652 insertions(+)
create mode 100644 Controller/Component/NetCommonsVisualCaptchaComponent.php
create mode 100644 Vendor/visual_captcha/audios/12times2.mp3
create mode 100644 Vendor/visual_captcha/audios/12times2.ogg
create mode 100644 Vendor/visual_captcha/audios/2times10.mp3
create mode 100644 Vendor/visual_captcha/audios/2times10.ogg
create mode 100644 Vendor/visual_captcha/audios/2times10_ja.m4a
create mode 100644 Vendor/visual_captcha/audios/2times10_ja.mp3
create mode 100644 Vendor/visual_captcha/audios/2times10_ja.ogg
create mode 100644 Vendor/visual_captcha/audios/4plus1.mp3
create mode 100644 Vendor/visual_captcha/audios/4plus1.ogg
create mode 100644 Vendor/visual_captcha/audios/4plus3.mp3
create mode 100644 Vendor/visual_captcha/audios/4plus3.ogg
create mode 100644 Vendor/visual_captcha/audios/5plus1.mp3
create mode 100644 Vendor/visual_captcha/audios/5plus1.ogg
create mode 100644 Vendor/visual_captcha/audios/5times2.mp3
create mode 100644 Vendor/visual_captcha/audios/5times2.ogg
create mode 100644 Vendor/visual_captcha/audios/6plus6.mp3
create mode 100644 Vendor/visual_captcha/audios/6plus6.ogg
create mode 100644 Vendor/visual_captcha/audios/99plus1.mp3
create mode 100644 Vendor/visual_captcha/audios/99plus1.ogg
create mode 100644 Vendor/visual_captcha/audios/add3to1.mp3
create mode 100644 Vendor/visual_captcha/audios/add3to1.ogg
create mode 100644 Vendor/visual_captcha/audios/addblueandyellow.mp3
create mode 100644 Vendor/visual_captcha/audios/addblueandyellow.ogg
create mode 100644 Vendor/visual_captcha/audios/after2.mp3
create mode 100644 Vendor/visual_captcha/audios/after2.ogg
create mode 100644 Vendor/visual_captcha/audios/capitaloffrance.mp3
create mode 100644 Vendor/visual_captcha/audios/capitaloffrance.ogg
create mode 100644 Vendor/visual_captcha/audios/divide4by2.mp3
create mode 100644 Vendor/visual_captcha/audios/divide4by2.ogg
create mode 100644 Vendor/visual_captcha/audios/firstletteralphabet.mp3
create mode 100644 Vendor/visual_captcha/audios/firstletteralphabet.ogg
create mode 100644 Vendor/visual_captcha/audios/milkcolor.mp3
create mode 100644 Vendor/visual_captcha/audios/milkcolor.ogg
create mode 100644 Vendor/visual_captcha/audios/skycolor.mp3
create mode 100644 Vendor/visual_captcha/audios/skycolor.ogg
create mode 100644 Vendor/visual_captcha/audios/skynight.mp3
create mode 100644 Vendor/visual_captcha/audios/skynight.ogg
create mode 100644 Vendor/visual_captcha/audios/sunastar.mp3
create mode 100644 Vendor/visual_captcha/audios/sunastar.ogg
create mode 100644 Vendor/visual_captcha/audios/thirdmonth.mp3
create mode 100644 Vendor/visual_captcha/audios/thirdmonth.ogg
create mode 100644 Vendor/visual_captcha/audios/yourobot.mp3
create mode 100644 Vendor/visual_captcha/audios/yourobot.ogg
create mode 100644 Vendor/visual_captcha/eng/audios.json
create mode 100644 Vendor/visual_captcha/eng/images.json
create mode 100644 Vendor/visual_captcha/images/airplane.png
create mode 100644 Vendor/visual_captcha/images/airplane@2x.png
create mode 100644 Vendor/visual_captcha/images/balloons.png
create mode 100644 Vendor/visual_captcha/images/balloons@2x.png
create mode 100644 Vendor/visual_captcha/images/camera.png
create mode 100644 Vendor/visual_captcha/images/camera@2x.png
create mode 100644 Vendor/visual_captcha/images/car.png
create mode 100644 Vendor/visual_captcha/images/car@2x.png
create mode 100644 Vendor/visual_captcha/images/cat.png
create mode 100644 Vendor/visual_captcha/images/cat@2x.png
create mode 100644 Vendor/visual_captcha/images/chair.png
create mode 100644 Vendor/visual_captcha/images/chair@2x.png
create mode 100644 Vendor/visual_captcha/images/clip.png
create mode 100644 Vendor/visual_captcha/images/clip@2x.png
create mode 100644 Vendor/visual_captcha/images/clock.png
create mode 100644 Vendor/visual_captcha/images/clock@2x.png
create mode 100644 Vendor/visual_captcha/images/cloud.png
create mode 100644 Vendor/visual_captcha/images/cloud@2x.png
create mode 100644 Vendor/visual_captcha/images/computer.png
create mode 100644 Vendor/visual_captcha/images/computer@2x.png
create mode 100644 Vendor/visual_captcha/images/envelope.png
create mode 100644 Vendor/visual_captcha/images/envelope@2x.png
create mode 100644 Vendor/visual_captcha/images/eye.png
create mode 100644 Vendor/visual_captcha/images/eye@2x.png
create mode 100644 Vendor/visual_captcha/images/flag.png
create mode 100644 Vendor/visual_captcha/images/flag@2x.png
create mode 100644 Vendor/visual_captcha/images/folder.png
create mode 100644 Vendor/visual_captcha/images/folder@2x.png
create mode 100644 Vendor/visual_captcha/images/foot.png
create mode 100644 Vendor/visual_captcha/images/foot@2x.png
create mode 100644 Vendor/visual_captcha/images/graph.png
create mode 100644 Vendor/visual_captcha/images/graph@2x.png
create mode 100644 Vendor/visual_captcha/images/house.png
create mode 100644 Vendor/visual_captcha/images/house@2x.png
create mode 100644 Vendor/visual_captcha/images/key.png
create mode 100644 Vendor/visual_captcha/images/key@2x.png
create mode 100644 Vendor/visual_captcha/images/leaf.png
create mode 100644 Vendor/visual_captcha/images/leaf@2x.png
create mode 100644 Vendor/visual_captcha/images/light-bulb.png
create mode 100644 Vendor/visual_captcha/images/light-bulb@2x.png
create mode 100644 Vendor/visual_captcha/images/lock.png
create mode 100644 Vendor/visual_captcha/images/lock@2x.png
create mode 100644 Vendor/visual_captcha/images/magnifying-glass.png
create mode 100644 Vendor/visual_captcha/images/magnifying-glass@2x.png
create mode 100644 Vendor/visual_captcha/images/man.png
create mode 100644 Vendor/visual_captcha/images/man@2x.png
create mode 100644 Vendor/visual_captcha/images/music-note.png
create mode 100644 Vendor/visual_captcha/images/music-note@2x.png
create mode 100644 Vendor/visual_captcha/images/pants.png
create mode 100644 Vendor/visual_captcha/images/pants@2x.png
create mode 100644 Vendor/visual_captcha/images/pencil.png
create mode 100644 Vendor/visual_captcha/images/pencil@2x.png
create mode 100644 Vendor/visual_captcha/images/printer.png
create mode 100644 Vendor/visual_captcha/images/printer@2x.png
create mode 100644 Vendor/visual_captcha/images/robot.png
create mode 100644 Vendor/visual_captcha/images/robot@2x.png
create mode 100644 Vendor/visual_captcha/images/scissors.png
create mode 100644 Vendor/visual_captcha/images/scissors@2x.png
create mode 100644 Vendor/visual_captcha/images/sunglasses.png
create mode 100644 Vendor/visual_captcha/images/sunglasses@2x.png
create mode 100644 Vendor/visual_captcha/images/t-shirt.png
create mode 100644 Vendor/visual_captcha/images/t-shirt@2x.png
create mode 100644 Vendor/visual_captcha/images/tag.png
create mode 100644 Vendor/visual_captcha/images/tag@2x.png
create mode 100644 Vendor/visual_captcha/images/tree.png
create mode 100644 Vendor/visual_captcha/images/tree@2x.png
create mode 100644 Vendor/visual_captcha/images/truck.png
create mode 100644 Vendor/visual_captcha/images/truck@2x.png
create mode 100644 Vendor/visual_captcha/images/umbrella.png
create mode 100644 Vendor/visual_captcha/images/umbrella@2x.png
create mode 100644 Vendor/visual_captcha/images/woman.png
create mode 100644 Vendor/visual_captcha/images/woman@2x.png
create mode 100644 Vendor/visual_captcha/images/world.png
create mode 100644 Vendor/visual_captcha/images/world@2x.png
create mode 100644 Vendor/visual_captcha/ja/audios.json
create mode 100644 Vendor/visual_captcha/ja/images.json
create mode 100644 View/Elements/visual_captcha.ctp
diff --git a/Controller/Component/NetCommonsVisualCaptchaComponent.php b/Controller/Component/NetCommonsVisualCaptchaComponent.php
new file mode 100644
index 00000000..3604822f
--- /dev/null
+++ b/Controller/Component/NetCommonsVisualCaptchaComponent.php
@@ -0,0 +1,152 @@
+
+ * @author Shohei Nakajima
+ * @link http://www.netcommons.org NetCommons Project
+ * @license http://www.netcommons.org/license.txt NetCommons License
+ * @copyright Copyright 2014, NetCommons Project
+ */
+
+use visualCaptcha\Captcha;
+use visualCaptcha\Session;
+
+App::uses('Component', 'Controller');
+
+App::import('Vendor', 'Captcha', array(
+ 'file' => 'visualcaptcha' . DS . 'src' . DS . 'visualCaptcha' . DS . 'Captcha.php'
+));
+App::import('Vendor', 'Session', array(
+ 'file' => 'visualcaptcha' . DS . 'src' . DS . 'visualCaptcha' . DS . 'Session.php'
+));
+
+/**
+ * NetCommonsVisualCaptcha Component
+ *
+ * @author Shohei Nakajima
+ * @package NetCommons\NetCommons\Controller\Component
+ */
+class NetCommonsVisualCaptchaComponent extends Component {
+
+/**
+ * call controller w/ associations
+ *
+ * @var object
+ */
+ public $controller = null;
+
+/**
+ * imageField Answer /r associations
+ *
+ * @var string
+ */
+ public $imageField = null;
+
+/**
+ * audioField Answer /r associations
+ *
+ * @var string
+ */
+ public $audioField = null;
+
+/**
+ * Called before the Controller::beforeFilter().
+ *
+ * @param Controller $controller Instantiating controller
+ * @return void
+ */
+ public function initialize(Controller $controller) {
+ $this->controller = $controller;
+ // if Security component is used
+ if (array_key_exists('Security', $this->controller->components)) {
+ $this->imageField = $this->controller->Session->read('visualcaptcha.frontendData.imageFieldName');
+ $this->audioField = $this->controller->Session->read('visualcaptcha.frontendData.audioFieldName');
+
+ if ($this->imageField && $this->audioField) {
+ $this->controller->Security->unlockedFields = array(
+ $this->imageField,
+ $this->audioField
+ );
+ }
+ }
+ }
+
+/**
+ * Called after the Controller::beforeFilter() and before the controller action
+ *
+ * @param Controller $controller Controller with components to startup
+ * @return void
+ * @throws ForbiddenException
+ */
+ public function startup(Controller $controller) {
+ }
+
+/**
+ * generate visual captcha data and return it
+ *
+ * @param int $count display image count
+ * @return string
+ */
+ public function generate($count = 5) {
+ $session = new Session();
+ //$assetsPath = VENDORS . 'emotionloop' . DS . 'visualcaptcha' . DS . 'src' . DS . 'visualCaptcha' . DS . 'assets';
+ $lang = Configure::read('Config.language');
+ $assetsPath = App::pluginPath('NetCommons') . 'Vendor' . DS . 'visual_captcha';
+ $imageJsonPath =$assetsPath . DS . $lang . DS . 'images.json';
+ $audioJsonPath = $assetsPath . DS . $lang . DS . 'audios.json';
+ $captcha = new Captcha($session, $assetsPath, $this->__utilReadJSON($imageJsonPath), $this->__utilReadJSON($audioJsonPath));
+ $captcha->generate($count);
+ return json_encode($captcha->getFrontEndData());
+ }
+
+/**
+ * generate visual captcha image data and return it
+ *
+ * @param int $index display image index
+ * @return string
+ */
+ public function image($index) {
+ $session = new Session();
+ $captcha = new Captcha($session);
+ return $captcha->streamImage(array(), $index, 0);
+ }
+
+/**
+ * generate audio captcha data and return it
+ *
+ * @return streaming data
+ */
+ public function audio() {
+ $session = new Session();
+ $captcha = new Captcha($session);
+ return $captcha->streamAudio(array(), 'mp3');
+ }
+
+/**
+ * check input response
+ *
+ * @return bool
+ */
+ public function check() {
+ $reqData = $this->controller->request->data;
+ $session = new Session();
+ $captcha = new Captcha($session);
+
+ if (isset($reqData[$this->imageField])) {
+ return $captcha->validateImage($reqData[$this->imageField]);
+ } elseif (isset($reqData[$this->audioField])) {
+ return $captcha->validateAudio($reqData[$this->audioField]);
+ }
+
+ return false;
+ }
+
+ // Read input file as JSON
+ private function __utilReadJSON( $filePath ) {
+ if ( !file_exists( $filePath ) ) {
+ return null;
+ }
+ return json_decode( file_get_contents( $filePath ), true );
+ }
+}
diff --git a/Locale/jpn/LC_MESSAGES/net_commons.po b/Locale/jpn/LC_MESSAGES/net_commons.po
index d4967dc7..3b129972 100644
--- a/Locale/jpn/LC_MESSAGES/net_commons.po
+++ b/Locale/jpn/LC_MESSAGES/net_commons.po
@@ -335,3 +335,28 @@ msgstr "閉じる"
#: Videos/View/VideoBlockSettings/index.ctp:43 Videos/View/Videos/index.ctp:55
msgid "Add"
msgstr "追加"
+
+
+#: View/Elements/visual_captcha.ctp:34
+msgid "Sound icon"
+msgstr "音声"
+
+#: View/Elements/visual_captcha.ctp:35
+msgid "Accessibility option: listen to a question and answer it!"
+msgstr "アクセシビリティ対応:音声を聞いて答える"
+
+#: View/Elements/visual_captcha.ctp:36
+msgid "Type below the answer to what you hear. Numbers or words:"
+msgstr "質問の音声を聞いて、下の回答欄に答えの数字・または言葉を入力してください。"
+
+#: View/Elements/visual_captcha.ctp:37
+msgid "Click or touch the ANSWER"
+msgstr "ANSWERのアイコンをクリックまたはタッチして、決定してください"
+
+#: View/Elements/visual_captcha.ctp:38
+msgid "Refresh/reload icon"
+msgstr "再読み込み"
+
+#: View/Elements/visual_captcha.ctp:39
+msgid "Refresh/reload: get new images and accessibility option!"
+msgstr "再読み込み:新しい絵や音声に変えます"
diff --git a/Locale/net_commons.pot b/Locale/net_commons.pot
index 9ccaf40a..46cd3381 100644
--- a/Locale/net_commons.pot
+++ b/Locale/net_commons.pot
@@ -365,3 +365,26 @@ msgstr ""
msgid "Add"
msgstr ""
+#: View/Elements/visual_captcha.ctp:34
+msgid "Sound icon"
+msgstr ""
+
+#: View/Elements/visual_captcha.ctp:35
+msgid "Accessibility option: listen to a question and answer it!"
+msgstr ""
+
+#: View/Elements/visual_captcha.ctp:36
+msgid "Type below the answer to what you hear. Numbers or words:"
+msgstr ""
+
+#: View/Elements/visual_captcha.ctp:37
+msgid "Click or touch the ANSWER"
+msgstr ""
+
+#: View/Elements/visual_captcha.ctp:38
+msgid "Refresh/reload icon"
+msgstr ""
+
+#: View/Elements/visual_captcha.ctp:39
+msgid "Refresh/reload: get new images and accessibility option!"
+msgstr ""
diff --git a/Vendor/visual_captcha/audios/12times2.mp3 b/Vendor/visual_captcha/audios/12times2.mp3
new file mode 100644
index 0000000000000000000000000000000000000000..9bc5faf19fd901623fd57bf11c34311f5c6cfb88
GIT binary patch
literal 8496
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
Bql^Fm
literal 0
HcmV?d00001
diff --git a/Vendor/visual_captcha/audios/12times2.ogg b/Vendor/visual_captcha/audios/12times2.ogg
new file mode 100644
index 0000000000000000000000000000000000000000..f89dd03d6fe2106bcf147f87eef192c157a8cf03
GIT binary patch
literal 14790
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
MJ#7@Dqy>Qg0iE*=mjD0&
literal 0
HcmV?d00001
diff --git a/Vendor/visual_captcha/audios/2times10.mp3 b/Vendor/visual_captcha/audios/2times10.mp3
new file mode 100644
index 0000000000000000000000000000000000000000..a32268b1377639744cd45fa6c46ece802d7bd495
GIT binary patch
literal 8352
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
AOaK4?
literal 0
HcmV?d00001
diff --git a/Vendor/visual_captcha/audios/2times10.ogg b/Vendor/visual_captcha/audios/2times10.ogg
new file mode 100644
index 0000000000000000000000000000000000000000..c67e1eaa69335858c7cf0ef86bee4f56e790ab4b
GIT binary patch
literal 14866
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