class ApplicationUtils
{
private static $GIT_URL = 'https://raw.githubusercontent.com/shaarli/Shaarli';
- private static $GIT_BRANCH = 'master';
+ private static $GIT_BRANCHES = array('master', 'stable');
private static $VERSION_FILE = 'shaarli_version.php';
private static $VERSION_START_TAG = '<?php /* ';
private static $VERSION_END_TAG = ' */ ?>';
*/
public static function getLatestGitVersionCode($url, $timeout=2)
{
- list($headers, $data) = get_http_url($url, $timeout);
+ list($headers, $data) = get_http_response($url, $timeout);
if (strpos($headers[0], '200 OK') === false) {
error_log('Failed to retrieve ' . $url);
* @param bool $enableCheck whether to check for new versions
* @param bool $isLoggedIn whether the user is logged in
*
+ * @throws Exception an invalid branch has been set for update checks
+ *
* @return mixed the new version code if available and greater, else 'false'
*/
- public static function checkUpdate(
- $currentVersion, $updateFile, $checkInterval, $enableCheck, $isLoggedIn)
+ public static function checkUpdate($currentVersion,
+ $updateFile,
+ $checkInterval,
+ $enableCheck,
+ $isLoggedIn,
+ $branch='stable')
{
if (! $isLoggedIn) {
// Do not check versions for visitors
return false;
}
+ if (! in_array($branch, self::$GIT_BRANCHES)) {
+ throw new Exception(
+ 'Invalid branch selected for updates: "' . $branch . '"'
+ );
+ }
+
// Late Static Binding allows overriding within tests
// See http://php.net/manual/en/language.oop5.late-static-bindings.php
$latestVersion = static::getLatestGitVersionCode(
- self::$GIT_URL . '/' . self::$GIT_BRANCH . '/' . self::$VERSION_FILE
+ self::$GIT_URL . '/' . $branch . '/' . self::$VERSION_FILE
);
if (! $latestVersion) {
/**
* Checks Shaarli has the proper access permissions to its resources
*
- * @param array $globalConfig The $GLOBALS['config'] array
+ * @param ConfigManager $conf Configuration Manager instance.
*
* @return array A list of the detected configuration issues
*/
- public static function checkResourcePermissions($globalConfig)
+ public static function checkResourcePermissions($conf)
{
$errors = array();
'application',
'inc',
'plugins',
- $globalConfig['RAINTPL_TPL']
+ $conf->get('resource.raintpl_tpl'),
) as $path) {
if (! is_readable(realpath($path))) {
$errors[] = '"'.$path.'" directory is not readable';
// Check cache and data directories are readable and writeable
foreach (array(
- $globalConfig['CACHEDIR'],
- $globalConfig['DATADIR'],
- $globalConfig['PAGECACHE'],
- $globalConfig['RAINTPL_TMP']
+ $conf->get('resource.thumbnails_cache'),
+ $conf->get('resource.data_dir'),
+ $conf->get('resource.page_cache'),
+ $conf->get('resource.raintpl_tmp'),
) as $path) {
if (! is_readable(realpath($path))) {
$errors[] = '"'.$path.'" directory is not readable';
// Check configuration files are readable and writeable
foreach (array(
- $globalConfig['CONFIG_FILE'],
- $globalConfig['DATASTORE'],
- $globalConfig['IPBANS_FILENAME'],
- $globalConfig['LOG_FILE'],
- $globalConfig['UPDATECHECK_FILENAME']
+ $conf->getConfigFileExt(),
+ $conf->get('resource.datastore'),
+ $conf->get('resource.ban_file'),
+ $conf->get('resource.log'),
+ $conf->get('resource.update_check'),
) as $path) {
if (! is_file(realpath($path))) {
# the file may not exist yet