mirror of
https://github.com/xevidos/codiad.git
synced 2024-11-10 21:26:35 +01:00
192 lines
7.4 KiB
PHP
Executable File
192 lines
7.4 KiB
PHP
Executable File
<?php
|
|
|
|
/*
|
|
* Copyright (c) Codiad & daeks (codiad.com), distributed
|
|
* as-is and without warranty under the MIT License. See
|
|
* [root]/license.txt for more. This information must remain intact.
|
|
*/
|
|
|
|
class Update
|
|
{
|
|
|
|
//////////////////////////////////////////////////////////////////
|
|
// PROPERTIES
|
|
//////////////////////////////////////////////////////////////////
|
|
|
|
public $remote = "";
|
|
public $commits = "";
|
|
public $archive = "";
|
|
|
|
//////////////////////////////////////////////////////////////////
|
|
// METHODS
|
|
//////////////////////////////////////////////////////////////////
|
|
|
|
// -----------------------------||----------------------------- //
|
|
|
|
//////////////////////////////////////////////////////////////////
|
|
// Construct
|
|
//////////////////////////////////////////////////////////////////
|
|
|
|
public function __construct()
|
|
{
|
|
ini_set("user_agent", "Codiad");
|
|
$this->remote = "https://codiad.telaaedifex.com/update/?v={VER}&o={OS}&p={PHP}&w={WEB}&a={ACT}";
|
|
$this->commits = "https://gitlab.telaaedifex.com/api/v4/projects/3/repository/commits/";
|
|
$this->archive = "https://gitlab.telaaedifex.com/xevidos/codiad/-/archive/master/codiad-master.zip";
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////
|
|
// Set Initial Version
|
|
//////////////////////////////////////////////////////////////////
|
|
|
|
public function Init()
|
|
{
|
|
$version = array();
|
|
if (!file_exists(DATA ."/version.php")) {
|
|
if (file_exists(BASE_PATH."/.git/HEAD")) {
|
|
$remote = $this->getRemoteVersion("install_git");
|
|
$local = $this->getLocalVersion();
|
|
$version[] = array("version"=>$local[0]['version'],"time"=>time(),"optout"=>"true","name"=>"");
|
|
saveJSON('version.php', $version);
|
|
} else {
|
|
$remote = $this->getRemoteVersion("install_man");
|
|
$version[] = array("version"=>$remote[0]["commit"]["sha"],"time"=>time(),"optout"=>"true","name"=>"");
|
|
saveJSON('version.php', $version);
|
|
}
|
|
} else {
|
|
$local = $this->getLocalVersion();
|
|
|
|
if (file_exists(BASE_PATH."/.git/HEAD")) {
|
|
$current = getJSON('version.php');
|
|
if ($local[0]['version'] != $current[0]['version']) {
|
|
$remote = $this->getRemoteVersion("update_git", $local[0]['version']);
|
|
$version[] = array("version"=>$local[0]['version'],"time"=>time(),"optout"=>"true","name"=>"");
|
|
saveJSON('version.php', $version);
|
|
}
|
|
} else {
|
|
if ($local[0]['version'] == '' && $local[0]['name'] == $_SESSION['user']) {
|
|
$remote = $this->getRemoteVersion("update_man", $local[0]['version']);
|
|
$version[] = array("version"=>$remote[0]["commit"]["sha"],"time"=>time(),"optout"=>"true","name"=>$_SESSION['user']);
|
|
saveJSON('version.php', $version);
|
|
}
|
|
}
|
|
|
|
$local = $this->getLocalVersion();
|
|
if (!isset($local[0]['optout'])) {
|
|
$remote = $this->getRemoteVersion("optout", $local[0]['version']);
|
|
$this->OptOut();
|
|
}
|
|
}
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////
|
|
// Clear Version
|
|
//////////////////////////////////////////////////////////////////
|
|
|
|
public function Clear()
|
|
{
|
|
$version[] = array("version"=>"","time"=>time(),"optout"=>"true","name"=>$_SESSION['user']);
|
|
saveJSON('version.php', $version);
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////
|
|
// Clear Version
|
|
//////////////////////////////////////////////////////////////////
|
|
|
|
public function OptOut()
|
|
{
|
|
$current = getJSON('version.php');
|
|
$version[] = array("version"=>$current[0]['version'],"time"=>$current[0]['time'],"optout"=>"true","name"=>$current[0]['name']);
|
|
saveJSON('version.php', $version);
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////
|
|
// Check Version
|
|
//////////////////////////////////////////////////////////////////
|
|
|
|
public function Check()
|
|
{
|
|
$local = $this->getLocalVersion();
|
|
$remote = $this->getRemoteVersion("check", $local[0]['version']);
|
|
|
|
$nightly = true;
|
|
$archive = Common::getConstant('ARCHIVEURL', $this->archive);
|
|
$latest = '';
|
|
|
|
foreach ($remote as $tag) {
|
|
if ($latest == '') {
|
|
$latest = $tag["name"];
|
|
$archive = $tag["zipball_url"];
|
|
}
|
|
if ($local[0]['version'] == $tag["commit"]["sha"]) {
|
|
$local[0]['version'] = $tag["name"];
|
|
$nightly = false;
|
|
break;
|
|
}
|
|
}
|
|
|
|
$search = array("\r\n", "\n", "\r");
|
|
$replace = array(" ", " ", " ");
|
|
|
|
$message = '';
|
|
$merge = '';
|
|
$commits = json_decode(file_get_contents(Common::getConstant('COMMITURL', $this->commits)), true);
|
|
foreach ($commits as $commit) {
|
|
if ($local[0]['version'] != $commit["sha"]) {
|
|
if (strpos($commit["commit"]["message"], "Merge") === false) {
|
|
$message .= '- '.str_replace($search, $replace, $commit["commit"]["message"]).'<br/>';
|
|
} else {
|
|
$merge .= '- '.str_replace($search, $replace, $commit["commit"]["message"]).'<br/>';
|
|
}
|
|
} else {
|
|
break;
|
|
}
|
|
}
|
|
|
|
if ($message == '') {
|
|
$message = $merge;
|
|
}
|
|
|
|
return "[".formatJSEND("success", array("currentversion"=>$local[0]['version'],"remoteversion"=>$latest,"message"=>$message,"archive"=>$archive,"nightly"=>$nightly,"name"=>$local[0]['name']))."]";
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////
|
|
// Get Local Version
|
|
//////////////////////////////////////////////////////////////////
|
|
|
|
public function getLocalVersion()
|
|
{
|
|
if (file_exists(BASE_PATH."/.git/HEAD")) {
|
|
$tmp = file_get_contents(BASE_PATH."/.git/HEAD");
|
|
if (strpos($tmp, "ref:") === false) {
|
|
$data[0]['version'] = trim($tmp);
|
|
} else {
|
|
$data[0]['version'] = trim(file_get_contents(BASE_PATH."/.git/".trim(str_replace('ref: ', '', $tmp))));
|
|
}
|
|
$data[0]['name'] = "";
|
|
if (file_exists(DATA ."/version.php")) {
|
|
$data[0]['optout'] = "true";
|
|
}
|
|
} else {
|
|
$data = getJSON('version.php');
|
|
}
|
|
return $data;
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////
|
|
// Get Remote Version
|
|
//////////////////////////////////////////////////////////////////
|
|
|
|
public function getRemoteVersion($action, $localversion = "")
|
|
{
|
|
$remoteurl = Common::getConstant('UPDATEURL', $this->remote);
|
|
$remoteurl = str_replace("{OS}", PHP_OS, $remoteurl);
|
|
$remoteurl = str_replace("{PHP}", phpversion(), $remoteurl);
|
|
$remoteurl = str_replace("{VER}", $localversion, $remoteurl);
|
|
$remoteurl = str_replace("{WEB}", urlencode($_SERVER['SERVER_SOFTWARE']), $remoteurl);
|
|
$remoteurl = str_replace("{ACT}", $action, $remoteurl);
|
|
|
|
return json_decode(file_get_contents($remoteurl), true);
|
|
}
|
|
}
|