Build

class Build

Methods

public __construct() No description
protected print($text) No description
public request() No description
public checkVersion($repo) No description
public compare($date1) No description
public rm($name) No description
public extractAndMove($zipFile) No description
public downloadZip() No description
public check() No description

Details

at line 7

__construct()

public __construct()
at line 9

print()

protected print($text)

Parameters

$text
at line 13

request()

public request()
at line 33

checkVersion()

public checkVersion($repo)

Parameters

$repo
at line 41

compare()

public compare($date1)

Parameters

$date1
at line 59

rm()

public rm($name)

Parameters

$name
at line 63

extractAndMove()

public extractAndMove($zipFile)

Parameters

$zipFile
at line 118

downloadZip()

public downloadZip()
at line 142

check()

public check()

Source code

<?php
	
	date_default_timezone_set('America/Sao_Paulo');

	class Build {

		public function __construct(){}

		protected function print($text){
			echo "\n   {$text}\n";
		}

		public function request(){
			
			$opts = [
			        'http' => [
			                 'user_agent' => 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:13.0) Gecko/20100101 Firefox/13.0.1'
			        ]
			];

			$context = stream_context_create($opts);
			$repo = file_get_contents("https://api.github.com/repos/PaulaoDev/router-khan", false, $context);
			$repo = (array) json_decode($repo);

			if(!file_exists('.cli/update/dates/last.txt')){
				echo $repo["update_at"];
				file_put_contents('.cli/update/dates/last.txt', $repo["updated_at"]);
			}

			return $repo;
		}

		public function checkVersion($repo){

			if(!file_exists('.cli/update/dates/date.txt')){
				file_put_contents('.cli/update/dates/date.txt', $repo["created_at"]);
			}

		}

		public function compare($date1){

			$pushDate = (array) new DateTime($date1);
			$date = '.cli/update/dates/date.txt';
			$originDate = (array) new DateTime(file_get_contents($date));

			if($pushDate['date'] > $originDate['date']){

				$this->print("A uma nova versão mais recente disponivel.");
				$this->print("Aguarde iremos fazer a atualização!!");
				return true;

			}

			return false;

		}

		public function rm($name){
			system("rm -r {$name}");
		}

		public function extractAndMove($zipFile){

			$extractPath = ".cli/update/downloads/cache/";
			$zip = new ZipArchive;

			$res = $zip->open($zipFile);

			if ($res === TRUE) {

				$zip->extractTo($extractPath);
				$zip->close();

				$this->rm('src');

				rename(
					'.cli/update/downloads/cache/router-khan-master/src',
					'src'
				);
				rename(
					'.cli/update/downloads/cache/router-khan-master/khan',
					'khan'
				);
				rename(
					'.cli/update/downloads/cache/router-khan-master/documentation',
					'documentation'
				);

				rename(
					'.cli/update/downloads/cache/router-khan-master/README.md',
					'README.md'
				);

				unlink('.cli/update/downloads/update.zip');
				
				$this->rm('.cli/update/downloads/cache/router-khan-master');

				$date = new DateTime();

				file_put_contents(
					'.cli/update/dates/last.txt', 
					$date->format('Y-m-d')
				);

				$this->print("A atualização foi concluida com sucesso!!");

				return true;

			} else {

			  	$this->print("Erro ao atualizar!!");

			}

		}

		public function downloadZip(){
			$url = "https://github.com/PaulaoDev/router-khan/archive/master.zip";
			$zipFile = ".cli/update/downloads/update.zip";
			$zipResource = fopen($zipFile, "w");
			// Get The Zip File From Server
			$ch = curl_init();
			curl_setopt($ch, CURLOPT_URL, $url);
			curl_setopt($ch, CURLOPT_FAILONERROR, true);
			curl_setopt($ch, CURLOPT_HEADER, 0);
			curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
			curl_setopt($ch, CURLOPT_AUTOREFERER, true);
			curl_setopt($ch, CURLOPT_BINARYTRANSFER,true);
			curl_setopt($ch, CURLOPT_TIMEOUT, 10);
			curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
			curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
			curl_setopt($ch, CURLOPT_FILE, $zipResource);
			$page = curl_exec($ch);
			if(!$page) {
			 echo "Error :- ".curl_error($ch);
			}
			curl_close($ch);
			return (file_exists($zipFile)) ? $zipFile : false;
		}

		public function check(){

			$repo = $this->request();
			$this->data = $repo["updated_at"];

			file_put_contents('.cli/update/dates/new.txt', $this->data);

			$this->checkVersion($repo);

			if($this->compare($this->data)){

					if($this->extractAndMove($this->downloadZip())){

						file_put_contents('.cli/update/dates/date.txt', file_get_contents('.cli/update/dates/new.txt'));

					}

			}else{

				$this->print("O framework já está atualizado.");

			}

		}

	}