xref: /plugin/combo/ComboStrap/File.php (revision c3437056399326d621a01da73b649707fbb0ae69)
137748cd8SNickeau<?php
237748cd8SNickeau/**
337748cd8SNickeau * Copyright (c) 2021. ComboStrap, Inc. and its affiliates. All Rights Reserved.
437748cd8SNickeau *
537748cd8SNickeau * This source code is licensed under the GPL license found in the
637748cd8SNickeau * COPYING  file in the root directory of this source tree.
737748cd8SNickeau *
837748cd8SNickeau * @license  GPL 3 (https://www.gnu.org/licenses/gpl-3.0.en.html)
937748cd8SNickeau * @author   ComboStrap <support@combostrap.com>
1037748cd8SNickeau *
1137748cd8SNickeau */
1237748cd8SNickeau
1337748cd8SNickeaunamespace ComboStrap;
1437748cd8SNickeau
1537748cd8SNickeau
16*c3437056SNickeauuse DateTime;
17*c3437056SNickeau
18*c3437056SNickeau/**
19*c3437056SNickeau * Class File
20*c3437056SNickeau * @package ComboStrap
21*c3437056SNickeau * @deprecated for {@link LocalPath} and {@link FileSystems}
22*c3437056SNickeau */
2337748cd8SNickeauclass File
2437748cd8SNickeau{
2537748cd8SNickeau
261fa8c418SNickeau    protected $path;
2737748cd8SNickeau
2837748cd8SNickeau
2937748cd8SNickeau    /**
3037748cd8SNickeau     * File constructor.
3137748cd8SNickeau     * @param $absolutePath
3237748cd8SNickeau     */
3337748cd8SNickeau    protected function __construct($absolutePath)
3437748cd8SNickeau    {
3537748cd8SNickeau        $this->path = $absolutePath;
3637748cd8SNickeau    }
3737748cd8SNickeau
3837748cd8SNickeau    /**
39*c3437056SNickeau     * @deprecated uses {@link Path::toAbsolutePath()} instead
4037748cd8SNickeau     * @return mixed
4137748cd8SNickeau     */
42*c3437056SNickeau    public function getAbsoluteFileSystemPath()
4337748cd8SNickeau    {
4437748cd8SNickeau        return $this->path;
4537748cd8SNickeau    }
4637748cd8SNickeau
4737748cd8SNickeau    /**
48*c3437056SNickeau     * @deprecated use {@link FileSystems::getSize()} instead
4937748cd8SNickeau     * @return false|int
5037748cd8SNickeau     */
5137748cd8SNickeau    public function getSize()
5237748cd8SNickeau    {
5337748cd8SNickeau        return filesize($this->path);
5437748cd8SNickeau    }
5537748cd8SNickeau
56*c3437056SNickeau    /**
57*c3437056SNickeau     * @return bool
58*c3437056SNickeau     * @deprecated uses {@link FileSystems::exists()} instead
59*c3437056SNickeau     */
6037748cd8SNickeau    public function exists()
6137748cd8SNickeau    {
6237748cd8SNickeau        return file_exists($this->path);
6337748cd8SNickeau    }
6437748cd8SNickeau
6537748cd8SNickeau    public function __toString()
6637748cd8SNickeau    {
6737748cd8SNickeau        return $this->path;
6837748cd8SNickeau    }
6937748cd8SNickeau
7037748cd8SNickeau    /**
71*c3437056SNickeau     * @return null|DateTime - The date time
72*c3437056SNickeau     * @deprecated use {@link FileSystems::getModifiedTime()} instead
7337748cd8SNickeau     */
74*c3437056SNickeau    public function getModifiedTime(): ?DateTime
7537748cd8SNickeau    {
76*c3437056SNickeau        if(!$this->exists()){
77*c3437056SNickeau            return null;
78*c3437056SNickeau        }
791fa8c418SNickeau        return Iso8601Date::createFromTimestamp(filemtime($this->path))->getDateTime();
8037748cd8SNickeau    }
8137748cd8SNickeau
8237748cd8SNickeau
8337748cd8SNickeau
8437748cd8SNickeau
8537748cd8SNickeau    /**
86*c3437056SNickeau     * @deprecated use {@link FileSystems::getContent()} instead
87*c3437056SNickeau     * @return false|string
8837748cd8SNickeau     */
89*c3437056SNickeau    public function getTextContent()
9037748cd8SNickeau    {
91*c3437056SNickeau        return file_get_contents($this->getAbsoluteFileSystemPath());
9237748cd8SNickeau    }
9337748cd8SNickeau
941fa8c418SNickeau    /**
95*c3437056SNickeau     * @deprecated use {@link FileSystems::delete()} instead
961fa8c418SNickeau     */
9737748cd8SNickeau    public function remove()
9837748cd8SNickeau    {
99*c3437056SNickeau        unlink($this->getAbsoluteFileSystemPath());
10037748cd8SNickeau    }
10137748cd8SNickeau
102*c3437056SNickeau    /**
103*c3437056SNickeau     * @return File|null
104*c3437056SNickeau     * @deprecated use {@link LocalPath::getParent()} instead
105*c3437056SNickeau     */
106*c3437056SNickeau    public function getParent(): ?File
10737748cd8SNickeau    {
108*c3437056SNickeau        $absolutePath = pathinfo($this->path, PATHINFO_DIRNAME);
109*c3437056SNickeau        if(empty($absolutePath)){
110*c3437056SNickeau            return null;
111*c3437056SNickeau        }
112*c3437056SNickeau        return new File($absolutePath);
11337748cd8SNickeau    }
11437748cd8SNickeau
115*c3437056SNickeau    public function createAsDirectory(): bool
11637748cd8SNickeau    {
11737748cd8SNickeau
118*c3437056SNickeau        return mkdir($this->getAbsoluteFileSystemPath(), $mode = 0770, $recursive = true);
11937748cd8SNickeau    }
12037748cd8SNickeau
121*c3437056SNickeau    public static function createFromPath($path): File
12237748cd8SNickeau    {
12337748cd8SNickeau        return new File($path);
12437748cd8SNickeau
12537748cd8SNickeau    }
12637748cd8SNickeau
127*c3437056SNickeau    /**
128*c3437056SNickeau     * @deprecated for {@link ResourceCombo::getBuster()}
129*c3437056SNickeau     * @return string
130*c3437056SNickeau     */
131*c3437056SNickeau    public function getBuster(): string
132*c3437056SNickeau    {
133*c3437056SNickeau        return strval($this->getModifiedTime()->getTimestamp());
134*c3437056SNickeau    }
13537748cd8SNickeau
136*c3437056SNickeau    /**
137*c3437056SNickeau     * @deprecated uses {@link FileSystems::getCreationTime()} instead
138*c3437056SNickeau     * @return DateTime|false|mixed
139*c3437056SNickeau     */
140*c3437056SNickeau    public function getCreationTime()
141*c3437056SNickeau    {
142*c3437056SNickeau        return Iso8601Date::createFromTimestamp(filectime($this->path))->getDateTime();
143*c3437056SNickeau    }
14437748cd8SNickeau
145*c3437056SNickeau    /**
146*c3437056SNickeau     * @deprecated use {@link FileSystems::deleteIfExists()} instead
147*c3437056SNickeau     */
148*c3437056SNickeau    public function removeIfExists(): File
149*c3437056SNickeau    {
150*c3437056SNickeau        if($this->exists()){
151*c3437056SNickeau            $this->remove();
152*c3437056SNickeau        }
153*c3437056SNickeau        return $this;
154*c3437056SNickeau    }
15537748cd8SNickeau
15637748cd8SNickeau
15737748cd8SNickeau}
158