91 lines
2.4 KiB
PHP
91 lines
2.4 KiB
PHP
![]() |
<?php
|
||
|
if ( !class_exists('Puc_v4p1_Plugin_Update', false) ):
|
||
|
|
||
|
/**
|
||
|
* A simple container class for holding information about an available update.
|
||
|
*
|
||
|
* @author Janis Elsts
|
||
|
* @copyright 2016
|
||
|
* @access public
|
||
|
*/
|
||
|
class Puc_v4p1_Plugin_Update extends Puc_v4p1_Update {
|
||
|
public $id = 0;
|
||
|
public $homepage;
|
||
|
public $upgrade_notice;
|
||
|
public $tested;
|
||
|
public $filename; //Plugin filename relative to the plugins directory.
|
||
|
|
||
|
protected static $extraFields = array(
|
||
|
'id', 'homepage', 'tested', 'upgrade_notice', 'filename',
|
||
|
);
|
||
|
|
||
|
/**
|
||
|
* Create a new instance of PluginUpdate from its JSON-encoded representation.
|
||
|
*
|
||
|
* @param string $json
|
||
|
* @return Puc_v4p1_Plugin_Update|null
|
||
|
*/
|
||
|
public static function fromJson($json){
|
||
|
//Since update-related information is simply a subset of the full plugin info,
|
||
|
//we can parse the update JSON as if it was a plugin info string, then copy over
|
||
|
//the parts that we care about.
|
||
|
$pluginInfo = Puc_v4p1_Plugin_Info::fromJson($json);
|
||
|
if ( $pluginInfo != null ) {
|
||
|
return self::fromPluginInfo($pluginInfo);
|
||
|
} else {
|
||
|
return null;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Create a new instance of PluginUpdate based on an instance of PluginInfo.
|
||
|
* Basically, this just copies a subset of fields from one object to another.
|
||
|
*
|
||
|
* @param Puc_v4p1_Plugin_Info $info
|
||
|
* @return Puc_v4p1_Plugin_Update
|
||
|
*/
|
||
|
public static function fromPluginInfo($info){
|
||
|
return self::fromObject($info);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Create a new instance by copying the necessary fields from another object.
|
||
|
*
|
||
|
* @param StdClass|Puc_v4p1_Plugin_Info|Puc_v4p1_Plugin_Update $object The source object.
|
||
|
* @return Puc_v4p1_Plugin_Update The new copy.
|
||
|
*/
|
||
|
public static function fromObject($object) {
|
||
|
$update = new self();
|
||
|
$update->copyFields($object, $update);
|
||
|
return $update;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return string[]
|
||
|
*/
|
||
|
protected function getFieldNames() {
|
||
|
return array_merge(parent::getFieldNames(), self::$extraFields);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Transform the update into the format used by WordPress native plugin API.
|
||
|
*
|
||
|
* @return object
|
||
|
*/
|
||
|
public function toWpFormat(){
|
||
|
$update = parent::toWpFormat();
|
||
|
|
||
|
$update->id = $this->id;
|
||
|
$update->url = $this->homepage;
|
||
|
$update->tested = $this->tested;
|
||
|
$update->plugin = $this->filename;
|
||
|
|
||
|
if ( !empty($this->upgrade_notice) ){
|
||
|
$update->upgrade_notice = $this->upgrade_notice;
|
||
|
}
|
||
|
|
||
|
return $update;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
endif;
|