* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) */ namespace PrestaShop\PrestaShop\Adapter\Backup; use DateTimeImmutable; use PrestaShop\PrestaShop\Adapter\Entity\PrestaShopBackup; use PrestaShop\PrestaShop\Core\Backup\BackupInterface; /** * Class Backup represents single database backup. * * @internal */ final class Backup implements BackupInterface { /** * @var PrestaShopBackup */ private $legacyBackup; /** * @var string */ private $fileName; /** * @param string $fileName Backup file name */ public function __construct($fileName) { $this->fileName = $fileName; $this->legacyBackup = new PrestaShopBackup($fileName); } /** * {@inheritdoc} */ public function getFileName() { return $this->fileName; } /** * {@inheritdoc} */ public function getFilePath() { return $this->legacyBackup->getBackupPath() . $this->getFileName(); } /** * {@inheritdoc} */ public function getUrl() { return $this->legacyBackup->getBackupURL(); } /** * {@inheritdoc} */ public function getSize() { return filesize($this->legacyBackup->id); } /** * {@inheritdoc} */ public function getAge() { return time() - $this->getDate()->getTimestamp(); } /** * {@inheritdoc} */ public function getDate() { list($timestamp) = explode('-', $this->fileName); return new DateTimeImmutable('@' . $timestamp); } }