public function cancel_order()
{
$cookie = cookie::get('sklep');
echo 'Próba naruszenia - brak id sesji - proszę włączyć obsługę ciasteczek "cookie"'; }
$order = ORM::factory('order')->where('unique_id',(int)$this->uri->segment(3) )->find();
if(is_numeric($this->uri->segment(3
)) and
$order->ip_address = my
::client_ip()) {
if($order->status_id != 5)
{
$status_changes[] = array('status'=>ORM
::factory('order_status')->find($order->status_id)->name,'date'=>date
('Y-m-d H:i:s')); $order->status_id = 5;
$order->transferuj_status = 'Zamówienie anulowane przez klienta.';
$order->status_changes = serialize($status_changes); $order->save();
unset($_SESSION['shop']); $_SESSION['msg']['info'] = 'Zamówienie zostało pomyślnie anulowane.';
$this->_send_email_about_canceling($this->uri->segment(3), $order->email);
url::redirect('shop/order_form');
}
$order->save();
}
else
$_SESSION['msg']['error'] == 'Zamówienie nie mogło być anulowane - błędne ID zamówienia lub próba naruszenia.';
url::redirect('shop/order_form');
}
public function show_order_summary()
{
$tpl = new View('shop/show_order_summary');
{
}
$order = ORM::factory('order')->where('unique_id',$this->uri->segment(3))->find();
if($order->status_id != 1){//jezeli anulowana
if($order->status_id == 5)
$_SESSION['msg']['info'] = 'Zamówienie zostało anulowane';
else
$_SESSION['msg']['info'] = 'Zamówienie jest w trakcie realizacji';
url::redirect('shop/show_order_summary/'.$this->uri->segment(3).'/cancelled');
}
foreach ($product_info_summary as $product){
$amount_to_pay += $product['price_brutto']*$product['amount'];
$payment_delivery = $product['payment_delivery'];
}
$amount_to_pay += $payment_delivery;
$status = $this->uri->segment(4);
$tpl->status = $status;
if($status == 'ok')
{
$_SESSION['msg']['info'] = 'Transakcja wykonana pomyślnie.';
unset($_SESSION['shop']); }
elseif($status == 'error')
{
$_SESSION['msg']['error'] = 'Transakcja nie powiodła się.';
unset($_SESSION['shop']);
}
{
$tranferuj_md5sum = array( 'id' => $this->id_sprzedawcy,
'crc' => $crc,
'kod' => $this->kod_pomocniczny// kod potwierdyajacz sprzedawcy
);
$transferuj_data = array( 'id' => $this->id_sprzedawcy,//ID sprzedawcy
'opis' => kohana::config('settings.cms.title.value'),//Opis transakcji
'crc' => $crc,//Ciag pomocniczy
'md5sum' => md5(implode('&',$tranferuj_md5sum)),// sumy kontrolnej 'akceptuje_regulamin' => 'TRUE',// wartosc nieistatna
'wyn_url' => url::base().'shop/transferuj_receive_information/'.$this->uri->segment(3),//Adres URL powaiadomienia
'wyn_email' => kohana::config('settings.cms.shop_email.value'),//Adres mailowy powiadomienia kohana::config('settings.cms.email.value')
'opis_sprzed' => kohana::config('settings.cms.title.value'),
'pow_url' => url::base().'shop/show_order_summary/'.$this->uri->segment(3).'/ok',//Adres powrotny po wykonaniu transakcji z wynikiem poprawnym
'pow_url_blad' => url::base().'shop/show_order_summary/'.$this->uri->segment(3).'/error',//Adres powrotny po wykonaniu transakcji z wynikiem b?dnym (domy?nie j/w)
'pow_tekst' => 'Wróć do strony: '.kohana::config('settings.cms.short_title.value'),//Tekst na przycisku powrotnym
'email' => $order->email,
'nazwisko' => $order->lastname,
'imie' => $order->firstname,
'adres' => $order->address,
'miasto' => $order->city,
'kod' => $order->zipcode,
'kraj' => 'Polska',
'telefon' => $order->phone
);
}
//unset($_SESSION['shop']);
$tpl->transferuj_data = $transferuj_data;
$tpl->order = $order;
$tpl->product_info_summary = $product_info_summary;
$tpl->transferuj_ip_address = $this->transferuj_ip_address;
$tpl->transferuj_address = $this->transferuj_address;
$this->template->content .= $tpl->render();
}
public function show_basket()//realized by ajax
{
$this->auto_render = false;
$tpl = view::factory('shop/mini_basket');
$tpl->shop_basket = $_SESSION['shop']['basket'];
return $tpl->render();
}
public function remove_from_basket()
{
$this->auto_render = false;
unset($_SESSION['shop']['basket'][$_POST['id']]); echo $this->show_basket(); }
public function _validate_postcode(Validation $array, $field)
{
if(!empty($array[$field])) if(!preg_match('/^[0-9]{2}-?[0-9]{3}$/Du',$array[$field])) $array->add_error($field, 'postcode');
}
public function _string_must_not_be_number(Validation $array, $field)
{
$array->add_error($field, 'string_must_not_be_number');
}
public function transferuj_receive_information()
{
$this->build_body = false;
$order_unique_id = $this->uri->segment(3);
//if(!$order_unique_id)
// echo 'Błąd - błędny nr zamówienia. ';
$transferuj_dane_transakcji = array( 'id',
'tr_status',
'tr_id',
'tr_amount' ,
'md5sum',
'tr_paid',
'tr_error',
'tr_date',
'tr_desc',
'tr_email'
);// tylko zeby wiedziec jakie pola przesyla
$order = ORM::factory('order')->where('unique_id',$order_unique_id)->find();
if($_SERVER['REMOTE_ADDR']== $this->transferuj_ip_address && !empty($_POST)) {
$post = $_POST;
if($post['md5sum'] != md5($post['id'].$post['tr_id'].$post['tr_amount'].$post['tr_crc'].$this->kod_pomocniczny)) {
$order->transferuj_status = 'BŁĄD';
$order->transferuj_transaction_id = $post['tr_id'];
$order->paid_amount = $post['tr_paid'];
$order->transferuj_error = 'Błąd transakcji: niepoprawna suma MD5 - próba naruszenia';
$order->save();
}else
{
// sprawdzenie stanu transakcji
if($post['tr_status'] =='TRUE' && $post['tr_error']=='none')
{
$order->transferuj_status = 'OK';
$order->transferuj_transaction_id = $post['tr_id'];
$order->paid_amount = $post['tr_paid'];
$order->transferuj_error = 'Sukces';
$order->save();
}
elseif($post['tr_status'] =='TRUE' && $post['tr_error'] == 'overpay')
{
$order->transferuj_status = $post['tr_error'];
$order->transferuj_transaction_id = $post['tr_id'];
$order->paid_amount = $post['tr_paid'];
$order->transferuj_error = 'Ostrzeżenie - '.$post['tr_error'].' (nadpłata)';
$order->save();
}
elseif($post['tr_status'] =='TRUE' && $post['tr_error'] == 'surcharge')
{
$order->transferuj_status = $post['tr_error'];
$order->transferuj_transaction_id = $post['tr_id'];
$order->paid_amount = $post['tr_paid'];
$order->transferuj_error = 'Ostrzeżenie - '.$post['tr_error'].' (niedopłata)';
$order->save();
}
elseif($post['tr_status'] =='FALSE')
{
$order->transferuj_status = 'BŁĄD';
$order->save();
}
}
}
}