shop-old/core/site_content.class.php
2026-04-20 01:03:43 +02:00

470 lines
14 KiB
PHP

<?php
/*
* @version $Id: index.php 10381 2008-06-01 03:35:53Z $
* @package Carteasy
* @copyright Copyright (C) 2005 - 2011 Wlanium
* @license proprietary
* @author Thomas Bartelt
* Carteasy is a web shop system
*/
include_once './libs/phImaginator/phImaginator.class.php';
class SiteContent {
// hack as associative array since there are no real lists
private $content_types = array(
'textbox' => 0,
'slider' => 0,
'article_list' => 0, // should be items or better, items should be products
'popular' => 0,
'substructure' => 0,
'banner' => 0,
'manufacturers' => 0
);
private $db;
private $base_object;
private $error;
public $id; // this is a hack, make it private and check the entire shop
public function __construct($base_object) {
$this->db = $base_object->db;
$this->base_object = $base_object;
$this->id = false;
$this->error = '';
} // end constructor
public function set_id($id) {
$this->id = $id;
} // end set_id
public function get_id() {
return $this->id;
} // end get_id
public function get_error() {
return $this->error;
} // end get_error
public function get_by_structure_id($id) {
$sql = "SELECT * FROM site_content
WHERE structure_id=".$this->db->real_escape_string($id)." ORDER BY position";
$result = $this->db->query($sql);
if ($result->num_rows > 0) {
$types = $this->content_types;
$i = 1;
while ($obj = $result->fetch_object()) {
unset($types[$obj->type]);
$return_data[] = $obj;
$i++;
}
foreach ($types as $type => $trash) {
$obj = new stdClass();
$obj->structure_id = $id;
$obj->type = $type;
$obj->position = $i++;
$obj->activ = 0;
$return_data[] = $obj;
}
return $return_data;
}
$this->error = 'no result';
return false;
}
// TODO: get rid of this again?
public function get_item_category_name_by_id($id) {
$sql = "SELECT name FROM structure WHERE id=$id";
$result = $this->db->query($sql);
if ($result->num_rows > 0) {
return $result->fetch_object()->name;
}
return false;
}
public function is_set($id, $type) {
$sql = "SELECT * FROM site_content
WHERE structure_id=".$this->db->real_escape_string($id)."
AND type='".$this->db->real_escape_string($type)."'";
$result = $this->db->query($sql);
if ($result->num_rows > 0) {
return true;
}
return false;
}
public function save_by_structure_id($id, $type, $position, $activ, $content, $title = '', $textbox_image = false, $content_en = '', $title_en = '', $title_style = '') {
if ($this->is_set($id, $type)) {
return $this->update_by_structure_id($id, $type, $position, $activ, $content, $title, $textbox_image, $content_en, $title_en, $title_style);
} else {
return $this->insert_by_structure_id($id, $type, $position, $activ, $content, $title, $textbox_image, $content_en, $title_en, $title_style);
}
}
public function insert_by_structure_id($id, $type, $position, $activ, $content, $title, $textbox_image, $content_en, $title_en, $title_style) {
if ($type == 'banner') {
$images = array();
foreach ($content as $key => $value) {
$images[] = array('image_name' => $key, 'image_link_target' => 0, 'image_link' => $value);
}
$config = array(
'images' => $images,
'type' => 'standard'
);
$configuration = '$config = '.$this->php_2_string($config).';';
$sql = "INSERT into site_content (structure_id, type, position, activ, content, configuration, title)
VALUES ('".$this->db->real_escape_string($id)."', '".
$this->db->real_escape_string($type)."', '".
$this->db->real_escape_string($position)."', '".
$this->db->real_escape_string($activ)."', '".
$this->db->real_escape_string($content)."', '".
$this->db->real_escape_string($configuration)."', '".
$this->db->real_escape_string($title)."')" ;
}
else if ($type == 'textbox' || $type == 'slider' || $type == 'substructure') {
//??$configuration = '$config = '.$this->php_2_string($textbox_image).';';
if ($type == 'textbox') {
$config = array(
'images' => $content,
'type' => 'standard'
);
$configuration = '$config = '.$this->php_2_string($config).';';
}
if ($type == 'substructure') {
$config = array(
'cat_id' => $content['cat_id'],
'ebenen' => $content['ebenen']
);
$configuration = '$config = '.$this->php_2_string($config).';';
}
if ($content_en || $title_en) {
$sql = "INSERT into site_content (structure_id, type, position, activ, content, configuration, title, style, content_en, title_en)
VALUES ('".
$this->db->real_escape_string($id)."', '".
$this->db->real_escape_string($type)."', '".
$this->db->real_escape_string($position)."', '".
$this->db->real_escape_string($activ)."', '".
$this->db->real_escape_string($content)."', '".
$this->db->real_escape_string($configuration)."', '".
$this->db->real_escape_string($title)."', '".
$this->db->real_escape_string($title_style)."', '".
$this->db->real_escape_string($content_en)."', '".
$this->db->real_escape_string($title_en)."')" ;
} else {
$sql = "INSERT into site_content (structure_id, type, position, activ, content, configuration, title, style)
VALUES ('".
$this->db->real_escape_string($id)."', '".
$this->db->real_escape_string($type)."', '".
$this->db->real_escape_string($position)."', '".
$this->db->real_escape_string($activ)."', '".
$this->db->real_escape_string($content)."', '".
$this->db->real_escape_string($configuration)."', '".
$this->db->real_escape_string($title)."', '".
$this->db->real_escape_string($title_style)."')" ;
}
} else {
$sql = "INSERT into site_content (structure_id, type, position, activ, content, style, title)
VALUES ('".
$this->db->real_escape_string($id)."', '".
$this->db->real_escape_string($type)."', '".
$this->db->real_escape_string($position)."', '".
$this->db->real_escape_string($activ)."', '".
$this->db->real_escape_string($content)."', '".
$this->db->real_escape_string($title_style)."', '".
$this->db->real_escape_string($title)."')" ;
}
$result = $this->db->query($sql);
if ($result) {
return true;
}
$this->error = "can't insert data";
$this->base_object->logger->info('speichern', $sql);
return false;
}
public function update_by_structure_id($id, $type, $position, $activ, $content, $title, $textbox_image, $content_en, $title_en, $title_style) {
if ($type == 'banner') {
$config = array(
'images' => $content,
'type' => 'standard'
);
$configuration = '$config = '.$this->php_2_string($config).';';
$sql = "UPDATE site_content
SET position='".
$this->db->real_escape_string($position)."', activ='".
$this->db->real_escape_string($activ)."', content='".
$this->db->real_escape_string($content)."', title='".
$this->db->real_escape_string($title)."', configuration='".
$this->db->real_escape_string($configuration)."'
WHERE structure_id='".$this->db->real_escape_string($id)."'
AND type='".$type."'";
} else if ($type == 'textbox' || $type == 'slider' || $type == 'substructure') {
if ($type == 'textbox') {
$configuration = '$config = '.$this->php_2_string($textbox_image).';';
}
if ($type == 'substructure') {
$config = array(
'cat_id' => $content['cat_id'],
'ebenen' => $content['ebenen']
);
$configuration = '$config = '.$this->php_2_string($config).';';
}
if ($content_en || $title_en) {
$sql = "UPDATE site_content
SET position='".
$this->db->real_escape_string($position)."', activ='".
$this->db->real_escape_string($activ)."', content='".
$this->db->real_escape_string($content)."', title='".
$this->db->real_escape_string($title)."', style='".
$this->db->real_escape_string($title_style)."', configuration='".
$this->db->real_escape_string($configuration)."', title_en='".
$this->db->real_escape_string($title_en)."', content_en='".
$this->db->real_escape_string($content_en)."'
WHERE structure_id='".$this->db->real_escape_string($id)."'
AND type='".$type."'";
} else {
$sql = "UPDATE site_content SET position='".
$this->db->real_escape_string($position)."', activ='".
$this->db->real_escape_string($activ)."', content='".
$this->db->real_escape_string($content)."', title='".
$this->db->real_escape_string($title)."', style='".
$this->db->real_escape_string($title_style)."', configuration='".
$this->db->real_escape_string($configuration)."'
WHERE structure_id='".$this->db->real_escape_string($id)."'
AND type='".$type."'";
}
} else {
$sql = "UPDATE site_content
SET position='".$this->db->real_escape_string($position).
"', activ='".$this->db->real_escape_string($activ).
"', title='".$this->db->real_escape_string($title).
"', style='".$this->db->real_escape_string($title_style).
"', content='".$this->db->real_escape_string($content)."'
WHERE structure_id='".$this->db->real_escape_string($id)."'
AND type='".$type."'";
}
$result = $this->db->query($sql);
if ($result) {
return true;
}
$this->error = "can't insert data";
$this->base_object->logger->info('speichern', $sql);
return false;
}
public function get_textbox_data_by_id($id) {
$sql = "SELECT * FROM site_content WHERE type='textbox' AND structure_id = ".$id;
$result = $this->db->query($sql);
if ($obj = $result->fetch_object()) {
return $obj->content;
} else {
return '';
}
} // end get_data
public function add_banner($file_data, $id) {
$tempFile = $file_data['Filedata']['tmp_name'];
// is file a image
$file_info = getimagesize ( $tempFile );
if (isset($file_info[2]) && $file_info[2] > 0 && $file_info[2] < 4) {
$targetPath = $_SERVER['DOCUMENT_ROOT'].'/web/'.SHOP_SYSTEM.'/images/site/';
$image_type = array('', 'gif', 'jpg', 'png');
$file_id=md5(uniqid(rand(),TRUE));
$file_name = $file_id.'.'.$image_type[$file_info[2]];
// save article picture
$targetFile = str_replace('//','/',$targetPath).$file_name;
move_uploaded_file($tempFile,$targetFile);
$imaginator = new phImaginator();
$imaginator->add($targetFile);
if (isset($this->base_object->config->shopConfiguration['site_content_banner_width']) && $this->base_object->config->shopConfiguration['site_content_banner_width']) {
$imaginator->Resize_fitWidth($this->base_object->config->shopConfiguration['site_content_banner_width']);
}
$imaginator->save();
$sql = "SELECT configuration FROM site_content WHERE id=".$id;
$result = $this->db->query($sql);
$obj = $result->fetch_object();
$config = array();
eval($obj->configuration);
if (!isset($config['images'])) {
$config = array(
'images' => array(),
'type' => 'standard'
);
};
// save configuration
$new_banner = array(
'image_name' =>$file_name,
'image_link_target' => 0,
'image_link' => ''
);
$config['images'][] = $new_banner;
$config_string = '$config = '.$this->php_2_string($config).';';
// save picture in database
$sql = "UPDATE site_content SET configuration = '".$this->db->real_escape_string($config_string)."'
WHERE id=".$id;
if ($this->db->query($sql)) {
return $file_name;
}
}
return false;
}
public function add_textbox_image($file_data, $id) {
$tempFile = $file_data['Filedata']['tmp_name'];
// is file a image
$file_info = getimagesize ( $tempFile );
if (isset($file_info[2]) && $file_info[2] > 0 && $file_info[2] < 4) {
$targetPath = $_SERVER['DOCUMENT_ROOT'].'/web/'.SHOP_SYSTEM.'/images/site/';
$image_type = array('', 'gif', 'jpg', 'png');
$file_id=md5(uniqid(rand(),TRUE));
$file_name = $file_id.'.'.$image_type[$file_info[2]];
// save article picture
$targetFile = str_replace('//','/',$targetPath).$file_name;
move_uploaded_file($tempFile,$targetFile);
$imaginator = new phImaginator();
$imaginator->add($targetFile);
/*if (isset($this->base_object->config->shopConfiguration['site_content_banner_width']) && $this->base_object->config->shopConfiguration['site_content_banner_width']) {
$imaginator->Resize_fitWidth($this->base_object->config->shopConfiguration['site_content_banner_width']);
}*/
$imaginator->save();
// save configuration
$new_image = array(
'image_name' =>$file_name,
'image_position' => 'right',
'link' => ''
);
$config_string = '$config = '.$this->php_2_string($new_image).';';
// save picture in database
$sql = "UPDATE site_content SET configuration = '".$this->db->real_escape_string($config_string)."'
WHERE id=".$id;
if ($this->db->query($sql)) {
return $file_name;
}
}
return false;
}
private function php_2_string($data) {
$string = '';
if (is_array($data)) {
$string .= 'array(';
foreach ($data as $key => $value) {
if (is_array($value)) {
$string .= "'$key' => ".$this->php_2_string($value).", ";
} else {
$string .= "'$key' => '$value', ";
}
}
$string .= ")";
}
else {
$string .= "'".$data."'";
};
return $string;
}
public function delete_banner($id, $image_name) {
// get pic infos
$sql = "SELECT * FROM site_content WHERE id=".$id;
$result = $this->db->query($sql);
$obj = $result->fetch_object();
$config = array();
eval($obj->configuration);
$new_banners = array();
foreach ($config['images'] as $banner) {
if ($banner['image_name'] != $image_name) {
$new_banners[] = $banner;
} else {
unlink($_SERVER['DOCUMENT_ROOT'].'/web/'.SHOP_SYSTEM.'/images/site/'.$image_name);
}
}
$config['images'] = $new_banners;
$config_string = '$config = '.$this->php_2_string($config).';';
// save picture in database
$sql = "UPDATE site_content SET configuration = '".$this->db->real_escape_string($config_string)."' WHERE id=".$id;
return $this->db->query($sql);
}
public function delete_textbox_image($id) {
// get pic infos
$sql = "SELECT * FROM site_content WHERE id=".$id;
$result = $this->db->query($sql);
$obj = $result->fetch_object();
$config = array();
eval($obj->configuration);
$new_banners = array();
unlink($_SERVER['DOCUMENT_ROOT'].'/web/'.SHOP_SYSTEM.'/images/site/'.$config['image_name']);
// delete picture from database
$sql = "
UPDATE site_content
SET configuration = ''
WHERE id=".$id;
return $this->db->query($sql);
}
public function get_banner_image($id) {
// get pic infos
$sql = "SELECT * FROM site_content WHERE id=".$id;
$result = $this->db->query($sql);
$obj = $result->fetch_object();
$config = array();
eval($obj->configuration);
return $config;
}
}