mediamosa_integrity_check_page

Versions
mediamosa-21
mediamosa_integrity_check_page()

Integrity check page / list.

Code

sites/all/modules/mediamosa/modules/integrity_check/mediamosa_integrity_check.module, line 142

<?php
function mediamosa_integrity_check_page() {
  // Base value.
  $content = array();

  // Missing mediafile is the standard type.
  $type = arg(4) ? arg(4) : 'missing mediafile';

  // Check whether the mediamosa_integrity_check.inc is running or not.
  $output = array();
  mediamosa_io::exec('ps ax | grep mediamosa_integrity_check.inc | grep -v grep', $output);
  if (count($output) > 0) {
    drupal_set_message('The integrity check is currently running.');
  }
  else {
    // Define "start check" button.
    $start_check = drupal_get_form('mediamosa_integrity_check_start');
  }

  // Print errors from integrity_check database table.
  mediamosa_integrity_check_print_errors();

  // Check database objects presence.
  $result = mediamosa_db::db_query("SELECT COUNT(*) FROM {#mediamosa_log_integrity_check} WHERE #type <> :error", array(
    '#mediamosa_log_integrity_check' => mediamosa_integrity_check_db::TABLE_NAME,
    '#type' => mediamosa_integrity_check_db::TYPE,
    ':error' => mediamosa_integrity_check_db::TYPE_ERROR,
  ));
  $count = $result->fetchField();
  if (!$count) {
    $ret = array();
    $ret[] = array('#markup' => '<p>No integrity errors have been found.</p>');
    $ret = array_merge($ret, $start_check);
    $ret[] = array('#markup' => '<p>Last integrity run: ' . variable_get('mediamosa_integrity_run_date_start', 'never') . ' - ' . variable_get('mediamosa_integrity_run_date_end', 'never') . '</p>');
    return $ret;
  }

  // Print a select field for choose the type.
  $content[] = drupal_get_form('mediamosa_integrity_check_type_box');

  $content[] = array('#markup' => 'For the following objects, an integrity problem has been detected:');

  // Headers and base queries.
  if ($type == 'missing mediafile') {
    $header = array(
      array('data' => t('Mediafile id'), 'field' => 'object_id'),
      array('data' => t('App id'), 'field' => 'app_id'),
      array('data' => t('Owner id'), 'field' => 'owner_id'),
      array('data' => t('Asset id')),
      array('data' => t('Created'), 'field' => 'created'),
      array('data' => t('Details'), 'field' => 'details'),
      t('Select')
    );
    $query = mediamosa_db::db_select(mediamosa_integrity_check_db::TABLE_NAME, 'i')->extend('PagerDefault')->extend('TableSort');
    $query
      ->condition(mediamosa_integrity_check_db::TYPE, $type)
      ->fields('i', array(
        mediamosa_integrity_check_db::ID,
        mediamosa_integrity_check_db::OBJECT_ID,
        mediamosa_integrity_check_db::APP_ID,
        mediamosa_integrity_check_db::OWNER_ID,
        mediamosa_integrity_check_db::CREATED,
        mediamosa_integrity_check_db::DETAILS,
      ));
    $query->orderByHeader($header);
    $query->limit(mediamosa_settings::maintenance_items_per_page());

    // Additional info.
    $post_page_info = '';
  }
  elseif ($type == 'missing mediarecord') {
    $header = array(
      array('data' => t('Mediafile id'), 'field' => 'object_id'),
      array('data' => t('size'), 'field' => 'size'),
      array('data' => t('mtime'), 'field' => 'mtime'),
      array('data' => t('ctime'), 'field' => 'ctime'),
      array('data' => t('details'), 'field' => 'details'),
      t('Select')
    );
    $query = mediamosa_db::db_select(mediamosa_integrity_check_db::TABLE_NAME, 'i')->extend('PagerDefault')->extend('TableSort');
    $query
      ->condition(mediamosa_integrity_check_db::TYPE, $type)
      ->fields('i', array(
        mediamosa_integrity_check_db::ID,
        mediamosa_integrity_check_db::OBJECT_ID,
        mediamosa_integrity_check_db::SIZE,
        mediamosa_integrity_check_db::MTIME,
        mediamosa_integrity_check_db::CTIME,
        mediamosa_integrity_check_db::DETAILS,
      ));
    $query->orderByHeader($header);
    $query->limit(mediamosa_settings::maintenance_items_per_page());

    // Additional info.
    // Total size.
    $total_size = mediamosa_db::db_query("SELECT SUM(#size) FROM {#mediamosa_log_integrity_check} WHERE #type = :missing_mediarecord", array(
      '#mediamosa_log_integrity_check' => mediamosa_integrity_check_db::TABLE_NAME,
      '#size' => mediamosa_integrity_check_db::SIZE,
      '#type' => mediamosa_integrity_check_db::TYPE,
      ':missing_mediarecord' => mediamosa_integrity_check_db::TYPE_MISSING_MEDIARECORD,
    ))->fetchField();
    $post_page_info = '<p>Total bytes: ' . $total_size . '</p>';
  }

  $rows = array();

  $result = $query->execute();
  foreach ($result as $row) {
    if ($type == 'missing mediafile') {
      // Get the mediafile object.
      $object = mediamosa_db::db_query("SELECT * FROM {#mediafile} WHERE #mediafile_id = :mediafile_id", array(
        '#mediafile' => mediamosa_asset_mediafile_db::TABLE_NAME,
        '#mediafile_id' => mediamosa_asset_mediafile_db::ID,
        ':mediafile_id' => $row['object_id'],
      ))->fetchObject();

      if ($object) {
        $asset_id = (isset($object->asset_id_root) && $object->asset_id_root) ? $object->asset_id_root : $object->asset_id;
        $rows[] = array(
          'data' => array(
            'mediafile_id' => $row['object_id'],
            'app_id' => $row['app_id'],
            'owner_id' => $row['owner_id'],
            'asset_id' => l($asset_id, 'vpx/vpx_beheer_mm/asset/'. $asset_id),
            'created' => $row['created'],
            'details' => $row['details'],
            'select' => sprintf('<input type="checkbox" name="selected_ids[]" value="%s">', $row['id']),
          ),
        );
      }
    }
    else if ($type == 'missing mediarecord') {
      $rows[] = array(
        'data' => array(
          'mediafile_id' => $row['object_id'],
          'size' => $row['size'],
          'mtime' => $row['mtime'],
          'ctime' => $row['ctime'],
          'details' => $row['details'],
          'select' => sprintf('<input type="checkbox" name="selected_ids[]" value="%s">', $row['id']),
        ),
      );
    }
  }

  $content[] = array('#markup' => theme('table', array('header' => $header, 'rows' => $rows, 'empty' => t('You have no data.'))));
  $content[] = array('#markup' => theme('pager'));

  $form = mediamosa_integrity_check_delete_submit();
  //$content[] = array('#markup' => drupal_render($form['delete']));
  $content = array_merge($content, drupal_get_form('mediamosa_integrity_check_delete_submit'));

  $content = array_merge($content, $start_check);

  $content[] = array('#markup' => $post_page_info);

  $content[] = array('#markup' => '<p>Last integrity run: ' . variable_get('mediamosa_integrity_run_date_start', 'never') . ' - ' . variable_get('mediamosa_integrity_run_date_end', 'never') . '</p>');

  return $content;
}
?>