-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy patholap.admin.inc
More file actions
120 lines (97 loc) · 2.64 KB
/
olap.admin.inc
File metadata and controls
120 lines (97 loc) · 2.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
<?php
/**
* @file
*/
/**
* Menu callback.
*/
function olap_report() {
$form_state = array(
'method' => 'get',
'rerender' => TRUE,
'no_redirect' => TRUE,
'always_process' => TRUE,
);
$form = drupal_build_form('olap_form', $form_state);
return drupal_render($form);
}
/**
* Form constructor.
*/
function olap_form($form, &$form_state) {
if ($registers = register_get_all('RegisterTypeMovement')) {
foreach ($registers as $register) {
$schema = $register->getDbSchema('movement');
foreach ($schema as $name => $table) {
if (preg_match('/^r_(.+?)_movement$/', $name)) {
$data[$name] = $table;
}
}
}
}
$input = isset($form_state['input']) ? $form_state['input'] : array();
$form['filter'] = _olap_report_filter($data);
$form['data'] = _olap_data($data, $input);
return $form;
}
function _olap_report_filter($data) {
$form['type'] = array(
'#type' => 'select',
'#required' => TRUE,
'#title' => t('Select movement registry type'),
);
$form['fields'] = array(
'#type' => 'select',
'#title' => t('Select which fields should be displayed'),
'#multiple' => TRUE,
);
$form['ipp'] = array(
'#type' => 'select',
'#options' => array_combine(array(5, 10, 50, 100), array(5, 10, 50, 100)),
'#title' => t('Items per page'),
);
foreach ($data as $key => $table) {
$form['type']['#options'][$key] = $key;
foreach (array_keys($table['fields']) as $field) {
$form['fields']['#options'][$field] = $field;
}
}
$form['submit'] = array(
'#name' => '',
'#type' => 'submit',
'#value' => t('Apply'),
);
$form = array('#type' => 'fieldset', $form);
return $form;
}
function _olap_data($data, $input) {
$header = array();
$fields = isset($input['fields']) ? $input['fields'] : array('date', 'rtp', 'rid', 'rnm');
foreach ($fields as $field) {
$header[$field] = array('data' => t($field), 'field' => "m.$field");
}
$rows = db_select($input['type'], 'm')
->extend('PagerDefault')
->extend('TableSort')
->fields('m', $fields)
->limit((empty($input['ipp']) ? 10 : $input['ipp']))
->orderByHeader($header)
->execute()
->fetchAll(PDO::FETCH_ASSOC);
_olad_field_date_format($rows, 'date');
$form['data'] = array(
'#theme' => 'table',
'#header' => $header,
'#rows' => $rows,
'#empty' => t('No content available.'),
);
$form['pager'] = array('#markup' => theme('pager'));
return $form;
}
function _olad_field_date_format(&$rows, $field) {
if (isset($rows[0][$field])) {
foreach ($rows as &$row) {
$row[$field] = format_date($row[$field], 'short');
}
}
}