Skip to content

Commit

Permalink
httpCode bug fix
Browse files Browse the repository at this point in the history
  • Loading branch information
Riaz-Mahmud committed Dec 19, 2022
1 parent 7e1cd46 commit 367d94d
Show file tree
Hide file tree
Showing 2 changed files with 72 additions and 48 deletions.
106 changes: 61 additions & 45 deletions src/WebsiteBackup.php
Original file line number Diff line number Diff line change
Expand Up @@ -46,67 +46,83 @@ public function backup($url , $path){

$this->url = $url;
$this->path = $path;
Helper::generateFolder($this->path);
Helper::setFolderPath( $this->path );
Helper::logEntry('Info: Backup started for '.$this->url);

$baseUrl = Helper::getDomain( $this->url );
Helper::logEntry('Info: Base URL: '.$baseUrl);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $this->url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$status = http_response_code( curl_getinfo($ch, CURLINFO_HTTP_CODE) );
Helper::logEntry('Info: '. 'Site Status: '.$status);
if ($status != 200) {
if(!$this->url || !$this->path){
$this->data['error'] = true;
$this->data['message'] = "Site is not available or not found. Please check the URL. ErrorCode: $status";
Helper::logEntry('Error '. $this->data['message']);
$this->data['message'] = 'URL or Path is missing';
return $this->data;
}

$output = curl_exec($ch);

$dom = new \DOMDocument();
@$dom->loadHTML($output);
set_time_limit(0);
try{
Helper::generateFolder($this->path);
Helper::setFolderPath( $this->path );
Helper::logEntry('Info: Backup started for '.$this->url);

$baseUrl = Helper::getDomain( $this->url );
Helper::logEntry('Info: Base URL: '.$baseUrl);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $this->url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$status = Helper::get_http_response_code($this->url);
Helper::logEntry('Info: '. 'Site Status: '.$status);
if ($status != 200) {
$this->data['error'] = true;
$this->data['message'] = "Site is not available or not found. Please check the URL. ErrorCode: $status";
Helper::logEntry('Error '. $this->data['message']);
return $this->data;
}

foreach ($this->elements as $element => $value) {
$links = $dom->getElementsByTagName($element);
if($links->length > 0){
$folderName = $path.$value['folder'];
Helper::generateFolder($folderName);
if($element == 'img' || $element == 'div'){
$this->image($links , $baseUrl , $folderName);
}else{
$this->common($links, $value['attribute'], $baseUrl, $folderName);
$output = curl_exec($ch);

$dom = new \DOMDocument();
@$dom->loadHTML($output);
set_time_limit(0);

foreach ($this->elements as $element => $value) {
$links = $dom->getElementsByTagName($element);
if($links->length > 0){
$folderName = $path.$value['folder'];
Helper::generateFolder($folderName);
if($element == 'img' || $element == 'div'){
$this->image($links , $baseUrl , $folderName);
}else{
$this->common($links, $value['attribute'], $baseUrl, $folderName);
}
}
}
}

$html = $dom->saveHTML();
$html = $this->downloadContent($html);
file_put_contents($path.'/index.html', $html);
$html = $dom->saveHTML();
$html = $this->downloadContent($html);
file_put_contents($path.'/index.html', $html);

curl_close($ch);
curl_close($ch);

$this->data['error'] = false;
$this->data['message'] = 'Backup created successfully';
$this->data['path'] = $path . '/index.html';
$this->data['error'] = false;
$this->data['message'] = 'Backup created successfully';
$this->data['path'] = $path . '/index.html';

Helper::logEntry('Info: '. $this->data['message']. ' Path: '.$this->data['path'] );
Helper::logEntry('Info: '. $this->data['message']. ' Path: '.$this->data['path'] );

Helper::logEntry('Download Queue: Unsuccesful download links =>');
foreach ($this->downloadQueue as $value) {
if($value['status'] == 'pending'){
Helper::logEntry('Pending Queue: link:'. $value['url'] . ' status:'. $value['status']);
Helper::logEntry('Download Queue: Unsuccesful download links =>');
foreach ($this->downloadQueue as $value) {
if($value['status'] == 'pending'){
Helper::logEntry('Pending Queue: link:'. $value['url'] . ' status:'. $value['status']);
}
}
}

set_time_limit(30);
set_time_limit(30);

return $this->data;

return $this->data;
}catch(\Exception $e){
$this->data['error'] = true;
$this->data['message'] = $e->getMessage();
Helper::logEntry('Error: '. $this->data['message']);
set_time_limit(30);
return $this->data;
}
}

protected function downloadContent($html){
Expand Down
14 changes: 11 additions & 3 deletions src/WebsiteBackupHelper.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,11 @@ public static function setFolderPath($path){
self::$folder_path = $path;
}

public static function get_http_response_code($url) {
$headers = get_headers($url);
return substr($headers[0], 9, 3);
}

public static function getDomain($url){
$base_url = parse_url($url, PHP_URL_HOST);
if(!$base_url){
Expand Down Expand Up @@ -65,7 +70,6 @@ public static function imageFileName($link){

$image_ext = ['jpg', 'jpeg', 'png', 'apng', 'gif', 'svg', 'webp', 'bmp', 'ico', 'cur', 'tiff', 'tif', 'jfif', 'pjpeg', 'pjp', 'avif'];


$ext = collect($image_ext)->filter(function($item) use ($file_ext){
return strpos($file_ext, $item) !== false;
})->first();
Expand Down Expand Up @@ -178,8 +182,12 @@ public static function checkFirstSlash($url){
}

public static function generateFolder($path){
if(!is_dir($path)){
mkdir($path, 0777, true);
try{
if(!is_dir($path)){
mkdir($path, 0777, true);
}
}catch (\Exception $e){
self::logEntry("Error: ".$e->getMessage());
}
}

Expand Down

0 comments on commit 367d94d

Please sign in to comment.