Skip to content
Snippets Groups Projects
Commit 57f32a5f authored by Grzegorz Rola's avatar Grzegorz Rola
Browse files

Added ActivationTracker class and HookableParent trait.

parent fa8a1499
Branches
Tags
1 merge request!12Feature/plugin activation
<?php
/**
* Created by PhpStorm.
* User: grola
* Date: 25.07.18
* Time: 16:55
*/
namespace WPDesk\PluginBuilder\Plugin;
class ActivationTracker {
/**
* Namespace.
*
* @var string
*/
private $namespace;
/**
* ActivationTracker constructor.
*
* @param string $namespace Namespace for settings.
*/
public function __construct( $namespace ) {
$this->namespace = $namespace;
}
/**
* Option name for date storage
*
* @return string
*/
private function get_option_name_activation_date() {
return $this->namespace . '_activation';
}
/**
* Returns activation date and sets it if were not set before
*
* @return int unix timestamp for activation datetime
*/
public function get_activation_date() {
$activation_date
= get_option( $this->get_option_name_activation_date() );
if ( empty( $activation_date ) ) {
return $this->touch_activation_date();
}
return intval( $activation_date );
}
/**
* Was activation more than two weeks before today
*
* @return bool
*/
public function is_activated_more_than_two_weeks() {
$two_weeks = 60 * 60 * 24 * 7 * 2;
return $this->get_activation_date() + $two_weeks < time();
}
/**
* Sets activatiion date for today
*
* @return int unit timestamp for now
*/
public function touch_activation_date() {
$now = time();
update_option( $this->get_option_name_activation_date(), $now );
return $now;
}
}
\ No newline at end of file
<?php
namespace WPDesk\PluginBuilder\Plugin;
trait HookableParent {
/**
* Hookable objects.
*
* @var array[Hookable]
*/
private $hookable_objects = array();
/**
* Add hookable object.
*
* @param Hookable|HookablePluginDependant $hookable_object Hookable object.
*/
public function add_hookable( $hookable_object ) {
if ( $hookable_object instanceof HookablePluginDependant ) {
$hookable_object->set_plugin( $this );
}
$this->hookable_objects[] = $hookable_object;
}
/**
* Run hooks method on all hookable objects.
*/
protected function hooks_no_hookable_objects() {
/** @var Hookable $hookable_object $hookable_object */
foreach ( $this->hookable_objects as $hookable_object ) {
$hookable_object->hooks();
}
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment