function noderelationships_settings_save in Node Relationships 6
Set relationship settings for the given content type.
2 calls to noderelationships_settings_save()
- noderelationships_admin_settings_backref_submit in ./
noderelationships.admin.inc - Submit handler for the back reference settings form.
- noderelationships_admin_settings_noderef_submit in ./
noderelationships.admin.inc - Submit handler for the node reference extras form.
File
- ./
noderelationships.inc, line 124 - Common functions for the noderelationships module.
Code
function noderelationships_settings_save($nodetype, $settings) {
$old_settings_hash = md5(serialize(noderelationships_settings_load($nodetype)));
$new_settings_hash = md5(serialize($settings));
// Quit if settings have not been changed.
if ($old_settings_hash == $new_settings_hash) {
return FALSE;
}
// Prepare the settings for database storage.
$settings_rows = array();
if (!empty($settings['noderef'])) {
$noderef_settings = $settings['noderef'];
if (!empty($noderef_settings) && is_array($noderef_settings)) {
foreach ($noderef_settings as $option_name => $option_values) {
if (!empty($option_values) && is_array($option_values)) {
foreach ($option_values as $field_name => $value) {
$settings_key = 'noderef::' . $field_name;
if (!isset($settings_rows[$settings_key])) {
$settings_rows[$settings_key] = array();
}
$settings_rows[$settings_key][$option_name] = $value;
}
}
}
}
}
if (!empty($settings['backref']) && !empty($settings['backref']['regions'])) {
$backref_settings = $settings['backref']['regions'];
if (!empty($backref_settings) && is_array($backref_settings)) {
foreach ($backref_settings as $region => $region_relations) {
if (!empty($region_relations) && is_array($region_relations)) {
foreach ($region_relations as $relation_key => $relation_info) {
$settings_key = 'backref:' . $relation_key;
$relation_info['region'] = $region;
$settings_rows[$settings_key] = $relation_info;
}
}
}
}
}
// Update the settings in the database.
db_query("DELETE FROM {noderelationships_settings} WHERE type_name = '%s'", $nodetype);
foreach ($settings_rows as $settings_key => $settings_row) {
list($relation_type, $related_type, $field_name) = explode(':', $settings_key);
$args = array(
$nodetype,
$relation_type,
$related_type,
$field_name,
serialize($settings_row),
);
db_query("INSERT INTO {noderelationships_settings} (type_name, relation_type, related_type, field_name, settings) VALUES ('%s', '%s', '%s', '%s', '%s')", $args);
}
// Synchronize back reference settings with back reference fields.
noderelationships_cck_backref_sync_fields($nodetype);
return TRUE;
}