Webylon 3.1 API Docs
  • Package
  • Class
  • Tree
  • Deprecated
  • Download
Version: current
  • 3.2
  • 3.1

Packages

  • auth
  • Booking
  • cart
    • shipping
    • steppedcheckout
  • Catalog
  • cms
    • assets
    • batchaction
    • batchactions
    • bulkloading
    • comments
    • content
    • core
    • export
    • newsletter
    • publishers
    • reports
    • security
    • tasks
  • Dashboard
  • DataObjectManager
  • event
  • faq
  • forms
    • actions
    • core
    • fields-basic
    • fields-dataless
    • fields-datetime
    • fields-files
    • fields-formatted
    • fields-formattedinput
    • fields-relational
    • fields-structural
    • transformations
    • validators
  • googlesitemaps
  • guestbook
  • installer
  • newsletter
  • None
  • photo
    • gallery
  • PHP
  • polls
  • recaptcha
  • sapphire
    • api
    • bulkloading
    • control
    • core
    • cron
    • dev
    • email
    • fields-formattedinput
    • filesystem
    • formatters
    • forms
    • i18n
    • integration
    • misc
    • model
    • parsers
    • search
    • security
    • tasks
    • testing
    • tools
    • validation
    • view
    • widgets
  • seo
    • open
      • graph
  • sfDateTimePlugin
  • spamprotection
  • stealth
    • captha
  • subsites
  • userform
    • pagetypes
  • userforms
  • webylon
  • widgets

Classes

  • Cart
  • CartOrderButton
  • CartPage
  • CartSiteConfig
  • CartTableListField
  • CheckoutPage
  • ExtendGroupDiscount
  • ExtendMemberCart
  • ExtendPageCart
  • ExtendPageSpecialCatalog
  • ExtendProductSpecialCatalog
  • ExtendProfilePageOrder
  • Order
  • OrderAdmin
  • OrderExporter
  • OrderItem
  • OrderItemField
  • SpecialCatalog
  • TextLiteralField
 1 <?php
 2 /**
 3  * Добавляет заказы к личному кабинету
 4  *
 5  * @package cart
 6  * @author dvp
 7  */
 8 class ExtendProfilePageOrder extends Extension {
 9     
10     static $allowed_actions = array('orders', 'order', 'printorder', 'cancel_order');
11     
12     static $orders_per_page = false;
13 
14     /**
15      * Возвращает локальное меню для личного кабинета
16      * возможно расширение на сайте с помощью updateUserMenu(array &$items)
17      * TODO выделять текущий пункт меню
18      *
19      * @return DataObjectSet - список пунктов меню с полями Link Title
20      */
21     function updateUserMenu(&$menu) {
22         $menu[] = array(
23             'Link' => ProfilePage::find_link('orders'),
24             'Title' => _t('ProfilePage.MenuOrders', 'My Orders'),
25         );
26     }
27 
28     /**
29      * Action для списка заказов
30      *
31      * @return string
32      */
33     function orders() {
34         $limit = "";
35         if ($count = self::$orders_per_page) {
36             $start = 0;
37             if (isset($_GET['start'])) {
38                 $start = (int)$_GET['start'];
39             }
40             $limit = "{$start},{$count}";
41         }
42         return array(
43             'Title' => _t('ProfilePage.TitleOrders', 'Orders'),
44             'Form' => false,
45             'Orders' => DataObject::get('Order', 'MemberID = ' . Member::currentUserID(), 'ID DESC', '', $limit)
46         );
47     }
48     
49     /**
50      * Показывает информацию о заказе
51      *
52      * Заказ определяется через url вида /order/order/204b22a36e328000dbb841cb3ac4d45e по HashLink заказа
53      * Использует шаблон ProfilePage_order
54      * @TODO дополнительная проверка пользователя по email ? номеру заказа
55      */
56     function order() {
57         if (!$order = Order::get_by_hash($this->owner->getRequest()->param('ID'))) $this->httpError(404, 'Page not found');
58         $data = $this->orders();
59         $data['Order'] = $order;
60         return $data;
61     }
62     
63     /**
64      * Показывает страницу печати заказа
65      * Использует шаблон ProfilePage_printorder
66      */
67     function printorder() {
68         return $this->order();
69     }
70     
71     /**
72      * Отмена заказа
73      *
74      * Заказ определяется через url вида /order/order/204b22a36e328000dbb841cb3ac4d45e по HashLink заказа  
75      */
76     function cancel_order() {
77         $rs = 0;
78         if (!$order = Order::get_by_hash($this->owner->getRequest()->param('ID'))) $this->httpError(404, 'Page not found');
79         if ($order->canCancel()) {
80             $order->Status = 'MemberCancelled';
81             $order->write();
82             $rs = 1;
83         }
84         if ($this->owner->isAjax()) {
85             return json_encode(array('rs' => $rs));
86         }
87         return $this->owner->redirectBack();
88     }
89 }
90 
[Raise a SilverStripe Framework issue/bug](https://github.com/silverstripe/silverstripe-framework/issues/new)
- [Raise a SilverStripe CMS issue/bug](https://github.com/silverstripe/silverstripe-cms/issues/new)
- Please use the Silverstripe Forums to ask development related questions. -
Webylon 3.1 API Docs API documentation generated by ApiGen 2.8.0