Вход Регистрация
Файл: concrete5.7.5.6/concrete/controllers/single_page/dashboard/extend/install.php
Строк: 177
<?php
namespace ConcreteControllerSinglePageDashboardExtend;

use 
ConcreteCorePackageBrokenPackage;
use 
ConcreteCorePageControllerDashboardPageController;
use 
Loader;
use 
TaskPermission;
use 
Package;
use 
Localization;
use 
Marketplace;
use 
ConcreteCoreMarketplaceRemoteItem as MarketplaceRemoteItem;
use 
Exception;
use 
User;

class 
Install extends DashboardPageController
{

    public function 
on_start()
    {
        
parent::on_start();
        @
set_time_limit(0);
    }

    public function 
uninstall($pkgID)
    {
        
$tp = new TaskPermission();
        if (!
$tp->canUninstallPackages()) {
            return 
false;
        }

        
$pkg Package::getByID($pkgID);
        if (!
is_object($pkg)) {
            
$this->redirect("/dashboard/extend/install");
        }
        
$this->set('text'Loader::helper('text'));
        
$this->set('pkg'$pkg);
        
$this->set('items'$pkg->getPackageItems());
    }

    public function 
do_uninstall_package()
    {
        
$pkgID $this->post('pkgID');

        
$valt Loader::helper('validation/token');

        if (
$pkgID 0) {
            
$pkg Package::getByID($pkgID);
        }

        if (!
$valt->validate('uninstall')) {
            
$this->error->add($valt->getErrorMessage());
        }

        
$tp = new TaskPermission();
        if (!
$tp->canUninstallPackages()) {
            
$this->error->add(t('You do not have permission to uninstall packages.'));
        }

        if (!
is_object($pkg)) {
            
$this->error->add(t('Invalid package.'));
        }

        if (!
$this->error->has()) {
            
$test $pkg->testForUninstall();

            if (
$test === true) {
                
$pkg->uninstall();
                if (
$this->post('pkgMoveToTrash')) {
                    
$r $pkg->backup();
                    if (
is_array($r)) {
                        
$pe Package::mapError($r);
                        foreach (
$pe as $ei) {
                            
$this->error->add($ei);
                        }
                    }
                }
                if (!
$this->error->has()) {
                    
$this->redirect('/dashboard/extend/install''package_uninstalled');
                }
            } else {
                foreach (
$test as $error_code) {
                    switch (
$error_code) {
                        case 
$pkg::E_PACKAGE_THEME_ACTIVE:
                            
$this->error->add(new Exception(
                                
t('This package contains the active site theme, please change the theme before uninstalling.')));
                    }
                }
            }
        }

        
$this->inspect_package($pkgID);

    }

    public function 
inspect_package($pkgID 0)
    {
        if (
$pkgID 0) {
            
$pkg Package::getByID($pkgID);
        }

        if (isset(
$pkg) && ($pkg instanceof Package)) {
            
$this->set('pkg'$pkg);
        } else {
            
$this->redirect('/dashboard/extend/install');
        }
    }

    public function 
package_uninstalled()
    {
        
$this->set('message't('The package has been uninstalled.'));
    }

    public function 
install_package($package)
    {
        
$tp = new TaskPermission();
        if (
$tp->canInstallPackages()) {
            
$p Package::getClass($package);
            if (
$p instanceof BrokenPackage) {
                
$this->error->add($p->getInstallErrorMessage());
            } else if (
is_object($p)) {
                if (
                    (!
$p->showInstallOptionsScreen()) ||
                    
Loader::helper('validation/token')->validate('install_options_selected')
                ) {
                    
$tests Package::testForInstall($package);
                    if (
is_array($tests)) {
                        
$tests Package::mapError($tests);
                        foreach (
$tests as $test) {
                            
$this->error->add($test);
                        }
                    } else {
                        
$currentLocale Localization::activeLocale();
                        if (
$currentLocale != 'en_US') {
                            
// Prevent the database records being stored in wrong language
                            
Localization::changeLocale('en_US');
                        }
                        try {
                            
$u = new User();
                            
$pkg $p->install($this->post());
                            if (
$u->isSuperUser() && $p->allowsFullContentSwap() && $this->post('pkgDoFullContentSwap')) {
                                
$p->swapContent($this->post());
                            }
                            if (
$currentLocale != 'en_US') {
                                
Localization::changeLocale($currentLocale);
                            }
                            
$pkg Package::getByHandle($p->getPackageHandle());
                            
$this->redirect('/dashboard/extend/install''package_installed'$pkg->getPackageID());
                        } catch (
Exception $e) {
                            if (
$currentLocale != 'en_US') {
                                
Localization::changeLocale($currentLocale);
                            }
                            if (
$p->showInstallOptionsScreen()) {
                                
$this->set('showInstallOptionsScreen'true);
                                
$this->set('pkg'$p);
                            }
                            
$this->error $e;
                        }
                    }
                } else {
                    
$this->set('showInstallOptionsScreen'true);
                    
$this->set('pkg'$p);
                }
            } else {
                
$this->error->add(t('Package controller file not found.'));
            }
        } else {
            
$this->error->add(t('You do not have permission to install add-ons.'));
        }
    }

    public function 
package_installed($pkgID 0)
    {
        
$this->set('message't('The package has been installed.'));
        
$this->set('installedPKG'Package::getByID($pkgID));
    }

    public function 
download($remoteMPID=null)
    {
        
$tp = new TaskPermission();
        if (
$tp->canInstallPackages()) {
            
$mri MarketplaceRemoteItem::getByID($remoteMPID);

            if (!
is_object($mri)) {
                
$this->error->add(t('Invalid marketplace item ID.'));
                return;
            }

            
$r $mri->download();
            if (
$r != false) {
                if (!
is_array($r)) {
                    
$this->error->add($r);
                } else {
                    
$errors Package::mapError($r);
                    foreach(
$errors as $error) {
                        
$this->error->add($error);
                    }
                }
            } else {
                
$this->set('message't('Marketplace item %s downloaded successfully.'$mri->getName()));
            }
        } else {
            
$this->error->add(t('You do not have permission to download add-ons.'));
        }
    }

}
Онлайн: 3
Реклама