franck@0: array( franck@0: 'cid' => array('type' => 'serial', 'not null' => TRUE, 'disp-width' => '10'), franck@0: 'label' => array('type' => 'varchar', 'length' => '255', 'not null' => TRUE, 'default' => ''), franck@0: 'format' => array('type' => 'varchar', 'length' => '255', 'not null' => TRUE, 'default' => ''), franck@0: 'custom' => array('type' => 'varchar', 'length' => '255', 'not null' => TRUE, 'default' => ''), franck@0: 'tablelist' => array('type' => 'text', 'not null' => TRUE), franck@0: 'fieldlist' => array('type' => 'text', 'not null' => TRUE), franck@0: 'calc' => array('type' => 'text', 'not null' => TRUE), franck@0: ), franck@0: 'primary key' => array('cid'), franck@0: 'indexes' => array( franck@0: 'cid' => array('cid')) franck@0: ); franck@0: return $schema; franck@0: } franck@0: franck@0: function views_calc_install() { franck@0: drupal_install_schema('views_calc'); franck@0: } franck@0: franck@0: function views_calc_uninstall() { franck@0: db_query("DROP TABLE {views_calc_fields}"); franck@0: } franck@0: franck@0: /** franck@0: * Convert the queryname stored in the variable to the fullname franck@0: * so we can access both the fieldname and the tablename from franck@0: * the selections. franck@0: * franck@0: * Change the calc 'AVERAGE' to 'AVG' to match the db function. franck@0: */ franck@0: function views_calc_update_1() { franck@0: $ret = array(); franck@0: include_once(drupal_get_path('module', 'views') .'/views.module'); franck@0: include_once(drupal_get_path('module', 'views_calc') .'/views_calc.module'); franck@0: $view_calcs = (array) variable_get('views_calc_vid',''); franck@0: foreach ($view_calcs as $view_id) { franck@0: if ($view = views_get_view($view_id)) { franck@0: $cols = (array) variable_get('views_calc_'. $view->vid .'_col',''); franck@0: $new_cols = array(); franck@0: foreach ($cols as $col) { franck@0: foreach ($view->field as $field) { franck@0: if ($field['queryname'] == $col) { franck@0: $new_cols[] = $field['fullname']; franck@0: } franck@0: } franck@0: } franck@0: variable_set('views_calc_'. $view->vid .'_col', $new_cols); franck@0: $rows = (array) variable_get('views_calc_'. $view->vid. '_row',''); franck@0: $new_rows = array(); franck@0: foreach ($rows as $row) { franck@0: foreach ($view->field as $field) { franck@0: if ($field['queryname'] == $col) { franck@0: $new_rows[] = $field['fullname']; franck@0: } franck@0: } franck@0: } franck@0: variable_set('views_calc_'. $view->vid .'_row', $new_rows); franck@0: $col_calc = (array) variable_get('views_calc_'.$view->vid.'_col_calc',''); franck@0: foreach ($col_calc as $calc) { franck@0: if ($calc == 'AVERAGE') { franck@0: $new_calcs[] = 'AVG'; franck@0: } franck@0: else { franck@0: $new_calcs[] = $calc; franck@0: } franck@0: } franck@0: variable_set('views_calc_'. $view->vid .'_col_calc', $new_calcs); franck@0: $row_calc = (array) variable_get('views_calc_'.$view->vid.'_row_calc',''); franck@0: foreach ($row_calc as $calc) { franck@0: if ($calc == 'AVERAGE') { franck@0: $new_calcs[] = 'AVG'; franck@0: } franck@0: else { franck@0: $new_calcs[] = $calc; franck@0: } franck@0: } franck@0: variable_set('views_calc_'. $view->vid .'_row_calc', $new_calcs); franck@0: } franck@0: } franck@0: return $ret; franck@0: } franck@0: franck@0: /** franck@0: * Create a table to store custom views calculation fields. franck@0: */ franck@0: function views_calc_update_2() { franck@0: $ret = array(); franck@0: global $db_type; franck@0: franck@0: switch ($db_type) { franck@0: case 'mysql': franck@0: case 'mysqli': franck@0: $ret[] = update_sql("CREATE TABLE if not exists {views_calc_fields} ( franck@0: cid int(10) unsigned NOT NULL default '0', franck@0: label varchar(255), franck@0: format varchar(255), franck@0: custom varchar(255), franck@0: tablelist text, franck@0: fieldlist text, franck@0: calc text, franck@0: KEY (cid) franck@0: ) /*!40100 DEFAULT CHARACTER SET utf8 */"); franck@0: break; franck@0: case 'postgres': franck@0: $ret[] = update_sql("CREATE TABLE if not exists {views_calc_fields} ( franck@0: cid int(10) unsigned NOT NULL default '0', franck@0: label varchar(255), franck@0: format varchar(255), franck@0: custom varchar(255), franck@0: tablelist text, franck@0: fieldlist text, franck@0: calc text, franck@0: KEY (cid) franck@0: ) "); franck@0: break; franck@0: } franck@0: return $ret; franck@0: } franck@0: franck@0: /** franck@0: * TODO franck@0: * Use these values to create new default views, then delete them. franck@0: * franck@0: function views_calc_update_6000() { franck@0: $view_calcs = (array) variable_get('views_calc_vid',''); franck@0: foreach ($view_calcs as $view_id) { franck@0: variable_del('views_calc_'. $view_id .'_col'); franck@0: variable_del('views_calc_'. $view_id .'_col_calc'); franck@0: variable_del('views_calc_'. $view_id .'_row'); franck@0: variable_del('views_calc_'. $view_id .'_row_calc'); franck@0: } franck@0: variable_del('views_calc_vid'); franck@0: variable_del('views_calc_operators'); franck@0: franck@0: } franck@0: */