mirror of
https://port.numenaute.org/aleajactaest/khanat-opennel-code.git
synced 2024-11-30 15:45:59 +00:00
Plugin installation first upload t{block name=content}
This commit is contained in:
parent
32db353677
commit
a634c35fc5
5 changed files with 189 additions and 53 deletions
|
@ -61,16 +61,23 @@ plugin_name = "Name"
|
||||||
plugin_version = "Version"
|
plugin_version = "Version"
|
||||||
plugin_description = "Description"
|
plugin_description = "Description"
|
||||||
plugin_type = "Type"
|
plugin_type = "Type"
|
||||||
plugin_permission = "Access Permission"
|
plugin_permission = "Access</br> Permission"
|
||||||
plugin_status = "Status"
|
plugin_status = "Status"
|
||||||
ip_success = "Plugin added succesfully."
|
ip_success = "Plugin added succesfuly."
|
||||||
|
plugin_actions = "Actions"
|
||||||
|
dp_success = "Plugin deleted successfuly"
|
||||||
|
dp_error = "Error in deleting plugin.Please try again later"
|
||||||
|
ac_success = "Plugin Activated successfuly"
|
||||||
|
ac_error = "Plugin facing some error in activating. Please try again later"
|
||||||
|
dc_success = "Plugin de-Activated successfuly"
|
||||||
|
dc_error = "Plugin facing some error in de-activating. Please try again later"
|
||||||
|
|
||||||
[install_plugin]
|
[install_plugin]
|
||||||
ip_title = "Install a new Plugin"
|
ip_title = "Install a new Plugin"
|
||||||
ip_message = "For example: name.zip from your local computer"
|
ip_message = "For example: name.zip from your local computer"
|
||||||
ip_support = "Upload the plugin archieve to install.</br>The following file extension is supported: zip."
|
ip_support = "Upload the plugin archieve to install.</br>The following file extension is supported: zip."
|
||||||
ip_error = "Please select the format with zip extension"
|
|
||||||
ip_info_nfound = "Info file not found in the Plugin.Please recheck"
|
ip_info_nfound = "Info file not found in the Plugin.Please recheck"
|
||||||
|
ip_file_nfnd="Please upload a plugin before clicking on install button"
|
||||||
|
|
||||||
[show_ticket]
|
[show_ticket]
|
||||||
t_title = "Ticket"
|
t_title = "Ticket"
|
||||||
|
|
|
@ -11,7 +11,18 @@ function install_plugin() {
|
||||||
// if logged in
|
// if logged in
|
||||||
if ( WebUsers :: isLoggedIn() ) {
|
if ( WebUsers :: isLoggedIn() ) {
|
||||||
|
|
||||||
if ( ( isset( $_FILES["file"] ) ) && ( $_FILES["file"]["size"] > 0 ) && ( $_FILES["file"]["type"] == 'application/zip' ) )
|
// path of temporary folder for storing files
|
||||||
|
$temp_path = "../../ams_lib/temp";
|
||||||
|
|
||||||
|
// create a temp directory if not exist
|
||||||
|
// temp folder where we first store all uploaded plugins before install
|
||||||
|
if ( !file_exists( "$temp_path" ) )
|
||||||
|
{
|
||||||
|
mkdir( $temp_path );
|
||||||
|
}
|
||||||
|
|
||||||
|
// checking the server if file is uploaded or not
|
||||||
|
if ( ( isset( $_FILES["file"] ) ) && ( $_FILES["file"]["size"] > 0 ) )
|
||||||
{
|
{
|
||||||
$fileName = $_FILES["file"]["name"]; //the files name takes from the HTML form
|
$fileName = $_FILES["file"]["name"]; //the files name takes from the HTML form
|
||||||
$fileTmpLoc = $_FILES["file"]["tmp_name"]; //file in the PHP tmp folder
|
$fileTmpLoc = $_FILES["file"]["tmp_name"]; //file in the PHP tmp folder
|
||||||
|
@ -19,40 +30,44 @@ function install_plugin() {
|
||||||
$target_path = "../../ams_lib/plugins/$dir"; //path in which the zip extraction is to be done
|
$target_path = "../../ams_lib/plugins/$dir"; //path in which the zip extraction is to be done
|
||||||
$destination = "../../ams_lib/plugins/";
|
$destination = "../../ams_lib/plugins/";
|
||||||
|
|
||||||
if ( move_uploaded_file( $fileTmpLoc, $destination . $fileName ) ) {
|
// checking for the command to install plugin is given or not
|
||||||
// zip object to handle zip archieves
|
if ( !isset( $_POST['install_plugin'] ) )
|
||||||
$zip = new ZipArchive();
|
{
|
||||||
$x = $zip -> open( $destination . $fileName );
|
if ( ( $_FILES["file"]["type"] == 'application/zip' ) )
|
||||||
if ( $x === true ) {
|
{
|
||||||
$zip -> extractTo( $destination ); // change this to the correct site path
|
if ( move_uploaded_file( $fileTmpLoc, $temp_path . "/" . $fileName ) ) {
|
||||||
$zip -> close();
|
echo "$fileName upload is complete.";
|
||||||
|
exit();
|
||||||
// removing the uploaded zip file
|
}
|
||||||
unlink( $destination . $fileName );
|
else
|
||||||
|
{
|
||||||
// check for the info file
|
echo "Error in uploading file.";
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
echo "Please select a file with .zip extension to upload.";
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
|
||||||
|
// calling function to unzip archives
|
||||||
|
if ( zipExtraction( $temp_path . "/" . $fileName , $destination ) )
|
||||||
|
{
|
||||||
if ( file_exists( $target_path . "/.info" ) )
|
if ( file_exists( $target_path . "/.info" ) )
|
||||||
{
|
{
|
||||||
// read the details of the plugin through the info file
|
$result = array();
|
||||||
$file_handle = fopen( $target_path . "/.info", "r" );
|
$result = readPluginFile( ".info", $target_path );
|
||||||
$result = array();
|
|
||||||
while ( !feof( $file_handle ) ) {
|
|
||||||
|
|
||||||
$line_of_text = fgets( $file_handle );
|
|
||||||
$parts = array_map( 'trim', explode( '=', $line_of_text, 2 ) );
|
|
||||||
@$result[$parts[0]] = $parts[1];
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
fclose( $file_handle );
|
|
||||||
|
|
||||||
// sending all info to the database
|
// sending all info to the database
|
||||||
$install_result = array();
|
$install_result = array();
|
||||||
$install_result['FileName'] = $target_path;
|
$install_result['FileName'] = $target_path;
|
||||||
$install_result['Name'] = $result['PluginName'];
|
$install_result['Name'] = $result['PluginName'];
|
||||||
$install_result['Type'] = $result['type'];
|
// $install_result['Type'] = $result['type'];
|
||||||
|
if ( Ticket_User :: isMod( unserialize( $_SESSION['ticket_user'] ) ) )
|
||||||
if ( Ticket_User :: isMod( unserialize( $_SESSION['ticket_user'] ) ) )
|
|
||||||
{
|
{
|
||||||
$install_result['Permission'] = 'admin';
|
$install_result['Permission'] = 'admin';
|
||||||
}
|
}
|
||||||
|
@ -67,28 +82,87 @@ function install_plugin() {
|
||||||
$dbr = new DBLayer( "lib" );
|
$dbr = new DBLayer( "lib" );
|
||||||
$dbr -> insert( "plugins", $install_result );
|
$dbr -> insert( "plugins", $install_result );
|
||||||
|
|
||||||
header( "Location: index.php?page=plugins&result=1" );
|
// if everything is successfull redirecting to the plugin template
|
||||||
|
header( "Location: index.php?page=plugins&result=1" );
|
||||||
exit;
|
exit;
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
// file .info not exists
|
||||||
rmdir( $target_path );
|
rmdir( $target_path );
|
||||||
header( "Location: index.php?page=install_plugin&result=2" );
|
header( "Location: index.php?page=install_plugin&result=2" );
|
||||||
exit;
|
exit;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
} else
|
||||||
|
{
|
||||||
|
// extraction failed
|
||||||
|
header( "Location: index.php?page=install_plugin&result=0" );
|
||||||
|
exit;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
header( "Location: index.php?page=plugins" );
|
else
|
||||||
exit;
|
{
|
||||||
|
echo "Please Browse for a file before clicking the upload button";
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* function to unzip the zipped files
|
||||||
|
*
|
||||||
|
* @param $target_path path to the target zipped file
|
||||||
|
* @param $destination path to the destination
|
||||||
|
* @return boolean
|
||||||
|
*/
|
||||||
|
function zipExtraction( $target_path, $destination )
|
||||||
|
{
|
||||||
|
$zip = new ZipArchive();
|
||||||
|
$x = $zip -> open( $target_path );
|
||||||
|
if ( $x === true ) {
|
||||||
|
if ( $zip -> extractTo( $destination ) )
|
||||||
|
{
|
||||||
|
$zip -> close();
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
header( "Location: index.php?page=install_plugin&result=1" );
|
$zip -> close();
|
||||||
exit;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* function to read text files and extract
|
||||||
|
* the information into an array
|
||||||
|
*
|
||||||
|
* -----------------------------------------------------------
|
||||||
|
* format:
|
||||||
|
* -----------------------------------------------------------
|
||||||
|
* PluginName = Name of the plugin
|
||||||
|
* Version = version of the plugin
|
||||||
|
* Type = type of the plugin
|
||||||
|
* Description = Description of the plugin ,it's functionality
|
||||||
|
* -----------------------------------------------------------
|
||||||
|
*
|
||||||
|
* reads only files with name .info
|
||||||
|
*
|
||||||
|
* @param $fileName file to read
|
||||||
|
* @param $targetPath path to the folder containing .info file
|
||||||
|
* @return array containing above information in array(value => key)
|
||||||
|
*/
|
||||||
|
function readPluginFile( $fileName, $target_path )
|
||||||
|
{
|
||||||
|
$file_handle = fopen( $target_path . "/" . $fileName, "r" );
|
||||||
|
$result = array();
|
||||||
|
while ( !feof( $file_handle ) ) {
|
||||||
|
$line_of_text = fgets( $file_handle );
|
||||||
|
$parts = array_map( 'trim', explode( '=', $line_of_text, 2 ) );
|
||||||
|
@$result[$parts[0]] = $parts[1];
|
||||||
|
}
|
||||||
|
fclose( $file_handle );
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
|
@ -15,12 +15,15 @@
|
||||||
<center>
|
<center>
|
||||||
<p>{$ip_support}</p>
|
<p>{$ip_support}</p>
|
||||||
<div class="alert alert-error">
|
<div class="alert alert-error">
|
||||||
<form enctype="multipart/form-data" method="post" action="index.php?page=plugin&action=install_plugin" >
|
<form enctype="multipart/form-data" method="post" action="index.php?page=plugin&action=install_plugin" id="upload_plugin" >
|
||||||
<label for="file">Filename:</label>
|
<label for="file">Filename:</label>
|
||||||
<input type="file" name="file" id="file"></br>
|
<input type="file" name="file" id="file"></br>
|
||||||
{if isset($smarty.get.result) and $smarty.get.result eq "1"}<p>{$ip_error}</p>{/if}
|
<progress id="progressBar" value="0" max="100" style="width:300px;"></progress></br>
|
||||||
|
<input type="button" value="Upload" onclick="uploadPlugin()"></br>
|
||||||
|
<h3 id="status"></h3>
|
||||||
|
{if isset($smarty.get.result) and $smarty.get.result eq "0"}<p>{$ip_file_nfnd}</p>{/if}
|
||||||
{if isset($smarty.get.result) and $smarty.get.result eq "2"}<p>{$ip_info_nfound}</p>{/if}
|
{if isset($smarty.get.result) and $smarty.get.result eq "2"}<p>{$ip_info_nfound}</p>{/if}
|
||||||
<button type="submit" class="btn btn-primary" style="margin-left:5px; margin-top:10px;">Install Plugin</button></br>
|
<button type="submit" class="btn btn-primary" style="margin-left:5px; margin-top:10px;" name="install_plugin">Install Plugin</button></br>
|
||||||
</div>
|
</div>
|
||||||
{$ip_message}
|
{$ip_message}
|
||||||
</center>
|
</center>
|
||||||
|
|
|
@ -192,6 +192,50 @@
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<!-- script for file uploading-->
|
||||||
|
<script>
|
||||||
|
function _(e1)
|
||||||
|
{
|
||||||
|
return document.getElementById(e1);
|
||||||
|
}
|
||||||
|
|
||||||
|
function uploadPlugin()
|
||||||
|
{
|
||||||
|
var fileObject = _("file").files[0];
|
||||||
|
var formdata = new FormData();
|
||||||
|
formdata.append("file",fileObject);
|
||||||
|
var ajax = new XMLHttpRequest();
|
||||||
|
ajax.upload.addEventListener("progress", progressHandler, false);
|
||||||
|
ajax.addEventListener("load", completeHandler, false);
|
||||||
|
ajax.addEventListener("error", errorHandler, false);
|
||||||
|
ajax.addEventListener("abort", abortHandler, false);
|
||||||
|
ajax.open("POST", "index.php?page=plugin&action=install_plugin");
|
||||||
|
ajax.send(formdata);
|
||||||
|
}
|
||||||
|
|
||||||
|
function progressHandler(event)
|
||||||
|
{
|
||||||
|
var percent = (event.loaded/event.total)*100;
|
||||||
|
_("progressBar").value = Math.round(percent);
|
||||||
|
}
|
||||||
|
|
||||||
|
function completeHandler(event)
|
||||||
|
{
|
||||||
|
_("status").innerHTML = event.target.responseText;
|
||||||
|
_("progressBar").value = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
function errorHandler(event)
|
||||||
|
{
|
||||||
|
_("status").innerHTML = "upload Failed";
|
||||||
|
}
|
||||||
|
|
||||||
|
function abortHandler(event)
|
||||||
|
{
|
||||||
|
_("status").innerHTML = "upload Aborted";
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
<!-- jQuery -->
|
<!-- jQuery -->
|
||||||
<script src="js/jquery-1.7.2.min.js"></script>
|
<script src="js/jquery-1.7.2.min.js"></script>
|
||||||
<!-- jQuery UI -->
|
<!-- jQuery UI -->
|
||||||
|
|
|
@ -10,23 +10,28 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{if isset($smarty.get.result) and $smarty.get.result eq "1"}<div class="alert alert-error"><p>{$ip_success}</p></div>{/if}
|
{if isset($smarty.get.result) and $smarty.get.result eq "1"}<div class="alert alert-error"><p>{$ip_success}</p></div>{/if}
|
||||||
|
{if isset($smarty.get.result) and $smarty.get.result eq "0"}<div class="alert alert-error"><p>{$dp_error}</p></div>{/if}
|
||||||
|
{if isset($smarty.get.result) and $smarty.get.result eq "2"}<div class="alert alert-error"><p>{$dp_success}</p></div>{/if}
|
||||||
|
{if isset($smarty.get.result) and $smarty.get.result eq "3"}<div class="alert alert-error"><p>{$ac_success}</p></div>{/if}
|
||||||
|
{if isset($smarty.get.result) and $smarty.get.result eq "4"}<div class="alert alert-error"><p>{$ac_error}</p></div>{/if}
|
||||||
|
{if isset($smarty.get.result) and $smarty.get.result eq "5"}<div class="alert alert-error"><p>{$dc_success}</p></div>{/if}
|
||||||
|
{if isset($smarty.get.result) and $smarty.get.result eq "6"}<div class="alert alert-error"><p>{$dc_error}</p></div>{/if}
|
||||||
<div class="box-content">
|
<div class="box-content">
|
||||||
<center><p>{$plugin_info}</p></center>
|
<center><p>{$plugin_info}</p></center>
|
||||||
<center><a href="index.php?page=plugins&action=deletePlugins"><button class="btn btn-primary btn-large">Delete</button></a>
|
<center>
|
||||||
<a href="index.php?page=plugins&action=activatePlugins"><button class="btn btn-primary btn-large dropdown-toggle">Activate</button></a>
|
<a href="index.php?page=install_plugin"><button class="btn btn-primary btn-large dropdown-toggle">Install New Plugin</button></a>
|
||||||
<a href="index.php?page=plugins&action=deactivatePlugins"><button class="btn btn-primary btn-large dropdown-toggle">Deactivate</button></a>
|
<a href="index.php?page=plugins_update"><button class="btn btn-primary btn-large dropdown-toggle">Check for updates</button></a>
|
||||||
<a href="index.php?page=install_plugin"><button class="btn btn-primary btn-large dropdown-toggle">Add</button></a>
|
</center>
|
||||||
<a href="index.php?page=plugins&action=updatePlugins"><button class="btn btn-primary btn-large dropdown-toggle">Check for updates</button></a>
|
|
||||||
</center>
|
|
||||||
<table class="table table-striped table-bordered">
|
<table class="table table-striped table-bordered">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>{$plugin_status}</th>
|
<th>{$plugin_status}</th>
|
||||||
<th width="150">{$plugin_name}</th>
|
<th width="100">{$plugin_name}</th>
|
||||||
<th>{$plugin_version}</th>
|
<th>{$plugin_version}</th>
|
||||||
<th width="400">{$plugin_description}</th>
|
<th width="350">{$plugin_description}</th>
|
||||||
<th>{$plugin_type}</th>
|
<th width="80">{$plugin_type}</th>
|
||||||
<th>{$plugin_permission}</th>
|
<th>{$plugin_permission}</th>
|
||||||
|
<th>{$plugin_actions}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
@ -38,6 +43,9 @@
|
||||||
<td class="center">{$element.plugin_info->Description}</td>
|
<td class="center">{$element.plugin_info->Description}</td>
|
||||||
<td class="center">{$element.plugin_type}</td>
|
<td class="center">{$element.plugin_type}</td>
|
||||||
<td class="center">{$element.plugin_permission}</td>
|
<td class="center">{$element.plugin_permission}</td>
|
||||||
|
<td><a href="index.php?page=plugins&action=delete_plugin&id={$element.id}"><button class="btn btn-primary btn-large">Delete</button></a>
|
||||||
|
{if ($element.plugin_status) eq "0"}<a href="index.php?page=plugins&action=activate_plugin&id={$element.id}"><button class="btn btn-primary btn-large dropdown-toggle">Activate</button></a>{/if}
|
||||||
|
{if ($element.plugin_status) eq "1"}<a href="index.php?page=plugins&action=deactivate_plugin&id={$element.id}"><button class="btn btn-primary btn-large dropdown-toggle">Deactivate</button></a>{/if}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{/foreach}
|
{/foreach}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue