File Manager

Current Directory: /home/astoriaah/www/old15/administrator/components/com_akeeba/models
Viewing File: /home/astoriaah/www/old15/administrator/components/com_akeeba/models/uploads.php
<?php /** * @package AkeebaBackup * @copyright Copyright (c)2009-2014 Nicholas K. Dionysopoulos * @license GNU General Public License version 3, or later * @since 3.2 */ // Protect from unauthorized access defined('_JEXEC') or die(); use Akeeba\Engine\Factory; use Akeeba\Engine\Platform; class AkeebaModelUploads extends F0FModel { /** * Upload an archive part to remote storage * * @return bool|int */ public function upload() { $id = $this->getState('id', -1); $part = $this->getState('part', -1); $frag = $this->getState('frag', -1); // Calculate the filenames $stat = Platform::getInstance()->get_statistics($id); $local_filename = $stat['absolute_path']; $basename = basename($local_filename); $extension = strtolower(str_replace(".", "", strrchr($basename, "."))); if ($part > 0) { $new_extension = substr($extension, 0, 1) . sprintf('%02u', $part); } else { $new_extension = $extension; } $filename = $basename . '.' . $new_extension; $local_filename = substr($local_filename, 0, -strlen($extension)) . $new_extension; // Load the post-processing engine Platform::getInstance()->load_configuration($stat['profile_id']); $config = Factory::getConfiguration(); $session = JFactory::getSession(); $savedEngine = $session->get('postproc_engine', null, 'akeeba'); $engine = null; if ( !empty($savedEngine) && ($frag != -1)) { // If it's not the first fragment, try to revive the saved engine $engine = unserialize($savedEngine); } else { $engine_name = $config->get('akeeba.advanced.postproc_engine'); $engine = Factory::getPostprocEngine($engine_name); } // Start uploading $result = $engine->processPart($local_filename); // Can't use switch because true == -1 but true !== -1 and we need the latter comparison if ($result === true) { $part++; $frag = 0; } elseif ($result === -1) { $frag++; $savedEngine = serialize($engine); $session->set('postproc_engine', $savedEngine, 'akeeba'); } elseif ($result === false) { $warning = $engine->getWarning(); $error = $engine->getError(); $this->setError(empty($warning) ? $error : $warning); $session->set('postproc_engine', null, 'akeeba'); $part = -1; $frag = -1; return false; } $remote_filename = $config->get('akeeba.advanced.postproc_engine', '') . '://'; $remote_filename .= $engine->remote_path; if ($part >= 0) { if ($part >= $stat['multipart']) { // Update stats with remote filename $data = array( 'remote_filename' => $remote_filename ); Platform::getInstance()->set_or_update_statistics($id, $data, $engine); } } $this->setState('id', $id); $this->setState('part', $part); $this->setState('frag', $frag); $this->setState('stat', $stat); $this->setState('remotename', $remote_filename); return $result; } }