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=1STR; ($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;}