Changeset 1908


Ignore:
Timestamp:
Mar 16, 2007, 12:20:41 AM (17 years ago)
Author:
rub
Message:

Add new translation functions.inc.php
Translate subject of information mail.
Notification mails are sent on the default language.
No mail is sent to the author witch are not done actions

Location:
trunk
Files:
2 added
1 deleted
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/admin/cat_modify.php

    r1904 r1908  
    566566    $_POST['group'],
    567567    get_str_email_format(true), /* TODO add a checkbox in order to choose format*/
    568     $category['name'],
     568    get_l10n_args('Come to visit %s', $category['name']),
    569569    'cat_group_info',
    570570    array
  • trunk/include/functions.inc.php

    r1900 r1908  
    10191019  global $lang, $conf;
    10201020
    1021   if ($conf['debug_l10n'] and !isset($lang[$key]))
     1021  if ($conf['debug_l10n'] and !isset($lang[$key]) and !empty($key))
    10221022  {
    10231023    echo '[l10n] language key "'.$key.'" is not defined<br />';
     
    10481048        )), $decimal);
    10491049}
     1050/*
     1051 * returns a single element to use with l10n_args
     1052 *
     1053 * @param string key: translation key
     1054 * @param array/string/../number args:
     1055 *   arguments to use on sprintf($key, args)
     1056 *   if args is a array, each values are used on sprintf
     1057 * @return string
     1058 */
     1059function get_l10n_args($key, $args)
     1060{
     1061  if (is_array($args))
     1062  {
     1063    $key_arg = array_merge(array($key), $args);
     1064  }
     1065  else
     1066  {
     1067    $key_arg = array($key,  $args);
     1068  }
     1069  return array('key_args' => $key_arg);
     1070}
     1071
     1072/*
     1073 * returns a string with formated with l10n_args elements
     1074 *
     1075 * @param element/array $key_args: element or array of l10n_args elements
     1076 * @param $sep: if $key_args is array,
     1077 *   separator is used when translated l10n_args elements are concated
     1078 * @return string
     1079 */
     1080function l10n_args($key_args, $sep = "\n")
     1081{
     1082  if (is_array($key_args))
     1083  {
     1084    foreach ($key_args as $key => $element)
     1085    {
     1086      if (isset($result))
     1087      {
     1088        $result .= $sep;
     1089      }
     1090      else
     1091      {
     1092        $result = '';
     1093      }
     1094
     1095      if ($key === 'key_args')
     1096      {
     1097        array_unshift($element, l10n(array_shift($element)));
     1098        $result .= call_user_func_array('sprintf', $element);
     1099      }
     1100      else
     1101      {
     1102        $result .= l10n_args($element, $sep);
     1103      }
     1104    }
     1105  }
     1106  else
     1107  {
     1108    die('l10n_args: Invalid arguments');
     1109  }
     1110
     1111  return $result;
     1112}
    10501113
    10511114/**
  • trunk/include/functions_comment.inc.php

    r1901 r1908  
    198198          get_absolute_root_url().'comments.php?delete='.$comm['id'];
    199199
    200       $content =
    201          'Author: '.$comm['author']."\n"
    202         .'Comment: '.$comm['content']."\n"
    203         .get_block_mail_admin_info()
    204         .'Delete: '.$del_url."\n";
     200      $keyargs_content = array
     201      (
     202        get_l10n_args('Author: %s', $comm['author']),
     203        get_l10n_args('Comment: %s', $comm['content']),
     204        get_l10n_args('', ''),
     205        get_l10n_args('Delete: %s', $del_url)
     206      );
    205207
    206208      if ($comment_action!='validate')
    207209      {
    208         $content .=
    209           'Validate: '
    210           .get_absolute_root_url().'comments.php?validate='.$comm['id'];
     210        $keyargs_content[] =
     211          get_l10n_args('', '');
     212        $keyargs_content[] =
     213          get_l10n_args('Validate: %s',
     214            get_absolute_root_url().'comments.php?validate='.$comm['id']);
    211215      }
    212216
    213       pwg_mail
     217      pwg_mail_notification_admins
    214218      (
    215         format_email('administrators', get_webmaster_mail_address()),
    216         array
    217         (
    218           'subject' => 'PWG comment by '.$comm['author'],
    219           'content' => $content,
    220           'Bcc' => get_administrators_email()
    221         )
     219        get_l10n_args('Comment by %s', $comm['author']),
     220        $keyargs_content
    222221      );
    223222    }
  • trunk/include/functions_mail.inc.php

    r1904 r1908  
    155155}
    156156
     157/*
     158 * Switch language to param language
     159 * All entries are push on language stack
     160 *
     161 * @param string language
     162 */
     163function switch_lang_to($language)
     164{
     165  global $switch_lang, $user, $lang, $lang_info;
     166
     167  if (count($switch_lang['stack']) == 0)
     168  {
     169    $prev_language = $user['language'];
     170  }
     171  else
     172  {
     173    $prev_language = end($switch_lang['stack']);
     174  }
     175
     176  $switch_lang['stack'][] = $language;
     177
     178  if ($prev_language != $language)
     179  {
     180    if (!isset($switch_lang['language'][$prev_language]))
     181    {
     182      $switch_lang[$prev_language]['lang_info'] = $lang_info;
     183      $switch_lang[$prev_language]['lang'] = $lang;
     184    }
     185
     186    if (!isset($switch_lang['language'][$language]))
     187    {
     188      // Re-Init language arrays
     189      $lang_info = array();
     190      $lang  = array();
     191
     192      // language files
     193      include(get_language_filepath('common.lang.php', '', $language));
     194      // No test admin because script is checked admin (user selected no)
     195      // Translations are in admin file too
     196      include(get_language_filepath('admin.lang.php', '', $language));
     197      trigger_action('loading_lang');
     198      @include(get_language_filepath('local.lang.php', '', $language));
     199
     200      $switch_lang[$language]['lang_info'] = $lang_info;
     201      $switch_lang[$language]['lang'] = $lang;
     202    }
     203    else
     204    {
     205      $lang_info = $switch_lang[$language]['lang_info'];
     206      $lang = $switch_lang[$language]['lang'];
     207    }
     208  }
     209}
     210
     211/*
     212 * Switch back language pushed with switch_lang_to function
     213 *
     214 * @param: none
     215 */
     216function switch_lang_back()
     217{
     218  global $switch_lang, $user, $lang, $lang_info;
     219
     220  $last_language = array_pop($switch_lang['stack']);
     221
     222  if (count($switch_lang['stack']) > 0)
     223  {
     224    $language = end($switch_lang['stack']);
     225  }
     226  else
     227  {
     228    $language = $user['language'];
     229  }
     230
     231  if ($last_language != $language)
     232  {
     233    if (!isset($switch_lang['language'][$language]))
     234    {
     235      $lang_info = $switch_lang[$language]['lang_info'];
     236      $lang = $switch_lang[$language]['lang'];
     237    }
     238  }
     239}
     240
    157241/**
    158242 * Returns email of all administrator
     
    160244 * @return string
    161245 */
    162 function get_administrators_email()
    163 {
    164   global $conf;
    165 
    166   $result = array();
     246/*
     247 * send en notification email to all administrators
     248 * if a administrator is doing action,
     249 * he's be removed to email list
     250 *
     251 * @param:
     252 *   - keyargs_subject: mail subject on l10n_args format
     253 *   - keyargs_content: mail content on l10n_args format
     254 *
     255 * @return boolean (Ok or not)
     256 */
     257function pwg_mail_notification_admins($keyargs_subject, $keyargs_content)
     258{
     259  global $conf, $user;
     260  $return = true;
     261
     262  $admins = array();
    167263
    168264  $query = '
     
    177273  I.status in (\'webmaster\',  \'admin\') and
    178274  I.adviser = \'false\' and
    179   '.$conf['user_fields']['email'].' is not null
     275  '.$conf['user_fields']['email'].' is not null and
     276  I.user_id <> '.$user['id'].'
    180277order by
    181278  username
     
    189286      if (!empty($admin['mail_address']))
    190287      {
    191         array_push($result, format_email($admin['username'], $admin['mail_address']));
     288        array_push($admins, format_email($admin['username'], $admin['mail_address']));
    192289      }
    193290    }
    194291  }
    195292
    196   return $result;
    197 }
    198 
    199 /* Return a standard block useful for admin mail */
    200 function get_block_mail_admin_info()
    201 {
    202   global $user;
    203 
    204   return
    205     "\n"
    206     .'Connected user: '.$user['username']."\n"
    207     .'IP: '.$_SERVER['REMOTE_ADDR']."\n"
    208     .'Browser: '.$_SERVER['HTTP_USER_AGENT']."\n"
    209     ."\n";
    210 }
    211 
    212 /*
    213  * Switch language to param language
    214  * All entries are push on language stack
    215  *
    216  * @param string language
    217  */
    218 function switch_lang_to($language)
    219 {
    220   global $switch_lang, $user, $lang, $lang_info;
    221 
    222   if (count($switch_lang['stack']) == 0)
    223   {
    224     $prev_language = $user['language'];
    225   }
    226   else
    227   {
    228     $prev_language = end($switch_lang['stack']);
    229   }
    230 
    231   $switch_lang['stack'][] = $language;
    232 
    233   if ($prev_language != $language)
    234   {
    235     if (!isset($switch_lang['language'][$prev_language]))
    236     {
    237       $switch_lang[$prev_language]['lang_info'] = $lang_info;
    238       $switch_lang[$prev_language]['lang'] = $lang;
    239     }
    240 
    241     if (!isset($switch_lang['language'][$language]))
    242     {
    243       // Re-Init language arrays
    244       $lang_info = array();
    245       $lang  = array();
    246 
    247       // language files
    248       include(get_language_filepath('common.lang.php', '', $language));
    249       // No test admin because script is checked admin (user selected no)
    250       // Translations are in admin file too
    251       include(get_language_filepath('admin.lang.php', '', $language));
    252       trigger_action('loading_lang');
    253       @include(get_language_filepath('local.lang.php', '', $language));
    254 
    255       $switch_lang[$language]['lang_info'] = $lang_info;
    256       $switch_lang[$language]['lang'] = $lang;
    257     }
    258     else
    259     {
    260       $lang_info = $switch_lang[$language]['lang_info'];
    261       $lang = $switch_lang[$language]['lang'];
    262     }
    263   }
    264 }
    265 
    266 /*
    267  * Switch back language pushed with switch_lang_to function
    268  *
    269  * @param: none
    270  */
    271 function switch_lang_back()
    272 {
    273   global $switch_lang, $user, $lang, $lang_info;
    274 
    275   $last_language = array_pop($switch_lang['stack']);
    276 
    277   if (count($switch_lang['stack']) > 0)
    278   {
    279     $language = end($switch_lang['stack']);
    280   }
    281   else
    282   {
    283     $language = $user['language'];
    284   }
    285 
    286   if ($last_language != $language)
    287   {
    288     if (!isset($switch_lang['language'][$language]))
    289     {
    290       $lang_info = $switch_lang[$language]['lang_info'];
    291       $lang = $switch_lang[$language]['lang'];
    292     }
    293   }
     293  $keyargs_content_admin_info = array
     294  (
     295    get_l10n_args('Connected user: %s', $user['username']),
     296    get_l10n_args('IP: %s', $_SERVER['REMOTE_ADDR']),
     297    get_l10n_args('Browser: %s', $_SERVER['HTTP_USER_AGENT'])
     298  );
     299
     300  switch_lang_to($conf['default_language']);
     301
     302  $return = pwg_mail
     303  (
     304    '',
     305    array
     306    (
     307      'Bcc' => $admins,
     308      'subject' => '['.$conf['gallery_title'].'] '.l10n_args($keyargs_subject),
     309      'content' =>
     310         l10n_args($keyargs_content)."\n\n"
     311        .l10n_args($keyargs_content_admin_info)."\n",
     312      'content_format' => 'text/plain'
     313    )
     314  ) and $return;
     315
     316  switch_lang_back();
     317
     318  return $return;
    294319}
    295320
     
    297322 * send en email to user's group
    298323 *
    299   * @param:
     324 * @param:
    300325 *   - group_id: mail are sent to group with this Id
    301326 *   - email_format: mail format
    302  *   - key_subject:  TODO Include translations
     327 *   - keyargs_subject: mail subject on l10n_args format
    303328 *   - tpl_shortname: short template name without extension
    304329 *   - assign_vars: array used to assign_vars to mail template
    305330 *   - language_selected: send mail only to user with this selected language
    306 */
     331 *
     332 * @return boolean (Ok or not)
     333 */
    307334function pwg_mail_group(
    308   $group_id, $email_format, $key_subject,
     335  $group_id, $email_format, $keyargs_subject,
    309336  $tpl_shortname, $assign_vars = array(), $language_selected = '')
    310337{
    311338  global $conf;
     339  $return = true;
    312340
    313341  $query = '
     
    342370    }
    343371  }
    344 
    345372
    346373  foreach ($list as $elem)
     
    376403
    377404      $mail_template = get_mail_template($email_format, $elem);
    378       $mail_template->set_filename($tpl_shortname, $tpl_shortname.'.tpl');
     405      $mail_template->set_filename($tpl_shortname,
     406        (IN_ADMIN ? 'admin/' : '').$tpl_shortname.'.tpl');
    379407      $mail_template->assign_vars($assign_vars);
    380408
    381       pwg_mail
     409      $return = pwg_mail
    382410      (
    383411        '',
    384412        array
    385413        (
    386           'subject' => $key_subject,
     414          'Bcc' => $Bcc,
     415          'subject' => l10n_args($keyargs_subject),
    387416          'email_format' => $email_format,
    388417          'content' => $mail_template->parse($tpl_shortname, true),
     
    391420          'theme' => $elem['theme']
    392421        )
    393       );
     422      ) and $return;
    394423
    395424      switch_lang_back();
    396425    }
    397426  }
     427
     428  return $return;
    398429}
    399430
     
    414445 *       o template: template to use [default $conf['default_template']]
    415446 *       o theme: template to use [default $conf['default_template']]
     447 *
     448 * @return boolean (Ok or not)
    416449 */
    417450function pwg_mail($to, $args = array())
  • trunk/language/en_UK.iso-8859-1/admin.lang.php

    r1906 r1908  
    579579$lang['conf_history_admin'] = 'Save page visits by administrators';
    580580$lang['cat_options_title'] = 'Properties';
     581$lang['An information email was sent to group "%s"'] = 'An information email was sent to group "%s';
     582$lang['Send an information email to group members'] = 'Send an information email to group members';
     583$lang['Group'] = 'Group';
     584$lang['Come to visit %s'] = 'Come to visit %s';
    581585?>
  • trunk/language/en_UK.iso-8859-1/common.lang.php

    r1900 r1908  
    55// | Copyright (C) 2003-2007 PhpWebGallery Team - http://phpwebgallery.net |
    66// +-----------------------------------------------------------------------+
    7 // | branch        : BSF (Best So Far)
    8 // | file          : $RCSfile$
     7// | file          : $Id$
    98// | last update   : $Date$
    109// | last modifier : $Author$
     
    616615$lang['page_end'] = 'Page bottom';
    617616$lang['qsearch'] = 'Quick search';
     617$lang['Connected user: %s'] = 'Connected user: %s';
     618$lang['IP: %s'] = 'IP: %s';
     619$lang['Browser: %s'] = 'Browser: %s';
     620$lang['Author: %s'] = 'Author: %s';
     621$lang['Comment: %s'] = 'Comment: %s';
     622$lang['Delete: %s'] = 'Delete: %s';
     623$lang['Validate: %s'] = 'Validate: %s';
     624$lang['Comment by %s'] = 'Comment by %s';
     625$lang['User: %s'] = 'User: %s';
     626$lang['Email: %s'] = 'Email: %s';
     627$lang['Admin: %s'] = 'Admin: %s';
     628$lang['Registration of %s'] = 'Registration of %s';
     629$lang['Category: %s'] = 'Category: %s';
     630$lang['Picture name: %s'] = 'Picture name: %s';
     631$lang['Creation date: %s'] = 'Creation date: %s';
     632$lang['Waiting page: %s'] = 'Waiting page: %s';
     633$lang['Picture uploaded by %s'] = 'Picture uploaded by %s';
    618634?>
  • trunk/language/fr_FR.iso-8859-1/admin.lang.php

    r1901 r1908  
    578578$lang['conf_history_admin'] = 'Enregistrer les pages visitées par les administrateurs';
    579579$lang['cat_options_title'] = 'Propriétés';
     580$lang['An information email was sent to group "%s"'] = 'Un mail d\'informations a été envoyé aux membres du groupe';
     581$lang['Send an information email to group members'] = 'Envoyer un mail d\'informations aux membres d\'un groupe';
     582$lang['Group'] = 'Groupe';
     583$lang['Come to visit %s'] = 'Venez visiter %s';
    580584?>
  • trunk/language/fr_FR.iso-8859-1/common.lang.php

    r1900 r1908  
    55// | Copyright (C) 2003-2007 PhpWebGallery Team - http://phpwebgallery.net |
    66// +-----------------------------------------------------------------------+
    7 // | branch        : BSF (Best So Far)
    8 // | file          : $RCSfile$
     7// | file          : $Id$
    98// | last update   : $Date$
    109// | last modifier : $Author$
     
    616615$lang['page_end'] = 'Bas de page';
    617616$lang['qsearch'] = 'Recherche rapide';
     617$lang['Connected user: %s'] = 'Utilisateur connecté: %s';
     618$lang['IP: %s'] = 'IP: %s';
     619$lang['Browser: %s'] = 'Navigateur: %s';
     620$lang['Author: %s'] = 'Auteur: %s';
     621$lang['Comment: %s'] = 'Commentaire: %s';
     622$lang['Delete: %s'] = 'Suppression: %s';
     623$lang['Validate: %s'] = 'Validation: %s';
     624$lang['Comment by %s'] = 'Commentaire par %s';
     625$lang['User: %s'] = 'Utilisateur: %s';
     626$lang['Email: %s'] = 'Email: %s';
     627$lang['Admin: %s'] = 'Administration: %s';
     628$lang['Registration of %s'] = 'Enregistrement de %s';
     629$lang['Category: %s'] = 'Catégorie: %s';
     630$lang['Picture name: %s'] = 'Nom de l\'image: %s';
     631$lang['Creation date: %s'] = 'Date de création: %d';
     632$lang['Waiting page: %s'] = 'Page en attente: %s';
     633$lang['Picture uploaded by %s'] = 'Image téléchargée par %s';
    618634?>
  • trunk/register.php

    r1901 r1908  
    7070                   .'admin.php?page=user_list&username='.$username;
    7171
    72       $content =
    73          'User: '.$username."\n"
    74         .'Mail: '.$_POST['mail_address']."\n"
    75         .get_block_mail_admin_info()
    76         .'Admin'.': '.$admin_url;
     72      $keyargs_content = array
     73      (
     74        get_l10n_args('User: %s', $username),
     75        get_l10n_args('Email: %s', $_POST['mail_address']),
     76        get_l10n_args('', ''),
     77        get_l10n_args('Admin: %s', $admin_url)
     78      );
    7779
    78       pwg_mail
     80      pwg_mail_notification_admins
    7981      (
    80         format_email('administrators', get_webmaster_mail_address()),
    81         array
    82         (
    83           'subject' => 'PWG '.l10n('register_title').' '.$username,
    84           'content' => $content,
    85           'Bcc' => get_administrators_email()
    86         )
     82        get_l10n_args('Registration of %s', $username),
     83        $keyargs_content
    8784      );
    8885    }
  • trunk/upload.php

    r1901 r1908  
    230230      $waiting_url = get_absolute_root_url().'admin.php?page=waiting';
    231231
    232       $content =
    233          'Category: '.get_cat_display_name($category['upper_names'], null, false)."\n"
    234         .'Picture name: '.$_FILES['picture']['name']."\n"
    235         .'User: '.$_POST['username']."\n"
    236         .'Email: '.$_POST['mail_address']."\n"
    237         .'Picture name: '.$_POST['name']."\n"
    238         .'Author: '.$_POST['author']."\n"
    239         .'Creation Date: '.$_POST['date_creation']."\n"
    240         .'Comment: '.$_POST['comment']."\n"
    241         .get_block_mail_admin_info()
    242         .'Waiting page: '.$waiting_url."\n";
    243 
    244       pwg_mail
     232      $keyargs_content = array
    245233      (
    246         format_email('administrators', get_webmaster_mail_address()),
    247         array
    248         (
    249           'subject' => 'PWG picture uploaded by '.$_POST['username'],
    250           'content' => $content,
    251           'Bcc' => get_administrators_email()
    252         )
     234        get_l10n_args('Category: %s', get_cat_display_name($category['upper_names'], null, false)),
     235        get_l10n_args('Picture name: %s', $_FILES['picture']['name']),
     236        get_l10n_args('User: %s', $_POST['username']),
     237        get_l10n_args('Email: %s', $_POST['mail_address']),
     238        get_l10n_args('Picture name: %s', $_POST['name']),
     239        get_l10n_args('Author: %s', $_POST['author']),
     240        get_l10n_args('Creation date: %s', $_POST['date_creation']),
     241        get_l10n_args('Comment: %s', $_POST['comment']),
     242        get_l10n_args('', ''),
     243        get_l10n_args('Waiting page: %s', $waiting_url)
     244      );
     245
     246      pwg_mail_notification_admins
     247      (
     248        get_l10n_args('Picture uploaded by %s', $_POST['username']),
     249        $keyargs_content
    253250      );
    254251    }
Note: See TracChangeset for help on using the changeset viewer.