106 lines
3.0 KiB
PHP
106 lines
3.0 KiB
PHP
<?php
|
|
class BlocksModel extends BaseModel
|
|
{
|
|
public $table_name = 'constructor_blocks';
|
|
|
|
public function getBlocks($params)
|
|
{
|
|
$constructor_id = $params['constructor_id'];
|
|
$page_name = $params['page_name'];
|
|
$sql = "SELECT cb.* FROM constructor_blocks cb
|
|
JOIN constructor_pages cp
|
|
ON cb.page_id = cp.id
|
|
WHERE cp.constructor_id = {$constructor_id}
|
|
AND cp.name = '{$page_name}'
|
|
";
|
|
$blocksDataQuery = $this->db->query($sql);
|
|
$blocksData = [];
|
|
while ($blockRes = $this->db->fetch_assoc($blocksDataQuery)) {
|
|
$blockImages = $this->getBlockImages($blockRes['id']);
|
|
$subBlocks = $this->getSubblocks($blockRes['id']);
|
|
|
|
$blockRes['images'] = $blockImages;
|
|
$blockRes['items'] = $subBlocks;
|
|
$blocksData[] = $blockRes;
|
|
}
|
|
return $blocksData;
|
|
}
|
|
|
|
public function getBlockImages($block_id)
|
|
{
|
|
$sql = "SELECT * FROM constructor_images ci
|
|
WHERE EXISTS (
|
|
SELECT 1
|
|
FROM constructor_imageable_type cit
|
|
WHERE cit.model_id = $block_id
|
|
AND cit.type = 'block'
|
|
AND cit.id = ci.id
|
|
);
|
|
";
|
|
$blockImagesQuery = $this->db->query($sql);
|
|
$imagesData = [];
|
|
|
|
while ($blockImagesRes = $this->db->fetch_assoc($blockImagesQuery)) {
|
|
$imagesData[] = $blockImagesRes;
|
|
}
|
|
return $imagesData;
|
|
}
|
|
public function getSubblocks($block_id)
|
|
{
|
|
$sql = "SELECT id, title, description, icon, properties FROM constructor_subblocks WHERE block_id = $block_id";
|
|
$subQuery = $this->db->query($sql);
|
|
$subData = [];
|
|
|
|
while ($subRes = $this->db->fetch_assoc($subQuery)) {
|
|
if (isset($subRes['properties'])) {
|
|
$subRes['properties'] = json_decode($subRes['properties'], true);
|
|
}
|
|
|
|
$subData[] = $subRes;
|
|
}
|
|
|
|
return $subData;
|
|
}
|
|
public function getBlog($constructor_id)
|
|
{
|
|
$sql = "SELECT * from constructor_id = $constructor_id";
|
|
$blogQuery = $this->db->query($sql);
|
|
$blogData = [];
|
|
|
|
while ($blogRes = $this->db->fetch_assoc($blogQuery)) {
|
|
$blogData[] = $blogRes;
|
|
}
|
|
return $blogData;
|
|
}
|
|
|
|
public function updatePhotos($block_id, $photoPaths)
|
|
{
|
|
foreach ($photoPaths as $photo) {
|
|
$photoPath = addslashes($photo['path']);
|
|
|
|
$sql = "INSERT INTO constructor_images (url) VALUES ('$photoPath')";
|
|
$this->db->query($sql);
|
|
$image_id = $this->db->insert_id();
|
|
$sqlLink = "INSERT INTO constructor_imageable_type (type, model_id, image_id) VALUES ('block', $block_id, $image_id )";
|
|
$this->db->query($sqlLink);
|
|
}
|
|
}
|
|
// public function addSubblock($params)
|
|
// {
|
|
// $fields = [];
|
|
// $values = [];
|
|
// foreach ($params as $key => $value) {
|
|
// $fields[] = $key;
|
|
// $values[] = '"' . addslashes($value) . '"';
|
|
// }
|
|
|
|
// $fields = implode(', ', $fields);
|
|
// $values = implode(', ', $values);
|
|
|
|
// $sql = "INSERT INTO constructor_subblocks ($fields)
|
|
// VALUES ($values)";
|
|
// $result = $this->db->query($sql);
|
|
// return $result;
|
|
// }
|
|
}
|