Sindbad~EG File Manager
<?php
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
class AAL_Hook_Plugins extends AAL_Hook_Base {
protected function _add_log_plugin( $action, $plugin_name ) {
$plugin_version = '';
// Get plugin name if is a path
if ( false !== strpos( $plugin_name, '/' ) ) {
$plugin_dir = explode( '/', $plugin_name );
$plugin_data = array_values( get_plugins( '/' . $plugin_dir[0] ) );
$plugin_data = array_shift( $plugin_data );
$plugin_name = $plugin_data['Name'];
if ( ! empty( $plugin_data['Version'] ) ) {
$plugin_version = $plugin_data['Version'];
}
}
aal_insert_log(
array(
'action' => $action,
'object_type' => 'Plugins',
'object_id' => 0,
'object_name' => $plugin_name,
'object_subtype' => $plugin_version,
)
);
}
public function hooks_deactivated_plugin( $plugin_name ) {
$this->_add_log_plugin( 'deactivated', $plugin_name );
}
public function hooks_activated_plugin( $plugin_name ) {
$this->_add_log_plugin( 'activated', $plugin_name );
}
public function hooks_delete_plugin( $plugin_file ) {
$this->_add_log_plugin( 'deleted', $plugin_file );
}
public function hooks_plugin_modify( $location, $status ) {
if ( false !== strpos( $location, 'plugin-editor.php' ) ) {
if ( ( ! empty( $_POST ) && 'update' === $_REQUEST['action'] ) ) {
$aal_args = array(
'action' => 'file_updated',
'object_type' => 'Plugins',
'object_subtype' => 'plugin_unknown',
'object_id' => 0,
'object_name' => 'file_unknown',
);
if ( ! empty( $_REQUEST['file'] ) ) {
$aal_args['object_name'] = $_REQUEST['file'];
// Get plugin name
$plugin_dir = explode( '/', $_REQUEST['file'] );
$plugin_data = array_values( get_plugins( '/' . $plugin_dir[0] ) );
$plugin_data = array_shift( $plugin_data );
$aal_args['object_subtype'] = $plugin_data['Name'];
}
aal_insert_log( $aal_args );
}
}
// We are need return the instance, for complete the filter.
return $location;
}
/**
* @param Plugin_Upgrader $upgrader
* @param array $extra
*/
public function hooks_plugin_install_or_update( $upgrader, $extra ) {
if ( ! isset( $extra['type'] ) || 'plugin' !== $extra['type'] )
return;
if ( 'install' === $extra['action'] ) {
$path = $upgrader->plugin_info();
if ( ! $path )
return;
$data = get_plugin_data( $upgrader->skin->result['local_destination'] . '/' . $path, true, false );
aal_insert_log(
array(
'action' => 'installed',
'object_type' => 'Plugins',
'object_name' => $data['Name'],
'object_subtype' => $data['Version'],
)
);
}
if ( 'update' === $extra['action'] ) {
if ( isset( $extra['bulk'] ) && true == $extra['bulk'] ) {
$slugs = $extra['plugins'];
} else {
$plugin_slug = isset( $upgrader->skin->plugin ) ? $upgrader->skin->plugin : $extra['plugin'];
if ( empty( $plugin_slug ) ) {
return;
}
$slugs = array( $plugin_slug );
}
foreach ( $slugs as $slug ) {
$data = get_plugin_data( WP_PLUGIN_DIR . '/' . $slug, true, false );
aal_insert_log(
array(
'action' => 'updated',
'object_type' => 'Plugins',
'object_name' => $data['Name'],
'object_subtype' => $data['Version'],
)
);
}
}
}
public function __construct() {
add_action( 'activated_plugin', array( $this, 'hooks_activated_plugin' ) );
add_action( 'deactivated_plugin', array( $this, 'hooks_deactivated_plugin' ) );
add_action( 'delete_plugin', array( $this, 'hooks_delete_plugin' ) );
add_filter( 'wp_redirect', array( $this, 'hooks_plugin_modify' ), 10, 2 );
add_action( 'upgrader_process_complete', array( $this, 'hooks_plugin_install_or_update' ), 10, 2 );
parent::__construct();
}
}
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists