function kwresearch_keywords_list_page in Keyword Research 7
Same name and namespace in other branches
- 6 includes/site_report.inc \kwresearch_keywords_list_page()
Generates site keywords report page
Parameters
str $mode - filters keywords return. Settings are all|site|page:
1 string reference to 'kwresearch_keywords_list_page'
- kwresearch_menu in ./
kwresearch.module - Implements hook_menu()
File
- includes/
site_report.inc, line 12 - Admin include file.
Code
function kwresearch_keywords_list_page($mode = 'site') {
kwresearch_input_get_as_filters();
drupal_add_css(drupal_get_path('module', 'kwresearch') . '/kwresearch.css');
drupal_add_js(drupal_get_path('module', 'kwresearch') . '/kwresearch.js');
$output = "";
// create site keyword data for js
/*
$site_kw = array();
$sql = '
SELECT * FROM {kwresearch_keyword}
WHERE priority > 0
';
$res = db_query($sql);
while ($r = $res->fetchObject()) {
$site_kw[$r->keyword] = array(
'kid' => (int) $r->kid,
'priority' => (int) $r->priority,
'value' => (int) $r->value,
'page_count' => (int) $r->page_count,
);
}
*/
if ($mode == 'page') {
drupal_set_title('Page keywords');
}
elseif ($mode == 'site') {
drupal_set_title('Site keywords');
}
else {
drupal_set_title('All keywords');
}
$filter = kwresearch_build_filter_query();
$rows = array();
//return 'debug';
$form = drupal_get_form('kwresearch_filter_form');
$output .= render($form);
//dsm($filter);
$def_values = kwresearch_get_site_report_data_options_defaults();
$data_options = variable_get('kwresearch_site_report_data_options', $def_values);
$column_th = kwresearch_get_report_data_options('site', TRUE);
$header = array(
array(
'data' => t('Keyword'),
'field' => 'k.keyword',
'sort' => 'asc',
),
array(
'data' => t('Priority'),
'field' => 'k.priority',
),
array(
'data' => t('Value'),
'field' => 'k.value',
),
//array(
// 'data' => t('Set by'),
// 'field' => 'u.name',
//),
array(
'data' => t('Pages'),
'field' => 'k.page_count',
),
);
if (module_exists('linkintel')) {
$header[] = array(
'data' => t('Link target'),
'field' => 'r.path',
);
}
if (module_exists('intel_gwt')) {
$header[] = array(
'data' => t('Imprs'),
'field' => 'gwt_impressions',
);
$header[] = array(
'data' => t('Clicks'),
'field' => 'gwt_clicks',
);
$header[] = array(
'data' => t('Rank'),
'field' => 'gwt_position',
);
$header[] = array(
'data' => t('Chg'),
'field' => 'gwt_position_chg',
);
}
if (is_array($data_options)) {
foreach ($data_options as $k => $v) {
$f = $k;
if ($k == 'google_dailyest' || $k == 'yahoo_dailyest' || $k == 'bing_dailyest') {
$f = 'daily_volume';
}
if ($v) {
if (isset($column_th[$k])) {
$header[] = array(
'data' => $column_th[$k],
'field' => 'k.' . $f,
);
}
}
}
}
// note cannot put a line break in pager_query sql statements
/*
$sql = 'SELECT k.*, u.name AS username FROM {kwresearch_keyword} k LEFT JOIN {users} u ON u.uid = k.uid';
$tablesort = tablesort_sql($header);
if (!empty($filter['where'])) {
$sql = $sql ." WHERE " . (($mode == 'site') ? 'k.priority > 0 AND ' : '') . $filter['where'] . $tablesort;
$result = pager_query($sql, 100, 0, NULL, $filter['args']);
}
else {
if ($mode == 'site') {
$sql .= ' WHERE k.priority > 0';
}
elseif ($mode == 'page') {
$sql .= ' WHERE k.page_count > 0';
}
$result = pager_query($sql . $tablesort, 100);
}
*/
$options['mode'] = $mode;
$result = kwresearch_load_filtered_keyword_result($filter, $options, $header);
$priorities = kwresearch_get_priority_options();
$analysis = array();
$analysis['analysis'] = array();
$analysis['meta'] = array(
'searches_max' => 0,
'bid_max' => 0,
);
while ($r = $result
->fetchAssoc()) {
$analysis['analysis'][$r['keyword']] = $r;
$analysis['analysis'][$r['keyword']]['_searches'] = $r['daily_volume'];
$analysis['analysis'][$r['keyword']]['_competition'] = $r['competition'];
$analysis['analysis'][$r['keyword']]['_bid'] = $r['bid'];
if ($r['daily_volume'] > $analysis['meta']['searches_max']) {
$analysis['meta']['searches_max'] = $r['daily_volume'];
}
if ($r['bid'] > $analysis['meta']['bid_max']) {
$analysis['meta']['bid_max'] = $r['bid'];
}
if (!isset($site_kw[$r['keyword']]) || !$site_kw[$r['keyword']]) {
$site_kw[$r['keyword']] = array(
'kid' => (int) $r['kid'],
'priority' => (int) $r['priority'],
'value' => (int) $r['value'],
'page_count' => (int) $r['page_count'],
);
}
}
//dsm($analysis['analysis']);
if (is_array($analysis['analysis']) && !empty($analysis['analysis'])) {
foreach ($analysis['analysis'] as $keyword => $values) {
$row = array();
$row[] = kwresearch_format_report_data_value(array(
'term' => $keyword,
));
$row[] = array(
'data' => $values['priority'] >= 0 ? $priorities[$values['priority']] : '-',
'class' => array(
'site_priority',
),
);
$row[] = array(
'data' => $values['value'] >= 0 ? t('$') . number_format($values['value'], 2) : '-',
'class' => array(
'value',
),
);
//$row[] = array(
// 'data' => ($values['username']) ? l($values['username'], 'user/' . $values['uid']) : '-',
// 'class' => array('user'),
//);
$row[] = array(
//'data' => l(number_format($values['page_count']), 'admin/structure/kwresearch/keyword_pages/' . $values['kid'], array('query' => 'destination=admin/structure/kwresearch/keyword_list' . (($mode == 'site') ? '/site' : ''))),
'data' => l(number_format($values['page_count']), 'admin/structure/kwresearch/keyword_pages/' . $values['kid'], array(
'query' => array(
'destination' => 'admin/structure/kwresearch/keyword_list',
),
)),
'class' => array(
'page_count',
),
);
if (module_exists('linkintel')) {
$row[] = !isset($values['link_request_path']) ? '-' : l($values['link_request_path'], $values['link_request_path']);
}
if (module_exists('intel_gwt')) {
$row[] = array(
'data' => isset($values['gwt_impressions']) ? number_format($values['gwt_impressions']) : 'NA',
'class' => array(
'gwt-impressions',
),
);
$row[] = array(
'data' => isset($values['gwt_clicks']) ? number_format($values['gwt_clicks']) : 'NA',
'class' => array(
'gwt-clicks',
),
);
$row[] = array(
'data' => isset($values['gwt_position']) ? number_format($values['gwt_position'], 1) : 'NA',
'class' => array(
'gwt-position',
),
);
$row[] = array(
'data' => isset($values['gwt_position_chg']) ? number_format($values['gwt_position_chg'], 1) : 'NA',
'class' => array(
'gwt-position',
),
);
}
foreach ($data_options as $k => $v) {
if ($v) {
$values['_meta'] = $analysis['meta'];
if (!($r = kwresearch_format_report_data_value($values, $keyword, $k))) {
if (is_array($sources)) {
foreach ($sources as $aid => $source) {
if ($source['site_report_values_callback'] && ($r = call_user_func($source['site_report_values_callback'], $values, $keyword, $k))) {
break;
}
}
}
}
$row[] = $r;
}
}
$rows[] = array(
'data' => $row,
'class' => array(
'kwresearch',
),
'id' => 'kid-' . $values['kid'],
);
}
}
if (!$rows) {
$rows[] = array(
array(
'data' => t('No keywords available.'),
'colspan' => count($header),
),
);
}
$vars = array(
'header' => $header,
'rows' => $rows,
'attributes' => array(
'id' => 'kwresearch-site-keywords',
),
);
$output .= theme('table', $vars);
//pager_default_initialize($total, 1, $element = 0);
$output .= theme('pager');
$site_priority_options = kwresearch_get_priority_options();
drupal_add_js(array(
'kwresearch' => array(
'form' => 'admin_keyword_list',
'analyze_path' => base_path() . 'admin/structure/kwresearch/keyword_report/',
'keyword_edit_path' => base_path() . 'admin/structure/kwresearch/keyword_list/edit/',
'return_destination' => 'admin/structure/kwresearch/keyword_list' . ($mode != 'all' ? '/' . $mode : ''),
'toggle_site_keyword_callback' => base_path() . 'kwresearch/toggle_site_keyword_js',
'delete_site_keyword_callback' => base_path() . 'kwresearch/delete_site_keyword_js',
'module_path' => base_path() . drupal_get_path('module', 'kwresearch'),
'enable_site_keyword_tool' => user_access('kwresearch admin site keywords'),
'site_keywords_data' => isset($site_kw) ? $site_kw : '',
'site_priority_options' => $site_priority_options,
'permissions' => array(
'query_keyword_stats' => user_access('kwresearch query keyword stats'),
'admin_site_keywords' => user_access('kwresearch admin site keywords'),
'admin_page_keywords' => user_access('kwresearch admin page keywords'),
),
'post_token' => drupal_get_token('kwresearch'),
),
), array(
'type' => 'setting',
'scope' => JS_DEFAULT,
));
return $output;
}