viewreference.install in View reference 6.3
File
viewreference.install
View source
<?php
function viewreference_install() {
content_notify('install', 'viewreference');
}
function viewreference_uninstall() {
content_notify('uninstall', 'viewreference');
}
function viewreference_enable() {
content_notify('enable', 'viewreference');
}
function viewreference_disable() {
content_notify('disable', 'viewreference');
}
function viewreference_update_6300() {
$ret = array();
$fields = content_fields();
foreach ($fields as $field) {
if ($field['type'] == "viewreference") {
$db_info = content_database_info($field);
if (isset($db_info['columns']['view_id'])) {
$view_id_column = $db_info['columns']['view_id']['column'];
db_change_field($ret, $db_info['table'], $view_id_column, $view_id_column, array(
'type' => 'varchar',
'length' => '255',
'default' => NULL,
'not null' => FALSE,
));
$result = db_query("SELECT DISTINCT " . $view_id_column . " FROM {" . $db_info['table'] . "}");
while ($row = db_fetch_array($result)) {
$new_value = "";
if ($row[$view_id_column]) {
$replace = db_query("SELECT name, position FROM {viewreference} WHERE view_id = %d", $row[$view_id_column]);
$replace_values = db_fetch_array($replace);
$new_value = $replace_values['name'] . ":" . $replace_values['position'];
}
$ret[] = update_sql("UPDATE {" . $db_info['table'] . "} " . "SET " . $view_id_column . " = '" . $new_value . "' " . "WHERE " . $view_id_column . " = '" . $row[$view_id_column] . "'");
}
}
$result = db_query("SELECT global_settings " . "FROM {content_node_field} " . "WHERE field_name = '" . $field['field_name'] . "'");
$row = db_fetch_array($result);
$settings = unserialize($row['global_settings']);
$filters = array_filter($settings['referenceable_views']);
$new_filters = array();
foreach ($filters as $key => $value) {
$replace = db_query("SELECT name, position FROM {viewreference} WHERE view_id = %d", $value);
$replace_values = db_fetch_array($replace);
$new_value = $replace_values['name'] . ":" . $replace_values['position'];
$new_filters[$new_value] = $new_value;
}
$settings['referenceable_views'] = $new_filters;
db_query("UPDATE {content_node_field} " . "SET global_settings = '%s' " . "WHERE field_name = '" . $field['field_name'] . "'", array(
serialize($settings),
));
}
}
db_drop_table($ret, 'viewreference');
return $ret;
}