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