<?php

/* $Id$ */

// FIXA: Gör om till installationsprofil/Makefile
// FIXA: Language chooser i menyn
// FIXA: site_name = "Språkbankens nättjänster" + översättning

define('SBWS_DEFAULT_LANGUAGE', 'sv');

/*
 * Implementation of hook_requirements.
 */
function sbws_requirements($phase) {
  $ret = array();
  if ($phase == 'install') {
    if (!array_key_exists('zen', list_themes())) {
      $ret['zen'] = array(
        'title' => 'Zen',
        'description' => 'The theme "Zen" is missing. Install it and try again.',
        'severity' => REQUIREMENT_ERROR,
      );
    }
  }
  return $ret;
}

/*
 * Implementation of hook_install.
 */
function sbws_install() {
  // Use Zen theme
  if (array_key_exists('zen', list_themes())) {
    variable_set('theme_default', 'zen');
    if (!($settings = variable_get('theme_zen_settings', FALSE))) {
      $settings = array();
    }
    $settings['toggle_logo'] = FALSE;
    $settings['toggle_main_menu'] = FALSE;
    $settings['zen_breadcrumb'] = 'no';
    
    // Use SB favicon
    if (($favicon = drupal_http_request('http://spraakbanken.gu.se/sites/spraakbanken.gu.se/files/gu_sb_favicon.ico')) &&
        ($favicon->code == 200) &&
        ($file = file_save_data($favicon->data, 'public://gu_sb_favicon.ico', FILE_EXISTS_REPLACE))) {
      $settings['default_favicon'] = FALSE;
      $settings['favicon_path'] = $file->uri;
    }
    
    variable_set('theme_zen_settings', $settings);
    
    // Disable all blocks in the first sidebar
    foreach (
      array(
        'system' => array('powered-by', 'navigation'),
        'user' => array('login'),
        'search' => array('form'),
      ) as $module => $deltas
    ) {
      foreach ($deltas as $delta) {
        db_update('block')
          ->condition('module', $module)
          ->condition('delta', $delta)
          ->condition('theme', 'zen')
          ->fields(array('status' => 0))
          ->execute();
      }
    }
  }
  
  // Site settings
  variable_set('site_name', 'ws.spraakbanken.gu.se');
  variable_set('site_mail', 'sb-info@svenska.gu.se');
  variable_set('site_frontpage', 'user');
  variable_set('site_default_country', 'SE');
  variable_set('date_default_timezone', 'Europe/Stockholm');
  variable_set('user_register', 0); // Only administrators can create accounts
  variable_set('user_pictures', 0);
  variable_set('clean_url', 1);
  variable_set('wsauth_secret_key', md5(uniqid())); // Random secret
  variable_set('cache', 1);
  variable_set('block_cache', 1);
  variable_set('page_compression', 1);
  variable_set('preprocess_css', 1);
  variable_set('preprocess_js', 1);
}

/*
 * Implementation of hook_multilingual_settings_changed.
 */
function sbws_multilingual_settings_changed() {
  // Update translations
  if (function_exists('drush_l10n_update')) {
    //drush_set_options('languages', language_list());
    drush_l10n_update();
  }
  
  // Set the default language
  if (($languages = language_list()) &&
      (isset($languages[SBWS_DEFAULT_LANGUAGE]))) {
    variable_set('language_default', (object) $languages[SBWS_DEFAULT_LANGUAGE]);
  }

  // Language negotiation
  // FIXA: Snyggare sätt?
  variable_set(
    'language_negotiation_language',
    array(
      'locale-user' => array(
        'callbacks' => array(
          'language' => 'locale_language_from_user',
        ),
        'file' => 'includes/locale.inc',
      ),
      'locale-browser' => array(
        'callbacks' => array(
          'language' => 'locale_language_from_browser',
        ),
        'file' => 'includes/locale.inc',
        'cache' => FALSE,
      ),
      'language-default' => array(
        'callbacks' => array(
          'language' => 'language_from_default',
        ),
      ),
    )
  );
  variable_set(
    'locale_language_providers_weight_language',
    array(
      'locale-user' => -4,
      'locale-browser' => -2,
      'language-default' => 10,
    )
  );

  // Import translations
  foreach (array('sbws', 'wsauth') as $module) {
    if (($path = drupal_get_path('module', $module)) &&
        (function_exists('_locale_import_po'))) {
      foreach (glob($path . '/translations/*.po') as $po) {
        if (!is_file($po)) {
          continue;
        }
        
        $file = new StdClass();
        $file->filename = basename($po);
        $file->uri = $path . '/translations/' . $file->filename;
        $file->filemime = file_get_mimetype($file->uri);
        _locale_import_po($file, basename($po, '.po'), LOCALE_IMPORT_KEEP, 'default');
      }
    }
  }
}