page = add_options_page('Gitea Updater', 'Gitea Updater', 'manage_options', 'gitea-updater', array($this, 'options_page'));
add_action('load-' . $this->page, array($this, 'options_post'));
}
function enqueue_assets($hook)
{
if ($hook != $this->page) return;
wp_enqueue_style('gitea-updater', plugins_url('/assets/style.css', __FILE__));
wp_enqueue_script('gitea-js', plugins_url('/assets/script.js', __FILE__), array('jquery'), null, true);
}
function options_post()
{
if (isset($_GET['force-check'])) {
Gitea_Updater::getInstance()->get_all();
set_site_transient('update_plugins', null);
set_site_transient('update_themes', null);
}
if (isset($_POST['gitea_options'])) {
update_option('gitea_options', $_POST['gitea_options']);
}
}
function options_page()
{
$options = (array)get_option('gitea_options');
$repositories = $this->get_repositories();
$types = array(
'plugin' => __('Plugins'),
'theme' => __('Themes'),
);
?>
Gitea Updater
= __('Install Results', 'gitea') ?>
install($_POST['gitea_install']); ?>
= __('Plugins', 'gitea') ?>: = date('d/m/Y H:i:s', get_option('gitea_plugins_updated')) ?>
= __('Themes', 'gitea') ?>: = date('d/m/Y H:i:s', get_option('gitea_themes_updated')) ?>
*/ ?>
$plugin) {
$plugin['url'] = $plugin['gitea_host'] . $plugin['gitea_repo'];
$repositories[$plugin['gitea_host']]['plugin'][$slug] = $plugin;
}
foreach ($themes as $slug => $theme) {
$theme['url'] = $theme['gitea_host'] . $theme['gitea_repo'];
$repositories[$theme['gitea_host']]['theme'][$slug] = $theme;
}
return $repositories;
}
static function get()
{
return (array)get_option('gitea_options');
}
function install($data)
{
$url = parse_url($data['url']);
$host = $url['scheme'] . '://' . $url['host'] . '/';
$repo = str_replace('.git', '', trim($url['path'], '/'));
$updater = Gitea_Updater::getInstance();
$package = $updater->get_url($host, $repo, '/archive/master.zip', $data['access_token']);
if ($data['type'] == 'plugin') {
add_filter('install_plugin_complete_actions', array($this, 'install_actions'));
$upgrader = new Plugin_Upgrader(new Plugin_Installer_Skin(compact('title', 'url', 'nonce', 'plugin', 'api')));
$upgrader->install($package);
remove_filter('install_plugin_complete_actions', array($this, 'install_actions'));
} elseif ($data['type'] == 'theme') {
add_filter('install_theme_complete_actions', array($this, 'install_actions'));
$upgrader = new Theme_Upgrader(new Theme_Installer_Skin(compact('title', 'url', 'nonce', 'theme', 'api')));
$upgrader->install($package);
remove_filter('install_theme_complete_actions', array($this, 'install_actions'));
}
}
function install_actions($install_actions)
{
unset($install_actions['plugins_page'], $install_actions['themes_page']);
$install_actions['gitea_page'] = '' . __('Return', 'gitea') . '';
return $install_actions;
}
}