Security Settings:
xmlrpc deaktivieren Autorenscan deaktivieren Scripting in /wp-content/uploads/ deaktivieren Zugriff auf potenziell sensible Dateien blockieren Dateieditor im WP Dashboard deaktivieren Skriptverkettung deaktivieren Skriptausführung im Include-Verzeichnis deaktivieren Zugriff von ungewollten Bots verbieten Auflistung von Verzeichnissen deaktivieren Debug-Ausgaben deaktivieren Login-URL ändern
This commit is contained in:
152
includes/update.class.php
Normal file
152
includes/update.class.php
Normal file
@ -0,0 +1,152 @@
|
||||
<?php
|
||||
|
||||
class BdpVersionChecker
|
||||
{
|
||||
public $plugin_slug;
|
||||
public $version;
|
||||
public $cache_key;
|
||||
public $cache_allowed;
|
||||
public $updateUrl;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$plugin_data = get_plugin_data( BDP_LV_STARTUP_FILE );
|
||||
$this->plugin_slug = BDP_LV_PLUGIN_SLUG;
|
||||
$this->updateUrl = $plugin_data['UpdateURI'] . '/info_development.json';
|
||||
$this->version = $plugin_data['Version'];
|
||||
$this->cache_key = 'bdp-kompass-upd';
|
||||
$this->cache_allowed = false;
|
||||
|
||||
add_filter( 'plugins_api', array( $this, 'info' ), 20, 3 );
|
||||
add_filter( 'site_transient_update_plugins', array( $this, 'update' ) );
|
||||
add_action( 'upgrader_process_complete', array( $this, 'purge' ), 10, 2 );
|
||||
}
|
||||
|
||||
public function request(){
|
||||
|
||||
$remote = get_transient( $this->cache_key );
|
||||
|
||||
if( false === $remote || ! $this->cache_allowed ) {
|
||||
|
||||
$remote = wp_remote_get(
|
||||
$this->updateUrl
|
||||
,
|
||||
array(
|
||||
'timeout' => 10,
|
||||
'headers' => array(
|
||||
'Accept' => 'application/json'
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
if(
|
||||
is_wp_error( $remote )
|
||||
|| 200 !== wp_remote_retrieve_response_code( $remote )
|
||||
|| empty( wp_remote_retrieve_body( $remote ) )
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
|
||||
set_transient( $this->cache_key, $remote, 3600 );
|
||||
|
||||
}
|
||||
|
||||
$remote = json_decode( wp_remote_retrieve_body( $remote ) );
|
||||
|
||||
return $remote;
|
||||
|
||||
}
|
||||
|
||||
|
||||
function info( $res = '', $action = '', $args = '' )
|
||||
{
|
||||
if (!isset($args->slug) || $args->slug !== $this->plugin_slug) {
|
||||
return $res;
|
||||
}
|
||||
|
||||
// get updates
|
||||
$remote = $this->request();
|
||||
|
||||
if( ! $remote ) {
|
||||
return $res;
|
||||
}
|
||||
|
||||
$newVersion = $remote->version;
|
||||
$res = new stdClass();
|
||||
|
||||
$res->name = $remote->name;
|
||||
$res->slug = $remote->slug;
|
||||
$res->version = $newVersion;
|
||||
$res->tested = $remote->tested;
|
||||
$res->requires = $remote->requires;
|
||||
$res->author = $remote->author;
|
||||
$res->author_profile = $remote->author_profile;
|
||||
$res->download_link = $remote->download_url;
|
||||
$res->trunk = $remote->download_url;
|
||||
$res->requires_php = $remote->requires_php;
|
||||
$res->last_updated = $remote->last_updated;
|
||||
|
||||
$res->sections = array(
|
||||
'description' => $remote->sections->description,
|
||||
'installation' => $remote->sections->installation,
|
||||
'changelog' => $remote->sections->changelog
|
||||
);
|
||||
|
||||
if( ! empty( $remote->banners ) ) {
|
||||
$res->banners = array(
|
||||
'low' => $remote->banners->low,
|
||||
'high' => $remote->banners->high
|
||||
);
|
||||
}
|
||||
|
||||
return $res;
|
||||
|
||||
}
|
||||
|
||||
public function update( $transient ) {
|
||||
if ( empty($transient->checked ) ) {
|
||||
return $transient;
|
||||
}
|
||||
|
||||
$remote = $this->request();
|
||||
if(
|
||||
$remote
|
||||
&& version_compare( $this->version, $remote->version, '<' )
|
||||
&& version_compare( $remote->requires, get_bloginfo( 'version' ), '<=' )
|
||||
&& version_compare( $remote->requires_php, PHP_VERSION, '<' )
|
||||
) {
|
||||
|
||||
$newVersion = $remote->version;
|
||||
|
||||
$res = new stdClass();
|
||||
$res->slug = $this->plugin_slug;
|
||||
$res->plugin = plugin_basename( BDP_LV_STARTUP_FILE );
|
||||
$res->new_version = $newVersion;
|
||||
$res->tested = $remote->tested;
|
||||
$res->package = $remote->download_url;
|
||||
|
||||
$transient->response[ $res->plugin ] = $res;
|
||||
|
||||
} else {
|
||||
$res = new stdClass();
|
||||
$res->slug = $this->plugin_slug;
|
||||
$res->plugin = plugin_basename( BDP_LV_STARTUP_FILE );
|
||||
$transient->no_update[ $res->plugin ] = $res;
|
||||
}
|
||||
|
||||
return $transient;
|
||||
|
||||
}
|
||||
|
||||
public function purge( $upgrader, $options ){
|
||||
|
||||
if (
|
||||
$this->cache_allowed
|
||||
&& 'update' === $options['action']
|
||||
&& 'plugin' === $options[ 'type' ]
|
||||
) {
|
||||
// just clean the cache when new plugin version is installed
|
||||
delete_transient( $this->cache_key );
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user