/** * 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; }
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')); }