franck@0
|
1 <?php |
franck@0
|
2 // $Id: views_calc.install,v 1.3 2008/09/16 18:03:08 karens Exp $ |
franck@0
|
3 /** |
franck@0
|
4 * Implementation of hook_schema(). |
franck@0
|
5 */ |
franck@0
|
6 function views_calc_schema() { |
franck@0
|
7 $schema['views_calc_fields'] = array( |
franck@0
|
8 'fields' => array( |
franck@0
|
9 'cid' => array('type' => 'serial', 'not null' => TRUE, 'disp-width' => '10'), |
franck@0
|
10 'label' => array('type' => 'varchar', 'length' => '255', 'not null' => TRUE, 'default' => ''), |
franck@0
|
11 'format' => array('type' => 'varchar', 'length' => '255', 'not null' => TRUE, 'default' => ''), |
franck@0
|
12 'custom' => array('type' => 'varchar', 'length' => '255', 'not null' => TRUE, 'default' => ''), |
franck@0
|
13 'tablelist' => array('type' => 'text', 'not null' => TRUE), |
franck@0
|
14 'fieldlist' => array('type' => 'text', 'not null' => TRUE), |
franck@0
|
15 'calc' => array('type' => 'text', 'not null' => TRUE), |
franck@0
|
16 ), |
franck@0
|
17 'primary key' => array('cid'), |
franck@0
|
18 'indexes' => array( |
franck@0
|
19 'cid' => array('cid')) |
franck@0
|
20 ); |
franck@0
|
21 return $schema; |
franck@0
|
22 } |
franck@0
|
23 |
franck@0
|
24 function views_calc_install() { |
franck@0
|
25 drupal_install_schema('views_calc'); |
franck@0
|
26 } |
franck@0
|
27 |
franck@0
|
28 function views_calc_uninstall() { |
franck@0
|
29 db_query("DROP TABLE {views_calc_fields}"); |
franck@0
|
30 } |
franck@0
|
31 |
franck@0
|
32 /** |
franck@0
|
33 * Convert the queryname stored in the variable to the fullname |
franck@0
|
34 * so we can access both the fieldname and the tablename from |
franck@0
|
35 * the selections. |
franck@0
|
36 * |
franck@0
|
37 * Change the calc 'AVERAGE' to 'AVG' to match the db function. |
franck@0
|
38 */ |
franck@0
|
39 function views_calc_update_1() { |
franck@0
|
40 $ret = array(); |
franck@0
|
41 include_once(drupal_get_path('module', 'views') .'/views.module'); |
franck@0
|
42 include_once(drupal_get_path('module', 'views_calc') .'/views_calc.module'); |
franck@0
|
43 $view_calcs = (array) variable_get('views_calc_vid',''); |
franck@0
|
44 foreach ($view_calcs as $view_id) { |
franck@0
|
45 if ($view = views_get_view($view_id)) { |
franck@0
|
46 $cols = (array) variable_get('views_calc_'. $view->vid .'_col',''); |
franck@0
|
47 $new_cols = array(); |
franck@0
|
48 foreach ($cols as $col) { |
franck@0
|
49 foreach ($view->field as $field) { |
franck@0
|
50 if ($field['queryname'] == $col) { |
franck@0
|
51 $new_cols[] = $field['fullname']; |
franck@0
|
52 } |
franck@0
|
53 } |
franck@0
|
54 } |
franck@0
|
55 variable_set('views_calc_'. $view->vid .'_col', $new_cols); |
franck@0
|
56 $rows = (array) variable_get('views_calc_'. $view->vid. '_row',''); |
franck@0
|
57 $new_rows = array(); |
franck@0
|
58 foreach ($rows as $row) { |
franck@0
|
59 foreach ($view->field as $field) { |
franck@0
|
60 if ($field['queryname'] == $col) { |
franck@0
|
61 $new_rows[] = $field['fullname']; |
franck@0
|
62 } |
franck@0
|
63 } |
franck@0
|
64 } |
franck@0
|
65 variable_set('views_calc_'. $view->vid .'_row', $new_rows); |
franck@0
|
66 $col_calc = (array) variable_get('views_calc_'.$view->vid.'_col_calc',''); |
franck@0
|
67 foreach ($col_calc as $calc) { |
franck@0
|
68 if ($calc == 'AVERAGE') { |
franck@0
|
69 $new_calcs[] = 'AVG'; |
franck@0
|
70 } |
franck@0
|
71 else { |
franck@0
|
72 $new_calcs[] = $calc; |
franck@0
|
73 } |
franck@0
|
74 } |
franck@0
|
75 variable_set('views_calc_'. $view->vid .'_col_calc', $new_calcs); |
franck@0
|
76 $row_calc = (array) variable_get('views_calc_'.$view->vid.'_row_calc',''); |
franck@0
|
77 foreach ($row_calc as $calc) { |
franck@0
|
78 if ($calc == 'AVERAGE') { |
franck@0
|
79 $new_calcs[] = 'AVG'; |
franck@0
|
80 } |
franck@0
|
81 else { |
franck@0
|
82 $new_calcs[] = $calc; |
franck@0
|
83 } |
franck@0
|
84 } |
franck@0
|
85 variable_set('views_calc_'. $view->vid .'_row_calc', $new_calcs); |
franck@0
|
86 } |
franck@0
|
87 } |
franck@0
|
88 return $ret; |
franck@0
|
89 } |
franck@0
|
90 |
franck@0
|
91 /** |
franck@0
|
92 * Create a table to store custom views calculation fields. |
franck@0
|
93 */ |
franck@0
|
94 function views_calc_update_2() { |
franck@0
|
95 $ret = array(); |
franck@0
|
96 global $db_type; |
franck@0
|
97 |
franck@0
|
98 switch ($db_type) { |
franck@0
|
99 case 'mysql': |
franck@0
|
100 case 'mysqli': |
franck@0
|
101 $ret[] = update_sql("CREATE TABLE if not exists {views_calc_fields} ( |
franck@0
|
102 cid int(10) unsigned NOT NULL default '0', |
franck@0
|
103 label varchar(255), |
franck@0
|
104 format varchar(255), |
franck@0
|
105 custom varchar(255), |
franck@0
|
106 tablelist text, |
franck@0
|
107 fieldlist text, |
franck@0
|
108 calc text, |
franck@0
|
109 KEY (cid) |
franck@0
|
110 ) /*!40100 DEFAULT CHARACTER SET utf8 */"); |
franck@0
|
111 break; |
franck@0
|
112 case 'postgres': |
franck@0
|
113 $ret[] = update_sql("CREATE TABLE if not exists {views_calc_fields} ( |
franck@0
|
114 cid int(10) unsigned NOT NULL default '0', |
franck@0
|
115 label varchar(255), |
franck@0
|
116 format varchar(255), |
franck@0
|
117 custom varchar(255), |
franck@0
|
118 tablelist text, |
franck@0
|
119 fieldlist text, |
franck@0
|
120 calc text, |
franck@0
|
121 KEY (cid) |
franck@0
|
122 ) "); |
franck@0
|
123 break; |
franck@0
|
124 } |
franck@0
|
125 return $ret; |
franck@0
|
126 } |
franck@0
|
127 |
franck@0
|
128 /** |
franck@0
|
129 * TODO |
franck@0
|
130 * Use these values to create new default views, then delete them. |
franck@0
|
131 * |
franck@0
|
132 function views_calc_update_6000() { |
franck@0
|
133 $view_calcs = (array) variable_get('views_calc_vid',''); |
franck@0
|
134 foreach ($view_calcs as $view_id) { |
franck@0
|
135 variable_del('views_calc_'. $view_id .'_col'); |
franck@0
|
136 variable_del('views_calc_'. $view_id .'_col_calc'); |
franck@0
|
137 variable_del('views_calc_'. $view_id .'_row'); |
franck@0
|
138 variable_del('views_calc_'. $view_id .'_row_calc'); |
franck@0
|
139 } |
franck@0
|
140 variable_del('views_calc_vid'); |
franck@0
|
141 variable_del('views_calc_operators'); |
franck@0
|
142 |
franck@0
|
143 } |
franck@0
|
144 */ |