require_once 'class.KlarnaInstaller.php';
require_once 'class.KlarnaUninstaller.php';
require_once 'class.KlarnaUtils.php';
require_once 'class.xtcKlarnaDB.php';
require_once 'class.xtcDBResult.php';
// This is to prevent XMLRPC from overwriting a variable that osCommerce uses.
if (isset($i)) {
    $_i = $i;
}
/**
 * Dependencies from {@link http://phpxmlrpc.sourceforge.net/}
 *
 * Ugly include due to problems in XMLRPC lib (external)
 */
require_once DIR_KLARNA . 'api/transport/xmlrpc-3.0.0.beta/lib/xmlrpc.inc';
require_once DIR_KLARNA . 'api/transport/xmlrpc-3.0.0.beta/lib/xmlrpc_wrappers.inc';
// Restore OScommerces variable.
if (isset($_i)) {
    $i = $_i;
}
require_once 'api/Klarna.php';
require_once 'api/pclasses/mysqlstorage.class.php';
require_once 'KITT/classes/KiTT.php';
KiTT_String::$platformEncoding = $_SESSION['language_charset'];
class KlarnaCore
{
    public static function getCurrentVersion()
    {
        return '1.0.5';
    }
}
 /**
  * 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']);
 }
 /**
  * Build an xtcommerce address Array from a KlarnaAddr object.
  *
  * @param object $address KlarnaAddr object
  *
  * @return array xtcommerce address
  */
 public function klarnaAddrToXtcAddr($address)
 {
     global $order;
     return array('firstname' => KiTT_String::decode($address->getFirstName()), 'lastname' => KiTT_String::decode($address->getLastName()), 'street_address' => KiTT_String::decode($address->getStreet() . ' ' . $address->getHouseNumber() . ' ' . $address->getHouseExt()), 'postcode' => KiTT_String::decode($address->getZipCode()), 'city' => KiTT_String::decode($address->getCity()), 'telephone' => KiTT_String::decode($address->getTelNo()), 'email_address' => KiTT_String::decode($address->getEmail()), 'company' => KiTT_String::decode($address->getCompanyName()), 'state' => $order->delivery['state'], 'zone_id' => $order->delivery['zone_id'], 'country_id' => $order->delivery['country_id'], 'country' => array('id' => $order->delivery['country']['id'], 'title' => $order->delivery['country']['title'], 'iso_code_2' => $order->delivery['country']['iso_code_2'], 'iso_code_3' => $order->delivery['country']['iso_code_3']));
 }