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