This commit is contained in:
2024-01-29 10:39:53 +07:00
parent 545c404fdf
commit 72170f373a
143 changed files with 20188 additions and 3 deletions

View File

@@ -0,0 +1,216 @@
<?php
namespace Hura8\System\Model;
use Hura8\Interfaces\AppResponse;
use Hura8\Interfaces\TableName;
class UrlModel extends aEntityBaseModel
{
private $tb_url = TableName::URL; ///
private $tb_url_meta = TableName::URL_META; ///
public function __construct() {
parent::__construct("url");
}
public function getUrlByIdPath($id_path) {
$query = $this->db->runQuery(
"SELECT * FROM `".$this->tb_url."` WHERE `id_path` = ? LIMIT 1 ",
['s'], [ $id_path ]
);
return $this->db->fetchAssoc($query);
}
public function deleteByType(string $url_type) {
$this->db->runQuery(
"DELETE FROM `".$this->tb_url."` WHERE `url_type` = ? ",
['s'], [ $url_type ]
);
}
public function deleteByRequestPath($request_path) {
$this->db->runQuery(
"DELETE FROM `".$this->tb_url."` WHERE `request_path_index` = ? LIMIT 1 ",
['s'], [ md5($request_path) ]
);
}
public function getUrlByRequestPath($request_path) {
$query = $this->db->runQuery(
"SELECT * FROM `".$this->tb_url."` WHERE `request_path_index` = ? LIMIT 1 ",
['s'], [ md5($request_path) ]
);
return $this->db->fetchAssoc($query);
}
//02-12-2015
public function getUrlMetaInfo($request_path){
return $this->db->getItemInfo($this->tb_url_meta, md5($request_path), 'request_path_index');
}
public function getUrlMetaInfoById($id){
return $this->db->getItemInfo($this->tb_url_meta, $id, 'id');
}
public function getEmptyUrlMetaInfo() {
return array(
'id' => 0,
'request_path' => '',
'h1' => '',
'meta_title' => '',
'meta_keyword' => '',
'meta_description' => '',
'og_image' => '',
'summary' => '',
'description' => '',
);
}
//02-12-2015
public function createUrlMeta(array $info){
//prevent duplication
if($this->getUrlMetaInfo($info['request_path'])) return false;
if(!defined("ADMIN_NAME")) define("ADMIN_NAME", "system");
$copy = $info;
$copy['request_path_index'] = md5($info['request_path']);
$copy['last_update'] = CURRENT_TIME;
$copy['last_update_by'] = ADMIN_NAME;
return $this->db->insert(
$this->tb_url_meta ,
$copy
);
}
public function updateUrlMeta($id, array $info){
$copy = $info;
$copy['last_update'] = CURRENT_TIME;
$copy['last_update_by'] = ADMIN_NAME;
return $this->db->update(
$this->tb_url_meta ,
$copy,
[
'id' => $id,
]
);
}
protected function _buildQueryConditionExtend(array $condition): ?array
{
/*$condition = array(
"letter" => "",
);*/
$catCondition = [];
$bind_types = [];
$bind_values = [];
//loc theo is_redirect
if(isset($condition["request_path"]) && $condition["request_path"]) {
$path = preg_replace("/[^a-z0-9_\.\/\-]/i", '', $condition["request_path"]);
if($path) $catCondition[] = " AND `request_path` LIKE '%".$path."%' ";
}
//loc theo is_redirect
if(isset($condition["is_redirect"]) && $condition["is_redirect"]) {
if($condition["is_redirect"] == 1) $catCondition[] = " AND `url_type` = 'redirect' ";
else if($condition["is_redirect"] == -1) $catCondition[] = " AND `url_type` != 'redirect' ";
}
return array( join(" ", $catCondition), $bind_types, $bind_values);
}
protected function beforeCreateItem(array $input_info): AppResponse
{
$request_path = $input_info['request_path'] ?? '';
$id_path = $input_info['id_path'] ?? '';
if(!$request_path || $this->getUrlByRequestPath($request_path)) {
return new AppResponse('error', "request_path exist");
}
if($id_path && $this->getUrlByIdPath($id_path)) {
return new AppResponse('error', "id path exist");
}
$admin_name = (defined("ADMIN_NAME")) ? ADMIN_NAME : "system";
$info = $input_info;
$info['request_path_index'] = md5($info['request_path']);
$info['create_time'] = CURRENT_TIME;
$info['create_by'] = $admin_name;
$info['last_update'] = CURRENT_TIME;
$info['last_update_by'] = $admin_name;
return new AppResponse('ok', null, $info);
}
protected function afterCreateItem($new_item_id, $new_item_info)
{
// TODO: Implement afterCreateItem() method.
}
protected function beforeUpdateItem($item_id, $current_item_info, $new_input_info): AppResponse
{
$info = $new_input_info;
unset($info['id_path']);
if(isset($info['request_path']) && $info['request_path']) {
$info['request_path_index'] = md5($info['request_path']);
}
$info['last_update'] = CURRENT_TIME;
$info['last_update_by'] = ADMIN_NAME;
return new AppResponse('ok', null, $info);
}
protected function afterUpdateItem($item_id, $old_item_info, $new_item_info)
{
// TODO: Implement afterUpdateItem() method.
}
protected function beforeDeleteItem($item_id, $item_info): AppResponse
{
return new AppResponse('ok');
}
protected function afterDeleteItem($item_id, $item_info)
{
// TODO: Implement afterDeleteItem() method.
}
protected function extendedFilterOptions(): array
{
return [];
}
}