You are here

function contentanalysis_do_analysis in Content Analysis 6

Same name and namespace in other branches
  1. 8 contentanalysis.module \contentanalysis_do_analysis()
  2. 7 contentanalysis.module \contentanalysis_do_analysis()

Provides analysis on context passed in

  • Normalizes the context
  • Passes context to analyzer modules' "callback" declaired in analyzer definition

_params

Parameters

unknown_type $context:

unknown_type $analyzers:

1 call to contentanalysis_do_analysis()
contentanalysis_analyze_js in ./contentanalysis.module
Returns content analysis for AJAX calls

File

./contentanalysis.module, line 857

Code

function contentanalysis_do_analysis($context, $analyzers = -1, $analyzers_params = array()) {

  //print_r($context);
  $analysis_struc = array(
    '#title' => '',
    '#status' => 'status',
    'content' => array(),
    'stats' => array(),
    'tests' => array(),
    'messages' => array(),
    'page_title' => array(
      '#title' => t('Page title'),
      '#status' => 'status',
    ),
    'body' => array(
      '#title' => t('Body'),
      '#status' => 'status',
    ),
    'meta_keywords' => array(
      '#title' => t('Meta keywords'),
      '#status' => 'status',
    ),
    'meta_description' => array(
      '#title' => t('Meta description'),
      '#status' => 'status',
    ),
  );

  // change structure if content is directly inputed without a full page
  if ($context['source'] == 'admin') {
    if (!$context['inputs']['nid'] && !$context['inputs']['body'] && !$context['inputs']['url']) {
      $analysis = $analysis_struc;
      $analysis['messages'] = contentanalysis_format_message(t('No input was submitted. Please enter content, a Node ID or URL.'), 'error');
      return $analysis;
    }
  }
  $context = contentanalysis_parse_context($context);

  // allow modules to alter context
  drupal_alter('contentanalysis_context_parser', $context);

  // save data to db
  $save = $context['options']['dontsave'] ? 0 : 1;
  $context['aid'] = contentanalysis_get_aid($context, $save);

  // change section labels if content is directly inputed
  if ($context['source'] == 'admin-form' && is_null($context['inputs']['url']) && is_null($context['inputs']['nid'])) {
    $analysis_struc['body']['#title'] = t('Text');
    unset($analysis_struc['page_title']);
    unset($analysis_struc['meta_keywords']);
    unset($analysis_struc['meta_description']);
  }
  $analysis = array();
  $analysis['#context'] = $context;
  $analyzers = module_invoke_all('contentanalysis_analyzers');
  drupal_alter('contentanalysis_analyzers', $analyzers);
  foreach ($analyzers as $aid => $analyzer) {
    if ($context['inputs']['analyzers'][$aid]) {
      $analysis_struc['#title'] = $analyzer['title'];
      $analysis[$aid] = call_user_func($analyzer['callback'], $context, $analysis_struc, $analyzers_params[$aid]);
    }
  }

  // do quickstart analysis if no analyzers are enabled
  if (variable_get('contentanalysis_analyzerchecklist', 1)) {
    $analysis_struc['#title'] = t('Analyzer checklist');
    $analysis['contentanalysis'] = contentanalysis_checklist_analyzer($context, $analysis_struc);
  }
  return $analysis;
}