All pastes #82288 Raw Edit

Something

public php v1 · immutable
·published 2006-07-08 06:54 UTC
rendered paste body
<?php// $Id: stockapi.module,v 1.5 2006/07/01 19:37:17 kbahey Exp $/*** @file* Grab the latest info from Alexa*//********************************************************************* Drupal Hooks********************************************************************//** * Implementation of hook_help(). */function alexaapi_help($section) {  switch ($section) {    case 'admin/modules#description':      return t('grab the latest alexa data from www.alexa.com');  }}/********************************************************************* brainless' post to pastebin********************************************************************/  $form['button1'] = array(       '#type' => 'textfield',       '#title' => t('First domain'),       );  $form['button2'] = array(       '#type' => 'textfield',       '#title' => t('2nd domain'),       );  $form['button3'] = array(       '#type' => 'textfield',       '#title' => t('3rd domain'),       );  $form['button4'] = array(       '#type' => 'textfield',       '#title' => t('4th domain'),       );  $form['button5'] = array(       '#type' => 'textfield',       '#title' => t('5th domain'),      );/********************************************************************* brainless' post to pastebin end  ********************************************************************//********************************************************************* yahoo stock API below********************************************************************/function alexaapi_settings() {  $period = drupal_map_assoc(array(900, 1800, 3600, 10800, 21600, 32400, 43200, 86400), 'format_interval');  $rows   = drupal_map_assoc(array(30, 100, 500, 1000, 2500, 5000, 10000));    $form['alexaapi_fetch'] = array(    '#type' => 'select',    '#title' => t('Stock data update frequency'),    '#default_value' => variable_get('stockapi_fetch', UPDATE_FREQUENCY),    '#options' => $period,    '#description' => t('How often to refresh the stock data from Yahoo! Finance. Default is 1 hour (3600 seconds).'),  );    $form['stockapi_rows'] = array(    '#type' => 'select',    '#title' => t('Symbols to update each cron run cycle'),    '#default_value' => variable_get('stockapi_rows', ROWS_PER_FREQ),    '#options' => $rows,    '#description' => t('How many symbols to update every cron run. This limit is imposed so we do not overload the host.'),  );    return $form;}/** * Implementation of hook_cron(). */function stockapi_cron() {    if (time() - variable_get('stockapi_fetch_last', 0) > variable_get('stockapi_fetch', UPDATE_FREQUENCY)) {    $result = db_query_range('SELECT symbol FROM {stockapi} ORDER BY updated', 0, variable_get('stockapi_rows', ROWS_PER_FREQ));        while ($data = db_fetch_object($result)) {            if ($stock = stockapi_fetch($data->symbol)) {                stockapi_save($stock);      }    }    variable_set('stockapi_fetch_last', time());    cache_clear_all('variables');      }}/** * Fetch the stock info for a given ticker symbol from Yahoo! */function stockapi_fetch($symbol) {  if (empty($symbol)) {    return FALSE;  }  $fields = 'snl1c1ohgvd1t1';  /*    "s"  => "Symbol",    "n"  => "Name",    "l1" => "Last",    "c1" => "Change",    "o"  => "Opening",    "h"  => "High",    "g"  => "Low",    "v"  => "Volume",    "d1" => "Date",    "t1" => "Time"   */  $host = 'http://finance.yahoo.com';  $url = $host . '/d/quotes.csv?s='. urlencode($symbol) .'&f='.$fields.'&e=.csv';  $contents = @file_get_contents($url);  if ($contents) {    if ($data = explode(',', str_replace('"', '', $contents))) {      $data = array_map('trim', $data);      return $data;    }  }  return FALSE;}function stockapi_load($symbol) {  if (!empty($symbol)) {    $stock = db_fetch_array(db_query("SELECT * FROM {stockapi} WHERE symbol = '%s'", $symbol));    if (!$stock) {      $stock = stockapi_fetch($symbol);      if ($stock) {        if ($stock[8] != 'N/A') {          // Date is 'N/A' means an invalid stock symbol          stockapi_save($stock);                    // Load again so it can show for the first time          $stock = stockapi_load($symbol);        }              }    }  }      return $stock;}function stockapi_save($stock) {  $symbol = $stock[0];    if (!empty($symbol)) {    stockapi_delete($symbol);    stockapi_insert($stock);  }}function stockapi_insert($stock) {  return db_query("INSERT INTO {stockapi}     VALUES ('%s', '%s', %f, %f, %f, %f, %f, %d, '%s', '%s', %d)",    $stock[0],    $stock[1],    $stock[2],    $stock[3],    $stock[4],    $stock[5],    $stock[6],    $stock[7],    $stock[8],    $stock[9],    time());}function stockapi_delete($symbol) {  return db_query("DELETE FROM {stockapi} WHERE symbol = '%s'", $symbol);}function stockapi_update_1() {  return _system_update_utf8(array('stockapi'));}