You are here

seotools.setup.inc in Drupal SEO Tools 7

Admin page callback for the seotools module.

File

seotools.setup.inc
View source
<?php

// $Id$

/**
 * @file
 * Admin page callback for the seotools module.
 */

/*
 * TODO: finish wizard
 */
function seotools_admin_setup($step = 0) {
  if (!$step) {
    $step = 0;
  }
  $form = drupal_get_form('seotools_setup_' . $step . '_form');
  return render($form);
}

/**
 * Checks if dependencies are installed.
 *
 * @param $form
 *   Form array
 * @param $form_state
 *   Form state
 * @return mixed
 *   Form
 */
function seotools_setup_0_form($form, &$form_state) {

  // Run checks here if needed.
  drupal_goto('admin/config/search/seotools/setup/1');
  return $form;
}

/**
 * Select social media profiles.
 *
 * @param $form
 * @param $form_state
 * @return array
 */
function seotools_setup_1_form($form, $form_state) {
  drupal_set_title(t('SEO Tools setup'));
  $form = array();
  $instructions = t('Use this form to setup services accounts for SEO Tools.');
  $form['instruc'] = array(
    '#markup' => $instructions,
  );
  $form['setup_mode'] = array(
    '#type' => 'value',
    '#value' => 1,
  );

  // Google Analytics setup
  if (module_exists('googleanalytics')) {
    include_once drupal_get_path('module', 'googleanalytics') . '/googleanalytics.admin.inc';
    $f = googleanalytics_admin_settings_form($form_state);
    $description = '';
    if (preg_match('/^UA-\\d{4,}-\\d+$/', $f['account']['googleanalytics_account']['#default_value'])) {
      $description = '<div class="messages status">' . t('Your Google Analytics account is set.') . '</div>' . $description;
      $f['account']['googleanalytics_account']['#type'] = 'item';
      $f['account']['googleanalytics_account']['#markup'] = $f['account']['googleanalytics_account']['#default_value'];
      $f['account']['googleanalytics_account']['#description'] = '';
      $f['googleanalytics_set'] = array(
        '#type' => 'value',
        '#value' => '1',
      );
    }
    $form['googleanalytics'] = array(
      '#type' => 'fieldset',
      '#title' => t('Google Analytics setup'),
      '#collapsible' => TRUE,
      '#collapsed' => FALSE,
      '#description' => $description,
    );
    unset($f['tracking_title']);
    unset($f['tracking']);
    unset($f['googleanalytics_custom_var']);
    unset($f['advanced']);
    unset($f['actions']);
    unset($f['#theme']);
    unset($f['#submit']);
    $f['googleanalytics_account'] = $f['account']['googleanalytics_account'];
    unset($f['account']);
    $form['googleanalytics'] = array_merge($form['googleanalytics'], $f);
  }

  // WordStream setup
  if (module_exists('wordstream')) {
    include_once drupal_get_path('module', 'wordstream') . '/wordstream.admin.inc';
    $f = wordstream_admin_settings(array(), $form_state);
    $description = t('Wordstream gives you access to live keyword data.');
    if (isset($f['wordstream_credits_per_month']['#markup']) && $f['wordstream_credits_per_month']['#markup']) {
      $description = '<div class="messages status">' . t('Your WordStream account is setup correctly.') . '</div>' . $description;
      unset($f['wordstream_password']);
      $f['wordstream_username']['#type'] = 'item';
      $f['wordstream_username']['#markup'] = $f['wordstream_username']['#default_value'];
      $f['wordstream_username']['#description'] = '';
      $f['wordstream_set'] = array(
        '#type' => 'value',
        '#value' => '1',
      );
    }
    $form['wordstream'] = array(
      '#type' => 'fieldset',
      '#title' => t('Wordstream setup'),
      '#collapsible' => TRUE,
      '#collapsed' => FALSE,
      '#description' => $description,
    );
    unset($f['wordstream_cache_time']);
    unset($f['wordstream_stats_report_options']);
    unset($f['actions']);
    unset($f['#theme']);
    unset($f['#submit']);
    $form['wordstream'] = array_merge($form['wordstream'], $f);
  }

  // Alchemy setup
  include_once drupal_get_path('module', 'alchemy') . '/alchemy.admin.inc';
  $f = alchemy_admin_settings(array(), $form_state);
  $description = t('Alchemy analyzes content to extract terms, entities, concepts and more.');
  if (preg_match('/^([A-Fa-f0-9]{2}){20}$/', $f['alchemy_apikey']['#default_value'])) {
    $description = '<div class="messages status">' . t('Your Alchemy api key is set.') . '</div>' . $description;
    $f['alchemy_apikey']['#type'] = 'item';
    $f['alchemy_apikey']['#markup'] = $f['alchemy_apikey']['#default_value'];
    $f['alchemy_apikey']['#description'] = '';
    $f['alchemy_set'] = array(
      '#type' => 'value',
      '#value' => '1',
    );
  }
  $form['alchemy'] = array(
    '#type' => 'fieldset',
    '#title' => t('Alchemy setup'),
    '#collapsible' => TRUE,
    '#collapsed' => FALSE,
    '#description' => $description,
  );
  unset($f['alchemy_usecurl']);
  unset($f['actions']);
  unset($f['#theme']);
  unset($f['#submit']);
  $form['alchemy'] = array_merge($form['alchemy'], $f);
  $form['actions'] = array(
    '#type' => 'actions',
  );
  $form['actions']['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Save settings'),
  );
  $form['#theme'] = 'system_settings_form';
  return $form;
}
function seotools_setup_1_form_validate($form, &$form_state) {
  $values = $form_state['values'];

  // validate Google Analytics account
  if (module_exists('googleanalytics')) {
    if (!isset($values['googleanalytics_set']) && !preg_match('/^UA-\\d{4,}-\\d+$/', $form_state['values']['googleanalytics_account'])) {
      form_set_error('googleanalytics_account', t('A valid Google Analytics Web Property ID is case sensitive and formatted like UA-xxxxxxx-yy.'));
    }
  }

  // validate WordStream account
  if (module_exists('wordstream')) {
    if (!isset($values['wordstream_set'])) {
      $wordstream = wordstream_include_api_class($values['wordstream_username'], $values['wordstream_password']);
      $account = 0;
      if ($wordstream) {
        $ret = $wordstream
          ->getAPICredits();
        if ($ret->credits_per_month) {
          $account = 1;
        }
      }
      if (!$account) {
        form_set_error('wordstream_username', t('Unable to log in to WordStream. Please enter a valid WordStream API username and password.'));
      }
    }
  }

  // validate Google Analytics account
  if (!isset($values['alchemy_set']) && !preg_match('/^([A-Fa-f0-9]{2}){20}$/', $form_state['values']['alchemy_apikey'])) {
    form_set_error('alchemy_apikey', t('Alchemy API key is invalid.'));
  }
}
function seotools_setup_1_form_submit($form, &$form_state) {
  $values = $form_state['values'];
  if (module_exists('googleanalytics')) {
    if (!isset($values['googleanalytics_set'])) {
      variable_set('googleanalytics_account', $values['googleanalytics_account']);
    }
  }
  if (module_exists('wordstream')) {
    if (!isset($values['wordstream_set'])) {
      variable_set('wordstream_username', $values['wordstream_username']);
      variable_set('wordstream_password', $values['wordstream_password']);
    }
  }
  if (!isset($values['alchemy_set'])) {
    variable_set('alchemy_apikey', $values['alchemy_apikey']);
  }
  drupal_set_message(t('API account information has been saved.'));
  drupal_goto('admin/config/search/seotools/setup/2');
}

/**
 * Select social media profiles
 * @param $form
 * @param $form_state
 */
function seotools_setup_2_form($form, &$form_state) {

  // clear wordstream error message
  drupal_get_messages('error');
  $msg = t('Congradulations, the Drupal SEO Tools suite is intalled and ready for use.');
  $msg .= '<h3>' . t('Next steps') . '</h3>';
  $items[] = t('If you have list of targeted keywords for your site, !import_link.', array(
    '!import_link' => l(t('import your keywords'), 'admin/structure/kwresearch/keyword_list/import'),
  ));
  $items[] = t('Discover targeted keywords for your site through !kwreserach_link.', array(
    '!kwreserach_link' => l(t('keyword research'), 'admin/structure/kwresearch/keyword_report'),
  ));
  $items[] = t('Analyze and optimize your content for the search engines using !contentanalysis_link.', array(
    '!contentanalysis_link' => l(t('content analysis'), 'admin/content/insight'),
  ));
  $msg .= theme('item_list', array(
    'items' => $items,
  ));
  $form['done'] = array(
    '#markup' => $msg,
  );
  return $form;
}

Functions

Namesort descending Description
seotools_admin_setup
seotools_setup_0_form Checks if dependencies are installed.
seotools_setup_1_form Select social media profiles.
seotools_setup_1_form_submit
seotools_setup_1_form_validate
seotools_setup_2_form Select social media profiles