diff options
author | yehudah <yehudah@b8457f37-d9ea-0310-8a92-e5e31aec5664> | 2017-10-15 06:46:12 +0000 |
---|---|---|
committer | yehudah <yehudah@b8457f37-d9ea-0310-8a92-e5e31aec5664> | 2017-10-15 06:46:12 +0000 |
commit | ca6c8f41c1a2b9a4b5acae91419a6a114e1c77c6 (patch) | |
tree | 40ff112761d82af1d8c1c89d30ede8206502e17b /Postman/PostmanState.php | |
parent | 8812fbf61bde539d1599e239044595ccb8a2c3a5 (diff) | |
download | Post-SMTP-ca6c8f41c1a2b9a4b5acae91419a6a114e1c77c6.zip |
release
Diffstat (limited to 'Postman/PostmanState.php')
-rw-r--r-- | Postman/PostmanState.php | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/Postman/PostmanState.php b/Postman/PostmanState.php new file mode 100644 index 0000000..ac251fa --- /dev/null +++ b/Postman/PostmanState.php @@ -0,0 +1,110 @@ +<?php +if (! class_exists ( "PostmanState" )) { + + /** + * http://stackoverflow.com/questions/23880928/use-oauth-refresh-token-to-obtain-new-access-token-google-api + * http://pastebin.com/jA9sBNTk + * + * Make sure these emails are permitted (see http://en.wikipedia.org/wiki/E-mail_address#Internationalization): + */ + class PostmanState { + + private $logger; + + // the option database name + const SLUG = 'postman_state'; + const TOO_LONG_SEC = 2592000; // 30 days + + // the options fields + const VERSION = 'version'; + const INSTALL_DATE = 'install_date'; + const FILE_LOCKING_ENABLED = 'locking_enabled'; + const DELIVERY_SUCCESS_TOTAL = 'delivery_success_total'; + const DELIVERY_FAILURE_TOTAL = 'delivery_fail_total'; + + // options data + private $options; + + // singleton instance + public static function getInstance() { + static $inst = null; + if ($inst === null) { + $inst = new PostmanState (); + } + return $inst; + } + + /** + * private constructor + */ + private function __construct() { + $this->logger = new PostmanLogger(get_class($this)); + $this->load(); + } + // + public function save() { + update_option ( self::SLUG, $this->options ); + } + public function reload() { + $this->load (); + } + private function load() { + $this->options = get_option ( self::SLUG ); + } + /** + * Shows the review feature of Postman up to thirty days after install + * + * @return boolean + */ + public function isTimeToReviewPostman() { + if (! empty ( $this->options [self::INSTALL_DATE] )) { + $successful = PostmanState::getInstance ()->getSuccessfulDeliveries () > 0; + $maxTime = $this->options [self::INSTALL_DATE] + self::TOO_LONG_SEC; + return $successful && time () <= $maxTime; + } + } + public function isFileLockingEnabled() { + if (isset ( $this->options [self::FILE_LOCKING_ENABLED] )) + return $this->options [self::FILE_LOCKING_ENABLED]; + else + return false; + } + public function setFileLockingEnabled($enabled) { + $this->options [self::FILE_LOCKING_ENABLED] = $enabled; + $this->save (); + } + public function getVersion() { + if (! empty ( $this->options [self::VERSION] )) { + return $this->options [self::VERSION]; + } + } + function getSuccessfulDeliveries() { + if (isset ( $this->options [PostmanState::DELIVERY_SUCCESS_TOTAL] )) + return $this->options [PostmanState::DELIVERY_SUCCESS_TOTAL]; + else + return 0; + } + function setSuccessfulDelivery($total) { + $this->options [PostmanState::DELIVERY_SUCCESS_TOTAL] = $total; + } + function incrementSuccessfulDelivery() { + $this->setSuccessfulDelivery ( $this->getSuccessfulDeliveries () + 1 ); + $this->logger->debug ( 'incrementing success count: ' . $this->getSuccessfulDeliveries () ); + $this->save (); + } + function getFailedDeliveries() { + if (isset ( $this->options [PostmanState::DELIVERY_FAILURE_TOTAL] )) + return $this->options [PostmanState::DELIVERY_FAILURE_TOTAL]; + else + return 0; + } + function setFailedDelivery($total) { + $this->options [PostmanState::DELIVERY_FAILURE_TOTAL] = $total; + } + function incrementFailedDelivery() { + $this->setFailedDelivery ( $this->getFailedDeliveries () + 1 ); + $this->logger->debug ( 'incrementing failure count: ' . $this->getFailedDeliveries () ); + $this->save (); + } + } +}
\ No newline at end of file |