function kwresearch_node_save in Keyword Research 7
2 calls to kwresearch_node_save()
- kwresearch_node_insert in ./
kwresearch.module - Implements hook_node_insert().
- kwresearch_node_update in ./
kwresearch.module - Implements hook_node_update().
File
- ./
kwresearch.module, line 1124
Code
function kwresearch_node_save($node) {
static $vocab_filtered = FALSE;
if ($vocab_filtered) {
return;
}
if (!($sync_vocab = variable_get('kwresearch_keyword_sync_vocabulary', ''))) {
return;
}
$processed = array();
$page_keywords = kwresearch_load_page_keywords_by_page($node->nid);
foreach ($page_keywords as $page_keyword) {
$processed[$page_keyword->kid] = 0;
}
$terms = array();
$node_arr = (array) $node;
$sync_vocab_obj = taxonomy_vocabulary_machine_name_load($sync_vocab);
$vocab_lang = $sync_vocab_obj->language;
//look for fields
$fields_info = field_info_instances('node', $node->type);
foreach ($fields_info as $field_name => $value) {
$field_info = field_info_field($field_name);
//work on fields belonging to selected vocab
if ($field_info['type'] == 'taxonomy_term_reference' && $field_info['settings']['allowed_values'][0]['vocabulary'] == $sync_vocab) {
$field = $node->{$value['field_name']};
if (empty($field)) {
return;
}
//use field specific localization
$lang = $field[LANGUAGE_NONE][0]['language'];
if (!empty($field[$lang]) && is_array($field[$lang])) {
foreach ($field[$lang] as $i => $ta) {
$term = strtolower(trim($ta['name']));
$page_keyword_obj = (object) array(
'priority' => 50,
);
$kid = kwresearch_save_page_keyword($node->nid, $term, NULL, $page_keyword_obj);
kwresearch_update_keyword_page_counts($kid);
$processed[$kid] = 1;
}
}
}
}
// delete any page keywords that have been removed from vocab
foreach ($processed as $kid => $v) {
if (!$v) {
kwresearch_delete_page_keyword($kid, $node->nid);
kwresearch_update_keyword_page_counts($kid);
}
}
$vocab_filtered = TRUE;
return;
}