Version: current

      1 <?php
      2
      3 /**
      4  * Просмотр логов
      5  *
      6  * @author inxo, dvp, kozin
      7  */
      8 class LoggerAdmin extends ModelAdmin {
      9
     10     static $url_segment = 'logs';
     11     static $url_rule = '/$Action';
     12     public static $allowed_actions = array(
     13         'handleList',
     14         'handleItem',
     15     );
     16     public static $managed_models = array(
     17         'LogItem'
     18     );
     19     static $menu_title = 'Журнал';
     20     public static $collection_controller_class = "LoggerAdmin_CollectionController";
     21     public static $record_controller_class = "LoggerAdmin_RecordController";
     22
     23 }
     24
     25 class LoggerAdmin_CollectionController extends ModelAdmin_CollectionController {
     26
     27     public function ImportForm() {
     28         return false;
     29     }
     30
     31     public function CreateForm() {
     32         return false;
     33     }
     34
     35     function getResultsTable($searchCriteria) {
     36
     37         $summaryFields = $this->getResultColumns($searchCriteria);
     38         $className = $this->parentController->resultsTableClassName();
     39         $tf = new $className(
     40                         $this->modelClass,
     41                         $this->modelClass,
     42                         $summaryFields
     43         );
     44
     45         $query = $this->getSearchQuery($searchCriteria);
     46         if ($searchCriteria['DateFrom'] != '')
     47             $query->where('LastEdited >= \'' . Convert::raw2sql(join('-', array_reverse(explode('.', $searchCriteria['DateFrom'])))) . ' 00:00:00\'');
     48         if ($searchCriteria['DateTo'] != '')
     49             $query->where('LastEdited <= \'' . Convert::raw2sql(join('-', array_reverse(explode('.', $searchCriteria['DateTo'])))) . ' 23:59:59\'');
     50         $tf->setCustomQuery($query);
     51
     52
     53         $tf->setPageSize($this->parentController->stat('page_length'));
     54         $tf->setShowPagination(true);
     55         // @todo Remove records that can't be viewed by the current user
     56         $tf->setPermissions(array_merge(array('view'), array()));
     57         return $tf;
     58     }
     59
     60     public function SearchForm() {
     61         $context = singleton($this->modelClass)->getDefaultSearchContext();
     62         $fields = $context->getSearchFields();
     63
     64         //Поле Класс
     65         $fields->removeByName('Class');
     66         $all_loged_classes = DB::Query("select distinct Class from LogItem order by Class")->column('Class');
     67         $RU_all_loged_classes = array();
     68         foreach($all_loged_classes as $loged_class) {
     69             if ($loged_class)
     70                 $RU_all_loged_classes[$loged_class] = LogItem::get_class_name($loged_class);
     71         }
     72         asort($RU_all_loged_classes);
     73         $fields->insertBefore(
     74             new DropdownField(
     75                 'Class',
     76                 _t('LogItem.ClassTitle', 'Object Class'),
     77                 $RU_all_loged_classes,
     78                 '',
     79                 null,
     80                 _t('LoggerAdmin.ANYCLASS', 'Any Class')
     81             ),
     82             'ItemID'
     83         );
     84
     85         //Поле MemberID
     86         $fields->removeByName('MemberID');
     87         $all_loged_user_ids = DB::Query("select distinct MemberID from LogItem")->column('MemberID');
     88         $all_loged_users = array();
     89         foreach($all_loged_user_ids as $loged_user_id) {
     90             $all_loged_users[$loged_user_id] = LogItem::get_member_name($loged_user_id);
     91         }
     92         asort($all_loged_users);
     93         $fields->push(new DropdownField('MemberID', _t('LogItem.MemberTitle', 'Member'), $all_loged_users, '', null, _t('LoggerAdmin.ANYMEMBER', 'Any Member')));
     94
     95         $dateField = new DateField('DateFrom', _t('LoggerAdmin.FROM', 'From'), date('Y-m-d', strtotime('now -1 month')));
     96         $dateField->setConfig('html5', true);
     97         $dateField->setConfig('max', date('Y-m-d', strtotime('now')));
     98         $fields->push($dateField);
     99
    100         $dateFieldTo = new DateField('DateTo', _t('LoggerAdmin.TO', 'To'), date('Y-m-d', strtotime('now')));
    101         $dateFieldTo->setConfig('html5', true);
    102         $dateFieldTo->setConfig('max', date('Y-m-d', strtotime('now')));
    103         $fields->push($dateFieldTo);
    104
    105         $statusValues = singleton('LogItem')->dbObject('Action')->enumValues();
    106         foreach ($statusValues as $statusName => $statusItem) {
    107             $statusValues[$statusName] = _t('Logs.Action' . $statusItem);
    108         }
    109         asort($statusValues);
    110
    111         $fields->replaceField(
    112             'Action',
    113             new DropdownField('Action', _t('Logs.Action', 'Action'), $statusValues, '', null, _t('Logs.ActionAny', 'Any'))
    114         );
    115
    116         $columnSelectionField = $this->ColumnSelectionField();
    117         $fields->push($columnSelectionField);
    118         $validator = new RequiredFields();
    119         $validator->setJavascriptValidationHandler('none');
    120
    121         $form = new Form($this, "SearchForm",
    122                         $fields,
    123                         new FieldSet(
    124                                 new FormAction('search', _t('MemberTableField.SEARCH', 'Search')),
    125                                 $clearAction = new ResetFormAction('clearsearch', _t('ModelAdmin.CLEAR_SEARCH', 'Clear Search'))
    126                         ),
    127                         $validator
    128         );
    129         //$form->setFormAction(Controller::join_links($this->Link(), "search"));
    130         $form->setFormMethod('get');
    131         $form->setHTMLID("Form_SearchForm_" . $this->modelClass);
    132         $form->disableSecurityToken();
    133         $clearAction->useButtonTag = true;
    134         $clearAction->addExtraClass('minorAction');
    135
    136         return $form;
    137     }
    138
    139
    140 }
    141
    142 class LoggerAdmin_RecordController extends ModelAdmin_RecordController {
    143
    144     static $allowed_actions = array('view', 'ViewForm');
    145
    146 }

[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. -