Skip to content
This repository was archived by the owner on Sep 10, 2021. It is now read-only.

Commit bb95eb4

Browse files
author
Charles Marion
committed
ENH: Added log tab in admin page
1 parent d2af82c commit bb95eb4

File tree

11 files changed

+391
-20
lines changed

11 files changed

+391
-20
lines changed

core/AppController.php

Lines changed: 27 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,12 @@ public function preDispatch()
1717
$this->view->setEncoding('iso-8859-1');
1818

1919
$fc=Zend_Controller_Front::getInstance();
20-
$this->getLogger()->setEventItem('module',$fc->getRequest()->getModuleName());
20+
$module=$fc->getRequest()->getModuleName();
21+
if($module=='default')
22+
{
23+
$module='core';
24+
}
25+
$this->getLogger()->setEventItem('module',$module);
2126
$this->view->webroot=$fc->getBaseUrl();
2227
$this->coreWebroot=$this->view->webroot.'/core';
2328
$this->view->coreWebroot=$this->coreWebroot;
@@ -146,82 +151,87 @@ protected function t($text)
146151
/**completion eclipse*/
147152
/**
148153
* Assetstrore Model
149-
* @var AssetstoreModel
154+
* @var AssetstoreModelBase
150155
*/
151156
var $Assetstore;
152157
/**
153158
* Bitstream Model
154-
* @var BitstreamModel
159+
* @var BitstreamModelBase
155160
*/
156161
var $Bitstream;
157162
/**
158163
* Community Model
159-
* @var CommunityModel
164+
* @var CommunityModelBase
160165
*/
161166
var $Community;
167+
/**
168+
* Errorlog Model
169+
* @var ErrorlogModelBase
170+
*/
171+
var $Errorlog;
162172
/**
163173
* Feed Model
164-
* @var FeedModel
174+
* @var FeedModelBase
165175
*/
166176
var $Feed;
167177
/**
168178
* Feedpolicygroup Model
169-
* @var FeedpolicygroupModel
179+
* @var FeedpolicygroupModelBase
170180
*/
171181
var $Feedpolicygroup;
172182
/**
173183
* Feedpolicyuser Model
174-
* @var FeedpolicyuserModel
184+
* @var FeedpolicyuserModelBase
175185
*/
176186
var $Feedpolicyuser;
177187
/**
178188
* Folder Model
179-
* @var FolderModel
189+
* @var FolderModelBase
180190
*/
181191
var $Folder;
182192
/**
183193
* Folderpolicygroup Model
184-
* @var FolderpolicygroupModel
194+
* @var FolderpolicygroupModelBase
185195
*/
186196
var $Folderpolicygroup;
187197
/**
188198
* Folderpolicyuser Model
189-
* @var FolderpolicyuserModel
199+
* @var FolderpolicyuserModelBase
190200
*/
191201
var $Folderpolicyuser;
192202
/**
193203
* Group Model
194-
* @var GroupModel
204+
* @var GroupModelBase
195205
*/
196206
var $Group;
197207
/**
198208
* ItemKeyword Model
199-
* @var ItemKeywordModel
209+
* @var ItemKeywordModelBase
200210
*/
201211
var $ItemKeyword;
202212
/**
203213
* Item Model
204-
* @var ItemModel
214+
* @var ItemModelBase
205215
*/
206216
var $Item;
207217
/**
208218
* Itempolicygroup Model
209-
* @var ItempolicygroupModel
219+
* @var ItempolicygroupModelBase
210220
*/
211221
var $Itempolicygroup;
212222
/**
213223
* Itempolicyuser Model
214-
* @var ItempolicyuserModel
224+
* @var ItempolicyuserModelBase
215225
*/
216226
var $Itempolicyuser;
217227
/**
218228
* ItemRevision Model
219-
* @var ItemRevisionModel
229+
* @var ItemRevisionModelBase
220230
*/
221231
var $ItemRevision;
222232
/**
223233
* User Model
224-
* @var UserModel
234+
* @var UserModelBase
225235
*/
226236
var $User;
227237

core/controllers/AdminController.php

Lines changed: 82 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
*/
66
class AdminController extends AppController
77
{
8-
public $_models=array();
8+
public $_models=array('Errorlog');
99
public $_daos=array();
1010
public $_components=array('Upgrade','Utility');
1111
public $_forms=array('Admin');
@@ -54,7 +54,87 @@ function indexAction()
5454
}
5555
}//end indexAction
5656

57-
57+
58+
/** show logs*/
59+
function showlogAction()
60+
{
61+
if(!$this->logged||!$this->userSession->Dao->getAdmin()==1)
62+
{
63+
throw new Zend_Exception("You should be an administrator");
64+
}
65+
if(!$this->getRequest()->isXmlHttpRequest())
66+
{
67+
throw new Zend_Exception("Why are you here ? Should be ajax.");
68+
}
69+
$this->_helper->layout->disableLayout();
70+
71+
$start=$this->_getParam("startlog");
72+
$end=$this->_getParam("endlog");
73+
$module=$this->_getParam("modulelog");
74+
$priority=$this->_getParam("prioritylog");
75+
if(!isset($start))
76+
{
77+
$start=date('c',strtotime("-24 hour"));
78+
}
79+
else
80+
{
81+
$start=date('c', strtotime($start));
82+
}
83+
if(!isset($end))
84+
{
85+
$end= date('c');
86+
}
87+
else
88+
{
89+
$end=date('c', strtotime($end));
90+
}
91+
if(!isset($module))
92+
{
93+
$module='all';
94+
}
95+
if(!isset($priority))
96+
{
97+
$priority='all';
98+
}
99+
100+
$logs=$this->Errorlog->getLog($start, $end,$module,$priority);
101+
foreach ($logs as $key=>$log)
102+
{
103+
$logs[$key]=$log->_toArray();
104+
if(substr($log->getMessage(), 0, 5)=='Fatal')
105+
{
106+
$shortMessage=substr($log->getMessage(), strpos($log->getMessage(), "[message]")+10,40);
107+
}
108+
elseif(substr($log->getMessage(), 0, 6)=='Server')
109+
{
110+
$shortMessage=substr($log->getMessage(), strpos($log->getMessage(), "Message:")+9,40);
111+
}
112+
else
113+
{
114+
$shortMessage=substr($log->getMessage(), 0,40);
115+
}
116+
$logs[$key]['shortMessage']=$shortMessage.' ...';
117+
}
118+
$this->view->jsonLogs=JsonComponent::encode($logs);
119+
$this->view->jsonLogs=htmlentities($this->view->jsonLogs);
120+
121+
if($this->_request->isPost())
122+
{
123+
$this->_helper->viewRenderer->setNoRender();
124+
echo $this->view->jsonLogs;
125+
return;
126+
}
127+
128+
$modulesConfig=Zend_Registry::get('configsModules');
129+
130+
$modules=array('all','core');
131+
foreach($modulesConfig as $key=>$module)
132+
{
133+
$modules[]=$key;
134+
}
135+
$this->view->modulesLog=$modules;
136+
}//showlogAction
137+
58138
/** upgrade database*/
59139
function upgradeAction()
60140
{

core/models/base/ErrorlogModelBase.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,12 @@ public function __construct()
1111
'module'=> array('type'=>MIDAS_DATA),
1212
'message'=> array('type'=>MIDAS_DATA),
1313
'datetime'=> array('type'=>MIDAS_DATA),
14+
'priority'=> array('type'=>MIDAS_DATA),
1415
);
1516
$this->initialize(); // required
1617
} // end __construct()
1718

19+
abstract function getLog($startDate,$endDate,$module='all',$priority='all',$limit=99999);
20+
1821
} // end class FeedModelBase
1922
?>

core/models/dao/ErrorlogDao.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<?php
2+
/**
3+
* \class ErrorlogDao
4+
*/
5+
class ErrorlogDao extends AppDao
6+
{
7+
public $_model='Errorlog';
8+
9+
10+
} // end class
11+
?>

core/models/pdo/ErrorlogModel.php

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
<?php
2+
require_once BASE_PATH.'/core/models/base/ErrorlogModelBase.php';
3+
4+
/**
5+
* \class ErrorlogModel
6+
* \brief Pdo Model
7+
*/
8+
class ErrorlogModel extends ErrorlogModelBase
9+
{
10+
11+
/**
12+
* Return a list of log
13+
* @param type $startDate
14+
* @param type $endDate
15+
* @param type $module
16+
* @param type $priority
17+
* @param type $limit
18+
* @return array ErrorlogDao
19+
*/
20+
function getLog($startDate,$endDate,$module='all',$priority='all',$limit=99999)
21+
{
22+
$result=array();
23+
$sql= $this->database->select()
24+
->setIntegrityCheck(false)
25+
->from(array('e' => 'errorlog'))
26+
->where('datetime >= ?', $startDate)
27+
->where('datetime <= ?', $endDate)
28+
->order('datetime DESC')
29+
->limit($limit);
30+
if($module!='all')
31+
{
32+
$sql->where('module = ?', $module);
33+
}
34+
if($priority!='all')
35+
{
36+
$sql->where('priority = ?', $priority);
37+
}
38+
$rowset = $this->database->fetchAll($sql);
39+
foreach ($rowset as $keyRow=>$row)
40+
{
41+
$result[]= $this->initDao('Errorlog', $row);
42+
}
43+
return $result;
44+
}//getLog
45+
46+
} // end class
47+
?>
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
11
div.viewSideBar input.globalButton{
22
margin-left: 0px!important;
3+
}
4+
5+
6+
div.viewWrapper {
7+
padding-right: 40px !important;
38
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
tr.logSum{
2+
cursor: pointer;
3+
}
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
jsonLogs = jQuery.parseJSON($('div#jsonLogs').html());
2+
3+
initLogs();
4+
5+
function initLogs()
6+
{
7+
$('table#listLogs').hide();
8+
$('.logsLoading').show();
9+
$('table#listLogs tr.logSum').remove();
10+
$('table#listLogs tr.logDetail').remove();
11+
$.each(jsonLogs, function(index, value) {
12+
var html='';
13+
html+='<tr class="logSum">';
14+
html+=' <td>'+value.datetime+'</td>';
15+
if(value.priority==2)
16+
{
17+
html+=' <td><b>Critical</b></td>';
18+
}
19+
if(value.priority==4)
20+
{
21+
html+=' <td>Warning</td>';
22+
}
23+
if(value.priority==6)
24+
{
25+
html+=' <td>Info</td>';
26+
}
27+
html+=' <td>'+value.module+'</td>';
28+
html+=' <td>'+value.shortMessage+'</td>';
29+
html+='</tr>';
30+
html+='<tr class="logDetail" style="display:none;">';
31+
html+=' <td colspan="4"><pre>'+value.message+'</pre></td>';
32+
html+='</tr>';
33+
$('table#listLogs').append(html);
34+
});
35+
36+
$('table#listLogs').show();
37+
$('.logsLoading').hide();
38+
39+
$('table#listLogs tr.logSum').click(function()
40+
{
41+
showDialogWithContent('Log', $(this).next().html(),true);
42+
});
43+
}
44+
45+
46+
var dates = $( "#startlog, #endlog" ).datepicker({
47+
defaultDate: "-1w",
48+
changeMonth: true,
49+
numberOfMonths: 1,
50+
onSelect: function( selectedDate ) {
51+
var option = this.id == "startlog" ? "minDate" : "maxDate",
52+
instance = $( this ).data( "datepicker" ),
53+
date = $.datepicker.parseDate(
54+
instance.settings.dateFormat ||
55+
$.datepicker._defaults.dateFormat,
56+
selectedDate, instance.settings );
57+
dates.not( this ).datepicker( "option", option, date );
58+
}
59+
});
60+
61+
62+
$('#logSelector').ajaxForm( {beforeSubmit: validateShowlog, success: successShowlog} );
63+
64+
65+
66+
function validateShowlog(formData, jqForm, options) {
67+
$('table#listLogs').hide();
68+
$('.logsLoading').show();
69+
}
70+
71+
function successShowlog(responseText, statusText, xhr, form)
72+
{
73+
$('div#jsonLogs').html(responseText);
74+
75+
try {
76+
jsonLogs = jQuery.parseJSON($('div#jsonLogs').html());
77+
} catch (e) {
78+
console.log(e);
79+
alert("An error occured.");
80+
return false;
81+
}
82+
initLogs();
83+
}

0 commit comments

Comments
 (0)