You are here

function _swftools_status_players in SWF Tools 6.3

Same name and namespace in other branches
  1. 6 swftools.admin.status.inc \_swftools_status_players()
  2. 6.2 swftools.admin.status.inc \_swftools_status_players()

Generates a status report for the player modules and media defaults.

Called from swftools_status() and returns markup.

1 call to _swftools_status_players()
swftools_status in includes/swftools.admin.status.inc
Generates a status report for SWF Tools methods / players / media defaults.

File

includes/swftools.admin.status.inc, line 145
Generates status reports for SWF Tools.

Code

function _swftools_status_players() {

  // Initialise requirements array for players and playback defaults
  $player_requirements = array();
  $playback_defaults = array();

  // Build an array of player methods
  $types = array(
    'video' => 'Single flv',
    'video_list' => 'List of flvs',
    'audio' => 'Single mp3',
    'audio_list' => 'List of mp3s',
    'media_list' => 'List of mixed media',
    'swftools_swf_display' => 'Single swf',
    'image_list' => 'List of images',
  );
  $player_not_available = t('The specified player no longer appears to be available. Check the <a href="@modules">modules page</a> to ensure that the necessary module is enabled, or choose a different player on the <a href="@handling">file handling</a> page.', array(
    '@modules' => url('admin/build/modules'),
    '@handling' => url('admin/settings/swftools/handling'),
  ));

  // Iterate each method type
  foreach ($types as $type => $description) {

    // Obtain list of players that support the given method type
    $methods = swftools_get_methods($type);

    // Get the current default player for this type and store it in the player defaults array
    // To start with we assume it is missing, until we find the player module in a moment
    $playback_defaults[$type] = array(
      'title' => $types[$type],
      'value' => swftools_get_player($type),
      'description' => $player_not_available,
      'severity' => REQUIREMENT_ERROR,
    );

    // Reset 0 to text string none and clear warning - we assume playback of this type isn't required
    if (!$playback_defaults[$type]['value']) {
      $playback_defaults[$type]['value'] = t('None');
      $playback_defaults[$type]['severity'] = REQUIREMENT_OK;
      $playback_defaults[$type]['description'] = '';
    }

    // If methods were returned for this type
    if (count($methods)) {

      // Iterate through the available methods for this type
      foreach ($methods as $method => $player) {

        // Did we already process this player?
        if (!isset($player_requirements[$player['title']])) {

          // If this player file doesn't exist set a warning, otherwise set ok
          if (!file_exists($player['library'])) {
            $player_requirements[$player['title']] = array(
              'title' => $player['title'],
              'value' => t('Missing'),
              'description' => t('<a href="@url">Download</a> the required supporting file and upload it to %path.', array(
                '@url' => $player['download'],
                '%path' => $player['library'],
              )),
              'severity' => REQUIREMENT_WARNING,
            );
          }
          else {
            $player_requirements[$player['title']] = array(
              'title' => $player['title'],
              'value' => t('OK'),
              'severity' => REQUIREMENT_OK,
            );
          }
        }

        // Is the current default method for this media type the method we currently have?
        if ($playback_defaults[$type]['value'] == $method) {

          // If yes, set name of this player as the value
          $playback_defaults[$type]['value'] = $player['title'];

          // Set the rest of the data for this player according to the status of the player file
          if ($player_requirements[$player['title']]['severity'] == REQUIREMENT_OK) {
            $playback_defaults[$type]['severity'] = REQUIREMENT_OK;
            $playback_defaults[$type]['description'] = '';
          }
          else {
            $playback_defaults[$type]['severity'] = REQUIREMENT_ERROR;
            $playback_defaults[$type]['description'] = $player_requirements[$player['title']]['description'];
            $player_requirements[$player['title']]['severity'] = REQUIREMENT_ERROR;
          }
        }
      }
    }
  }

  // Sort list of players by name, since we used their title as the key
  asort($player_requirements);

  // Generate the output string and return it
  $html = t('<h3>Playback defaults</h3>');
  $html .= t('<p>The table below shows the default methods that have been assigned to different types of media. An error indicates that a player has been specified but the supporting player file is not available, or the method cannot be found. Default playback methods can be configured on the <a href="@handling">file handling settings</a> page.</p>', array(
    '@handling' => url('admin/settings/swftools/handling'),
  ));
  $html .= theme('status_report', $playback_defaults);
  $html .= t('<h3>Players</h3>');
  $html .= t('<p>This table shows which media players are currently enabled and ready for use. A warning is shown if the required supporting file is not available, and an error is shown if the supporting file is not available <em>and</em> the method is currently set as a playback default for any media type.</p>');
  $html .= theme('status_report', $player_requirements);
  return $html;
}