/wp-content/plugins/sitepress-multilingual-cms/inc/translation-management/tm-notification.class.php

https://bitbucket.org/anneivycat/california-tour · PHP · 186 lines · 132 code · 41 blank · 13 comment · 25 complexity · 9e11bfddac0fad1a542daa084a2e0fda MD5 · raw file

  1. <?php
  2. class TM_Notification{
  3. function __construct(){
  4. }
  5. function footer(){
  6. }
  7. function new_job_any($job_id){
  8. global $iclTranslationManagement, $sitepress, $wpdb;
  9. $job = $iclTranslationManagement->get_translation_job($job_id);
  10. $translators = $iclTranslationManagement->get_blog_translators(array('to'=>$job->language_code));
  11. $edit_url = get_option('siteurl') . '/wp-admin/admin.php?page=' . ICL_PLUGIN_FOLDER . '/menu/translations-queue.php&job_id=' . $job_id;
  12. $tj_url = get_option('siteurl') . '/wp-admin/admin.php?page=' . ICL_PLUGIN_FOLDER . '/menu/translations-queue.php';
  13. foreach($translators as $t){
  14. if($job->manager_id == $t->ID) return;
  15. // get current user admin language
  16. $user_language = $sitepress->get_user_admin_language($t->ID);
  17. if(empty($user_language)){
  18. $user_language = $sitepress->get_admin_language();
  19. }
  20. $lang_from = $wpdb->get_var($wpdb->prepare("SELECT name FROM {$wpdb->prefix}icl_languages_translations WHERE language_code='%s' AND display_language_code='%s'",
  21. $job->source_language_code, $user_language));
  22. $lang_to = $wpdb->get_var($wpdb->prepare("SELECT name FROM {$wpdb->prefix}icl_languages_translations WHERE language_code='%s' AND display_language_code='%s'",
  23. $job->language_code, $user_language));
  24. // hack current user language
  25. //add_filter('icl_set_current_language', array($this, '_hj_lang'));
  26. //$mail['to'] = $t->display_name . ' <' . $t->user_email . '>';
  27. $mail['to'] = $t->user_email;
  28. $mail['subject'] = sprintf(__('New translation job from %s', 'sitepress'), get_bloginfo('name'));
  29. $mail['body'] = sprintf(__("New job available from %s to %s.\n\nStart editing: %s\nYou can view your other translation jobs here: %s", 'sitepress'),
  30. $lang_from, $lang_to, $edit_url, $tj_url);
  31. $mail['type'] = 'translator';
  32. $this->send_mail($mail);
  33. }
  34. }
  35. //function _hj_lang($lang){
  36. // return 'fr';
  37. //}
  38. function new_job_translator($job_id, $translator_id){
  39. global $iclTranslationManagement, $sitepress, $wpdb;
  40. $job = $iclTranslationManagement->get_translation_job($job_id);
  41. if($job->manager_id == $job->translator_id) return;
  42. $edit_url = get_option('siteurl') . '/wp-admin/admin.php?page=' . ICL_PLUGIN_FOLDER . '/menu/translations-queue.php&job_id=' . $job_id;
  43. $tj_url = get_option('siteurl') . '/wp-admin/admin.php?page=' . ICL_PLUGIN_FOLDER . '/menu/translations-queue.php';
  44. $user = new WP_User($translator_id);
  45. // get current user admin language
  46. $user_language = $sitepress->get_user_admin_language($user->ID);
  47. if(empty($user_language)){
  48. $user_language = $sitepress->get_admin_language();
  49. }
  50. $lang_from = $wpdb->get_var($wpdb->prepare("SELECT name FROM {$wpdb->prefix}icl_languages_translations WHERE language_code='%s' AND display_language_code='%s'",
  51. $job->source_language_code, $user_language));
  52. $lang_to = $wpdb->get_var($wpdb->prepare("SELECT name FROM {$wpdb->prefix}icl_languages_translations WHERE language_code='%s' AND display_language_code='%s'",
  53. $job->language_code, $user_language));
  54. // hack current user language
  55. //add_filter('icl_set_current_language', array($this, '_hj_lang'));
  56. //$mail['to'] = $user->display_name . ' <' . $user->user_email . '>';
  57. $mail['to'] = $user->user_email;
  58. $mail['subject'] = sprintf(__('New translation job from %s', 'sitepress'), get_bloginfo('name'));
  59. $mail['body'] = sprintf(__("You have been assigned to new translation job from %s to %s.\n\nStart editing: %s\nYou can view your other translation jobs here: %s", 'sitepress'),
  60. $lang_from, $lang_to, $edit_url, $tj_url);
  61. $mail['type'] = 'translator';
  62. $this->send_mail($mail);
  63. }
  64. function work_complete($job_id, $update = false){
  65. global $iclTranslationManagement, $sitepress, $wpdb;
  66. $job = $iclTranslationManagement->get_translation_job($job_id);
  67. if($job->manager_id == $job->translator_id) return;
  68. $manager = new WP_User($job->manager_id);
  69. $translator = new WP_User($job->translator_id);
  70. // get current user admin language
  71. $user_language = $sitepress->get_user_admin_language($manager->ID);
  72. if(empty($user_language)){
  73. $user_language = $sitepress->get_admin_language();
  74. }
  75. $lang_from = $wpdb->get_var($wpdb->prepare("SELECT name FROM {$wpdb->prefix}icl_languages_translations WHERE language_code='%s' AND display_language_code='%s'",
  76. $job->source_language_code, $user_language));
  77. $lang_to = $wpdb->get_var($wpdb->prepare("SELECT name FROM {$wpdb->prefix}icl_languages_translations WHERE language_code='%s' AND display_language_code='%s'",
  78. $job->language_code, $user_language));
  79. $tj_url = get_option('siteurl') . '/wp-admin/admin.php?page=' . ICL_PLUGIN_FOLDER . '/menu/translation-management.php&sm=jobs';
  80. $doc_url = get_edit_post_link($job->original_doc_id);
  81. if($iclTranslationManagement->settings['notification']['completed'] == ICL_TM_NOTIFICATION_IMMEDIATELY){
  82. $mail['to'] = $manager->user_email;
  83. if($update){
  84. $mail['subject'] = sprintf(__('Translator has updated translation job for %s', 'sitepress'), get_bloginfo('name'));
  85. $mail['body'] = sprintf(__("Translator (%s) has updated translation of job \"%s\" for %s to %s.\n%s\n\nView translation jobs: %s", 'sitepress'),
  86. $translator->display_name, $job->original_doc_title, $lang_from, $lang_to, $doc_url, $tj_url);
  87. }else{
  88. $mail['subject'] = sprintf(__('Translator has completed translation job for %s', 'sitepress'), get_bloginfo('name'));
  89. $mail['body'] = sprintf(__("Translator (%s) has completed translation of job \"%s\" for %s to %s.\n%s\n\nView translation jobs: %s", 'sitepress'),
  90. $translator->display_name, $job->original_doc_title, $lang_from, $lang_to, $doc_url, $tj_url);
  91. }
  92. $mail['type'] = 'admin';
  93. $this->send_mail($mail);
  94. }
  95. }
  96. function translator_resigned($translator_id, $job_id){
  97. global $iclTranslationManagement, $sitepress, $wpdb;
  98. $job = $iclTranslationManagement->get_translation_job($job_id);
  99. if($job->manager_id == $translator_id) return;
  100. $translator = new WP_User($translator_id);
  101. $manager = new WP_User($job->manager_id);
  102. $tj_url = get_option('siteurl') . '/wp-admin/admin.php?page=' . ICL_PLUGIN_FOLDER . '/menu/translation-management.php&sm=jobs';
  103. // get current user admin language
  104. $user_language = $sitepress->get_user_admin_language($manager->ID);
  105. if(empty($user_language)){
  106. $user_language = $sitepress->get_admin_language();
  107. }
  108. $lang_from = $wpdb->get_var($wpdb->prepare("SELECT name FROM {$wpdb->prefix}icl_languages_translations WHERE language_code='%s' AND display_language_code='%s'",
  109. $job->source_language_code, $user_language));
  110. $lang_to = $wpdb->get_var($wpdb->prepare("SELECT name FROM {$wpdb->prefix}icl_languages_translations WHERE language_code='%s' AND display_language_code='%s'",
  111. $job->language_code, $user_language));
  112. if($iclTranslationManagement->settings['notification']['resigned'] == ICL_TM_NOTIFICATION_IMMEDIATELY){
  113. $mail['to'] = $manager->user_email;
  114. $mail['subject'] = sprintf(__('Translator has resigned from job on %s', 'sitepress'), get_bloginfo('name'));
  115. $mail['body'] = sprintf(__('Translator %s has resigned from the translation job "%s" for %s to %s.%sView translation jobs: %s', 'sitepress'),
  116. $translator->display_name, $job->original_doc_title, $lang_from, $lang_to, "\n", $tj_url);
  117. $mail['type'] = 'admin';
  118. $this->send_mail($mail);
  119. }
  120. }
  121. function translator_removed($translator_id, $job_id){
  122. global $iclTranslationManagement, $sitepress, $wpdb;
  123. $job = $iclTranslationManagement->get_translation_job($job_id);
  124. if($job->manager_id == $translator_id) return;
  125. $translator = new WP_User($translator_id);
  126. $manager = new WP_User($job->manager_id);
  127. $tj_url = get_option('siteurl') . '/wp-admin/admin.php?page=' . ICL_PLUGIN_FOLDER . '/menu/translations-queue.php';
  128. $mail['to'] = $manager->user_email;
  129. $mail['subject'] = sprintf(__('Removed from translation job on %s', 'sitepress'), get_bloginfo('name'));
  130. $mail['body'] = sprintf(__('You have been removed from the translation job "%s" for %s to %s.%sView translation jobs: %s', 'sitepress'),
  131. $job->original_doc_title, $lang_from, $lang_to, "\n", $tj_url);
  132. $mail['type'] = 'translator';
  133. $this->send_mail($mail);
  134. }
  135. function send_mail($mail){
  136. if($mail['type'] == 'translator'){
  137. $footer = sprintf(__("This message was automatically sent by Translation Management running on %s. To stop receiving these notifications contact the system administrator at %s.\n\nThis email is not monitored for replies."), get_bloginfo('name'), get_option('home'));
  138. }else{
  139. $footer = sprintf(__("This message was automatically sent by Translation Management running on %s. To stop receiving these notifications, go to Notification Settings, or contact the system administrator at %s.\n\nThis email is not monitored for replies."), get_bloginfo('name'), get_option('home'));
  140. }
  141. $mail['body'] .= "\n\n" . $footer . "\n\n" . sprintf(__('- The folks at ICanLocalize%s','sitepress'), "\n101 Convention Center Dr., Las Vegas, Nevada, 89109, USA");
  142. wp_mail($mail['to'], $mail['subject'], $mail['body']);
  143. }
  144. }
  145. ?>