Filesystem helper improved
This commit is contained in:
parent
3066845489
commit
3504f2e6e7
|
@ -1,7 +0,0 @@
|
||||||
{
|
|
||||||
"plugin-data":
|
|
||||||
{
|
|
||||||
"name": "Remote Content",
|
|
||||||
"description": ""
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,10 +0,0 @@
|
||||||
{
|
|
||||||
"author": "Bludit",
|
|
||||||
"email": "",
|
|
||||||
"website": "https://plugins.bludit.com",
|
|
||||||
"version": "2.0",
|
|
||||||
"releaseDate": "2017-05-26",
|
|
||||||
"license": "MIT",
|
|
||||||
"compatible": "2.0",
|
|
||||||
"notes": ""
|
|
||||||
}
|
|
|
@ -1,130 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
class pluginRemoteContent extends Plugin {
|
|
||||||
|
|
||||||
public function init()
|
|
||||||
{
|
|
||||||
// Fields and default values for the database of this plugin
|
|
||||||
$this->dbFields = array(
|
|
||||||
'source'=>'localbluditv2.com/bl-content.zip',
|
|
||||||
'webhook'=>'remote-content-webhook'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function install($position=0)
|
|
||||||
{
|
|
||||||
parent::install($position);
|
|
||||||
$workspace = $this->workspace();
|
|
||||||
mkdir($workspace, 0755, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function uninstall()
|
|
||||||
{
|
|
||||||
parent::uninstall();
|
|
||||||
$workspace = $this->workspace();
|
|
||||||
Filesystem::deleteRecursive($workspace);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function beforeRulesLoad()
|
|
||||||
{
|
|
||||||
if( $this->webhook() ) {
|
|
||||||
$this->getFile();
|
|
||||||
$this->updateContent();
|
|
||||||
$this->cleanUp();
|
|
||||||
exit();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private function workspace()
|
|
||||||
{
|
|
||||||
return PATH_CONTENT.'remotecontent'.DS;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function webhook()
|
|
||||||
{
|
|
||||||
global $Url;
|
|
||||||
|
|
||||||
// Check URI start with the webhook
|
|
||||||
$webhook = $this->getValue('webhook');
|
|
||||||
if( empty($webhook) ) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
$startString = HTML_PATH_ROOT.$webhook;
|
|
||||||
$URI = $Url->uri();
|
|
||||||
$length = mb_strlen($startString, CHARSET);
|
|
||||||
if( mb_substr($URI, 0, $length)!=$startString ) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
Log::set('Plugin Remote Content'.LOG_SEP.'Webhook request.');
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function cleanUp()
|
|
||||||
{
|
|
||||||
Log::set('Plugin Remote Content'.LOG_SEP.'Cleaning...');
|
|
||||||
$workspace = $this->workspace();
|
|
||||||
Filesystem::deleteRecursive($workspace);
|
|
||||||
mkdir($workspace, 0755, true);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function updateContent()
|
|
||||||
{
|
|
||||||
// Directory where the zip file was uncompress
|
|
||||||
$destinationPath = $this->workspace();
|
|
||||||
|
|
||||||
// This helps when uncompress the zip file and the files are saved inside a directory
|
|
||||||
$listDirectories = Filesystem::listDirectories($destinationPath);
|
|
||||||
if(count($listDirectories)==1) {
|
|
||||||
$uncompressDirectory = $listDirectories[0];
|
|
||||||
} else {
|
|
||||||
$uncompressDirectory = $destinationPath;
|
|
||||||
}
|
|
||||||
|
|
||||||
$uncompressDirectory = rtrim($uncompressDirectory, '/');
|
|
||||||
|
|
||||||
// Copy page directory
|
|
||||||
if(Filesystem::directoryExists($uncompressDirectory.DS.'pages')) {
|
|
||||||
Log::set('Plugin Remote Content'.LOG_SEP.'Copying pages...');
|
|
||||||
Filesystem::copyRecursive($uncompressDirectory.DS.'pages', PATH_PAGES);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Copy databases directory
|
|
||||||
if(Filesystem::directoryExists($uncompressDirectory.DS.'databases')) {
|
|
||||||
Log::set('Plugin Remote Content'.LOG_SEP.'Copying databases...');
|
|
||||||
Filesystem::copyRecursive($uncompressDirectory.DS.'databases', PATH_DATABASES);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Copy uploads directory
|
|
||||||
if(Filesystem::directoryExists($uncompressDirectory.DS.'uploads')) {
|
|
||||||
Log::set('Plugin Remote Content'.LOG_SEP.'Copying uploads...');
|
|
||||||
Filesystem::copyRecursive($uncompressDirectory.DS.'uploads', PATH_UPLOADS);
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function getFile()
|
|
||||||
{
|
|
||||||
// Download the zip file
|
|
||||||
Log::set('Plugin Remote Content'.LOG_SEP.'Downloading the zip file.');
|
|
||||||
$url = $this->getValue('source');
|
|
||||||
$destinationPath = $this->workspace();
|
|
||||||
$destinationFile = $destinationPath.'content.zip';
|
|
||||||
TCP::download($url, $destinationFile);
|
|
||||||
|
|
||||||
// Uncompress the zip file
|
|
||||||
Log::set('Plugin Remote Content'.LOG_SEP.'Uncompress the zip file.');
|
|
||||||
$zip = new ZipArchive;
|
|
||||||
if($zip->open($destinationFile)===true) {
|
|
||||||
$zip->extractTo($destinationPath);
|
|
||||||
$zip->close();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Delete the zip file
|
|
||||||
unlink($destinationFile);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue