<?php namespace MailPoet\Subscription; if (!defined('ABSPATH')) exit; use MailPoet\Util\Security; use MailPoet\WP\Functions as WPFunctions; class CaptchaSession { const EXPIRATION = 1800; // 30 minutes const ID_LENGTH = 32; const SESSION_HASH_KEY = 'hash'; const SESSION_FORM_KEY = 'form'; /** @var WPFunctions */ private $wp; /** @var string */ private $id; public function __construct( WPFunctions $wp ) { $this->wp = $wp; } public function init($id = null) { $this->id = $id ?: Security::generateRandomString(self::ID_LENGTH); } public function getId() { if ($this->id === null) { throw new \Exception("MailPoet captcha session not initialized."); } return $this->id; } public function reset() { $this->wp->deleteTransient($this->getKey(self::SESSION_FORM_KEY)); $this->wp->deleteTransient($this->getKey(self::SESSION_HASH_KEY)); } public function setFormData(array $data) { $this->wp->setTransient($this->getKey(self::SESSION_FORM_KEY), $data, self::EXPIRATION); } public function getFormData() { return $this->wp->getTransient($this->getKey(self::SESSION_FORM_KEY)); } public function setCaptchaHash($hash) { $this->wp->setTransient($this->getKey(self::SESSION_HASH_KEY), $hash, self::EXPIRATION); } public function getCaptchaHash() { return $this->wp->getTransient($this->getKey(self::SESSION_HASH_KEY)); } private function getKey($type) { return implode('_', ['MAILPOET', $this->getId(), $type]); } }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
Blacklist.php | File | 1.6 KB | 0644 |
|
Captcha.php | File | 3.85 KB | 0644 |
|
CaptchaRenderer.php | File | 4.68 KB | 0644 |
|
CaptchaSession.php | File | 1.5 KB | 0644 |
|
Comment.php | File | 3.06 KB | 0644 |
|
Form.php | File | 1.4 KB | 0644 |
|
Manage.php | File | 6.85 KB | 0644 |
|
ManageSubscriptionFormRenderer.php | File | 8.31 KB | 0644 |
|
Pages.php | File | 14.24 KB | 0644 |
|
Registration.php | File | 2.42 KB | 0644 |
|
SubscriptionUrlFactory.php | File | 4.19 KB | 0644 |
|
Throttling.php | File | 2.94 KB | 0644 |
|
index.php | File | 0 B | 0644 |
|