Esempio n. 1
0
 static function init($context = false, $get_method = 'basic')
 {
     global $gp_filesystem;
     if ($gp_filesystem !== false) {
         return true;
     }
     if ($get_method == 'list') {
         $method = gp_filesystem_base::get_filesystem_method_list($context);
     } else {
         $method = gp_filesystem_base::get_filesystem_method($context);
     }
     return gp_filesystem_base::set_method($method);
 }
Esempio n. 2
0
 /**
  * Determine how we'll be writing the new code to the server (ftp or direct)
  *
  */
 function DetectFileSystem()
 {
     global $dataDir, $gp_filesystem;
     //already determined
     if (isset($_POST['filesystem_method']) && gp_filesystem_base::set_method($_POST['filesystem_method'])) {
         return $_POST['filesystem_method'];
     }
     $this->curr_step = 1;
     //make sure we don't attempt anything beyond step 1
     $context[$dataDir] = 'file';
     // Need to be able to write to the dataDir
     $context[$dataDir . '/include'] = 'file';
     // Need to be able to rename or delete the include directory
     $context[$dataDir . '/themes'] = 'dir';
     // These may have user content in them and should not be completely replaced
     $context[$dataDir . '/addons'] = 'dir';
     gp_filesystem_base::init($context, 'list');
     if (!$gp_filesystem) {
         return false;
     }
     return $gp_filesystem->method;
 }
Esempio n. 3
0
 function Update()
 {
     global $langmessage, $gp_filesystem, $gpversion;
     if (!isset($this->update_data['packages']['core'])) {
         echo $langmessage['OOPS'];
         return false;
     }
     $core_package =& $this->update_data['packages']['core'];
     if (!isset($_POST['step'])) {
         $curr_step = 1;
     } else {
         $curr_step = (int) $_POST['step'];
     }
     //already up to date?
     if ($curr_step < 4 && version_compare($gpversion, $core_package['version'], '>=')) {
         message($langmessage['UP_TO_DATE']);
         return false;
     }
     //filesystem
     $filesystem_method = false;
     if (isset($_POST['filesystem_method']) && gp_filesystem_base::set_method($_POST['filesystem_method'])) {
         $filesystem_method = $_POST['filesystem_method'];
     } else {
         $curr_step = 1;
         $this->DetectFileSystem();
         if (!$gp_filesystem) {
             message('Update Aborted: Could not establish a file writing method compatible with your server.');
             return false;
         }
         $filesystem_method = $gp_filesystem->method;
     }
     $this->steps[1] = $langmessage['step:prepare'];
     $this->steps[2] = $langmessage['step:download'];
     $this->steps[3] = $langmessage['step:unpack'];
     $this->steps[4] = $langmessage['step:clean'];
     echo '<div>' . $langmessage['update_steps'] . '</div>';
     echo '<ol class="steps">';
     $curr_step_label = '';
     foreach ($this->steps as $temp_step => $message) {
         if ($curr_step == $temp_step) {
             echo '<li class="current">' . $message . '</li>';
             $curr_step_label = $message;
         } elseif ($temp_step < $curr_step) {
             echo '<li class="done">' . $message . '</li>';
         } else {
             echo '<li>' . $message . '</li>';
         }
     }
     echo '</ol>';
     echo '<h3>' . $curr_step_label . '</h3>';
     echo '<form method="post" action="?cmd=update">';
     if ($filesystem_method) {
         echo '<input type="hidden" name="filesystem_method" value="' . htmlspecialchars($filesystem_method) . '" />';
     }
     $done = false;
     $passed = false;
     switch ($curr_step) {
         case 4:
             $done = $this->CleanUp($core_package);
             break;
         case 3:
             echo '<ul>';
             $passed = $this->UnpackAndReplace($core_package);
             $this->OldFolders();
             echo '</ul>';
             break;
         case 2:
             echo '<ul class="progress">';
             $passed = $this->DownloadSource($core_package);
             echo '</ul>';
             break;
         case 1:
             $passed = $this->GetServerInfo($core_package);
             break;
     }
     if ($gp_filesystem) {
         $gp_filesystem->destruct();
     }
     $this->SaveData();
     //save any changes made by the steps
     if (!$done) {
         if ($passed) {
             echo '<input type="hidden" name="step" value="' . min(count($this->steps), $curr_step + 1) . '"/>';
             echo '<input type="submit" class="submit" name="" value="' . htmlspecialchars($langmessage['next_step']) . '" />';
         } elseif ($curr_step < 3) {
             echo '<input type="hidden" name="step" value="' . min(count($this->steps), $curr_step) . '"/>';
             echo '<input type="submit" class="submit" name="" value="' . htmlspecialchars($langmessage['continue']) . '" />';
         } else {
             echo '<input type="hidden" name="failed_install" value="failed_install"/>';
             echo '<input type="hidden" name="step" value="4"/>';
             echo '<input type="submit" class="submit" name="" value="' . htmlspecialchars($langmessage['step:clean']) . '..." />';
         }
     }
     echo '</form>';
     //echo showArray($this->update_data);
     //echo showArray($core_package);
     return true;
 }