/** * Activate a plugin * * @param string $plugin Plugin filename (full or relative to plugins directory) * @return mixed string if error or true if success */ function yourls_activate_plugin($plugin) { // validate file $plugin = yourls_plugin_basename($plugin); $plugindir = yourls_sanitize_filename(YOURLS_PLUGINDIR); if (!yourls_validate_plugin_file($plugindir . '/' . $plugin)) { return 'Not a valid plugin file'; } // check not activated already global $ydb; if (yourls_has_active_plugins() && in_array($plugin, $ydb->plugins)) { return 'Plugin already activated'; } // attempt activation. TODO: uber cool fail proof sandbox like in WP. ob_start(); include YOURLS_PLUGINDIR . '/' . $plugin; if (ob_get_length() > 0) { // there was some output: error $output = ob_get_clean(); return 'Plugin generated expected output. Error was: <br/><pre>' . $output . '</pre>'; } // so far, so good: update active plugin list $ydb->plugins[] = $plugin; yourls_update_option('active_plugins', $ydb->plugins); yourls_do_action('activated_plugin', $plugin); yourls_do_action('activated_' . $plugin); return true; }
<?php define('YOURLS_ADMIN', true); require_once dirname(dirname(__FILE__)) . '/includes/load-yourls.php'; yourls_maybe_require_auth(); // Handle plugin administration pages if (isset($_GET['page']) && !empty($_GET['page'])) { yourls_plugin_admin_page($_GET['page']); } // Handle activation/deactivation of plugins if (isset($_GET['action'])) { // Check nonce yourls_verify_nonce('manage_plugins', $_REQUEST['nonce']); // Check plugin file is valid if (isset($_GET['plugin']) && yourls_validate_plugin_file(YOURLS_PLUGINDIR . '/' . $_GET['plugin'] . '/plugin.php')) { global $ydb; // Activate / Deactive switch ($_GET['action']) { case 'activate': $result = yourls_activate_plugin($_GET['plugin'] . '/plugin.php'); if ($result === true) { yourls_redirect(yourls_admin_url('plugins.php?success=activated'), 302); } break; case 'deactivate': $result = yourls_deactivate_plugin($_GET['plugin'] . '/plugin.php'); if ($result === true) { yourls_redirect(yourls_admin_url('plugins.php?success=deactivated'), 302); } break; default: