You are here

function kwresearch_keywords_list_page in Keyword Research 6

Same name and namespace in other branches
  1. 7 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
Implementation of hook_menu().

File

includes/site_report.inc, line 12
Admin include file.

Code

function kwresearch_keywords_list_page($mode = 'all') {
  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');

  // create site keyword data for js
  $site_kw = array();
  $sql = '
    SELECT * FROM {kwresearch_keyword}
    WHERE priority > 0
  ';
  $res = db_query($sql);
  while ($r = db_fetch_object($res)) {
    $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';
  $output .= drupal_get_form('kwresearch_filter_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 (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) {
        $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 = db_fetch_array($result)) {
    $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 (!$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'],
      );
    }
  }
  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' => 'site_priority',
      );
      $row[] = array(
        'data' => $values['value'] >= 0 ? t('$') . number_format($values['value'], 2) : '-',
        'class' => 'value',
      );
      $row[] = array(
        'data' => $values['username'] ? l($values['username'], 'user/' . $values['uid']) : '-',
        'class' => 'user',
      );
      $row[] = array(
        'data' => l(number_format($values['page_count']), 'admin/content/kwresearch/keyword_pages/' . $values['kid'], array(
          'query' => 'destination=admin/content/kwresearch/keyword_list' . ($mode == 'site' ? '/site' : ''),
        )),
        'class' => 'page_count',
      );
      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' => 'kwresearch',
        'id' => 'kid-' . $values['kid'],
      );
    }
  }
  if (!$rows) {
    $rows[] = array(
      array(
        'data' => t('No keywords available.'),
        'colspan' => count($header),
      ),
    );
  }
  $output .= theme('table', $header, $rows, array(
    'id' => 'kwresearch-site-keywords',
  ));
  $output .= theme('pager', NULL, 100, 0);
  $site_priority_options = kwresearch_get_priority_options();
  drupal_add_js(array(
    'kwresearch' => array(
      'form' => 'admin_keyword_list',
      'analyze_path' => base_path() . 'admin/content/kwresearch/keyword_report/',
      'keyword_edit_path' => base_path() . 'admin/content/kwresearch/keyword_list/edit/',
      'return_destination' => 'admin/content/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' => $site_kw,
      'site_priority_options' => $site_priority_options,
    ),
  ), 'setting');
  return $output;
}