All pastes #88788 Raw Edit

brainless

public text v1 · immutable
#88788 ·published 2006-07-15 09:45 UTC
rendered paste body
 <?php
// $Id: alexa.module,v 1.0 2006/07/07 on #drupal : heine , xxx_xxx_ , brainless, merlinofchaos, Exp $

/**
* @file
* Grab the latest info from Alexa
*/


/********************************************************************
* Drupal Hooks
********************************************************************/

/**
* Implementation of hook_help().
*/
function alexa_help($section) {
  switch ($section) {
    case 'admin/modules#description':
      return t('Grab the latest alexa data from www.alexa.com');
  }
}
function alexa_perm() {
  return array ('access alexa');
}

function alexa_link($type, $node = 0, $main = 0) {
  global $user;

  $links = array();

  if ($type == 'page' && user_access('use alexa')) {
    $links[] = l(t('alexa'), 'alexa');
  }

  return $links;
}


function alexa_menu($may_cache) {
        if ($may_cache) {
     $items[] = array(
     'path' => 'alexa',
     'title' => t('Alexa'),
     'callback' => 'alexa_page',
     'access' => user_access('access alexa'),
    );
  }
     return $items;
}


function alexa_page() {

  $form['text1'] = array(
    '#type' => 'textfield',
    '#default_value' =>  'www.thingstoday.com' ,
  );

  $form['text2'] = array(
    '#type' => 'textfield',
    '#default_value' => 'www.drupal.org' ,
  );

  $form['text3'] = array(
    '#type' => 'textfield',
    '#default_value' =>  'www.brainless-website.com' ,
  );

  $form['text4'] = array(
    '#type' => 'textfield',
    '#default_value' =>  'www.slashdot.org' ,
  );

  $form['text5'] = array(
    '#type' => 'textfield',
    '#default_value' =>  'www.digg.com' ,
  );

  $form['chart_type'] = array(
    '#type' => 'select',
    '#title' => t('Type of Chart'),
    '#options' => array(
      'r' => t('Reach'),
      'p' => t('Page Views'),
      't' => t('Traffic Rank'),
      ),
    '#description' => t('This is the Type of Chart to be displayed.'),
  );

  $form['chart_range'] = array(
    '#type' => 'select',
    '#title' => t('Display Range of Chart'),
    '#options' => array(
      '7d' => t('7 days'),
      '14d' => t('14 days'),
      '1m' => t('1 month'),
      '3m' => t('3 month'),
      '6m' => t('6 month'),
      '1y' => t('1 year'),
      '2y' => t('2 year'),
      '3y' => t('3 year'),
      '4y' => t('4 year'),
      '5y' => t('5 year'),
    ),
    '#description' => t('Time Frame of the page to be displayed.'),
  );

  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Get Alexa Charts'),
  );

  return drupal_get_form('alexa_page',$form);
}

function alexa_page_submit($form_id, $form_values) {
  $image = <<<STR
<img src="http://traffic.alexa.com/graph?w=450&h=285&z=1
STR;
  ($form_values['text1'] != '')?($image.='&u='.$form_values['text1']):'';
  ($form_values['text2'] != '')?($image.='&u='.$form_values['text2']):'';
  ($form_values['text3'] != '')?($image.='&u='.$form_values['text3']):'';
  ($form_values['text4'] != '')?($image.='&u='.$form_values['text4']):'';
  ($form_values['text5'] != '')?($image.='&u='.$form_values['text5']):'';
  ($form_values['chart_type'] != '')?($image.='&y='.$form_values['chart_type']):'';
  ($form_values['chart_range'] != '')?($image.='&r='.$form_values['chart_range']):'';
  
  $image .= <<<STR
" width="450" height="285" alt="Alexa">
STR;
  if($image != '<img src="http://traffic.alexa.com/graph?w=379&h=216&r=3m&z=1&y=r" width="450" height="285" alt="Alexa">')
    drupal_set_message($image);
  return ('alexa');
}

/**
* Fetch the alexa info for a given ticker symbol from alexa!
*/
function alexa_fetch($form) {
  if (empty($form)) {
    return FALSE;
    }

  $host = 'http://traffic.alexa.com/graph?w=725&h=370&r=1m&y=r&a=1&z=1&u=';
  $url = $host . urlencode($form['button1']) .'&u='.urlencode($form['button2']).'&u='.urlencode($form['button3']).'&u='.urlencode($form['button4']).'&u='.urlencode($form['button5']);
  $contents = @file_get_contents($url);
  if ($contents) {
    if ($data = explode(',', str_replace('"', '', $contents))) {
      $data = array_map('trim', $data);
      return $data;
    }
  }

  return FALSE;
}

function alexa_load($form_values) {
  if (!empty($form_values)) {
    $form_values = db_fetch_array(db_query("SELECT * FROM {alexa} WHERE form_values = '%s'", $form_values));
    if (!$alexa) {
      $alexa = alexa_fetch($form_values);
      if ($alexa) {
        if ($alexa[5] != 'N/A') {
          // Date is 'N/A' means an invalid entry line
          alexa_save($alexa);

          // Load again so it can show for the first time
          $alexa = alexa_load($form_values);
		          }
      }
    }
  }

  return $alexa;
}