You are here

function kwresearch_load_top_page_keyword_by_page in Keyword Research 7

Loads an array of page keyword objects associated with a specific page

Parameters

int|str $key Int treated as kid, str as keyword phrase:

File

./kwresearch.module, line 775

Code

function kwresearch_load_top_page_keyword_by_page($pid) {
  $keyword = '';
  $msgs = array();
  $pn = kwresearch_construct_pathnid_obj($pid, $msgs);

  // if a keyword vocab is used, combine kwresearch page keyword priority and tax field delta to determine order
  if (isset($pn->nid) && $pn->nid && ($sync_vocab = variable_get('kwresearch_keyword_sync_vocabulary', ''))) {
    $sync_vocab = variable_get('kwresearch_keyword_sync_vocabulary', '');

    // determine field used for sync vocabulary
    $query = db_select('field_config', 'c')
      ->fields('c');
    $i = $query
      ->innerJoin('field_config_instance', 'i', '(i.field_id = c.id)');
    $n = $query
      ->innerJoin('node', 'n', 'n.type = i.bundle');
    $query
      ->condition('c.type', 'taxonomy_term_reference');
    $query
      ->condition("{$i}.entity_type", 'node');
    $query
      ->condition("{$n}.nid", $pn->nid);
    $result = $query
      ->execute();
    $field = '';
    while ($r = $result
      ->fetchObject()) {
      $data = unserialize($r->data);
      if ($data['settings']['allowed_values'][0]['vocabulary'] == $sync_vocab) {
        $field = $r->field_name;
        break;
      }
    }
    if ($field) {
      $query = db_select('kwresearch_keyword', 'k')
        ->fields('k');
      $pk = $query
        ->innerJoin('kwresearch_page_keyword', 'kp', 'kp.kid = k.kid');
      $t = $query
        ->innerJoin('taxonomy_term_data', 't', 't.name = k.keyword');
      $f = $query
        ->innerJoin("field_data_{$field}", 'f', "f.field_keywords_tid = {$t}.tid");
      $query
        ->addField($f, 'delta', 'delta');
      $query
        ->condition("{$f}.entity_id", $pn->nid);
      $query
        ->orderBy("{$pk}.priority", 'DESC');
      $query
        ->orderBy("{$f}.delta", 'ASC');
      $result = $query
        ->execute();
      $r = $result
        ->fetchObject();
      if ($r = $result
        ->fetchObject()) {
        $keyword = $r->keyword;
      }
    }
  }
  if (!$keyword) {
    $query = db_select('kwresearch_keyword', 'k')
      ->fields('k');
    $pk = $query
      ->innerJoin('kwresearch_page_keyword', 'kp', 'kp.kid = k.kid');
    $query
      ->condition('path', $pn->path);
    $query
      ->orderBy("{$pk}.priority", 'DESC');
    $query
      ->orderBy("{k}.keyword", 'ASC');
    $result = $query
      ->execute();
    $r = $result
      ->fetchObject();
    if (!empty($r->keyword)) {
      $keyword = $r->keyword;
    }
  }
  return $keyword;
}