From c8414867bdb842862350c79b5cc3196f12b4e54f Mon Sep 17 00:00:00 2001 From: Bart Van Der Meerssche Date: Thu, 17 Mar 2011 15:19:20 +0000 Subject: [PATCH] [drupal] add a sensor block for pro users --- server/drupal/modules/logger/logger.module | 74 ++++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/server/drupal/modules/logger/logger.module b/server/drupal/modules/logger/logger.module index 33ea37b..f11745d 100644 --- a/server/drupal/modules/logger/logger.module +++ b/server/drupal/modules/logger/logger.module @@ -643,6 +643,13 @@ function logger_block($op = 'list', $delta = 0, $edit = array()) { $blocks['fluksonians']['pages'] = '\nlogger/\nlogger/*'; $blocks['fluksonians']['cache'] = BLOCK_NO_CACHE; + $blocks['sensors']['info'] = t('Sensors'); + $blocks['sensors']['status'] = TRUE; + $blocks['sensors']['region'] = 'content'; + $blocks['sensors']['weight'] = 1; + $blocks['sensors']['pages'] = '\nlogger/\nlogger/*'; + $blocks['sensors']['cache'] = BLOCK_NO_CACHE; + $blocks['unit']['info'] = t('Unit'); $blocks['unit']['status'] = TRUE; $blocks['unit']['region'] = 'right'; @@ -667,6 +674,10 @@ function logger_block($op = 'list', $delta = 0, $edit = array()) { $block['content'] = drupal_get_form('_logger_fluksonians_form'); } + elseif ($delta == 'sensors' && user_access('logger')) { + $block['content'] = drupal_get_form('_logger_sensors_form'); + } + elseif ($delta == 'unit' && user_access('logger') && strrpos(' ' . $_GET['q'] . '/electricity', 'logger/electricity')) { $unit = db_result(db_query("SELECT electricity_unit FROM {logger_users} @@ -807,6 +818,69 @@ as' => TRUE)) .' '. l($fluksonian->name, 'user/'. $fluksonian->uid, array('alias return $form; } +/** + * Generates the sensors block form. + */ +function _logger_sensors_form() { + function unix_to_userlocaltime($unix) { + global $user; + $unix_local = gmdate('r', $unix + $user->timezone); + return substr($unix_local, 0, strlen($unix_local) - 6); + } + + global $user; + $destination = drupal_get_destination(); + + if (strrpos(' ' . $_GET['q'] . '/electricity', 'logger/electricity')) { + $type = 'electricity'; + } + else { + $type = 'water'; + } + + $sensors = db_query("SELECT meter, access, function, value, chart + FROM {logger_meters} + WHERE uid = %d and type = '%s'", $user->uid, $type); + + $i = 0; + $rows = array(); + $row = array(); + + while ($sensor = db_fetch_object($sensors)) { + if ($sensor->chart) { + $row[] = l('[x]', 'logger/sensor/remove/' . $sensor->meter, array('attributes' => array('title' => "remove ". $sensor->function . " from the chart"), 'query' => $destination, 'alias' => TRUE)); + } + else { + $row[] = l('[+]', 'logger/sensor/add/' . $sensor->meter, array('attributes' => array('title' => "add ". $sensor->function . " to the chart"), 'query' => $destination, 'alias' => TRUE)); + } + + $row[] = $sensor->function; + $row[] = $sensor->meter; + $row[] = unix_to_userlocaltime($sensor->access); + $row[] = $sensor->value; + + $rows[] = $row; + $row = array(); + + $i++; + } + + $form['sensors'] = array( + '#type' => 'fieldset', + '#title' => t('Sensors'), + '#description' => t('Select the sensors you wish to add to [+] or remove from [x] the chart.'), + '#collapsible' => TRUE, + '#collapsed' => TRUE, + ); + $form['sensors']['list'] = array( + '#type' => 'item', + //'#title' => t('Title'), + '#value' => theme('table', array(t('Chart'), t('Function'), t('Sensor'), t('Last Reporting'), t('Counter')), $rows), + ); + + return $form; +} + /** * Implementation of hook_form_alter(). */