rss-bridge/bridges/WordPressPluginUpdateBridge.php
logmanoriginal 556a417dd6 core: Add support for custom cache types via config.ini.php
This commit adds support for a new parameter which specifies the type
of cache to use for caching. It is specified in config.ini.php:

 [cache]

 type = "..."

Currently only one type of cache is supported (see /caches). All uses
of 'FileCache' were replaced by this configuration option.

Note: Caching currently depends on files and folders (due to FileCache).
Experience may vary depending on the selected cache type. For now always
check if FileCache is working before testing alternative types.

References #1000
2019-02-06 18:52:44 +01:00

86 lines
1.9 KiB
PHP

<?php
class WordPressPluginUpdateBridge extends BridgeAbstract {
const MAINTAINER = 'teromene';
const NAME = 'WordPress Plugins Update Bridge';
const URI = 'https://wordpress.org/plugins/';
const CACHE_TIMEOUT = 86400; // 24h = 86400s
const DESCRIPTION = 'Returns latest updates of WordPress.com plugins.';
const PARAMETERS = array(
array(
'pluginUrl' => array(
'name' => 'URL to the plugin',
'required' => true
)
)
);
public function collectData(){
$request = str_replace('/', '', $this->getInput('pluginUrl'));
$page = self::URI . $request . '/changelog/';
$html = getSimpleHTMLDOM($page)
or returnServerError('No results for this query.');
$content = $html->find('.block-content', 0);
$item = array();
$item['content'] = '';
$version = null;
foreach($content->children() as $element) {
if($element->tag != 'h4') {
$item['content'] .= $element;
} else {
if($version == null) {
$version = $element;
} else {
$item['title'] = $version;
$item['uri'] = 'https://downloads.wordpress.org/plugin/' . $request . '.' . strip_tags($version) . '.zip';
$this->items[] = $item;
$version = $element;
$item = array();
$item['content'] = '';
}
}
}
$item['uri'] = 'https://downloads.wordpress.org/plugin/' . $request . '.' . strip_tags($version) . '.zip';
$item['title'] = $version;
$this->items[] = $item;
}
public function getName(){
if(!is_null($this->getInput('q'))) {
return $this->getInput('q') . ' : ' . self::NAME;
}
return parent::getName();
}
private function getCachedDate($url){
Debug::log('getting pubdate from url ' . $url . '');
// Initialize cache
$cache = Cache::create(Configuration::getConfig('cache', 'type'));
$cache->setPath(PATH_CACHE . 'pages/');
$params = [$url];
$cache->setParameters($params);
// Get cachefile timestamp
$time = $cache->getTime();
return ($time !== false ? $time : time());
}
}