You are here

function filelog_ui_filter_form_submit in File Log 6.2

Process result from filelog_ui administration filter form.

File

./filelog_ui.pages.inc, line 265
Log viewer page callbacks for the filelog_ui module.

Code

function filelog_ui_filter_form_submit($form, &$form_state) {
  $op = $form_state['values']['op'];
  switch ($op) {
    case t('Filter'):
      $s =& $_SESSION['filelog_ui_overview_filter'];
      $s = array();
      $v =& $form_state['values'];
      $filters = array(
        'type',
        'severity',
        'date_from',
        'date_to',
        'hostname',
        'referer',
      );
      foreach ($filters as $name) {
        if (isset($v[$name])) {
          $s[$name] = $v[$name];
        }
      }

      // Build query
      $where = $args = array();
      foreach ($s as $key => $filter) {
        switch ($key) {
          case 'date_from':
            $where[] = 'f.timestamp > %d';
            $args[] = _filelog_ui_date_to_time($filter);
            break;
          case 'date_to':
            $where[] = 'f.timestamp < %d';
            $args[] = _filelog_ui_date_to_time($filter) + 86400;
            break;
          case 'type':
          case 'severity':
            $filter_where = array();
            foreach ($filter as $value) {
              $filter_where[] = 'f.' . $key . " = '%s'";
              $args[] = $value;
            }
            if (!empty($filter_where)) {
              $where[] = '(' . implode(' OR ', $filter_where) . ')';
            }
            break;
          default:
            if (!empty($filter)) {
              $where[] = 'f.' . $key . " LIKE '%s%%'";
              $args[] = $filter;
            }
            break;
        }
      }
      $where = !empty($where) ? implode(' AND ', $where) : '';
      $s['filter'] = array(
        'where' => $where,
        'args' => $args,
      );
      break;
    case t('Reset'):
      $_SESSION['filelog_ui_overview_filter'] = array();
      break;
  }
}