Файл: InstantSocial/uploud/admin/modules/ajax/packload.php
Строк: 195
<?php
session_start();
define("VALID_CMS", 1);
define("VALID_CMS_ADMIN", 1);
define('PATH', $_SERVER['DOCUMENT_ROOT']);
include(PATH.'/core/cms.php');
require_once('../includes/pclzip.lib.php');
$inCore = cmsCore::getInstance();
$inCore->loadClass('user');
$inUser = cmsUser::getInstance();
if (!$inUser->update()) { $inCore->halt(); }
if (!$inUser->is_admin) { $inCore->halt(); }
$adminAccess = $inCore->checkAdminAccess();
if (!$inCore->isAdminCan('admin/packinstall', $adminAccess)) {return;}
$from=$inCore->request('from','str',"");
$autoinstall=$inCore->request('auto','int',0);
$logs=array();
$error=false;
$paket="";
switch($from){
case 'storage':
$rfilename=$_FILES['zipfile']['name'];
$ext=pathinfo($rfilename);
$ext=strtolower($ext['extension']);
if($ext!='zip'){$logs[]='> BAD FILE FORMAT!';break;}
$target=PATH.'/temp/'.$rfilename;
if (!file_exists(dirname($target))) {
$logs[]='> CREATE DIRECTORY "'.dirname($target).'"';
$result=@mkdir(dirname($target), 0775);
if($result){
$logs[]='> Ok.';
}else{
$logs[]='> COULD NOT CREATE DIRECTORY '.dirname($target);
}
}
if(@move_uploaded_file($_FILES['zipfile']['tmp_name'],$target)){
$logs[]='> DONE.';
}else{
$logs[]='> ERROR UPLOADING!';break;
}
$packet=$target;
break;
case 'url':
$url=$inCore->request('url','str',"");
$inputHandle = @ fopen($url, "r");
if (!$inputHandle) {
$logs[]='> SERVER CONNECT FAILED';
$error=true;
break;
}
$meta_data = stream_get_meta_data($inputHandle);
foreach($meta_data['wrapper_data'] as $wrapper_data){
if (substr($wrapper_data, 0, strlen("Content-Disposition")) == "Content-Disposition") {
$contentfilename = explode (""", $wrapper_data);
$target = $contentfilename[1];
}
}
if (!$target) {
$target = PATH.'/temp/'.getFilenameFromURL($url);
} else {
$target = PATH.'/temp/'.basename($target);
}
$ext=pathinfo($target);
$ext=strtolower($ext['extension']);
if($ext!='zip'){
$logs[]='> BAD FILE FORMAT!';
$error=true;
break;
}
$contents = null;
while (!feof($inputHandle)){
$contents .= fread($inputHandle, 4096);
if ($contents == false) {
$logs[]='> FAILED READING NETWORK RESOURCE';
$error=true;
break;
}
}
if($error){break;}
$rcount=false;
if (!file_exists(dirname($target))) {
$logs[]='> CREATE DIRECTORY "'.dirname($target).'"';
$result=@mkdir(dirname($target), 0775);
if($result){
$logs[]='> Ok.';
}else{
$logs[]='> COULD NOT CREATE DIRECTORY '.dirname($target);
}
}
$rcount=@file_put_contents($target, $contents);
fclose($inputHandle);
if($rcount){
$logs[]='> '.$rcount.' bytes complete';
}else{
$logs[]='> FAILED TO OPEN STREAM: NO SUCH FILE OR DIRECTORY!';
break;
}
$packet=$target;
break;
}
if($packet!="" && $error==false){
$arhive = new PclZip($packet);
$logs[]='> EXTRACT...';
if($arhive->extract(PCLZIP_OPT_PATH,PATH.'/')){
$logs[]='> DONE.';
}else{
$logs[]='> '.$arhive->errorInfo(true);
$error=true;
}
if(!$error && $autoinstall){
$inCore->loadClass('page');
$inCore->loadClass('plugin');
$new_plugins = $inCore->getNewPlugins();
$new_modules = $inCore->getNewModules();
$new_components = $inCore->getNewComponents();
$logs[]='> FIND AND INSTALL NEW PLUGINS...';
if($new_plugins){
foreach($new_plugins as $plugin){
$p_obj=$inCore->loadPlugin($plugin);
if($p_obj){
$logs[]='>>> install plugin '.$p_obj->info['plugin'];
if(@$p_obj->install()){
$logs[]='> OK.';
}else{
$logs[]='> ERROR!';
}
}
}
}else{$logs[]='> NO FOUND NEW PLUGINS.';}
$logs[]='> FIND AND INSTALL NEW COMPONENTS...';
if($new_components){
foreach($new_components as $component){
if($inCore->loadComponentInstaller($component)){
$_component = call_user_func('info_component_'.$component);
$logs[]='>>> install component '.$_component['link'];
$fl= call_user_func('install_component_'.$component);
if($fl===true){
@$inCore->installComponent($_component, $_component['config']);
$logs[]="> OK.";
}else{
$logs[]='> ERROR!';
}
}
}
}else{$logs[]='> NO FOUND NEW COMPONENTS.';}
$logs[]='> FIND AND INSTALL NEW MODULES...';
if($new_modules){
foreach($new_modules as $module){
if ($inCore->loadModuleInstaller($module)) {
$_module = call_user_func('info_module_'.$module);
$logs[]='>>> install module '.$_module['link'];
$fl=call_user_func('install_module_'.$module);
if($fl===true){
@$inCore->installModule($_module, $_module['config']);
$logs[]='> OK.';
}else{
$logs[]='> ERROR';
}
}
}
}else{
$logs[]='> NO FOUND NEW MODULES.';
}
}
if(file_exists($packet)){@unlink($packet);}
}
echo json_encode($logs);
function getFilenameFromURL($url){
if (is_string($url)) {
$parts = explode('/', $url);
return $parts[count($parts) - 1];
}
return false;
}
?>