1 <?php
2
3 class ImportSiteConfig extends SiteConfigDecorator {
4
5 public static $sendEmail = false;
6
7 function () {
8 return array(
9 'db' => array(
10 'ImportMode' => "Enum('full, incremental')",
11 'ClearProducts' => 'Varchar',
12 'ClearCategory' => 'Varchar',
13 'StartPage' => 'Varchar(200)',
14 'SubSite' => 'Int',
15 'OldItemAction' => "Enum('hide, unpublish, delete')",
16 ),
17 'has_many' => array(
18 'Notifications' => 'Notification'
19 )
20 );
21 }
22
23 function updateCMSFields(& $fields) {
24 $tab = self::get_config_tab($fields, 'Import');
25
26 $tab->push(new DropdownField("StartPage", _t('ImportSiteConfig.StartPage', 'Start Page'), $this->getImportStartPageMap(), $this->owner->StartPage));
27 if (class_exists('SubSite')) {
28 $tab->push(new DropdownField("SubSite", _t('ImportSiteConfig.SubSite', 'Sub Site'), $this->getSubSiteMap(), $this->owner->SubSite));
29 }
30 $tab->push(new DropdownField('ImportMode', _t('ImportSiteConfig.ImportMode', 'Import Mode'), $this->getImportModeMap(), $this->owner->ImportMode));
31 $tab->push(new DropdownField('ClearCategory', _t('ImportSiteConfig.ClearCategory', 'Clear Category'), $this->getYesNoMap(), $this->owner->ClearCategory));
32 $tab->push(new DropdownField('ClearProducts', _t('ImportSiteConfig.ClearProducts', 'Clear Products'), $this->getYesNoMap(), $this->owner->ClearProducts));
33 $tab->push(new DropdownField('OldItemAction', _t('ImportSiteConfig.OldItemAction', 'Old Item Action'), $this->getOldItemActionMap(), $this->owner->OldItemAction));
34 ini_set('display_errors',1);
35
36 if(self::$sendEmail){
37 $tab->push(new LiteralField('Notifications','<h3>Уведомления</h3>'));
38 $notifications = new HasManyDataObjectManager(
39 $this->owner,
40 'Notifications',
41 'Notification',
42 null,
43 null
44 );
45
46
47 $notifications->setPopupSize(800, 600);
48 $notifications->setPageSize(30);
49 $tab->push($notifications);
50 }
51 }
52
53 function getYesNoMap() {
54 $rs = array();
55 $rs['false'] = _t('ImportSiteConfig.No', 'No');
56 $rs['true'] = _t('ImportSiteConfig.Yes', 'Yes');
57 return $rs;
58 }
59
60 function getImportStartPageMap() {
61 $data = array();
62 $data['/'] = _t('ImportSiteConfig.SiteRoot', 'Site Root');
63 foreach(ProductCatalogImportTask::get_possible_start_pages() as $pageType) {
64 $rs = DataObject::get($pageType);
65 if ($rs) {
66 foreach($rs as $entry) {
67 if ($entry->getAncestors()->Count() < 3) {
68 $str = '';
69 for($i = 1; $i <= ($entry->getAncestors()->Count()); $i++) {
70 $str .= '-';
71 }
72 $data[$entry->URLSegment] = $str . $entry->MenuTitle;
73 }
74 }
75 }
76 }
77 return $data;
78 }
79
80 function getSubSiteMap() {
81 $data = array();
82 $data[0] = _t('ImportSiteConfig.SelectSubSite', 'Select Sub Site');
83 if (class_exists('SubSite')) {
84 $subsites = DataObject::get('SubSite');
85 if ($subsites) {
86 $data = $subsites->map('ID', 'Title', _t('ImportSiteConfig.SelectSubSite', 'Sub Site'));
87 }
88 }
89 return $data;
90 }
91
92 function getImportModeMap() {
93 $rs = array();
94 foreach($this->owner->dbObject('ImportMode')->enumValues() as $mode)
95 $rs[$mode] = _t('ImportSiteConfig.Mode_' . $mode, $mode);
96 return $rs;
97
98 }
99
100 function getOldItemActionMap() {
101 $rs = array();
102 foreach($this->owner->dbObject('OldItemAction')->enumValues() as $mode)
103 $rs[$mode] = _t('ImportSiteConfig.OldItemAction_' . $mode, $mode);
104 return $rs;
105 }
106
107 function getLastProductCatalogDate() {
108 if ($log = ProductImportLog::get_last_log(true)) {
109 return $log->ProductCatalogDate;
110 }
111 return false;
112 }
113 }
[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.
-