1 <?php
2 3 4 5 6 7 8 9 10
11 class OrderExporter extends Controller implements PermissionProvider {
12
13 static $URLSegment = '';
14 static $allowed_actions = array('');
15 static $return_as_file = false;
16 private static $enabled = false;
17
18 19 20 21 22 23 24
25 static function setup($params = array()) {
26 if (isset($params['url'])) self::$URLSegment = $params['url'];
27 if (isset($params['as_file'])) self::$return_as_file = $params['as_file'];
28
29 if (self::$URLSegment) {
30 Director::addRules(50, array(self::$URLSegment . '/$Action!/$ID' => 'OrderExporter'));
31 }
32
33 self::$allowed_actions = array('listorders', 'getorder');
34 }
35
36 function providePermissions() {
37 return array(
38 'EXPORT_ORDERS' => array(
39 'name' => 'Экспортировать данные заказов',
40 'category' => _t('Permission.CMS_ACCESS_CATEGORY', 'CMS Access'),
41 'help' => 'Позволяет получать данные заказов по специальной url',
42 'sort' => 0,
43 ),
44 );
45 }
46
47 function URLSegment() {
48 return (self::$URLSegment) ? self::$URLSegment : 'OrderExporter';
49 }
50
51 function init() {
52 parent::init();
53 BasicAuth::requireLogin('Order Export', 'EXPORT_ORDERS');
54 }
55
56 57 58 59 60 61 62 63 64
65 function listorders($req) {
66 $rs = new DataobjectSet();
67 $id = intval($req->param('ID'));
68
69 $xml = $this->renderWith('OrderExporter', array('Orders' => DataObject::get('Order', "ID > {$id}", "ID ASC")));
70
71 return (self::$return_as_file) ? SS_HTTPRequest::send_file($xml, 'orders.xml') : $xml;
72 }
73
74 75 76 77 78 79 80 81
82 function getorder($req) {
83 $rs = new DataobjectSet();
84 $id = intval($req->param('ID'));
85
86 $xml = $this->renderWith('OrderExport', DataObject::get_by_id('Order', $id));
87
88 return (self::$return_as_file) ? SS_HTTPRequest::send_file($xml, "order_{$id}.xml") : $xml;
89 }
90 }
91
[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.
-