<?php

/**
 * Implementats hook_menu().
 */
function audioprompter_menu() {
  $items['admin/config/media/audioprompter'] = array(
    'title' => 'Audio prompter',
    'description' => t('Settings for recording audio for nodes'),
    'page callback' => 'drupal_get_form',
    'page arguments' => array('audioprompter_settings'),
    'file' => 'audioprompter.admin.inc',
    'access arguments' => array('administer site configuration'),
  );
  $items['audioprompter/record'] = array(
    'title' => 'Record audio',
    'description' => t('Record audio from node prompter'),
    'page callback' => 'drupal_get_form',
    'page arguments' => array('audioprompter_record'),
    'access arguments' => array('use audioprompter'),
    'file' => 'audioprompter.record.inc',
  );
  $items['audioprompter/record/%'] = array(
    'title' => 'Record audio',
    'description' => t('Record audio from node prompter'),
    'page callback' => 'drupal_get_form',
    'page arguments' => array('audioprompter_record', 2),
    'access arguments' => array('use audioprompter'),
    'file' => 'audioprompter.record.inc',
    'type' => MENU_CALLBACK,
  );
  $items['audioprompter/receive'] = array(
    'title' => 'audioprompter_receive',
    'description' => '',
    'page callback' => 'audioprompter_receive',
    'type' => MENU_CALLBACK,
    'access arguments' => array('use audioprompter'),
    'file' => 'audioprompter.record.inc',
  );
  $items['audioprompter/next'] = array(
    'title' => 'audioprompter_next',
    'description' => '',
    'page callback' => 'audioprompter_next',
    'type' => MENU_CALLBACK,
    'access arguments' => array('use audioprompter'),
    'file' => 'audioprompter.record.inc',
  );
  return $items;
}

function audioprompter_permission() {
  return array(
    'use audioprompter' => array(
      'title' => t('Use audioprompter'),
      'description' => t('Allows users to record audio to nodes based on text'),
    ),
    'use audioprompter in any language' => array(
      'title' => t('Record in any language'),
      'description' => t('Allows users to record in any language (e.g. sound engineers)')
    ),
  );
}

function audioprompter_get_user_languages($uid = NULL) {
  if (!module_exists('translation')) {
    return array('und');
  }
  if (!$uid || !$user = user_load($uid)) {
    global $user;
  }
  if (user_access('use audioprompter in any language', $user) || user_access('administer site configuration')) {
    $languages = array_keys(language_list());
    $languages[] = 'und';
    return $languages;
  }
  elseif (count(array_filter($user->field_audioprompter_languages['und']{0}['value']))) {
    return $user->field_audioprompter_languages['und']{0}['value'];
  }
  else {
    return FALSE;
  }
}

function audioprompter_language_list() {
  $languages = language_list();
  foreach($languages as $lang => $language) {
    $output[$lang] = t($language->name);
  }
  return $output;
}

function audioprompter_form_user_profile_form_alter(&$form, &$form_state) {
  if (!user_access('administer site configuration')) {
    $form['audioprompter_languages']['und']['#disabled'] = TRUE;
  }
}