/**
  * Format the price
  *
  * @param float       $price  the price to format
  * @param KiTT_Locale $locale unused in this implementation
  *
  * @return float formatted price
  */
 public function formatPrice($price, KiTT_Locale $locale = null)
 {
     global $xtPrice;
     $val = $xtPrice->xtcFormat((double) $price, true);
     return KiTT_String::encode($val, null, 'UTF-8');
 }
 /**
  * Update orderstatuses in the database
  *
  * @param int $customer The order status id to show the customer
  * @param int $admin    The order status id to show in the administration page
  *
  * @return void
  */
 public function updateOrderDatabase($customer, $admin)
 {
     global $insert_id;
     $orderid = mysqli_real_escape_string(xtc_db_connect(), $insert_id);
     $refno = mysqli_real_escape_string(xtc_db_connect(), $_SESSION['klarna_refno']);
     $sql_data_arr = array('orders_id' => $orderid, 'orders_status_id' => $customer, 'comments' => "Accepted by Klarna. Reference #: {$refno}", 'customer_notified' => 1, 'date_added' => date("Y-m-d H:i:s"));
     xtc_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_arr);
     $has_ordernum_table = xtc_db_fetch_array(xtc_db_query("SELECT COUNT(*) " . "FROM information_schema.tables " . "WHERE table_schema = '" . DB_DATABASE . "' " . "AND table_name = 'klarna_ordernum';"));
     $has_ordernum_table = $has_ordernum_table['COUNT(*)'];
     if ($has_ordernum_table > 0) {
         xtc_db_query("INSERT INTO `klarna_ordernum` (orders_id, klarna_ref) " . "VALUES ({$orderid}, {$refno})");
     }
     // Set pending status and hide it from customer.
     $status = $_SESSION['klarna_orderstatus'];
     if (isset($status)) {
         $orderStatusQuery = $this->_klarnaDB->query("SELECT orders_status_id FROM " . TABLE_ORDERS_STATUS . " WHERE orders_status_name = '{$status}'");
         $orderStatusID = $orderStatusQuery->getArray();
         $sql_data_arr = array('orders_id' => $orderid, 'orders_status_id' => $orderStatusID['orders_status_id'], 'comments' => "Klarna Orderstatus: {$status}", 'customer_notified' => 0, 'date_added' => date("Y-m-d H:i:s"));
         xtc_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_arr);
         xtc_db_query("UPDATE " . TABLE_ORDERS . " SET orders_status='" . $orderStatusID['orders_status_id'] . "' WHERE orders_id='" . $orderid . "'");
     }
     try {
         $this->_klarna->setEstoreInfo(KiTT_String::encode($orderid));
         $this->_klarna->update($_SESSION['klarna_refno']);
     } catch (Exception $e) {
         Klarna::printDebug(__METHOD__, "{$e->getMessage()} #({$e->getCode()})");
     }
     //Delete Session with user details
     unset($_SESSION['klarna_data']);
     unset($_SESSION['klarna_refno']);
     unset($_SESSION['klarna_orderstatus']);
 }
 /**
  * Convert a given array to a KlarnaAddr object.
  *
  * @param array  $array   an array of customer data
  * @param string $country the customers country
  *
  * @return KlarnaAddr object
  */
 public function buildKlarnaAddressFromArray($array, $country)
 {
     $address = new KlarnaAddr("", KiTT_String::encode($array["phone_number"]), KiTT_String::encode($array["phone_number"]), KiTT_String::encode($array["first_name"]), KiTT_String::encode($array["last_name"]), "", KiTT_String::encode($array["street"]), KiTT_String::encode($array["zipcode"]), KiTT_String::encode($array["city"]), $country, KiTT_String::encode($array["house_number"]), KiTT_String::encode($array["house_extension"]));
     if ($array["klarna_invoice_type"] == "company") {
         $address->isCompany = true;
         $address->setCompanyName(KiTT_String::encode($array["company_name"]));
         $name = explode(' ', KiTT_String::encode($array["reference"]), 2);
         if (strlen($name[0]) > 0) {
             $address->setFirstName($name[0]);
         } else {
             $address->setFirstName(" ");
         }
         if (count($name) > 1 && strlen($name[1]) > 0) {
             $address->setLastName($name[1]);
         } else {
             $address->setLastName(" ");
         }
     }
     return $address;
 }