forked from Solo-Web-Works/Projects-Portfolio
Update bundled plugin-update-checker to v5.7 and remove broken setBranch() call
The bundled PUC was missing the setBranch() method on the main UpdateChecker class (it's only on Vcs\PluginUpdateChecker via the VcsCheckerMethods trait). When called with a non-VCS URL like the Gitea update URL, this caused a fatal error at plugin activation. Updating to PUC v5.7 (May 2026) which is the latest upstream release. The setBranch() call is removed because PUC doesn't recognize Gitea as a VCS host; the plugin falls back to PUC's plain JSON metadata mode, which is fine for a plugin hosted on a self-managed repo.
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
<?php
|
||||
|
||||
namespace YahnisElsts\PluginUpdateChecker\v5p7;
|
||||
|
||||
if ( !class_exists(Autoloader::class, false) ):
|
||||
|
||||
class Autoloader {
|
||||
const DEFAULT_NS_PREFIX = 'YahnisElsts\\PluginUpdateChecker\\';
|
||||
|
||||
private $prefix;
|
||||
private $rootDir;
|
||||
private $libraryDir;
|
||||
|
||||
private $staticMap;
|
||||
|
||||
public function __construct() {
|
||||
$this->rootDir = dirname(__FILE__) . '/';
|
||||
|
||||
$namespaceWithSlash = __NAMESPACE__ . '\\';
|
||||
$this->prefix = $namespaceWithSlash;
|
||||
|
||||
$this->libraryDir = $this->rootDir . '../..';
|
||||
if ( !self::isPhar() ) {
|
||||
$this->libraryDir = realpath($this->libraryDir);
|
||||
}
|
||||
$this->libraryDir = $this->libraryDir . '/';
|
||||
|
||||
//Usually, dependencies like Parsedown are in the global namespace,
|
||||
//but if someone adds a custom namespace to the entire library, they
|
||||
//will be in the same namespace as this class.
|
||||
$isCustomNamespace = (
|
||||
substr($namespaceWithSlash, 0, strlen(self::DEFAULT_NS_PREFIX)) !== self::DEFAULT_NS_PREFIX
|
||||
);
|
||||
$libraryPrefix = $isCustomNamespace ? $namespaceWithSlash : '';
|
||||
|
||||
$this->staticMap = array(
|
||||
$libraryPrefix . 'PucReadmeParser' => 'vendor/PucReadmeParser.php',
|
||||
$libraryPrefix . 'Parsedown' => 'vendor/Parsedown.php',
|
||||
);
|
||||
|
||||
//Add the generic, major-version-only factory class to the static map.
|
||||
$versionSeparatorPos = strrpos(__NAMESPACE__, '\\v');
|
||||
if ( $versionSeparatorPos !== false ) {
|
||||
$versionSegment = substr(__NAMESPACE__, $versionSeparatorPos + 1);
|
||||
$pointPos = strpos($versionSegment, 'p');
|
||||
if ( ($pointPos !== false) && ($pointPos > 1) ) {
|
||||
$majorVersionSegment = substr($versionSegment, 0, $pointPos);
|
||||
$majorVersionNs = __NAMESPACE__ . '\\' . $majorVersionSegment;
|
||||
$this->staticMap[$majorVersionNs . '\\PucFactory'] =
|
||||
'Puc/' . $majorVersionSegment . '/Factory.php';
|
||||
}
|
||||
}
|
||||
|
||||
spl_autoload_register(array($this, 'autoload'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if this file is running as part of a Phar archive.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
private static function isPhar() {
|
||||
//Check if the current file path starts with "phar://".
|
||||
static $pharProtocol = 'phar://';
|
||||
return (substr(__FILE__, 0, strlen($pharProtocol)) === $pharProtocol);
|
||||
}
|
||||
|
||||
public function autoload($className) {
|
||||
if ( isset($this->staticMap[$className]) && file_exists($this->libraryDir . $this->staticMap[$className]) ) {
|
||||
include($this->libraryDir . $this->staticMap[$className]);
|
||||
return;
|
||||
}
|
||||
|
||||
if ( strpos($className, $this->prefix) === 0 ) {
|
||||
$path = substr($className, strlen($this->prefix));
|
||||
$path = str_replace(array('_', '\\'), '/', $path);
|
||||
$path = $this->rootDir . $path . '.php';
|
||||
|
||||
if ( file_exists($path) ) {
|
||||
include $path;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
endif;
|
||||
Reference in New Issue
Block a user