forked from SimplesIP/pabx-app
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
120 lines
3.4 KiB
120 lines
3.4 KiB
2 years ago
|
<?php
|
||
|
|
||
|
namespace app\Core;
|
||
|
|
||
|
use app\Core\Connect;
|
||
|
use PDO;
|
||
|
use PDOException;
|
||
|
|
||
|
/**
|
||
|
* Description of WppModel
|
||
|
*
|
||
|
* @author Lucas Awade
|
||
|
*/
|
||
|
abstract class Model
|
||
|
{
|
||
|
|
||
|
protected $query;
|
||
|
|
||
|
protected function strquery($stmt, $params)
|
||
|
{
|
||
|
foreach ($params as $key => $value) {
|
||
|
if (is_null($value) || (is_string($value) && $value == '')) {
|
||
|
$value = null;
|
||
|
}
|
||
|
$stmt->bindValue(":{$key}", $value, (is_int($value) ? PDO::PARAM_INT : PDO::PARAM_STR));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public function begin()
|
||
|
{
|
||
|
try {
|
||
|
Connect::getInstance()->beginTransaction();
|
||
|
return 1;
|
||
|
} catch (PDOException $ex) {
|
||
|
Connect::setInstance(null);
|
||
|
logger('PDOExcep')->error('PDOException: ' . $ex->getMessage(), debug_backtrace());
|
||
|
return null;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public function commit()
|
||
|
{
|
||
|
try {
|
||
|
Connect::getInstance()->commit();
|
||
|
return 1;
|
||
|
} catch (PDOException $ex) {
|
||
|
Connect::setInstance(null);
|
||
|
logger('PDOExcep')->error('PDOException: ' . $ex->getMessage(), debug_backtrace());
|
||
|
return null;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public function rollback()
|
||
|
{
|
||
|
try {
|
||
|
Connect::getInstance()->rollBack();
|
||
|
return 1;
|
||
|
} catch (PDOException $ex) {
|
||
|
Connect::setInstance(null);
|
||
|
logger('PDOExcep')->error('PDOException: ' . $ex->getMessage(), debug_backtrace());
|
||
|
return null;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
protected function create($query, $data)
|
||
|
{
|
||
|
try {
|
||
|
$stmt = Connect::getInstance()->prepare($query);
|
||
|
$this->strquery($stmt, $data);
|
||
|
$stmt->execute();
|
||
|
return Connect::getInstance()->lastInsertId();
|
||
|
} catch (PDOException $ex) {
|
||
|
Connect::setInstance(null);
|
||
|
logger('PDOExcep')->error('PDOException: ' . $ex->getMessage(), debug_backtrace());
|
||
|
return null;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
protected function read($query, $data = null)
|
||
|
{
|
||
|
try {
|
||
|
$stmt = Connect::getInstance()->prepare($query);
|
||
|
$this->strquery($stmt, $data);
|
||
|
$stmt->execute();
|
||
|
return $stmt;
|
||
|
} catch (PDOException $ex) {
|
||
|
Connect::setInstance(null);
|
||
|
logger('PDOExcep')->error('PDOException: ' . $ex->getMessage(), debug_backtrace());
|
||
|
return null;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
protected function delete($query, $data)
|
||
|
{
|
||
|
try {
|
||
|
$stmt = Connect::getInstance()->prepare($query);
|
||
|
$this->strquery($stmt, $data);
|
||
|
$stmt->execute();
|
||
|
return ($stmt->rowCount() ? 1 : 0);
|
||
|
} catch (PDOException $ex) {
|
||
|
Connect::setInstance(null);
|
||
|
logger('PDOExcep')->error('PDOException: ' . $ex->getMessage(), debug_backtrace());
|
||
|
return null;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
protected function update($query, $data)
|
||
|
{
|
||
|
try {
|
||
|
$stmt = Connect::getInstance()->prepare($query);
|
||
|
$this->strquery($stmt, $data);
|
||
|
$stmt->execute();
|
||
|
return ($stmt->rowCount() ? 1 : 0);
|
||
|
} catch (PDOException $ex) {
|
||
|
Connect::setInstance(null);
|
||
|
logger('PDOExcep')->error('PDOException: ' . $ex->getMessage(), debug_backtrace());
|
||
|
return null;
|
||
|
}
|
||
|
}
|
||
|
}
|