You are here

function contentanalysis_analyze_js in Content Analysis 6

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

Returns content analysis for AJAX calls

  • initializes context from AJAX _POST data
  • submits context to contentanalysis_do_analysis for analysis
  • formats returned analysis

Return value

JSON formated analysis

See also

contentanalysis_do_analysis()

1 string reference to 'contentanalysis_analyze_js'
contentanalysis_menu in ./contentanalysis.module
Implementation of hook_menu().

File

./contentanalysis.module, line 406

Code

function contentanalysis_analyze_js() {
  $analysis = array();
  if ($_SESSION['contentanalysis']['code'] != $_POST['code']) {

    //watchdog('contentanalysis', 'Blocked invalid attempt ' . $_SESSION['contentanalysis']['code'] . ' != ' . $_POST['code']);
    exit;
  }
  $context = contentanalysis_get_default_context();
  $context['form_id'] = 'contentanalysis_analyze_js';
  $context['inputs']['nid'] = $_POST['nid'] == '-1' ? NULL : $_POST['nid'];
  $context['inputs']['url'] = $_POST['url'] == '-1' ? NULL : $_POST['url'];
  $context['inputs']['title'] = $_POST['title'] == '-1' ? NULL : $_POST['title'];
  $context['inputs']['page_title'] = $_POST['page_title'] == '-1' ? NULL : $_POST['page_title'];
  $context['inputs']['body'] = $_POST['body'] == '-1' ? NULL : $_POST['body'];
  $context['inputs']['meta_keywords'] = $_POST['meta_keywords'] == '-1' ? NULL : $_POST['meta_keywords'];
  $context['inputs']['meta_description'] = $_POST['meta_description'] == '-1' ? NULL : $_POST['meta_description'];
  $context['inputs']['page'] = $_POST['page'] == '-1' ? NULL : $_POST['page'];
  $context['inputs']['node_type'] = $_POST['node_type'] == '-1' ? NULL : $_POST['node_type'];
  $context['inputs']['body_input_filter'] = $_POST['body_input_filter'] == '-1' ? NULL : $_POST['body_input_filter'];
  $context['inputs']['hidden'] = $_POST['hidden'] == '-1' ? NULL : $_POST['hidden'];
  $context['inputs']['action'] = $_POST['action'] == '-1' ? NULL : $_POST['action'];
  $context['nid'] = $context['inputs']['nid'];
  $context['url'] = $context['inputs']['url'];
  $context['source'] = $_POST['source'];
  $a = explode(',', $_POST['analyzers']);
  $context['inputs']['analyzers'] = array();
  if (is_array($a)) {
    foreach ($a as $aid) {
      $context['inputs']['analyzers'][$aid] = $aid;
    }
  }
  $analyzers = module_invoke_all('contentanalysis_analyzers');
  foreach ($_POST as $k => $v) {
    if (substr($k, 0, 3) == 'ao_') {
      list($t, $aid, $vk) = explode('_', $k);
      $context['inputs']['analyzer_options'][$aid][$vk] = $v;
    }
  }
  $context['title'] = $context['inputs']['title'];
  $context['page_title'] = $context['inputs']['page_title'];
  $context['body'] = $context['inputs']['body'];
  $context['meta_keywords'] = $context['inputs']['meta_keywords'];
  $context['meta_description'] = $context['inputs']['meta_description'];
  $context['page'] = $context['inputs']['page'];

  // hook to allow other modules to alter context

  //drupal_alter('contentanalysis_context', $context);
  if ($c = module_invoke_all('contentanalysis_analyze_context', $context)) {
    $context = $c;
  }
  if ($context['options']['exit']) {
    $analysis['#context'] = $context;
  }
  else {

    // if url is input from admin form, go fetch the page contents
    if ($_POST['source'] == 'admin-form' && $context['url'] && !$context['nid'] && !$context['body']) {
      $context['page'] = file_get_contents($context['url']);
    }
    $analysis = contentanalysis_do_analysis($context);

    //$analyzers = module_invoke_all('contentanalysis_analyzers');
    drupal_alter('contentanalysis_analyzers', $analyzers);
    foreach ($analyzers as $aid => $analyzer) {
      if ($analyzer['admin form submit callback']) {
        call_user_func($analyzer['admin form submit callback'], $form, $form_state);
      }
    }
    $analysis = contentanalysis_build_analysis_content($analysis);
    contentanalysis_save_status($analysis);
  }
  $output = array();
  $output['main']['output'] = theme_contentanalysis_analysis($analysis);
  $output['page_title']['output'] = theme_contentanalysis_section_analysis($analysis, 'page_title');
  $output['body']['output'] = theme_contentanalysis_section_analysis($analysis, 'body');
  $output['meta_keywords']['output'] = theme_contentanalysis_section_analysis($analysis, 'meta_keywords');
  $output['meta_description']['output'] = theme_contentanalysis_section_analysis($analysis, 'meta_description');
  $output['inputs']['analyzers'] = implode(",", $analysis['#context']['inputs']['analyzers']);
  $output['inputs']['action'] = $analysis['#context']['inputs']['action'];

  //dsm($output);
  drupal_json($output);
}