admin = new Ansico_Plugins_Admin(); $this->installer = new Ansico_Plugins_Installer(); $this->updater = new Ansico_Plugins_Updater(); add_action('admin_init', array($this, 'maybe_handle_actions')); add_filter('plugin_action_links_' . plugin_basename(__FILE__), array($this, 'plugin_action_links')); } public static function default_settings() { return array( 'forgejo_base_url' => 'https://ansico.dk', 'forgejo_owner' => 'Ansico', 'owner_type' => 'org', 'access_token' => '', 'topic_filter' => 'wordpress-plugin', 'verify_ssl' => 1, 'request_timeout' => 20, 'self_update_enabled' => 1, 'self_update_owner' => 'Ansico', 'self_update_repo' => 'Ansico-plugins', ); } public static function get_settings() { $settings = get_option(ANSICO_PLUGINS_OPTION, array()); return wp_parse_args($settings, self::default_settings()); } public static function clear_http_cache() { global $wpdb; $like = $wpdb->esc_like('_transient_ansico_plugins_') . '%'; $like_timeout = $wpdb->esc_like('_transient_timeout_ansico_plugins_') . '%'; $wpdb->query($wpdb->prepare("DELETE FROM {$wpdb->options} WHERE option_name LIKE %s OR option_name LIKE %s", $like, $like_timeout)); } public static function get_managed_plugins() { $managed = get_option(ANSICO_PLUGINS_MANAGED_OPTION, array()); return is_array($managed) ? $managed : array(); } public static function set_managed_plugin($plugin_file, $meta) { $managed = self::get_managed_plugins(); $managed[$plugin_file] = wp_parse_args($meta, array( 'slug' => dirname($plugin_file), 'owner' => '', 'repo' => '', 'description' => '', 'repo_html_url' => '', )); update_option(ANSICO_PLUGINS_MANAGED_OPTION, $managed, false); } public function plugin_action_links($links) { $settings_link = sprintf( '%s', esc_url(admin_url('options-general.php?page=ansico-plugins')), esc_html__('Indstillinger', 'ansico-plugins') ); array_unshift($links, $settings_link); return $links; } public function maybe_handle_actions() { if (!is_admin() || !current_user_can('install_plugins')) { return; } if (empty($_GET['ansico_action'])) { return; } $action = sanitize_key(wp_unslash($_GET['ansico_action'])); if (!isset($_GET['_wpnonce']) || !wp_verify_nonce(sanitize_text_field(wp_unslash($_GET['_wpnonce'])), 'ansico_plugins_action')) { wp_die(esc_html__('Ugyldig sikkerheds-token.', 'ansico-plugins')); } if ('install_latest' === $action) { $repo = isset($_GET['repo']) ? sanitize_text_field(wp_unslash($_GET['repo'])) : ''; $slug = isset($_GET['slug']) ? sanitize_title(wp_unslash($_GET['slug'])) : ''; $this->installer->install_latest_release($repo, $slug); } if ('delete_plugin' === $action) { $repo = isset($_GET['repo']) ? sanitize_text_field(wp_unslash($_GET['repo'])) : ''; $plugin_file = isset($_GET['plugin_file']) ? sanitize_text_field(wp_unslash($_GET['plugin_file'])) : ''; $this->installer->delete_plugin($repo, $plugin_file); } } } register_activation_hook(__FILE__, function() { if (!get_option(ANSICO_PLUGINS_OPTION)) { add_option(ANSICO_PLUGINS_OPTION, Ansico_Plugins::default_settings()); } if (!get_option(ANSICO_PLUGINS_MANAGED_OPTION)) { add_option(ANSICO_PLUGINS_MANAGED_OPTION, array()); } }); Ansico_Plugins::instance();