cleantalk / contacts-encoder
CleanTalk ContactsEncoder class
Installs: 127
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 0
Open Issues: 0
pkg:composer/cleantalk/contacts-encoder
Requires (Dev)
- phpcompatibility/php-compatibility: @dev
- phpunit/phpunit: ^7.5
- squizlabs/php_codesniffer: 3.*
- vimeo/psalm: ^4.8
README
Overview
The Contacts Encoder protects email addresses and phone numbers from spam bots. It requires 4 essential components to work properly.
🚀 Complete Setup in 4 Steps
Step 1: PHP Backend Setup
1.1 Configure Parameters (Params)
use Cleantalk\Common\ContactsEncoder\Dto\Params; $params = new Params(); $params->api_key = 'your_cleantalk_api_key'; // REQUIRED for encryption $params->obfuscation_mode = Params::OBFUSCATION_MODE_BLUR; $params->do_encode_emails = true; $params->do_encode_phones = true; $params->is_logged_in = false; // Set true for admin users
1.2 Create Platform-Specific Class
use Cleantalk\Common\ContactsEncoder\ContactsEncoder as BaseEncoder; class YourPlatformContactsEncoder extends BaseEncoder { // REQUIRED: Add request validation protected function checkRequest() { return $this->validateUserRequest(); // Your validation logic } // OPTIONAL: Customize messages protected function getTooltip() { return 'Click to decode protected contact'; } }
Step 2: Encoding Content
// Initialize encoder $encoder = YourPlatformContactsEncoder::getInstance($params); // Process your content $protectedHtml = $encoder->runEncoding($yourHtmlContent); // Output to browser echo $protectedHtml;
Step 3: Frontend Assets
3.1 Include CSS
<link rel="stylesheet" href="/path/to/contacts-encoder.css">
3.2 Include JavaScript
<script src="/path/to/ContactsEncoder.js"></script>
Step 4: JavaScript Configuration
4.1 Create Config Object
const encoderConfig = { // REQUIRED: AJAX endpoint decodeContactsRequest: (encodedNodes) => { return fetch('/your-ajax-endpoint', { method: 'POST', body: encodedNodes }).then(r => r.json()); }, // OPTIONAL: Custom texts texts: { waitForDecoding: 'Decoding contact...', gotIt: 'Continue', blocked: 'Access denied' }, serviceData: { brandName: 'Your Site Name' } };
4.2 Initialize on Frontend
document.addEventListener('DOMContentLoaded', () => { new ContactsEncoder(encoderConfig); });