You are here

function l10n_client_save_string in Localization client 6.2

Same name and namespace in other branches
  1. 5 l10n_client.module \l10n_client_save_string()
  2. 6 l10n_client.module \l10n_client_save_string()
  3. 7 l10n_client.module \l10n_client_save_string()

Menu callback. Saves a string translation coming as POST data.

1 string reference to 'l10n_client_save_string'
l10n_client_menu in ./l10n_client.module
Implementation of hook_menu().

File

./l10n_client.module, line 430
Localization client. Provides on-page translation editing.

Code

function l10n_client_save_string() {
  global $user, $language;
  if (l10n_client_access()) {
    if (isset($_POST['source']) && isset($_POST['target']) && !empty($_POST['textgroup']) && !empty($_POST['form_token']) && drupal_valid_token($_POST['form_token'], 'l10n_client_form')) {

      // Ensure we have this source string before we attempt to save it.
      $lid = db_result(db_query("SELECT lid FROM {locales_source} WHERE source = '%s' AND textgroup = '%s'", $_POST['source'], $_POST['textgroup']));
      if (!empty($lid)) {
        include_once 'includes/locale.inc';
        $report = array(
          'skips' => 0,
          'additions' => 0,
          'updates' => 0,
          'deletes' => 0,
        );
        _locale_import_one_string_db($report, $language->language, $_POST['source'], $_POST['target'], $_POST['textgroup'], NULL, LOCALE_IMPORT_OVERWRITE);
        cache_clear_all('locale:', 'cache', TRUE);
        _locale_invalidate_js($language->language);
        if (!empty($report['skips'])) {
          $message = theme('l10n_client_message', t('Not saved locally due to invalid HTML content.'));
        }
        elseif (!empty($report['additions']) || !empty($report['updates'])) {
          $message = theme('l10n_client_message', t('Translation saved locally.'), WATCHDOG_INFO);
        }
        elseif (!empty($report['deletes'])) {
          $message = theme('l10n_client_message', t('Translation successfuly removed locally.'), WATCHDOG_INFO);
        }
        else {
          $message = theme('l10n_client_message', t('Unknown error while saving translation locally.'));
        }

        // Submit to remote server if enabled.
        if (variable_get('l10n_client_use_server', FALSE) && user_access('submit translations to localization server') && $_POST['textgroup'] == 'default') {
          if (!empty($user->l10n_client_key)) {
            $remote_result = l10n_client_submit_translation($language->language, $_POST['source'], $_POST['target'], $user->l10n_client_key, l10n_client_user_token($user));
            $message .= theme('l10n_client_message', $remote_result[1], $remote_result[0] ? WATCHDOG_INFO : WATCHDOG_ERROR);
          }
          else {
            $server_url = variable_get('l10n_client_server', 'http://localize.drupal.org');
            $user_edit_url = url('user/' . $user->uid . '/edit', array(
              'absolute' => TRUE,
            ));
            $message .= theme('l10n_client_message', t('You could share your work with !l10n_server if you set your API key at !user_link.', array(
              '!l10n_server' => l($server_url, $server_url),
              '!user_link' => l($user_edit_url, 'user/' . $user->uid . '/edit'),
            )), WATCHDOG_WARNING);
          }
        }
      }
      else {
        $message = theme('l10n_client_message', t('Not saved due to source string missing.'));
      }
    }
    else {
      $message = theme('l10n_client_message', t('Not saved due to missing form values.'));
    }
  }
  else {
    $message = theme('l10n_client_message', t('Not saved due to insufficient permissions.'));
  }
  drupal_json(array(
    'message' => $message,
  ));
  exit;
}