Version: current

      1 <?php
      2 // Расширение конфига сайта для хренения настроек импорта
      3 class ImportSiteConfig extends SiteConfigDecorator {
      4
      5     public static $sendEmail = false;
      6
      7     function extraStatics() {
      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         // $fields->insertBefore(new Tab('Notifications', 'Уведомления об импорте'), 'Catalog');
     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             // $notifications->setParentClass('SiteConfig');
     46             // $notifications->setSourceID($this->owner->ID);
     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. -