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; } }