1 <?php
2
3 4 5 6 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 = 'Журнал';
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
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
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
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.
-