Skip to content
Snippets Groups Projects
Commit daaf507b authored by Dyszczo's avatar Dyszczo
Browse files

Merge branch 'feature/plugin-activation' into 'master'

Feature/plugin activation

See merge request !12
parents fa8a1499 97ee4c0b
No related branches found
No related tags found
1 merge request!12Feature/plugin activation
Pipeline #7325 failed
<?php
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 $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_on_hookable_objects() {
/** @var Hookable $hookable_object $hookable_object */
foreach ( $this->hookable_objects as $hookable_object ) {
$hookable_object->hooks();
}
}
}
\ No newline at end of file
<?php
namespace WPDesk\PluginBuilder\Plugin;
trait TemplateLoad {
/**
* Plugin path.
*
* @var string
*/
protected $plugin_path;
/**
* Template path.
*
* @var string
*/
protected $template_path;
/**
* Init base variables for plugin
*/
public function init_template_base_variables() {
$this->plugin_path = $this->plugin_info->get_plugin_dir();
$this->template_path = $this->plugin_info->get_text_domain();
}
/**
* Renders end returns selected template
*
* @param string $name Name of the template.
* @param string $path Additional inner path to the template.
* @param array $args args Accessible from template.
*
* @return string
*/
public function load_template( $name, $path = '', $args = array() ) {
$plugin_template_path = trailingslashit( $this->plugin_path ) . 'templates/';
// Look within passed path within the theme - this is priority.
$template = locate_template(
array(
trailingslashit( $this->get_template_path() ) . trailingslashit( $path ) . $name . '.php',
)
);
if ( ! $template ) {
$template = $plugin_template_path . trailingslashit( $path ) . $name . '.php';
}
extract( $args );
ob_start();
include( $template );
return ob_get_clean();
}
}
\ 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