summaryrefslogtreecommitdiff
path: root/Postman/PostmanSession.php
diff options
context:
space:
mode:
authoryehudah <yehudah@b8457f37-d9ea-0310-8a92-e5e31aec5664>2017-10-15 06:46:12 +0000
committeryehudah <yehudah@b8457f37-d9ea-0310-8a92-e5e31aec5664>2017-10-15 06:46:12 +0000
commitca6c8f41c1a2b9a4b5acae91419a6a114e1c77c6 (patch)
tree40ff112761d82af1d8c1c89d30ede8206502e17b /Postman/PostmanSession.php
parent8812fbf61bde539d1599e239044595ccb8a2c3a5 (diff)
downloadPost-SMTP-ca6c8f41c1a2b9a4b5acae91419a6a114e1c77c6.zip
release
Diffstat (limited to 'Postman/PostmanSession.php')
-rw-r--r--Postman/PostmanSession.php92
1 files changed, 92 insertions, 0 deletions
diff --git a/Postman/PostmanSession.php b/Postman/PostmanSession.php
new file mode 100644
index 0000000..115c852
--- /dev/null
+++ b/Postman/PostmanSession.php
@@ -0,0 +1,92 @@
+<?php
+if (! class_exists ( 'PostmanSession' )) {
+
+ /**
+ * Persist session state to the database
+ *
+ * I heard plugins are forbidden from writing to the http session
+ * on some hosts, such as WPEngine, so this class write session
+ * state to the database instead.
+ *
+ * What's better about this is I don't have to prefix all my
+ * variables with , in fear of colliding with another
+ * plugin's similiarily named variables.
+ *
+ * @author jasonhendriks
+ *
+ */
+ class PostmanSession {
+ // length of time to keep items around
+ const MINUTES_IN_SECONDS = 60;
+
+ //
+ const OAUTH_IN_PROGRESS = 'oauth_in_progress';
+ const ACTION = 'action';
+ const ERROR_MESSAGE = 'error_message';
+
+ // singleton instance
+ public static function getInstance() {
+ static $inst = null;
+ if ($inst === null) {
+ $inst = new PostmanSession ();
+ }
+ return $inst;
+ }
+
+ /**
+ * OAuth is in progress $state is the randomly generated
+ * transaction ID
+ *
+ * @param unknown $state
+ */
+ public function isSetOauthInProgress() {
+ return get_transient ( self::OAUTH_IN_PROGRESS ) != false;
+ }
+ public function setOauthInProgress($state) {
+ set_transient ( self::OAUTH_IN_PROGRESS, $state, 3 * self::MINUTES_IN_SECONDS );
+ }
+ public function getOauthInProgress() {
+ return get_transient ( self::OAUTH_IN_PROGRESS );
+ }
+ public function unsetOauthInProgress() {
+ delete_transient ( self::OAUTH_IN_PROGRESS );
+ }
+
+ /**
+ * Sometimes I need to keep track of what I'm doing between requests
+ *
+ * @param unknown $action
+ */
+ public function isSetAction() {
+ return get_transient ( self::ACTION ) != false;
+ }
+ public function setAction($action) {
+ set_transient ( self::ACTION, $action, 30 * self::MINUTES_IN_SECONDS );
+ }
+ public function getAction() {
+ return get_transient ( self::ACTION );
+ }
+ public function unsetAction() {
+ delete_transient ( self::ACTION );
+ }
+
+ /**
+ * Sometimes I need to keep track of what I'm doing between requests
+ *
+ * @param unknown $message
+ */
+ public function isSetErrorMessage() {
+ return get_transient ( self::ERROR_MESSAGE ) != false;
+ }
+ public function setMessage($message) {
+ set_transient ( self::ERROR_MESSAGE, $message, 30 * self::MINUTES_IN_SECONDS );
+ }
+ public function getMessage() {
+ return get_transient ( self::ERROR_MESSAGE );
+ }
+ public function unsetMessage() {
+ delete_transient ( self::ERROR_MESSAGE );
+ }
+
+ }
+} \ No newline at end of file