## 22-06-2022

### Made Captcha GDPR Compliant

1. OSOLMultiCaptcha.php replaced with latest [OSOLMultiCaptcha](https://github.com/osolgithub/OSOLMulticaptcha)
2. captcha-customization-options.php
	1. 
	
	<li>
		<label id="jform_params_caseInsensitive-lbl" for="jform_params_caseInsensitive" title="">GDPR Compliant(No Cookie):</label><input type="checkbox" id="jform_params_gdprCompliantNoCookie" name="OSOLMulticaptcha_gdprCompliantNoCookie" value="1" <?php echo get_option('OSOLMulticaptcha_gdprCompliantNoCookie') == 1?"checked=\"checked\"":'';?>/>
	</li>
	
	2. 
	
	<li>
		<?php $OSOLCaptchaEncryptionKey = get_option('OSOLCaptchaEncryptionKey') != ''?get_option('OSOLCaptchaEncryptionKey'):"YourUniqueEncryptionKey";?>
		<label id="jform_params_bgColor-lbl" for="jform_params_bgColor" title="">Encryption Key</label>
		<input name="OSOLCaptchaEncryptionKey" id="jform_params_bgColor" value="<?php echo $OSOLCaptchaEncryptionKey;?>" size="25" type="text" />
    </li>
  
3. displayCaptcha.php: 
	1. added following blocks to prevent setting $_SESSION
	
	```
	$OSOLMulticaptcha_gdprCompliantNoCookie = get_option('OSOLMulticaptcha_gdprCompliantNoCookie');
	if(!$OSOLMulticaptcha_gdprCompliantNoCookie)
	{
	```
	
	and following block to show json object instead of image
	
	```
		if(!$OSOLMulticaptcha_gdprCompliantNoCookie)
		{
			$captchaEncryptionKey = get_option('OSOLCaptchaEncryptionKey');// IMPORTANT ****** YOU MUST SET A CUSTOM VALUE FOR YOUR SITE from admin panel
			$captcha->setCaptchaEncryptionKey($captchaEncryptionKey);
			$returnImgObj = true;
			$captchaImgObj = $captcha->displayCaptcha($returnImgObj);
			ob_start();
			imagepng($captchaImgObj);
			$imageContent = ob_get_contents();
			ob_end_clean(); 
			
			$var2Display = new stdClass();
			$var2Display->captchaEncypted = $captcha->getEncryptedCaptchaString();
			$var2Display->imageContent = base64_encode($imageContent);
			die(json_encode($var2Display));
			
		}
		else
		{
	```	
	

4. custCaptchaContact.php added
	1. added
	```
	if(!isset($_REQUEST['OSOLMulticaptcha_gdprCompliantNoCookie']))
	{
		update_option('OSOLMulticaptcha_gdprCompliantNoCookie',0);
	}
	```
	
    2. added `<input type="hidden" name="OSOLmulticaptcha_captchaEncypted" id="OSOLmulticaptcha_captchaEncypted" value="" >` near each `<input id="OSOLmulticaptcha_keystring" name="OSOLmulticaptcha_keystring" size="15" type="text" />'
	3. 
	```
	$GLOBALS['OSOLMulticaptcha_gdprCompliantNoCookie'] = get_option('OSOLMulticaptcha_gdprCompliantNoCookie');
	```
	
	so that the following way it can be checked if captcha is without cookie
	
	```
	if($GLOBALS['OSOLMulticaptcha_gdprCompliantNoCookie']) 
	```
	
	5. Added new `function refreshOSOLMultiCaptchaImage()` to show captcha based on json data
	6. Added `add_action( 'wp_footer', 'add_ccc_onload' );` to call refreshOSOLMultiCaptchaImage() on window.onload.
	7. Inside `include_cust_captcha_login()` added `add_ccc_onload();` since there is no  <footer> 
	4. inside `function cust_captcha_contact_validate_and_mail()`. added code to verify encrypted captcha
	
4. cccontact_form.php added 
    1. `<input type="hidden" name="OSOLmulticaptcha_captchaEncypted" id="OSOLmulticaptcha_captchaEncypted" value="" >` near  `<input id="OSOLmulticaptcha_keystring" name="OSOLmulticaptcha_keystring" size="15" type="text" />'
5. cccontact.js added 
	1. `cccontact_post_data[jQuery("#OSOLmulticaptcha_captchaEncypted").attr('name')] = jQuery(jQuery("#OSOLmulticaptcha_captchaEncypted")).val();`
	

