Вход Регистрация
Файл: 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_data0strlen("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;
  }

?>
Онлайн: 0
Реклама