'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')); }