File "plugin_pack.php"
Full Path: /home/digidjwy/public_html/wp-content/plugins/mycryptocheckout/vendor/plainview/sdk/wordpress/plugin_pack/plugin_pack.php
File size: 6.99 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace plainview\sdk_mcc\wordpress\plugin_pack;
/**
@brief Handles autoloading of a plugin pack.
@since 2014-05-07 22:53:58
**/
abstract class plugin_pack
extends \plainview\sdk_mcc\wordpress\base
{
/**
@brief The plugins object.
@since 2014-05-09 11:17:46
**/
public $plugins;
/**
@brief Cached plugins object.
@since 2023-04-20 22:31:55
**/
public $__plugins = null;
/**
@brief Constructor.
@since 2014-05-07 23:11:28
**/
public function _construct()
{
$this->plugins();
}
/**
@brief Activate all of the already enabled plugins.
@since 2014-09-27 19:09:22
**/
public function activate()
{
$this->plugins()->activate();
}
/**
@brief Convenience method to activate a plugin.
@details Can take a single classname string, or an array.
@since 2015-12-22 18:10:59
**/
public function activate_plugin( $classnames )
{
if ( ! is_array( $classnames ) )
$classnames = [ $classnames ];
$this->plugins()->populate( $classnames ); // Load all of the plugins.
foreach( $classnames as $classname )
$this->plugins()
->get( $classname )
->plugin() // Return the plugin itself
->activate_internal(); // And tell it to activate.
return $this->plugins()->save();
}
public function deactivate()
{
$this->plugins()->deactivate();
}
/**
@brief Convenience method to deactivate a plugin.
@details Can take a single classname string, or an array.
@since 2015-12-22 18:10:59
**/
public function deactivate_plugin( $classnames )
{
if ( ! is_array( $classnames ) )
$classnames = [ $classnames ];
foreach( $classnames as $classname )
{
if ( ! $this->plugins()->has( $classname ) )
continue;
$this->plugins()
->get( $classname )
->plugin() // Return the plugin itself
->deactivate_internal(); // And tell it to deactivate.
$this->plugins()
->forget( $classname );
}
return $this->plugins()->save();
}
/**
@brief Load the list of enabled plugins (classnames).
@since 2014-05-09 10:38:31
**/
public function get_enabled_plugins()
{
return $this->get_site_option( 'enabled_plugins', [] );
}
/**
@brief Return an array of all plugin classnames.
@details This method must be implemented by the subclass because plugin_pack doesn't know where you keep your plugin files.
@since 2014-05-08 15:53:31
**/
abstract public function get_plugin_classes();
/**
@brief Clean up the plugin class name.
@since 2014-05-08 16:20:46
**/
public function get_plugin_classname( $classname )
{
$classname = preg_replace( '/.*\\\\/', '', $classname );
$classname = preg_replace( '/_/', ' ', $classname );
return $classname;
}
/**
@brief Return the plugins table.
@since 2014-05-08 15:48:39
**/
public function get_plugins_table()
{
$form = $this->form2();
$r = '';
$table = $this->table();
$plugins = new plugins( $this );
// Fill the plugins with all of the available classes
$action = new actions\get_plugin_classes();
// The prefix is the basename of the plugin pack class, with an underscore.
// Not \threewp_broadcast\premium_pack\ThreeWP_Broadcast_Premium_Pack but ThreeWP_Broadcast_Premium_Pack_
$action->__prefix = preg_replace( '/.*\\\\/', '', get_called_class() ) . '_';
$action->add( static::get_plugin_classes() );
$action->execute();
$plugins->populate( $action->classes );
// Plugins class for the coloring.
$table = $this->table()->css_class( 'plugin_pack plugins with_groups' );
$row = $table->head()->row();
$table->bulk_actions()
->form( $form )
->add( $this->_( 'Activate' ), 'activate_plugin' )
->add( $this->_( 'Deactivate' ), 'deactivate_plugin' )
->add( $this->_( 'Uninstall' ), 'uninstall_plugin' )
->cb( $row );
$row->th()->text( __( 'Plugin' ) );
$row->th()->text( __( 'Description' ) );
if ( $form->is_posting() )
{
if ( $table->bulk_actions()->pressed() )
{
$ids = $table->bulk_actions()->get_rows();
$action = $table->bulk_actions()->get_action();
$message = $this->_( 'No action selected.' );
foreach( $plugins->from_ids( $ids ) as $plugin )
{
$classname = $plugin->get_classname();
$this->plugins()->populate( $classname );
$new_plugin = $this->plugins()->get( $classname )->plugin();
switch( $action )
{
case 'activate_plugin':
$new_plugin->activate_internal();
$message = $this->_( 'The selected plugin(s) have been activated.' );
break;
case 'deactivate_plugin':
$new_plugin->deactivate_internal();
$this->plugins()->forget( $classname );
$message = $this->_( 'The selected plugin(s) have been deactivated.' );
break;
case 'uninstall_plugin':
$new_plugin->deactivate_internal();
$new_plugin->uninstall_internal();
$this->plugins()->forget( $classname );
$message = $this->_( 'The selected plugin(s) have been uninstalled.' );
break;
default:
$this->plugins()->forget( $classname );
}
$this->plugins()->save();
}
$this->message( $message );
}
}
$old_group = '';
$group_slug = '';
foreach( $plugins->by_groups() as $group => $plugins )
foreach( $plugins as $plugin )
{
$group = $plugin->get_comment( 'plugin_group' );
if ( $old_group != $group )
{
$old_group = $group;
// The group slug helps the javascript to group the rows together.
$group_slug = sanitize_title( $group );
$row = $table->body()->row()
->css_class( 'active group' )
->data( 'group', $group_slug );
$row->th()->css_class( 'plugin_group name' )->colspan( 3 )->text( $group );
}
$row = $table->body()->row()
->css_class( 'plugin' )
->data( 'group', $group_slug );
$cb = $table->bulk_actions()->cb( $row, $plugin->get_id() );
$td = $row->td();
// Assemble a label.
$label = new \plainview\sdk_mcc\html\div();
$label->tag = 'label';
$label->set_attribute( 'for', $cb->get_id() );
$label->content = $plugin->get_name();
$td->text( $label );
$td->css_class( 'plugin-title' );
if ( $this->plugins()->has( $plugin->get_classname() ) )
$row->css_class( 'active' );
else
$row->css_class( 'inactive' );
$text = $plugin->get_brief_description();
$row->td()->text( $text );
}
$r .= $form->open_tag();
$r .= $table;
$r .= $form->close_tag();
$r .= file_get_contents( __DIR__ . '/plugin_pack.js' );
return $r;
}
/**
@brief Return the plugins object.
@since 2014-09-28 14:03:06
**/
public function plugins()
{
if ( $this->__plugins !== null )
return $this->__plugins;
$this->__plugins = new plugins( $this );
$this->__plugins->populate( $this->get_enabled_plugins() );
$this->__plugins->load();
return $this->plugins();
}
/**
@brief Saves the list of enabled plugins.
@since 2014-05-09 10:37:46
**/
public function set_enabled_plugins( $enabled_plugins )
{
$this->update_site_option( 'enabled_plugins', $enabled_plugins );
}
public function site_options()
{
return array_merge( [
'enabled_plugins' => [],
], parent::site_options() );
}
}