mediamosa_statistics_filter_form

Versions
mediamosa-21
mediamosa_statistics_filter_form($form, $form_state)

Form builder; Return form for mediafile filters.

See also

mediamosa_statistics_list_form()

Code

sites/all/modules/mediamosa/modules/statistics/mediamosa_statistics.inc, line 45

<?php
function mediamosa_statistics_filter_form($form, $form_state) {

  assert(!empty($form_state['build_info']['args'][0]));
  $type = empty($form_state['build_info']['args'][0]) ? '' : $form_state['build_info']['args'][0];

  $form['filters'] = array(
    '#type' => 'fieldset',
    '#title' => t('Filters'),
    '#theme' => 'mediamosa_statistics_filters',
  );
  drupal_add_css(drupal_get_path('module', 'mediamosa_statistics') . '/mediamosa_statistics.css');

  // Get session.
  $session = isset($_SESSION['mediamosa_statistics_filter'][$type]) ? $_SESSION['mediamosa_statistics_filter'][$type] : array();

  switch ($type) {
    case MEDIAMOSA_STATISTICS_FILTER_TYPE_MEDIAFILE_LATEST:
    case MEDIAMOSA_STATISTICS_FILTER_TYPE_MEDIAFILE_POPULAR:
    case MEDIAMOSA_STATISTICS_FILTER_TYPE_COLLECTION_LATEST:
    case MEDIAMOSA_STATISTICS_FILTER_TYPE_COLLECTION_POPULAR:
    case MEDIAMOSA_STATISTICS_FILTER_TYPE_DISKSPACE:
    case MEDIAMOSA_STATISTICS_FILTER_TYPE_STREAMREQUESTS:
    case MEDIAMOSA_STATISTICS_FILTER_TYPE_POPULARSTREAMS:
      $app_owners = mediamosa_app::collect_app_owners();
      $owners = array();
      foreach ($app_owners as $owner => $app_owner) {
        $owners[$owner] = $owner;
      }

      // Get all apps.
      $result = mediamosa_app::get_all_apps(array(mediamosa_app_db::APP_ID, mediamosa_app_db::APP_NAME));

      $apps = array();
      foreach ($result as $row) {
        $apps[$row['app_id']] = $row[mediamosa_app_db::APP_NAME] . ' (app id ' . $row['app_id'] .')';
      }

      $form['filters']['status']['app_owner'] = array(
        '#type' => 'select',
        '#options' => array('' => '') + $owners,
        '#title' => 'Owner',
        '#default_value' => !empty($session['app_owner']) ? $session['app_owner'] : '',
      );

      $form['filters']['status']['app_id'] = array(
        '#type' => 'select',
        '#options' => array('' => '') + $apps,
        '#title' => 'Application',
        '#default_value' => !empty($session['app_id']) ? $session['app_id'] : '',
      );
      break;
  }

  $years = $months = array();

  for ($y = 1970; $y <= date('Y'); $y++) {
    $years[$y] = $y;
  }

  for ($m = 1; $m <= 12; $m++) {
    $months[$m] = $m;
  }

  switch ($type) {
    case MEDIAMOSA_STATISTICS_FILTER_TYPE_DISKSPACE:
      $form['filters']['status']['year'] = array(
        '#type' => 'select',
        '#options' => $years,
        '#title' => 'Year',
        '#default_value' => !empty($session['year']) ? $session['year'] : date('Y'),
      );
      $form['filters']['status']['month'] = array(
        '#type' => 'select',
        '#options' => $months,
        '#title' => 'Month',
        '#default_value' => !empty($session['month']) ? $session['month'] : date('n'),
      );

      $types = array(
        mediamosa_statistics_diskspace_used_db::TYPE_CONTAINER => t('Container'),
        mediamosa_statistics_diskspace_used_db::TYPE_GROUP => t('Group'),
        mediamosa_statistics_diskspace_used_db::TYPE_USER => t('User')
      );

      $form['filters']['status']['type'] = array(
        '#type' => 'select',
        '#options' => $types,
        '#title' => 'Type',
        '#default_value' => !empty($session['type']) ? $session['type'] : mediamosa_statistics_diskspace_used_db::TYPE_CONTAINER,
      );

      break;

      case MEDIAMOSA_STATISTICS_FILTER_TYPE_STREAMREQUESTS:
        $form['filters']['status']['year'] = array(
          '#type' => 'select',
          '#options' => $years,
          '#title' => 'Year',
          '#default_value' => !empty($session['year']) ? $session['year'] : date('Y'),
        );
        $form['filters']['status']['month'] = array(
          '#type' => 'select',
          '#options' => $months,
          '#title' => 'Month',
          '#default_value' => !empty($session['month']) ? $session['month'] : date('n'),
        );
        break;

      case MEDIAMOSA_STATISTICS_FILTER_TYPE_SEARCHEDWORDS:
      case MEDIAMOSA_STATISTICS_FILTER_TYPE_POPULARSTREAMS:
        $form['filters']['status']['year'] = array(
          '#type' => 'select',
          '#options' => $years,
          '#title' => 'Year',
          '#default_value' => !empty($session['year']) ? $session['year'] : date('Y'),
        );
        $form['filters']['status']['month'] = array(
          '#type' => 'select',
          '#options' => $months,
          '#title' => 'Month',
          '#default_value' => !empty($session['month']) ? $session['month'] : date('n'),
        );

        $year_end = !empty($session['year_end']) ? $session['year_end'] : date('Y');
        $month_end = !empty($session['month_end']) ? $session['month_end'] : date('n') + 1;
        if ($month_end > 12) {
          $month_end = 1;
           $year_end = date('Y') + 1;
        }

        $form['filters']['status']['year_end'] = array(
          '#type' => 'select',
          '#options' => $years,
          '#title' => 'Year end',
          '#default_value' => $year_end,
        );


        $form['filters']['status']['month_end'] = array(
          '#type' => 'select',
          '#options' => $months,
          '#title' => 'Month end',
          '#default_value' => $month_end,
        );
        break;
  }

  $form['filters']['actions'] = array(
    '#type' => 'container',
    '#attributes' => array('class' => array('form-actions', 'container-inline')),
    '#id' => 'mediamosa-statistics-buttons',
  );
  $form['filters']['actions']['submit'] = array('#type' => 'submit', '#value' => t('Filter'));
  $form['filters']['filter_type'] = array('#type' => 'hidden', '#value' => $type);

  $form['#submit'][] = 'mediamosa_statistics_filter_form_submit';

  return $form;
}
?>