You are here

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;
}