plugins/admin/LangManager.php
author Dan
Sat, 02 Feb 2008 22:32:09 -0500
changeset 396 3289e4dcb4b8
parent 387 92664d2efab8
child 399 a3a9e463c62f
permissions -rw-r--r--
Fixed some stray undefined-variable problems revealed as a result of testing on Windows Server '03, IIS6, PHP/FastCGI, and PostgreSQL 8.2.5.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
372
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
     1
<?php
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
     2
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
     3
/*
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
     4
 * Enano - an open-source CMS capable of wiki functions, Drupal-like sidebar blocks, and everything in between
387
92664d2efab8 Rebranded source code as 1.1.1; added TinyMCE ACL rule as per Vadi's request: http://forum.enanocms.org/viewtopic.php?f=7&t=54
Dan
parents: 377
diff changeset
     5
 * Version 1.1.1 (Caoineag alpha 1)
372
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
     6
 * Copyright (C) 2006-2007 Dan Fuhry
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
     7
 *
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
     8
 * This program is Free Software; you can redistribute and/or modify it under the terms of the GNU General Public License
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
     9
 * as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    10
 *
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    11
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    12
 * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for details.
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    13
 */
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    14
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    15
function page_Admin_LangManager()
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    16
{
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    17
  global $db, $session, $paths, $template, $plugins; // Common objects
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    18
  global $lang;
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    19
  if ( $session->auth_level < USER_LEVEL_ADMIN || $session->user_level < USER_LEVEL_ADMIN )
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    20
  {
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    21
    $login_link = makeUrlNS('Special', 'Login/' . $paths->nslist['Special'] . 'Administration', 'level=' . USER_LEVEL_ADMIN, true);
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    22
    echo '<h3>' . $lang->get('adm_err_not_auth_title') . '</h3>';
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    23
    echo '<p>' . $lang->get('adm_err_not_auth_body', array( 'login_link' => $login_link )) . '</p>';
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    24
    return;
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    25
  }
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    26
  if ( isset($_POST['action']) )
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    27
  {
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    28
    $action =& $_POST['action'];
376
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
    29
    // Parse parameters
372
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    30
    if ( strpos($action, ';') )
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    31
    {
376
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
    32
      // Parameter section
372
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    33
      $parms = substr($action, strpos($action, ';') + 1);
376
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
    34
      
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
    35
      // Action name section
372
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    36
      $action = substr($action, 0, strpos($action, ';'));
376
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
    37
      
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
    38
      // Match all parameters
372
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    39
      preg_match_all('/([a-z0-9_]+)=(.+?)(;|$)/', $parms, $matches);
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    40
      $parms = array();
376
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
    41
      
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
    42
      // For each full parameter, assign $parms an associative value
372
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    43
      foreach ( $matches[0] as $i => $_ )
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    44
      {
376
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
    45
        $parm = $matches[2][$i];
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
    46
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
    47
        // Is this parameter in the form of an integer?
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
    48
        // (designed to ease validation later)
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
    49
        if ( preg_match('/^[0-9]+$/', $parm) )
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
    50
          // Yes, run intval(), this enabling is_int()-ish checks
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
    51
          $parm = intval($parm);
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
    52
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
    53
        $parms[$matches[1][$i]] = $parm;
372
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    54
      }
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    55
    }
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    56
    switch ( $action )
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    57
    {
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    58
      case 'install_language':
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    59
        $lang_list = list_available_languages();
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    60
        // Verify that we have this language's metadata
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    61
        if ( isset($lang_list[@$parms['iso639']]) )
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    62
        {
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    63
          // From here it's all downhill :-)
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    64
          $lang_code =& $parms['iso639'];
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    65
          $lang_data =& $lang_list[$lang_code];
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    66
          
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    67
          $result = install_language($lang_code, $lang_data['name_eng'], $lang_data['name']);
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    68
          if ( $result )
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    69
          {
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    70
            // Language installed. Import the language files.
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    71
            $lang_local = new Language($lang_code);
376
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
    72
            if ( file_exists(ENANO_ROOT . "/language/{$lang_data['dir']}/backup.json") )
372
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    73
            {
376
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
    74
              $lang_local->import(ENANO_ROOT . "/language/{$lang_data['dir']}/backup.json");
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
    75
            }
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
    76
            else
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
    77
            {
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
    78
              foreach ( array('core', 'admin', 'tools', 'user') as $file )
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
    79
              {
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
    80
                $lang_local->import(ENANO_ROOT . "/language/{$lang_data['dir']}/$file.json");
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
    81
              }
372
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    82
            }
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    83
            unset($lang_local);
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    84
            
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    85
            echo '<div class="info-box">' . $lang->get('acplm_msg_lang_install_success', array('lang_name' => htmlspecialchars($lang_data['name_eng']))) . '</div>';
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    86
          }
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    87
        }
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
    88
        break;
376
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
    89
      case 'modify_language':
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
    90
        $lang_id =& $parms['lang_id'];
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
    91
        if ( !is_int($lang_id) )
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
    92
        {
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
    93
          echo 'Hacking attempt';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
    94
          break;
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
    95
        }
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
    96
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
    97
        if ( isset($parms['finish']) && !empty($_POST['lang_name_native']) && !empty($_POST['lang_name_english']) )
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
    98
        {
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
    99
          // We just did validation above, it's safe to save.
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   100
          $name_native = $db->escape($_POST['lang_name_native']);
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   101
          $name_english = $db->escape($_POST['lang_name_english']);
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   102
          
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   103
          $q = $db->sql_query('UPDATE ' . table_prefix . "language SET lang_name_native = '$name_native', lang_name_default = '$name_english' WHERE lang_id = $lang_id;");
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   104
          if ( !$q )
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   105
            $db->_die();
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   106
          
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   107
          echo '<div class="info-box">' . $lang->get('acplm_msg_basic_save_success') . '</div>';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   108
        }
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   109
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   110
        // Select language data
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   111
        $q = $db->sql_query('SELECT lang_name_native, lang_name_default, lang_code FROM ' . table_prefix . "language WHERE lang_id = $lang_id;");
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   112
        if ( !$q )
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   113
          $db->_die();
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   114
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   115
        list($name_native, $name_english, $lang_code) = $db->fetchrow_num();
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   116
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   117
        // Output properties table
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   118
        echo '<h3>' . $lang->get('acplm_heading_modify') . '</h3>';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   119
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   120
        acp_start_form();
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   121
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   122
        ?>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   123
          <div class="tblholder">
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   124
            <table border="0" cellspacing="1" cellpadding="4">
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   125
              <tr>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   126
                <th colspan="2">
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   127
                  <?php
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   128
                    echo $lang->get('acplm_th_lang_basic');
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   129
                  ?>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   130
                </th>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   131
              </tr>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   132
              <tr>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   133
              <td class="row2" style="width: 50%;">
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   134
                  <?php
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   135
                    echo str_replace('"', '', $lang->get('acplm_field_lang_name_native'));
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   136
                  ?>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   137
                </td>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   138
                <td class="row1">
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   139
                  <input type="text" name="lang_name_native" value="<?php echo htmlspecialchars($name_native); ?>" />
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   140
                </td>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   141
              </tr>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   142
              <tr>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   143
                <td class="row2">
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   144
                  <?php
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   145
                    echo $lang->get('acplm_field_lang_name_english');
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   146
                  ?>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   147
                </td>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   148
                <td class="row1">
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   149
                  <input type="text" name="lang_name_english" value="<?php echo htmlspecialchars($name_english); ?>" />
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   150
                </td>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   151
              </tr>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   152
              <tr>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   153
                <td class="row2">
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   154
                  <?php
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   155
                    echo $lang->get('acplm_field_lang_code') . '<br />'
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   156
                       . '<small>' . $lang->get('acplm_field_lang_code_hint') . '</small>';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   157
                  ?>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   158
                </td>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   159
                <td class="row1">
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   160
                  <?php
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   161
                    echo $lang_code;
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   162
                  ?>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   163
                </td>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   164
              </tr>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   165
              <tr>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   166
                <th class="subhead" colspan="2">
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   167
                  <button name="action" value="modify_language;finish=1;lang_id=<?php echo $lang_id; ?>"><?php echo $lang->get('etc_save_changes'); ?></button>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   168
                </th>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   169
              </tr>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   170
            </table>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   171
          </div>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   172
        </form>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   173
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   174
        <?php
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   175
        acp_start_form();
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   176
        ?>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   177
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   178
        <h3><?php echo $lang->get('acplm_heading_edit_strings_portal'); ?></h3>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   179
        <p><?php echo $lang->get('acplm_msg_edit_strings_portal_intro'); ?></p>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   180
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   181
        <p>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   182
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   183
        <?php
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   184
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   185
        // Grab a Language object
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   186
        if ( $lang->lang_id == $lang_id )
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   187
        {
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   188
          $lang_local =& $lang;
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   189
        }
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   190
        else
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   191
        {
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   192
          $lang_local = new Language($lang_id);
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   193
          $lang_local->fetch();
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   194
        }
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   195
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   196
        $categories_loc = array();
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   197
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   198
        // Using the & here ensures that a reference is created, thus avoiding wasting memory
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   199
        foreach ( $lang_local->strings as $cat => &$_ )
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   200
        {
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   201
          unset($_);
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   202
          $categories_loc[$cat] = htmlspecialchars($lang->get("meta_$cat"));
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   203
        }
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   204
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   205
        asort($categories_loc);
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   206
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   207
        echo '<select name="cat_id">';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   208
        foreach ( $categories_loc as $cat_id => $cat_name)
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   209
        {
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   210
          echo "<option value=\"$cat_id\">$cat_name</option>";
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   211
        }
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   212
        echo '</select>';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   213
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   214
        ?>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   215
        <button name="action" value="edit_strings;lang_id=<?php echo $lang_id; ?>">
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   216
          <?php echo $lang->get('acplm_btn_edit_strings_portal'); ?>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   217
        </button>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   218
        </p>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   219
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   220
        <h3><?php echo $lang->get('acplm_heading_reimport_portal'); ?></h3>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   221
        <p><?php echo $lang->get('acplm_msg_reimport_portal_intro'); ?></p>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   222
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   223
        <p>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   224
          <button name="action" value="reimport;iso639=<?php echo $lang_code; ?>;lang_id=<?php echo $lang_id; ?>">
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   225
            <?php echo $lang->get('acplm_btn_reimport'); ?>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   226
          </button>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   227
        </p>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   228
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   229
        </form>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   230
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   231
        <?php
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   232
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   233
        echo '<h3>' . $lang->get('acplm_heading_backup') . '</h3>';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   234
        echo '<p>' . $lang->get('acplm_backup_intro') . '</p>';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   235
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   236
        echo '<form action="' . makeUrlNS('Admin', 'LangManager') . '" method="post">';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   237
        echo '<button name="action" value="backup_language;lang_id=' . $lang_id . '">' . $lang->get('acplm_btn_create_backup') . '</button>';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   238
        echo '</form>';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   239
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   240
        return true;
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   241
      case 'edit_strings':
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   242
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   243
        $cat_id = @$_POST['cat_id'];
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   244
        if ( !preg_match('/^[a-z0-9]+$/', $cat_id) || !is_int(@$parms['lang_id']) )
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   245
          break;
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   246
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   247
        $lang_id =& $parms['lang_id'];
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   248
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   249
        if ( isset($parms['save']) )
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   250
        {
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   251
          // Grab a Language object
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   252
          if ( $lang->lang_id == $lang_id )
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   253
          {
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   254
            $lang_local =& $lang;
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   255
          }
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   256
          else
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   257
          {
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   258
            $lang_local = new Language($lang_id);
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   259
          }
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   260
          // Main save loop
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   261
          // Trying to minimize queries as much as possible here, but you know how that goes.
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   262
          $count_upd = 0;
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   263
          foreach ( $_POST['string'] as $string_id => $user_content )
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   264
          {
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   265
            $curr_content = $lang_local->get_uncensored("{$cat_id}_{$string_id}");
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   266
            if ( $curr_content != $user_content )
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   267
            {
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   268
              $count_upd++;
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   269
              $user_content = $db->escape($user_content);
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   270
              $string_id = $db->escape($string_id);
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   271
              $q = $db->sql_query('UPDATE ' . table_prefix . "language_strings SET string_content = '$user_content' WHERE lang_id = $lang_id AND string_category = '$cat_id' AND string_name = '$string_id';");
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   272
              if ( !$q )
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   273
                $db->_die();
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   274
            }
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   275
          }
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   276
          if ( $count_upd > 0 )
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   277
          {
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   278
            // Update the cache
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   279
            $lang_local->regen_caches();
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   280
            
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   281
            // Update modification time
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   282
            $q = $db->sql_query('UPDATE ' . table_prefix . "language SET last_changed = " . time() . " WHERE lang_id = $lang_id;");
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   283
            if ( !$q )
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   284
              $db->_die();
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   285
          }
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   286
          
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   287
          echo '<div class="info-box">' . $lang->get('acplm_msg_string_save_success') . '</div>';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   288
        }
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   289
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   290
        acp_start_form();
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   291
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   292
        $cat_name = $lang->get("meta_$cat_id");
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   293
        echo '<h3>' . $lang->get('acplm_editor_heading', array('cat_name' => $cat_name)) . '</h3>';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   294
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   295
        // Fetch all strings
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   296
        // This is more efficient than iterating through $lang->strings, I think.
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   297
        $q = $db->sql_query('SELECT string_id, string_name, string_content FROM ' . table_prefix . "language_strings WHERE string_category = '$cat_id' AND lang_id = $lang_id;");
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   298
        if ( !$q )
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   299
          $db->_die();
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   300
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   301
        ?>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   302
        <div class="tblholder">
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   303
          <table border="0" cellspacing="1" cellpadding="4">
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   304
            <tr>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   305
              <th style="width: 3%;"><?php echo $lang->get('acplm_editor_col_string_name'); ?></th>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   306
              <th><?php echo $lang->get('acplm_editor_col_string_content'); ?></th>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   307
            </tr>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   308
        <?php
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   309
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   310
        while ( $row = $db->fetchrow_num() )
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   311
        {
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   312
          list($string_id, $string_name, $string_content) = $row;
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   313
          unset($row);
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   314
          
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   315
          echo '<tr>';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   316
          
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   317
          if ( strpos($string_content, "\n") )
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   318
          {
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   319
            $editor = '<textarea rows="' . get_line_count($string_content) . '" cols="50" style="width: 99%;" ';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   320
            $editor .= 'name="string[' . htmlspecialchars($string_name) . ']" ';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   321
            $editor .= '>' . htmlspecialchars($string_content);
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   322
            $editor .= '</textarea>';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   323
          }
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   324
          else
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   325
          {
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   326
            $editor = '<input type="text" size="50" style="width: 99%;" ';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   327
            $editor .= 'name="string[' . htmlspecialchars($string_name) . ']" ';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   328
            $editor .= 'value="' . htmlspecialchars($string_content) . '" ';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   329
            $editor .= '/>';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   330
          }
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   331
          
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   332
          echo '<td class="row2">' . htmlspecialchars($string_name) . '</td>';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   333
          echo '<td class="row1">' . $editor . '</td>';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   334
          
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   335
          
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   336
          echo '</tr>';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   337
          echo "\n";
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   338
        }
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   339
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   340
        echo '<tr>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   341
                <th class="subhead" colspan="2">';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   342
                
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   343
        echo '<input type="hidden" name="cat_id" value="' . $cat_id . '" />';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   344
                
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   345
        // Button: save
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   346
        echo '<button name="action" value="edit_strings;lang_id=' . $lang_id . ';save=1" style="font-weight: bold;">' . $lang->get('etc_save_changes') . '</button> ';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   347
        // Button: revert
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   348
        echo '<button name="action" value="edit_strings;lang_id=' . $lang_id . '" style="font-weight: normal;">' . $lang->get('acplm_editor_btn_revert') . '</button> ';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   349
        // Button: cancel
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   350
        echo '<button name="action" value="modify_language;lang_id=' . $lang_id . '" style="font-weight: normal;">' . $lang->get('acplm_editor_btn_cancel') . '</button>';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   351
                
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   352
        echo '  </th>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   353
              </tr>';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   354
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   355
        ?>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   356
          </table>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   357
        </div>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   358
        <?php
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   359
        echo '</form>';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   360
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   361
        return true;
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   362
      case 'reimport':
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   363
        if ( !isset($parms['iso639']) || !is_int(@$parms['lang_id']) )
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   364
          break;
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   365
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   366
        $lang_code =& $parms['iso639'];
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   367
        $lang_id =& $parms['lang_id'];
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   368
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   369
        $lang_list = list_available_languages();
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   370
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   371
        if ( !isset($lang_list[$lang_code]) )
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   372
          break;
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   373
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   374
        // Grab a Language object
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   375
        if ( $lang->lang_id == $lang_id )
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   376
        {
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   377
          $lang_local =& $lang;
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   378
        }
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   379
        else
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   380
        {
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   381
          $lang_local = new Language($lang_id);
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   382
        }
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   383
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   384
        $lang_data =& $lang_list[$lang_code];
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   385
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   386
        // This is the big re-import loop
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   387
        if ( file_exists(ENANO_ROOT . "/language/{$lang_data['dir']}/backup.json") )
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   388
        {
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   389
          $lang_local->import(ENANO_ROOT . "/language/{$lang_data['dir']}/backup.json");
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   390
        }
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   391
        else
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   392
        {
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   393
          foreach ( array('core', 'admin', 'tools', 'user') as $file )
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   394
          {
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   395
            $lang_local->import(ENANO_ROOT . "/language/{$lang_data['dir']}/$file.json");
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   396
          }
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   397
        }
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   398
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   399
        echo '<div class="info-box">' . $lang->get('acplm_msg_reimport_success') . '</div>';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   400
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   401
        break;
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   402
      case 'backup_language':
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   403
        if ( !is_int(@$parms['lang_id']) )
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   404
          break;
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   405
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   406
        $lang_id =& $parms['lang_id'];
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   407
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   408
        // Grab a Language object
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   409
        if ( $lang->lang_id == $lang_id )
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   410
        {
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   411
          $lang_local =& $lang;
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   412
        }
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   413
        else
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   414
        {
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   415
          $lang_local = new Language($lang_id);
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   416
        }
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   417
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   418
        $filename = 'enano_lang_' . $lang_local->lang_code . '_' . enano_date('ymd') . '.json';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   419
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   420
        // Free as much memory as possible
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   421
        $db->close();
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   422
        unset($GLOBALS['session'], $GLOBALS['paths'], $GLOBALS['template'], $GLOBALS['plugins']);
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   423
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   424
        // HTTP headers
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   425
        header('Content-type: application/json');
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   426
        header('Content-disposition: attachment; filename=' . $filename);
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   427
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   428
        // Export to JSON
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   429
        $lang_struct = array(
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   430
            'categories' => array_keys($lang_local->strings),
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   431
            'strings' => $lang_local->strings
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   432
          );
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   433
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   434
        $lang_struct = enano_json_encode($lang_struct);
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   435
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   436
        header('Content-length: ' . strlen($lang_struct));
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   437
        echo $lang_struct;
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   438
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   439
        exit;
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   440
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   441
      case 'uninstall_language':
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   442
        if ( !is_int(@$parms['lang_id']) )
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   443
          break;
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   444
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   445
        $lang_id =& $parms['lang_id'];
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   446
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   447
        if ( isset($parms['confirm']) )
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   448
        {
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   449
          $lang_default = intval(getConfig('default_language'));
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   450
          if ( $lang_default == $lang_id )
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   451
          {
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   452
            echo '<div class="error-box">' . $lang->get('acplm_err_cant_uninstall_default') . '</div>';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   453
            break;
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   454
          }
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   455
          if ( $lang_id == $lang->lang_id )
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   456
          {
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   457
            // Unload the current language since it's about to be uninstalled
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   458
            unset($lang, $GLOBALS['lang']);
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   459
            $GLOBALS['lang'] = new Language($lang_default);
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   460
            global $lang;
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   461
          }
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   462
          // We're clear
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   463
          
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   464
          // Remove cache files
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   465
          $cache_file = ENANO_ROOT . "/cache/lang_{$lang_id}.php";
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   466
          if ( file_exists($cache_file) )
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   467
            @unlink($cache_file);
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   468
          
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   469
          // Remove strings
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   470
          $q = $db->sql_query('DELETE FROM ' . table_prefix . "language_strings WHERE lang_id = $lang_id;");
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   471
          if ( !$q )
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   472
            $db->_die();
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   473
          
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   474
          // Delete the language
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   475
          $q = $db->sql_query('DELETE FROM ' . table_prefix . "language WHERE lang_id = $lang_id;");
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   476
          if ( !$q )
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   477
            $db->_die();
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   478
          
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   479
          echo '<div class="info-box">' . $lang->get('acplm_msg_uninstall_success') . '</div>';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   480
          break;
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   481
        }
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   482
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   483
        acp_start_form();
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   484
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   485
        echo '<h3>' . $lang->get('acplm_uninstall_confirm_title') . '</h3>';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   486
        echo '<p>' . $lang->get('acplm_uninstall_confirm_body') . '</p>';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   487
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   488
        echo '<p><button name="action" style="font-weight: bold;" value="uninstall_language;lang_id=' . $lang_id . ';confirm=1">' . $lang->get('acplm_btn_uninstall_confirm') . '</button> ';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   489
        echo '<button name="action" value="home">' . $lang->get('acplm_btn_uninstall_cancel') . '</button></p>';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   490
        
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   491
        echo '</form>';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   492
        return true;
372
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   493
    }
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   494
  }
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   495
  
376
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   496
  acp_start_form();
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   497
  
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   498
  // Select current languages
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   499
  $q = $db->sql_query('SELECT lang_code, lang_name_native, lang_name_default, lang_id FROM ' . table_prefix . "language ORDER BY lang_id ASC;");
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   500
  if ( !$q )
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   501
    $db->_die();
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   502
  
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   503
  // Language properties/edit/delete portal table
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   504
  echo '<h3>' . $lang->get('acplm_heading_editor_portal') . '</h3>';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   505
  
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   506
  echo '<div class="tblholder">';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   507
  echo '<table border="0" cellspacing="1" cellpadding="4">';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   508
  echo '<tr>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   509
          <th>' . $lang->get('acplm_col_lang_id') . '</th>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   510
          <th>' . $lang->get('acplm_col_lang_code') . '</th>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   511
          <th>' . $lang->get('acplm_col_lang_name') . '</th>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   512
          <th>' . $lang->get('acplm_col_lang_name_eng') . '</th>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   513
          <th></th>
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   514
        </tr>';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   515
  
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   516
  $cls = 'row2';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   517
  
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   518
  $btn_edit = $lang->get('acplm_portal_btn_edit');
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   519
  $btn_unin = $lang->get('acplm_portal_btn_unin');
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   520
  
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   521
  while ( $row = $db->fetchrow($q) )
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   522
  {
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   523
    $cls = ( $cls == 'row1' ) ? 'row2' : 'row1';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   524
    
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   525
    echo '<tr>';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   526
    
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   527
    $lang_code = htmlspecialchars($row['lang_code']);
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   528
    $lang_name_native  = htmlspecialchars($row['lang_name_native']);
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   529
    $lang_name_english = htmlspecialchars($row['lang_name_default']);
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   530
    
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   531
    echo "<td class=\"$cls\" style=\"text-align: center;\">{$row['lang_id']}</td>";
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   532
    echo "<td class=\"$cls\" style=\"text-align: center;\">{$lang_code}</td>";
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   533
    echo "<td class=\"$cls\" style=\"text-align: center;\">{$lang_name_native}</td>";
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   534
    echo "<td class=\"$cls\" style=\"text-align: center;\">{$lang_name_english}</td>";
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   535
    echo "<td class=\"$cls\" style=\"text-align: center;\"><button name=\"action\" value=\"modify_language;lang_id={$row['lang_id']}\">$btn_edit</button> <button name=\"action\" value=\"uninstall_language;lang_id={$row['lang_id']}\">$btn_unin</button></td>";
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   536
    
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   537
    echo '</tr>';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   538
  }
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   539
  
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   540
  echo '</table></div>';
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   541
  
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   542
  // Reset the result pointer to zero so we can fetch that list of languages again
377
bb3e6c3bd4f4 Removed stray debugging info from ACL editor success notification; added ability for guests to set language on URI (?lang=eng); added html_in_pages ACL type and separated from php_in_pages so HTML can be embedded but not PHP; rewote portions of the path manager to better abstract URL input; added Zend Framework into list of BSD-licensed libraries; localized some remaining strings; got the migration script working, but just barely; fixed display bug in Special:Contributions; localized Main Page button in admin panel
Dan
parents: 376
diff changeset
   543
  if ( !$db->sql_data_seek(0, $q) )
bb3e6c3bd4f4 Removed stray debugging info from ACL editor success notification; added ability for guests to set language on URI (?lang=eng); added html_in_pages ACL type and separated from php_in_pages so HTML can be embedded but not PHP; rewote portions of the path manager to better abstract URL input; added Zend Framework into list of BSD-licensed libraries; localized some remaining strings; got the migration script working, but just barely; fixed display bug in Special:Contributions; localized Main Page button in admin panel
Dan
parents: 376
diff changeset
   544
  {
bb3e6c3bd4f4 Removed stray debugging info from ACL editor success notification; added ability for guests to set language on URI (?lang=eng); added html_in_pages ACL type and separated from php_in_pages so HTML can be embedded but not PHP; rewote portions of the path manager to better abstract URL input; added Zend Framework into list of BSD-licensed libraries; localized some remaining strings; got the migration script working, but just barely; fixed display bug in Special:Contributions; localized Main Page button in admin panel
Dan
parents: 376
diff changeset
   545
    $db->_die('LangManager doing seek back to zero for installation blacklist');
bb3e6c3bd4f4 Removed stray debugging info from ACL editor success notification; added ability for guests to set language on URI (?lang=eng); added html_in_pages ACL type and separated from php_in_pages so HTML can be embedded but not PHP; rewote portions of the path manager to better abstract URL input; added Zend Framework into list of BSD-licensed libraries; localized some remaining strings; got the migration script working, but just barely; fixed display bug in Special:Contributions; localized Main Page button in admin panel
Dan
parents: 376
diff changeset
   546
  }
376
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   547
  
372
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   548
  // $lang_list is fetched by the posthandler sometimes
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   549
  if ( !isset($lang_list) )
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   550
  {
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   551
    // Build a list of languages in the languages/ directory, then
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   552
    // eliminate the ones that are already installed.
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   553
    $lang_list = list_available_languages();
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   554
  }
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   555
  
377
bb3e6c3bd4f4 Removed stray debugging info from ACL editor success notification; added ability for guests to set language on URI (?lang=eng); added html_in_pages ACL type and separated from php_in_pages so HTML can be embedded but not PHP; rewote portions of the path manager to better abstract URL input; added Zend Framework into list of BSD-licensed libraries; localized some remaining strings; got the migration script working, but just barely; fixed display bug in Special:Contributions; localized Main Page button in admin panel
Dan
parents: 376
diff changeset
   556
  while ( $row = $db->fetchrow($q) )
372
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   557
  {
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   558
    $lang_code =& $row['lang_code'];
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   559
    if ( isset($lang_list[$lang_code]) )
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   560
    {
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   561
      unset($lang_list[$lang_code]);
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   562
      unset($lang_list[$lang_code]); // PHP <5.1.4 Zend bug
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   563
    }
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   564
  }
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   565
  
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   566
  if ( count($lang_list) > 0 )
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   567
  {
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   568
    echo '<h3>' . $lang->get('acplm_heading_install') . '</h3>';
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   569
    echo '<div class="tblholder">
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   570
            <table border="0" cellspacing="1" cellpadding="4">
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   571
              <tr>
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   572
                <th>' . $lang->get('acplm_col_lang_code') . '</th>
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   573
                <th>' . $lang->get('acplm_col_lang_name') . '</th>
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   574
                <th>' . $lang->get('acplm_col_lang_name_eng') . '</th>
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   575
                <th></th>
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   576
              </tr>';
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   577
              
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   578
    $cls = 'row2';
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   579
    foreach ( $lang_list as $lang_code => $lang_data )
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   580
    {
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   581
      $cls = ( $cls == 'row1' ) ? 'row2' : 'row1';
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   582
      
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   583
      echo '<tr>';
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   584
      
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   585
      $lang_code = htmlspecialchars($lang_code);
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   586
      $lang_data['name'] = htmlspecialchars($lang_data['name']);
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   587
      $lang_data['name_eng'] = htmlspecialchars($lang_data['name_eng']);
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   588
      
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   589
      echo "<td class=\"$cls\" style=\"text-align: center;\">$lang_code</td>";
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   590
      echo "<td class=\"$cls\" style=\"text-align: center;\">{$lang_data['name']}</td>";
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   591
      echo "<td class=\"$cls\" style=\"text-align: center;\">{$lang_data['name_eng']}</td>";
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   592
      echo "<td class=\"$cls\" style=\"text-align: center;\"><button name=\"action\" value=\"install_language;iso639=$lang_code\">" . $lang->get('acplm_btn_install_language') . "</button></td>";
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   593
      
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   594
      echo '</tr>';
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   595
    }
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   596
    echo '    </tr>
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   597
            </table>
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   598
          </div>';
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   599
  }
376
66732bd4532c Finished (or nearly finished) the admin language CP
Dan
parents: 372
diff changeset
   600
  echo '</form>';
372
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   601
}
5bd429428101 A number of scattered changes. Profiler added and only enabled in debug mode (currently on), but awfully useful for fixing performance in the future. Started work on Admin:LangManager
Dan
parents:
diff changeset
   602