$sources Free plugin sources.
* @return array
*/
public static function sources($sources) {
if (!is_array($sources)) {
$sources = array();
}
$classes = defined('SITEPAD')
? array('Builders', 'Pagelayer', 'SEO', 'SMTP', 'Cache')
: array('Builders', 'Pagelayer', 'SEO', 'SMTP', 'Cache', 'WooCommerce', 'Backuply', 'Duplicator', 'EDD');
foreach ($classes as $class) {
$sources[] = __NAMESPACE__ . '\\' . $class;
}
return $sources;
}
/**
* Ability categories for the plugin integrations.
*
* @param array $categories Free categories.
* @return array
*/
public static function categories($categories) {
if (!is_array($categories)) {
$categories = array();
}
if (defined('SITEPAD')) {
$categories['onemcp-seo'] = array(
'label' => __('SEO', 'onemcp-pro'),
'description' => __('SiteSEO titles, social tags, robots, and breadcrumbs.', 'onemcp-pro'),
);
$categories['onemcp-smtp'] = array(
'label' => __('SMTP', 'onemcp-pro'),
'description' => __('GoSMTP from address, host, port, encryption, and a test email.', 'onemcp-pro'),
);
$categories['onemcp-cache'] = array(
'label' => __('Cache', 'onemcp-pro'),
'description' => __('SpeedyCache page cache, preload, minify, and purge.', 'onemcp-pro'),
);
return $categories;
}
$categories['onemcp-builders'] = array(
'label' => __('Page builders', 'onemcp-pro'),
'description' => __('Pagelayer, Elementor, SeedProd, Divi, Bricks, Beaver Builder, and Breakdance. Create any post type and any theme template, and build them with that editor\'s widgets.', 'onemcp-pro'),
);
$categories['onemcp-pagelayer-pages'] = array(
'label' => __('Pagelayer pages', 'onemcp-pro'),
'description' => __('Create, update, publish, and edit pages built with Pagelayer.', 'onemcp-pro'),
);
$categories['onemcp-pagelayer-posts'] = array(
'label' => __('Pagelayer posts', 'onemcp-pro'),
'description' => __('Create, update, list, and publish blog posts built with Pagelayer.', 'onemcp-pro'),
);
$categories['onemcp-pagelayer-templates'] = array(
'label' => __('Pagelayer theme templates', 'onemcp-pro'),
'description' => __('Header, footer, archive, single, and other theme builder templates.', 'onemcp-pro'),
);
$categories['onemcp-pagelayer-menus'] = array(
'label' => __('Pagelayer menus', 'onemcp-pro'),
'description' => __('Navigation menus used by Pagelayer headers and footers.', 'onemcp-pro'),
);
$categories['onemcp-pagelayer-widgets'] = array(
'label' => __('Pagelayer widgets', 'onemcp-pro'),
'description' => __('Widget lists, schemas, and examples.', 'onemcp-pro'),
);
$categories['onemcp-pagelayer-global'] = array(
'label' => __('Pagelayer theme and styles', 'onemcp-pro'),
'description' => __('Theme settings, global colors, fonts, icons, and presets.', 'onemcp-pro'),
);
$categories['onemcp-pagelayer-media'] = array(
'label' => __('Pagelayer media', 'onemcp-pro'),
'description' => __('Upload images into the media library for Pagelayer layouts.', 'onemcp-pro'),
);
$categories['onemcp-seo'] = array(
'label' => __('SEO', 'onemcp-pro'),
'description' => __('SiteSEO, Yoast SEO, Rank Math, All in One SEO, and SEOPress titles, social tags, robots, and cornerstone content.', 'onemcp-pro'),
);
$categories['onemcp-smtp'] = array(
'label' => __('SMTP', 'onemcp-pro'),
'description' => __('GoSMTP, WP Mail SMTP, FluentSMTP, Easy WP SMTP, Post SMTP, and SMTP Mailer.', 'onemcp-pro'),
);
$categories['onemcp-cache'] = array(
'label' => __('Cache', 'onemcp-pro'),
'description' => __('SpeedyCache, LiteSpeed Cache, WP Rocket, WP Super Cache, W3 Total Cache, WP Fastest Cache, WP-Optimize, and SiteGround Optimizer.', 'onemcp-pro'),
);
$categories['onemcp-woocommerce'] = array(
'label' => __('WooCommerce', 'onemcp-pro'),
'description' => __('Products, variations, prices, stock, categories, orders, customers, coupons, reports, reviews, refunds, and store settings.', 'onemcp-pro'),
);
$categories['onemcp-edd'] = array(
'label' => __('Easy Digital Downloads', 'onemcp-pro'),
'description' => __('Downloads, prices, files, orders, customers, discounts, reports, download logs, access, licenses, and subscriptions.', 'onemcp-pro'),
);
$categories['onemcp-backups'] = array(
'label' => __('Backups', 'onemcp-pro'),
'description' => __('Backuply and Duplicator backups.', 'onemcp-pro'),
);
return $categories;
}
/**
* Keep a longer activity log while Pro is active.
*
* @return int
*/
public static function audit_keep() {
return 2000;
}
/**
* Settings link on the plugins screen.
*
* @param array $links Existing links.
* @return array
*/
public static function links($links) {
if (!defined('ONEMCP_VERSION')) {
return $links;
}
$url = admin_url('admin.php?page=onemcp&tab=abilities');
array_unshift($links, '' . esc_html__('Abilities', 'onemcp-pro') . '');
if (!defined('SITEPAD')) {
$license = admin_url('admin.php?page=onemcp&tab=license');
array_unshift($links, '' . esc_html__('License', 'onemcp-pro') . '');
}
return $links;
}
/**
* License screen styles on the OneMCP admin page.
*
* @param string $hook Current admin page hook.
* @return void
*/
public static function enqueue_admin_assets($hook) {
if ($hook !== 'toplevel_page_onemcp') {
return;
}
wp_enqueue_style('onemcp-pro-admin', ONEMCP_PRO_URL . 'assets/css/admin.css', array('onemcp-admin'), ONEMCP_PRO_VERSION);
}
/**
* CSV download control on the activity screen.
*
* @return void
*/
public static function export_button() {
echo '';
}
/**
* Download the activity log as CSV.
*
* @return void
*/
public static function export_log() {
if (!is_admin() || !current_user_can('manage_options') || empty($_POST['onemcp_action'])) {
return;
}
$action = sanitize_key(wp_unslash($_POST['onemcp_action']));
if ($action !== 'export-log') {
return;
}
check_admin_referer('onemcp_admin', 'onemcp_nonce');
global $wpdb;
if (!class_exists('\ONEMCP\Audit') || get_option('onemcp_db_version') === false) {
return;
}
$rows = $wpdb->get_results(
$wpdb->prepare(
'SELECT id, ability, user_id, ok, message, created_at FROM ' . esc_sql(\ONEMCP\Audit::table()) . ' ORDER BY id DESC LIMIT %d',
2000
),
ARRAY_A
);
if (!is_array($rows)) {
$rows = array();
}
nocache_headers();
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=onemcp-activity.csv');
$output = fopen('php://output', 'w');
if ($output === false) {
exit;
}
$escape_csv = function ($value) {
$str = (string) $value;
if ($str !== '' && in_array($str[0], array('=', '+', '-', '@', "\t", "\r"), true)) {
return "'" . $str;
}
return $str;
};
fputcsv($output, array('id', 'ability', 'user_id', 'ok', 'message', 'created_at'));
foreach ($rows as $row) {
fputcsv($output, array(
$escape_csv(isset($row['id']) ? $row['id'] : ''),
$escape_csv(isset($row['ability']) ? $row['ability'] : ''),
$escape_csv(isset($row['user_id']) ? $row['user_id'] : ''),
$escape_csv(isset($row['ok']) ? $row['ok'] : ''),
$escape_csv(isset($row['message']) ? $row['message'] : ''),
$escape_csv(isset($row['created_at']) ? $row['created_at'] : ''),
));
}
fclose($output);
exit;
}
}