Exemple #1
0
 /**
  * Sets writable permissions to the specified file/dir
  *
  * @param  string $path               Path to file/dir
  * @param  bool   $show_notifications Show FTP connection error notifications
  * @return bool   true if permissions were succesfully changed, false otherwise
  */
 public function correctPermissions($path, $show_notifications)
 {
     $ftp_link = Registry::get('ftp_connection');
     if (empty($ftp_link) && is_null($this->ftp_connection_status)) {
         if (fn_ftp_connect(Registry::get('settings.Upgrade_center'), $show_notifications)) {
             $this->ftp_connection_status = true;
         } else {
             $this->ftp_connection_status = false;
         }
     }
     $correction_result = true;
     if (is_file($path) || is_dir($path)) {
         if (!is_writable($path)) {
             @chmod($path, 0777);
         }
         if (!is_writable($path) && !is_null($this->ftp_connection_status)) {
             fn_ftp_chmod_file($path, 0777);
         }
         if (!is_writable($path)) {
             $correction_result = false;
         }
     }
     return $correction_result;
 }
 /**
  * Corrects permissions of store files and folders
  *
  * @param  array $cart_settings     Cart settings
  * @param  array $database_settings Database settings
  * @param  array $server_settings   Server settings
  * @param  array $ftp_settings      FTP connection settings
  * @param  array $addons            List of addons to be installed
  * @return bool  Always true
  */
 public function actionCorrectPermissions($cart_settings, $database_settings, $server_settings, $ftp_settings, $addons)
 {
     $app = App::instance();
     $validator = new Validator();
     if (!empty($ftp_settings['ftp_hostname']) && !empty($ftp_settings['ftp_username']) && !empty($ftp_settings['ftp_password'])) {
         if (fn_ftp_connect($ftp_settings)) {
             $files = array('config.local.php' => 0666, 'images' => 0777, 'design' => 0777, 'var' => 0777);
             foreach ($files as $file => $perm) {
                 fn_ftp_chmod_file($file, $perm, true);
             }
         }
     }
     $validator->isFilesystemWritable(true);
     $params['dispatch'] = 'setup.index';
     $params['cart_settings'] = $cart_settings;
     $params['database_settings'] = $database_settings;
     $params['server_settings'] = $server_settings;
     $params['addons'] = $addons;
     $app->run($params);
     return true;
 }
Exemple #3
0
 public function chmod($path, $permissions, Log $logger)
 {
     $logger->add(str_repeat('-', 10));
     $logger->add(sprintf('Changing permissions of "%s" to %o', $path, $permissions));
     $logger->add('Using chmod()... ', true, true, false);
     $result = @chmod($path, $permissions);
     $logger->add($result ? 'OK' : 'FAILED', true, false, true);
     if (!$result) {
         $logger->add('Using FTP...');
         $ftp_connection = Registry::get('ftp_connection');
         if (is_resource($ftp_connection)) {
             $logger->add('Connection is already established');
             $ftp_ready = true;
         } elseif (fn_ftp_connect($this->settings, true)) {
             $logger->add('Connection established');
             $ftp_ready = true;
         } else {
             $logger->add('Failed to establish connection');
             $ftp_ready = false;
         }
         if ($ftp_ready) {
             $result = fn_ftp_chmod_file($path, $permissions, false);
             $logger->add(sprintf('FTP chmod result: %s', $result ? 'OK' : 'FAILED'));
         }
     }
     $logger->add(str_repeat('-', 10));
     return $result;
 }
        // Update twigmo files
        fn_echo('Copying new Twigmo add-on files...<br>');
        TwigmoUpgrade::updateFiles($upgrade_dirs);
        // Install
        fn_echo('<br>Installing Twigmo add-on...<br>');
        fn_install_addon('twigmo', false);
        $_SESSION['twigmo_upgrade'] = array('upgrade_dirs' => $upgrade_dirs, 'install_src_dir' => $install_src_dir);
        fn_stop_scroller();
        echo '<br><br>';
        fn_redirect('upgrade_center.upgrade_twigmo.step2');
    }
}
if ($mode == 'upgrade_twigmo' and $action == 'step2' and isset($_SESSION['twigmo_upgrade']) && !fn_twg_is_on_saas()) {
    fn_start_scroller();
    fn_echo(__('twgadmin_restore_settings') . '<br>');
    fn_ftp_connect(Settings::instance()->getValues('Upgrade_center'));
    fn_echo('.');
    $upgrade_dirs = $_SESSION['twigmo_upgrade']['upgrade_dirs'];
    fn_echo('.');
    // Uninstal addon
    fn_uninstall_addon('twigmo', false);
    fn_echo('.');
    // Install
    fn_install_addon('twigmo', false);
    fn_echo('.');
    // Restore settings
    TwigmoUpgrade::restoreSettingsAndCSS($upgrade_dirs, $auth['user_id']);
    fn_echo('.');
    // Clear template cache
    fn_rm(Registry::get('config.dir.cache_templates'));
    fn_echo('.');
        if ($_SESSION['uc_stages']['stage_number'] < $_SESSION['uc_stages']['total']) {
            $_SESSION['uc_package'] = $_SESSION['uc_base_package'];
            return array(CONTROLLER_STATUS_OK, 'upgrade_center.check');
        } else {
            unset($_SESSION['uc_package']);
            unset($_SESSION['uc_base_package']);
            unset($_SESSION['uc_stages']);
            return array(CONTROLLER_STATUS_OK, 'upgrade_center.summary');
        }
    } else {
        $package = $_SESSION['uc_package'];
        unset($_SESSION['uc_package']);
        return array(CONTROLLER_STATUS_OK, "upgrade_center.summary?package=" . $package);
    }
} elseif ($mode == 'revert') {
    fn_ftp_connect($uc_settings);
    fn_uc_run_continuous_job('fn_uc_copy_files', array(Registry::get('config.dir.upgrade') . $_REQUEST['package'] . '/backup', Registry::get('config.dir.root')));
    @fn_uc_rm(Registry::get('config.dir.root') . '/uc.sql');
    fn_uc_run_continuous_job('fn_uc_rm_files', array(Registry::get('config.dir.root'), Registry::get('config.dir.upgrade') . $_REQUEST['package'] . '/uc.xml', 'new_files'));
    fn_uc_run_continuous_job('db_import_sql_file', array(Registry::get('config.dir.upgrade') . $_REQUEST['package'] . '/backup/uc.sql', 16384, true, 1, true, false, true));
    fn_uc_run_continuous_job('fn_uc_post_upgrade', array(Registry::get('config.dir.upgrade') . $_REQUEST['package'], 'revert'));
    if (is_file(Registry::get('config.dir.upgrade') . 'installed_upgrades.php')) {
        include Registry::get('config.dir.upgrade') . 'installed_upgrades.php';
        if (isset($udata[$_REQUEST['package']])) {
            if (isset($udata[$_REQUEST['package']]['stage']) && isset($udata[$_REQUEST['package']]['base_package']) && is_file(Registry::get('config.dir.upgrade') . $udata[$_REQUEST['package']]['base_package'] . '/stages.php')) {
                include Registry::get('config.dir.upgrade') . $udata[$_REQUEST['package']]['base_package'] . '/stages.php';
                if (!empty($stages)) {
                    unset($stages[$udata[$_REQUEST['package']]['stage']]);
                    if (!fn_put_contents(Registry::get('config.dir.upgrade') . $udata[$_REQUEST['package']]['base_package'] . '/stages.php', "<?php\n if (!defined('BOOTSTRAP')) { die('Access denied'); }\n \$stages = " . var_export($stages, true) . ";\n?>")) {
                        fn_set_notification('W', __('warning'), __('text_uc_unable_to_update_list_of_installed_upgrades'));
                    }