array('required' => true, 'type' => 'int'), 'company' => array('required' => false, 'type' => 'text'), 'honorific' => array('required' => true, 'type' => 'int'), 'firstname' => array('required' => false, 'type' => 'text'), 'surname' => array('required' => false, 'type' => 'text'), 'street' => array('required' => true, 'type' => 'text'), 'house_number' => array('required' => false, 'type' => 'text'), 'zip_code' => array('required' => true, 'type' => 'text'), 'city' => array('required' => true, 'type' => 'text'), 'country' => array('required' => true, 'type' => 'int'), 'orders' => array('required' => false, 'type' => 'int') ); // generic private $base_object; private $db; private $address_id; private $customer_id; private $error; private $validation_errors; public function __construct($base_object, $address_id = false, $customer_id = false) { $this->base_object = $base_object; $this->db = $base_object->db; $this->address_id = $address_id; $this->customer_id = $customer_id; $this->error = ''; $this->validation_errors = array(); } // end constructor public function set_address_id($address_id) { $this->address_id = $address_id; } // end set_id public function get_id() { return $this->address_id; } // end get_id public function set_customer_id($customer_id) { $this->customer_id = $customer_id; } // end set_customer_id public function get_customer_id() { return $this->customer_id(); } // end get_customer_id public function get_customer_id_by_address_id($address_id = false) { $sql = "SELECT customer_id FROM customer_addresses"; if ($address_id) { $sql .= " WHERE id=".$this->db->real_escape_string($address_id); $this->address_id = $address_id; } else if ($this->address_id) { $sql .= " WHERE id=".$this->db->real_escape_string($this->address_id); } else { $this->error = "no address id"; return false; } $result = $this->db->query($sql); if ($result->num_rows > 0) { return $result->fetch_object()->customer_id; } $this->error = "no result"; return false; } // end get_customer_id_by_address_id public function get_error() { return $this->error; } // end get_error public function get_validation_errors() { return $this->validation_errors; } // end get_validation_errors public function get_all($filter = false, $customer_id = false) { $sql = "SELECT * FROM customer_addresses WHERE"; if ($customer_id) { $sql .= " customer_id=".$this->db->real_escape_string($customer_id); $this->customer_id = $customer_id; } else if ($this->customer_id) { $sql .= " customer_id=".$this->db->real_escape_string($this->customer_id); } else { $this->error = "no customer id"; return false; } // TODO: I need filter object, here for coutnries if ($filter) { if ($filter == 'WHATEVER') { $sql .= 'WHERE something'; } else { $this->error = "unknown filter"; return false; } } $result = $this->db->query($sql); if ($result->num_rows > 0) { $return_data = array(); while ($obj = $result->fetch_object()) { $return_data[$obj->id] = $this->enrich($obj); } return $return_data; } $this->error = "no result"; return false; } // end get_all public function get_data_by_address_id($address_id = false) { $sql = "SELECT * FROM customer_addresses"; if ($address_id) { $sql .= " WHERE id=".$this->db->real_escape_string($address_id); $this->address_id = $address_id; } else if ($this->address_id) { $sql .= " WHERE id=".$this->db->real_escape_string($this->address_id); } else { $this->error = "no address id"; return false; } $result = $this->db->query($sql); if ($result->num_rows > 0) { return $this->enrich($result->fetch_object()); } $this->error = "no result"; return false; } // end get_data_by_address_id public function get_data_by_customer_id($customer_id = false) { $sql = "SELECT * FROM customer_addresses"; if ($customer_id) { $sql .= " WHERE customer_id=".$this->db->real_escape_string($customer_id); $this->customer_id = $customer_id; } else if ($this->customer_id) { $sql .= " WHERE customer_id=".$this->db->real_escape_string($customer_id); } else { $this->error = "no customer id"; return false; } $result = $this->db->query($sql); if ($result->num_rows > 0) { $return_data = array(); while ($obj = $result->fetch_object()) { $return_data[$obj->id] = $this->enrich($obj); } return $return_data; } $this->error = "no result"; return false; } // end get_data_by_customer_id public function delete_by_address_id($address_id = false) { $sql = "DELETE FROM customer_addresses"; if ($address_id) { $sql .= " WHERE id=".$this->db->real_escape_string($address_id); $this->address_id = $address_id; } else if ($this->address_id) { $sql .= " WHERE id=".$this->db->real_escape_string($this->address_id); } else { $this->error = "no address id"; return false; } $result = $this->db->query($sql); if ($result) { $this->address_id = false; return true; } $this->error = "can't delete"; return false; } // end delete_by_address_id public function delete_by_customer_id($customer_id = false) { $sql = "DELETE FROM customer_addresses"; if ($customer_id) { $sql .= " WHERE customer_id=".$this->db->real_escape_string($customer_id); $this->customer_id = $customer_id; } else if ($this->customer_id) { $sql .= " WHERE customer_id=".$this->db->real_escape_string($this->customer_id); } else { $this->error = "no customer id"; return false; } $result = $this->db->query($sql); if ($result) { $this->address_id = false; $this->customer_id = false; return true; } $this->error = "can't delte"; return false; } // end delte_by_customer_id public function create($data, $customer_id = false) { if ($data) { $is_valid = $this->validate($data); if ($is_valid) { if (!isset($data['customer_id'])) { if ($customer_id) { $data['customer_id'] = $customer_id; $this->customer_id = $customer_id; } else if ($this->customer_id) { $data['customer_id'] = $this->customer_id; } else { $this->error = "no customer id"; return false; } } $sql = "INSERT INTO customer_addresses "; $data_line = ""; $insert_line = ""; $first = true; foreach ($data as $key => $value) { if ($first) { $first = false; } else { $data_line .= ", "; $value_line .= ", "; } $data_line .= $key; $value_line .= "'".$this->db->real_escape_string($value)."'"; } $sql .= "(".$data_line.") "; $sql .= " VALUES (".$value_line.")"; $result = $this->db->query($sql); if ($this->db->error) { $log_object = Logger::get_instance(); $log_object->info('Error in /core/customeraddress.php->create()', $this->db->error.', sql:'.$sql); } if ($result) { $this->address_id = $this->db->insert_id; return $this->address_id; } $this->error = "create failed"; return false; } $this->error = "invalid data"; return false; } $this->error = "no data"; return false; } // end create public function update($data, $address_id = false) { if ($data) { $is_valid = $this->validate($data); if ($is_valid) { if (isset($data['address'])) { $this->address_id = $data['address']; unset($data['address']); } $sql = "UPDATE customer_addresses SET "; $size = count($data); $i = 1; foreach ($data as $key => $value) { $sql .= $key."='".$this->db->real_escape_string($value)."'"; if ($i < $size) { $sql .= ", "; $i++; } } if ($address_id) { $sql .= " WHERE id=".$this->db->real_escape_string($address_id); $this->address_id = $address_id; } else if ($this->address_id) { $sql .= " WHERE id=".$this->db->real_escape_string($this->address_id); } else { $this->error = "no address id"; return false; } $result = $this->db->query($sql); if ($result) { return $this->address_id; } $this->error = "update failed"; return false; } $this->error = "invalid data"; return false; } $this->error = "no data"; return false; } // end update public function enrich($obj) { if ($obj->honorific == '0') { $obj->honorific_text = 'Herr'; } else if ($obj->honorific == '1') { $obj->honorific_text = 'Frau'; } else if ($obj->honorific == '2') { $obj->honorific_text = 'Firma'; } else { $obj->honorific_text = ''; } return $obj; } // end enrich public function validate($data) { $is_valid = true; foreach ($this->table_fields as $field => $setting) { if ($setting['required'] == true && (!isset($data[$field]) || $data[$field] == '')) { $this->validation_errors[$field] = 'not_set'; $is_valid = false; } } return $is_valid; } // end validate public function set_field_to($field, $value, $address_id = false) { if (isset($this->table_fields[$field])) { $sql = $sql = "UPDATE customer_addresses SET ".$field."'".$this->db->real_escape_string($value); if ($address_id) { $sql = " WHERE id=".$this->db->real_escape_string($address_id); $this->address_id = $address_id; } else if ($this->address_id) { $sql = " WHERE id=".$this->db->real_escape_string($this->address_id); } else { $this->error = "no address id"; return false; } $result = $this->db->query($sql); if ($result) { return $this->address_id; } $this->error = 'no result'; return false; } $this->error = 'unknown field'; return false; } // end validate public function check_data_diff($data, $address_id) { // get old customer data unset($data['customer_id']); $address_data_old = $this->get_data_by_address_id($address_id); include_once './core/main.class.php'; $country_object = new Country($this->base_object); $countries = $country_object->get_all_names(); $field_data = array( 'company' => array('name' => 'Firma', 'values' => false), 'honorific' => array( 'name' => 'Anrede', 'values' => array( '0' => 'Herr', '1' => 'Frau', '2' => 'Firma' ) ), 'firstname' => array('name' => 'Vorname', 'values' => false), 'surname' => array('name' => 'Nachname', 'values' => false), 'street' => array('name' => 'Strasse', 'values' => false), 'house_number' => array('name' => 'Hausnummer', 'values' => false), 'zip_code' => array('name' => 'PLZ', 'type' => false), 'city' => array('name' => 'Ort', 'values' => false), 'country' => array('name' => 'Land', 'values' => $countries) ); // check new data $diff_data = array(); foreach ($data as $key => $value) { $value_old = $address_data_old->{$key}; if ($key != 'pass' && $value != $value_old) { if ($field_data[$key]['values']) { $diff_data[$field_data[$key]['name']] = array( 'old' => $field_data[$key]['values'][$value_old], 'new' => $field_data[$key]['values'][$value] ); } else { $diff_data[$field_data[$key]['name']] = array( 'old' => $value_old, 'new' => $value ); } //$log_object = Logger::get_instance(); //$log_object->info($key, $value.'---'.$value_old); } } return $diff_data; } function make_diff_table($data) { $html = ''; $html .= ''; foreach ($data as $key => $val) { $html .= ''; } $html .= '
Adressenänderung
FeldAlter WertNeuer Wert
'.$key.''.$val['old'].''.$val['new'].'
'; return $html; } } ?>