Add Kannel plugin files - refs BT#8939

1.10.x
Imanol Losada 10 years ago
parent bb4d82bb74
commit c489ada431
  1. 15
      plugin/kannelsms/config.php
  2. 1
      plugin/kannelsms/index.php
  3. 15
      plugin/kannelsms/install.php
  4. 102
      plugin/kannelsms/lang/english.php
  5. 102
      plugin/kannelsms/lang/spanish.php
  6. 665
      plugin/kannelsms/lib/kannelsms.lib.php
  7. 180
      plugin/kannelsms/lib/kannelsms_plugin.class.php
  8. 5
      plugin/kannelsms/license.txt
  9. 10
      plugin/kannelsms/plugin.php
  10. 3
      plugin/kannelsms/readme.txt
  11. 1
      plugin/kannelsms/sms_templates/account_approved_connect.tpl
  12. 1
      plugin/kannelsms/sms_templates/account_created_updated_login_password.tpl
  13. 1
      plugin/kannelsms/sms_templates/answer_open_question_test_reviewed.tpl
  14. 1
      plugin/kannelsms/sms_templates/assignment_been_created_course.tpl
  15. 1
      plugin/kannelsms/sms_templates/been_invited_complete_survey_course.tpl
  16. 1
      plugin/kannelsms/sms_templates/been_invited_join_group.tpl
  17. 1
      plugin/kannelsms/sms_templates/been_subscribed_course.tpl
  18. 1
      plugin/kannelsms/sms_templates/check_email_connect_more_info.tpl
  19. 1
      plugin/kannelsms/sms_templates/course_opening_request_code_registered.tpl
  20. 1
      plugin/kannelsms/sms_templates/course_opening_request_course_code.tpl
  21. 1
      plugin/kannelsms/sms_templates/course_opening_request_course_code_approved.tpl
  22. 1
      plugin/kannelsms/sms_templates/messages_sent_edited_group_added.tpl
  23. 1
      plugin/kannelsms/sms_templates/messages_sent_edited_group_edited.tpl
  24. 1
      plugin/kannelsms/sms_templates/new_answer_posted_forum.tpl
  25. 1
      plugin/kannelsms/sms_templates/new_course_been_created.tpl
  26. 1
      plugin/kannelsms/sms_templates/new_course_suggested_teacher.tpl
  27. 1
      plugin/kannelsms/sms_templates/new_file_shared_course_by.tpl
  28. 1
      plugin/kannelsms/sms_templates/new_system_announcement_added.tpl
  29. 1
      plugin/kannelsms/sms_templates/new_thread_started_forum.tpl
  30. 1
      plugin/kannelsms/sms_templates/new_user_pending_approval.tpl
  31. 1
      plugin/kannelsms/sms_templates/new_user_subscribed_course.tpl
  32. 1
      plugin/kannelsms/sms_templates/password_updated_login_password.tpl
  33. 1
      plugin/kannelsms/sms_templates/posted_forum_course.tpl
  34. 1
      plugin/kannelsms/sms_templates/received_new_personal_messages.tpl
  35. 1
      plugin/kannelsms/sms_templates/reminder_assignment_course_due.tpl
  36. 1
      plugin/kannelsms/sms_templates/request_open_course_code_rejected.tpl
  37. 1
      plugin/kannelsms/sms_templates/requested_password_change.tpl
  38. 1
      plugin/kannelsms/sms_templates/student_answered_test.tpl
  39. 1
      plugin/kannelsms/sms_templates/student_answered_test_open_question.tpl
  40. 1
      plugin/kannelsms/sms_templates/student_answered_test_voice_question.tpl
  41. 1
      plugin/kannelsms/sms_templates/subscribed_session.tpl
  42. 1
      plugin/kannelsms/sms_templates/subscribed_session_csv.tpl
  43. 1
      plugin/kannelsms/sms_templates/system_announcement_update.tpl
  44. 1
      plugin/kannelsms/sms_templates/test_new_system_announcement_added.tpl
  45. 1
      plugin/kannelsms/sms_templates/test_system_announcement_update.tpl
  46. 1
      plugin/kannelsms/sms_templates/user_answered_inbox_message.tpl
  47. 1
      plugin/kannelsms/sms_templates/user_details_modified.tpl
  48. 1
      plugin/kannelsms/sms_templates/user_suggested_be_friends.tpl
  49. 1
      plugin/kannelsms/sms_templates/user_uploaded_assignment_check.tpl
  50. 1
      plugin/kannelsms/sms_templates/user_uploaded_assignment_check_student_submits_paper.tpl
  51. 1
      plugin/kannelsms/sms_templates/user_uploaded_assignment_course.tpl
  52. 1
      plugin/kannelsms/sms_templates/user_uploaded_assignment_course_student_submits_paper.tpl
  53. 1
      plugin/kannelsms/sms_templates/welcome_login_password.tpl
  54. 16
      plugin/kannelsms/uninstall.php

@ -0,0 +1,15 @@
<?php
/* For licensing terms, see /vendor/license.txt */
/**
* Kannel parameters that will be registered in the current settings
*
* @package chamilo.plugin.kannelsms
* @author Imanol Losada <imanol.losada@beeznest.com>
*/
require_once __DIR__ . '/../../main/inc/global.inc.php';
require_once api_get_path(LIBRARY_PATH).'plugin.class.php';
require_once 'lib/kannelsms.lib.php';
require_once 'vendor/kannelsms_api.php';
require_once 'lib/kannelsms_plugin.class.php';

@ -0,0 +1,15 @@
<?php
/* For licensing terms, see /vendor/license.txt */
/**
* This script is included by main/admin/settings.lib.php and generally
* includes things to execute in the main database (settings_current table)
*
* @package chamilo.plugin.kannelsms
* @author Imanol Losada <imanol.losada@beeznest.com>
*/
/**
* Initialization
*/
require_once dirname(__FILE__).'/config.php';
KannelsmsPlugin::create()->install();

@ -0,0 +1,102 @@
<?php
$strings['plugin_title'] = "SMS Sending";
$strings['plugin_comment'] = "When enabled and an email sent successfully, a text message is sent to the user.";
$strings['api_key'] = "Kannel SMS key";
$strings['api_key_help'] = "This is the Kannel SMS server security key. <a target='_blank' href='http://www.kannelsms.com/platforms/chamilo/'>Click here</a> to get it.";
$strings['tool_enable'] = "Enable SMS sending";
$strings['tool_enable_help'] = "Choose if you want to enable SMS sending tool.
Once enabled, they will be sent along with an email the selected SMS message types to the users who had filled their mobile phone number field in their profile<br />";
$strings['type'] = "Send SMS when";
$strings['mobile_phone_number'] = "Mobile Phone (include country dialing code only)";
$strings['MessageWelcomeXLoginXPasswordX'] = "A user is added to the platform";
$strings['MessageXNewFileSharedCourseXByX'] = "A file is added to dropbox";
$strings['MessageXAccountApprovedConnectX'] = "An account is approved";
$strings['MessageXNewCourseXBeenCreatedX'] = "A new course is created";
$strings['MessageXNewUserXSubscribedCourseX'] = "A user is subscribed to a course";
$strings['MessageXNewCourseSuggestedTeacherX'] = "A new course is suggested";
$strings['MessageXCourseOpeningRequestCodeXRegistered'] = "A new course opening request is registered";
$strings['MessageXCourseOpeningRequestCourseCodeXApproved'] = "A new course opening request is approved";
$strings['MessageXRequestOpenCourseCodeXReject'] = "A new course opening request is rejected";
$strings['MessageXCourseOpeningRequestCourseCodeX'] = "Additional information is required for a new course opening request";
$strings['MessageXBeenSubscribedCourseX'] = "A user is added to the course but not registered to it yet";
$strings['MessageXAssignmentBeenCreatedCourseX'] = "Homework is created";
$strings['MessageXAccountCreatedUpdatedLoginXPasswordX'] = "A user account is created or updated";
$strings['MessageXPasswordUpdatedLoginXPasswordX'] = "A user password is updated";
$strings['MessageXRequestedPasswordChange'] = "A user requests a password change";
$strings['MessageXReceivedNewPersonalMessages'] = "New personal messages are received in user's inbox or forum";
$strings['MessageXNewUserXPendingApproval'] = "A new user registration is pending for approval";
$strings['MessageXXPostedForumXCourseX'] = "A user posts in forum";
$strings['MessageXXXCheckEmailConnectMoreInfo'] = "An announcement is sent";
$strings['MessageXXStudentXAnsweredTestX'] = "A student solves an exercise";
$strings['MessageXXStudentXAnsweredTestXOpenQuestion'] = "A student solves an open question";
$strings['MessageXXStudentXAnsweredTestXVoiceQuestion'] = "A student solves a voice question";
$strings['MessageXXAnswerOpenQuestionTestXReviewed'] = "An open question answer is reviewed";
$strings['MessageXXNewThreadXStartedForumX'] = "A new thread is started in forum";
$strings['MessageXXNewAnswerPostedXForumX'] = "A new answer is posted in forum";
$strings['MessageXXNewSystemAnnouncementAdded'] = "A new system announcement is added and the user does not want to send a test email";
$strings['MessageXTestXNewSystemAnnouncementAdded'] = "A new system announcement is added and the user wants to send a test email";
$strings['MessageXXSystemAnnouncementUpdate'] = "A new system announcement is updated and the user does not want to send a test email";
$strings['MessageXTestXSystemAnnouncementUpdate'] = "A new system announcement is updated and the user wants to send a test email";
$strings['MessageXUserXUploadedAssignmentXCourseXStudentSubmitsPaper'] = "An assignment is uploaded and there is no current session (this will be sent only to coaches)";
$strings['MessageXUserXUploadedAssignmentXCheckXStudentSubmitsPaper'] = "An assignment is uploaded (this will be sent only to teachers)";
$strings['MessageXUserXUploadedAssignmentXCourseX'] = "... and there is no current session (this will be sent only to coaches)";
$strings['MessageXUserXUploadedAssignmentXCheckX'] = "... (this will be sent only to teachers)";
$strings['MessageXSubscribedSessionX'] = "A session is created or updated and new users are subscribed";
$strings['MessageXSubscribedSessionXCSV'] = "New users are subscribed to a session importing a CSV file";
$strings['MessageXUserXSuggestedBeFriends'] = "A friendship invitation is received";
$strings['MessageXUserXAnsweredInboxMessage'] = "A message reply is received in inbox";
$strings['MessageXBeenInvitedJoinGroupX'] = "A group join invitation is received";
$strings['MessageXMessagesSentEditedGroupXEdited'] = "A group topic message is updated";
$strings['MessageXMessagesSentEditedGroupXAdded'] = "A group topic message is added";
$strings['MessageXBeenInvitedCompleteSurveyXCourseX'] = "A new survey is created";
$strings['MessageXReminderAssignmentXCourseXDue'] = "A reminder is sent to students who have not uploaded their assignment yet";
$strings['MessageXUserDetailsModified'] = "User details have been updated";
$strings['WelcomeXLoginXPasswordX'] = "Welcome to %s. Here are your user account details: login: %s, password: %s";
$strings['XNewFileSharedCourseXByX'] = "%s: A new file has been shared with you in course %s by %s";
$strings['XAccountApprovedConnectX'] = "%s: Your account has been approved by an administrator. You can now connect to %s";
$strings['XNewCourseXBeenCreatedX'] = "%s: A new course (%s) has been created by %s";
$strings['XNewUserXSubscribedCourseX'] = "%s: A new user (%s) has just subscribed to your course (%s)";
$strings['XNewCourseSuggestedTeacherX'] = "%s: A new course has been suggested by teacher (%s). Please connect to the admin page to review it";
$strings['XCourseOpeningRequestCodeXRegistered'] = "%s: Your course opening request (code %s) has been registered. You will be informed when it is approved";
$strings['XCourseOpeningRequestCourseCodeXApproved'] = "%s: Your course opening request for course code %s has been approved. Connect to your portal to use it";
$strings['XRequestOpenCourseCodeXReject'] = "%s: We are sorry to inform you that your request to open course code %s has been rejected";
$strings['XCourseOpeningRequestCourseCodeX'] = "%s: Your course opening request for course code %s requires more information. Check e-mail for more info";
$strings['XBeenSubscribedCourseX'] = "%s: You have been subscribed to course %s";
$strings['XAssignmentBeenCreatedCourseX'] = "%s: A new assignment has been created in course %s. Please connect for more info";
$strings['XAccountCreatedUpdatedLoginXPasswordX'] = "%s: Your account has been created or updated. You can now login as %s, password: %s";
$strings['XPasswordUpdatedLoginXPasswordX'] = "%s: Your password has been updated. You can now login as %s, password: %s";
$strings['XRequestedPasswordChange'] = "%s: You have requested a password change. Please check your e-mail for more information";
$strings['XReceivedNewPersonalMessages'] = "%s: You have received new personal messages in your inbox or in the forum. Please check your e-mail for more info";
$strings['XNewUserXPendingApproval'] = "%s: A new user (%s) registration is pending your approval. Please connect to the admin panel to review";
$strings['XXPostedForumXCourseX'] = "%s: %s just posted on forum %s in course %s";
$strings['XXXCheckEmailConnectMoreInfo'] = "%s: %s: %s. Check your e-mail or connect for more info";
$strings['XXStudentXAnsweredTestX'] = "%s: %s: Student %s has just answered test %s";
$strings['XXStudentXAnsweredTestXOpenQuestion'] = "%s: %s: Student %s answered test %s's open question. Please connect to review";
$strings['XXStudentXAnsweredTestXVoiceQuestion'] = "%s: %s: Student %s answered test %s's voice question. Please connect to review";
$strings['XXAnswerOpenQuestionTestXReviewed'] = "%s: %s: Your answer to an open question in test %s has been reviewed";
$strings['XXNewThreadXStartedForumX'] = "%s: %s: A new thread (%s) has been started in forum %s";
$strings['XXNewAnswerPostedXForumX'] = "%s: %s: A new answer has been posted to (%s) in forum %s";
$strings['XXNewSystemAnnouncementAdded'] = "%s: %s";
$strings['XTestXNewSystemAnnouncementAdded'] = "%s (test): %s";
$strings['XXSystemAnnouncementUpdate'] = "%s: %s (update)";
$strings['XTestXSystemAnnouncementUpdate'] = "%s (test): %s";
$strings['XUserXUploadedAssignmentXCourseXStudentSubmitsPaper'] = "%s: User %s uploaded assignment %s in course %s";
$strings['XUserXUploadedAssignmentXCheckXStudentSubmitsPaper'] = "%s: User %s uploaded assignment %s. Check %s";
$strings['XUserXUploadedAssignmentXCourseX'] = "%s: User %s uploaded assignment %s in course %s";
$strings['XUserXUploadedAssignmentXCheckX'] = "%s: User %s uploaded assignment %s. Check %s";
$strings['XSubscribedSessionX'] = "%s: You have been subscribed to session %s";
$strings['XSubscribedSessionXCSV'] = "%s: You have been subscribed to session %s";
$strings['XUserXSuggestedBeFriends'] = "%s: User %s suggested you should be friends. Check your inbox or e-mail for details";
$strings['XUserXAnsweredInboxMessage'] = "%s: User %s just answered your Inbox message";
$strings['XBeenInvitedJoinGroupX'] = "%s: you have been invited to join group %s. Check your Inbox for details";
$strings['XMessagesSentEditedGroupXEdited'] = "%s: Messages sent or edited in group %s. Check your Inbox for details";
$strings['XMessagesSentEditedGroupXAdded'] = "%s: Messages sent or edited in group %s. Check your Inbox for details";
$strings['XBeenInvitedCompleteSurveyXCourseX'] = "%s: You have been invited to complete survey %s in course %s";
$strings['XReminderAssignmentXCourseXDue'] = "%s: This is a simple reminder that your assignment (%s) in course %s is still due";
$strings['XUserDetailsModified'] = "%s: Your user details have been modified. Please check your e-mail for more information";

@ -0,0 +1,102 @@
<?php
$strings['plugin_title'] = "Envío de SMS";
$strings['plugin_comment'] = "Ofrece la posibilidad de enviar SMS a celulares cuando se envían e-mails de notificación.";
$strings['api_key'] = "Clave Kannel SMS";
$strings['api_key_help'] = "Ésta es la clave de seguridad de su servidor Kannel SMS. Para obtenerla, <a target='_blank' href='http://www.kannelsms.com/platforms/chamilo/'>haga click aquí</a>";
$strings['tool_enable'] = "Activar envío de SMS";
$strings['tool_enable_help'] = "Escoja si desea activar la herramienta de envío de mensajes a celulares Kannel SMS.
Una vez activada, se enviarán, simultaneamente con los correos, los tipos mensajes SMS seleccionados a los usuarios que hayan especificado un número de celular en su perfil.<br />";
$strings['sms_types'] = "Enviar un SMS cuando";
$strings['mobile_phone_number'] = "Celular (incluya sólo el código de llamada del país)";
$strings['MessageWelcomeXLoginXPasswordX'] = "Se añada un usuario a la plataforma";
$strings['MessageXNewFileSharedCourseXByX'] = "Un archivo se añada a dropbox";
$strings['MessageXAccountApprovedConnectX'] = "Se apruebe una cuenta de usuario";
$strings['MessageXNewCourseXBeenCreatedX'] = "Se cree un curso nuevo";
$strings['MessageXNewUserXSubscribedCourseX'] = "Un usuario se suscriba a un curso";
$strings['MessageXNewCourseSuggestedTeacherX'] = "Un profesor sugiera un curso nuevo";
$strings['MessageXCourseOpeningRequestCodeXRegistered'] = "Se registre una solicitud de apertura de curso";
$strings['MessageXCourseOpeningRequestCourseCodeXApproved'] = "Se apruebe una solicitud de apertura de curso";
$strings['MessageXRequestOpenCourseCodeXReject'] = "Se rechace una solicitud de apertura de curso";
$strings['MessageXCourseOpeningRequestCourseCodeX'] = "Se requiera más información de una solicitud de apertura de curso";
$strings['MessageXBeenSubscribedCourseX'] = "Se le suscriba a un curso a un usuario que aún no está registrado";
$strings['MessageXAssignmentBeenCreatedCourseX'] = "Se cree una nueva tarea en un curso";
$strings['MessageXAccountCreatedUpdatedLoginXPasswordX'] = "Se cree o actualice una cuenta de usuario";
$strings['MessageXPasswordUpdatedLoginXPasswordX'] = "Se actualice la contraseña de un usuario";
$strings['MessageXRequestedPasswordChange'] = "Un usuario solicite un cambio de contraseña";
$strings['MessageXReceivedNewPersonalMessages'] = "Se reciban mensajes personales nuevos en la bandeja de entrada o en el foro";
$strings['MessageXNewUserXPendingApproval'] = "Una inscripción de un nuevo usuario esté pendiente de aprobación";
$strings['MessageXXPostedForumXCourseX'] = "Un usuario escriba en el foro";
$strings['MessageXXXCheckEmailConnectMoreInfo'] = "Se envíe una notificación";
$strings['MessageXXStudentXAnsweredTestX'] = "Un estudiante resuelva un ejercicio de un examen";
$strings['MessageXXStudentXAnsweredTestXOpenQuestion'] = "Un estudiante conteste a una pregunta abierta de un examen";
$strings['MessageXXStudentXAnsweredTestXVoiceQuestion'] = "Un estudiante conteste a una pregunta de voz de un examen";
$strings['MessageXXAnswerOpenQuestionTestXReviewed'] = "Se revise una pregunta abierta de un examen";
$strings['MessageXXNewThreadXStartedForumX'] = "Se cree un hilo nuevo en el foro";
$strings['MessageXXNewAnswerPostedXForumX'] = "Se escriba una respuesta nueva en el foro";
$strings['MessageXXNewSystemAnnouncementAdded'] = "Se añada una notificación y el usuario no desee enviar un examen por correo electrónico";
$strings['MessageXTestXNewSystemAnnouncementAdded'] = "Se añada una notificación y el usuario desee enviar un examen por correo electrónico";
$strings['MessageXXSystemAnnouncementUpdate'] = "Se actualice una notificación y el usuario no desee enviar un examen por correo electrónico";
$strings['MessageXTestXSystemAnnouncementUpdate'] = "Se actualice una notificación y el usuario desee enviar un examen por correo electrónico";
$strings['MessageXUserXUploadedAssignmentXCourseXStudentSubmitsPaper'] = "Un estudiante suba su tarea y no exista una sesión (se enviará sólo a coordinadores)";
$strings['MessageXUserXUploadedAssignmentXCheckXStudentSubmitsPaper'] = "Un estudiante suba su tarea (se enviará sólo a profesores)";
$strings['MessageXUserXUploadedAssignmentXCourseX'] = "... y no exista una sesión (se enviará sólo a coordinadores)";
$strings['MessageXUserXUploadedAssignmentXCheckX'] = "... (se enviará sólo a profesores)";
$strings['MessageXSubscribedSessionX'] = "Se cree o edite una sesión nueva y se suscriban a usuarios nuevos";
$strings['MessageXSubscribedSessionXCSV'] = "Se suscriban a usuarios nuevos desde un archivo CSV";
$strings['MessageXUserXSuggestedBeFriends'] = "Se reciba una invitación de amistad";
$strings['MessageXUserXAnsweredInboxMessage'] = "Se reciba la contestación a un mensaje en la bandeja de entrada";
$strings['MessageXBeenInvitedJoinGroupX'] = "Se reciba una invitación para unirse a un grupo";
$strings['MessageXMessagesSentEditedGroupXEdited'] = "Se actualice un mensaje en un tema de grupo";
$strings['MessageXMessagesSentEditedGroupXAdded'] = "Se añada un mensaje en un tema de grupo";
$strings['MessageXBeenInvitedCompleteSurveyXCourseX'] = "Se cree una encuesta nueva";
$strings['MessageXReminderAssignmentXCourseXDue'] = "Se envíe un recordatorio a los estudiantes que no hayan enviado su tarea";
$strings['MessageXUserDetailsModified'] = "Se actualice información de un usuario";
$strings['WelcomeXLoginXPasswordX'] = "Bienvenido a %s. Éstos son sus datos de acceso: usuario: %s, contraseña: %s";
$strings['XNewFileSharedCourseXByX'] = "%s: Un nuevo archivo ha sido compartido contigo en el curso %s por %s";
$strings['XAccountApprovedConnectX'] = "%s: Su cuenta ha sido aprobada por un administrador. Ya puede conectarse a %s";
$strings['XNewCourseXBeenCreatedX'] = "%s: Un nuevo curso (%s) ha sido creado por %s";
$strings['XNewUserXSubscribedCourseX'] = "%s: Un nuevo usuario (%s) se ha suscrito a su curso (%s)";
$strings['XNewCourseSuggestedTeacherX'] = "%s: Un nuevo curso ha sido sugerido por el profesor (%s). Por favor, conéctese a la página de administración para revisarlo";
$strings['XCourseOpeningRequestCodeXRegistered'] = "%s: Su solicitud de apertura de curso (código %s) ha sido registrada. Será informado cuando ésta sea aprobada";
$strings['XCourseOpeningRequestCourseCodeXApproved'] = "%s: Su solicitud de apertura de curso para el código de curso %s ha sido aprobada. Conéctese a su portal para usarlo";
$strings['XRequestOpenCourseCodeXReject'] = "%s: Lamentamos informarle que su solicitud de apertura de curso para el código de curso %s ha sido rechazada";
$strings['XCourseOpeningRequestCourseCodeX'] = "%s: Su solicitud de apertura de curso para el código de curso %s requiere más información. Compruebe su e-mail para más información";
$strings['XBeenSubscribedCourseX'] = "%s: Ha sido suscrito al curso %s";
$strings['XAssignmentBeenCreatedCourseX'] = "%s: Una nueva tarea ha sido creada en el curso %s. Por favor, conéctese para más información";
$strings['XAccountCreatedUpdatedLoginXPasswordX'] = "%s: Su cuenta ha sido creada o actualizada. Ya puede conectarse como %s, contraseña: %s";
$strings['XPasswordUpdatedLoginXPasswordX'] = "%s: Su contraseña ha sido actualizada. Ya puede conectarse como %s, contraseña: %s";
$strings['XRequestedPasswordChange'] = "%s: Ha solicitado un cambio de contraseña. Por favor, compruebe su e-mail para más información";
$strings['XReceivedNewPersonalMessages'] = "%s: Ha recibido mensajes personales nuevos en su bandeja de entrada o en el foro. Por favor, compruebe su e-mail para más información";
$strings['XNewUserXPendingApproval'] = "%s: Una inscripción de un nuevo usuario (%s) está pendiente de su aprobación. Por favor, conéctese al panel de administración para revisarla";
$strings['XXPostedForumXCourseX'] = "%s: %s acaba de escribir en el foro %s del curso %s";
$strings['XXXCheckEmailConnectMoreInfo'] = "%s: %s: %s. Compruebe su e-mail o conéctese para más información";
$strings['XXStudentXAnsweredTestX'] = "%s: %s: El estudiante %s acaba de contestar al test %s";
$strings['XXStudentXAnsweredTestXOpenQuestion'] = "%s: %s: El estudiante %s contestó a la pregunta abierta del test %s. Por favor, conéctese para revisarla";
$strings['XXStudentXAnsweredTestXVoiceQuestion'] = "%s: %s: El estudiante %s contestó a la pregunta de voz del test %s. Por favor, conéctese para revisarla";
$strings['XXAnswerOpenQuestionTestXReviewed'] = "%s: %s: Su respuesta a la pregunta abierta en el test %s ha sido revisada.";
$strings['XXNewThreadXStartedForumX'] = "%s: %s: Se ha comenzado un nuevo hilo (%s) en el foro %s";
$strings['XXNewAnswerPostedXForumX'] = "%s: %s: Se ha escrito una nueva respuesta a (%s) en el foro %s";
$strings['XXNewSystemAnnouncementAdded'] = "%s: %s";
$strings['XTestXNewSystemAnnouncementAdded'] = "%s (prueba): %s";
$strings['XXSystemAnnouncementUpdate'] = "%s: %s (actualización)";
$strings['XTestXSystemAnnouncementUpdate'] = "%s (prueba): %s";
$strings['XUserXUploadedAssignmentXCourseXStudentSubmitsPaper'] = "%s: El usuario %s subió la tarea %s al curso %s";
$strings['XUserXUploadedAssignmentXCheckXStudentSubmitsPaper'] = "%s: El usuario %s subió la tarea %s. Compruébelo en %s";
$strings['XUserXUploadedAssignmentXCourseX'] = "%s: El usuario %s subió la tarea %s al curso %s";
$strings['XUserXUploadedAssignmentXCheckX'] = "%s: El usuario %s subió la tarea %s. Compruébelo en %s";
$strings['XSubscribedSessionX'] = "%s: Ha sido suscrito a la sesión %s";
$strings['XSubscribedSessionXCSV'] = "%s: Ha sido suscrito a la sesión %s";
$strings['XUserXSuggestedBeFriends'] = "%s: El usuario %s le sugirió que podrían ser amigos. Compruebe su bandeja de entrada o su e-mail para más detalles";
$strings['XUserXAnsweredInboxMessage'] = "%s: El usuario acaba de contestar a su mensaje de la bandeja de entrada";
$strings['XBeenInvitedJoinGroupX'] = "%s: Ha sido invitado a unirse al grupo %s. Compruebe su bandeja de entrada para más detalles";
$strings['XMessagesSentEditedGroupXEdited'] = "%s: Hay mensajes enviados o editados en el grupo %s. Compruebe su bandeja de entrada para más detalles";
$strings['XMessagesSentEditedGroupXAdded'] = "%s: Hay mensajes enviados o editados en el grupo %s. Compruebe su bandeja de entrada para más detalles";
$strings['XBeenInvitedCompleteSurveyXCourseX'] = "%s: Ha sido invitado a completar la encuesta %s del curso %s";
$strings['XReminderAssignmentXCourseXDue'] = "%s: Se le recuerda que su tarea (%s) del curso %s aún está pendiente";
$strings['XUserDetailsModified'] = "%s: Su información de usuario ha sido modificada. Compruebe su e-mail para más información";

@ -0,0 +1,665 @@
<?php
/* For licensing terms, see /vendor/license.txt */
/**
* Class Kannelsms
* This script handles incoming SMS information, process it and sends an SMS if everything is right
*
* @package chamilo.plugin.kannelsms.lib
* @author Imanol Losada <imanol.losada@beeznest.com>
*
* Kannelsms-Chamilo connector class
*/
class Kannelsms
{
public $apiKey;
public $api;
public $plugin_enabled = false;
/**
* Constructor (generates a connection to the API)
* @param string Kannelsms API key required to use the plugin
* @return void
*/
public function __construct($apiKey = null)
{
$plugin = KannelsmsPlugin::create();
$kannelSMSPlugin = $plugin->get('tool_enable');
if (empty($apiKey)) {
$kannelSMSApiKey = $plugin->get('api_key');
} else {
$kannelSMSApiKey = $apiKey;
}
$this->table = Database::get_main_table('user_field_values');
if ($kannelSMSPlugin == true) {
$this->apiKey = $kannelSMSApiKey;
// Setting Kannelsms api
define('CONFIG_SECURITY_API_KEY', $this->apiKey);
$trimmedApiKey = trim(CONFIG_SECURITY_API_KEY);
if (!empty($trimmedApiKey)) {
$this->api = new Kannel(CONFIG_SECURITY_API_KEY);
} else {
$this->api = new Kannel(' ');
$recipient_name = api_get_person_name(
api_get_setting('administratorName'),
api_get_setting('administratorSurname'),
null,
PERSON_NAME_EMAIL_ADDRESS
);
$email_form = get_setting('emailAdministrator');
$emailsubject = 'Kannelsms error';
$emailbody = 'Key cannot be blank';
$sender_name = $recipient_name;
$email_admin = $email_form;
api_mail_html($recipient_name, $email_form, $emailsubject, $emailbody, $sender_name, $email_admin);
}
$this->plugin_enabled = true;
}
}
/**
* getMobilePhoneNumberById (retrieves a user mobile phone number by user id)
* @param int User id
* @return int User's mobile phone number
*/
private function getMobilePhoneNumberById($userId)
{
require_once api_get_path(LIBRARY_PATH).'extra_field.lib.php';
require_once api_get_path(LIBRARY_PATH).'extra_field_value.lib.php';
$mobilePhoneNumberExtraField = new ExtraField('user');
$mobilePhoneNumberExtraField = $mobilePhoneNumberExtraField->get_handler_field_info_by_field_variable('mobile_phone_number');
$mobilePhoneNumberExtraFieldValue = new ExtraFieldValue('user');
$mobilePhoneNumberExtraFieldValue = $mobilePhoneNumberExtraFieldValue->get_values_by_handler_and_field_id($userId, $mobilePhoneNumberExtraField['id']);
return $mobilePhoneNumberExtraFieldValue['field_value'];
}
/**
* send (sends an SMS to the user)
* @param array Data needed to send the SMS. It is mandatory to include the
* 'smsType' and 'userId' (or 'mobilePhoneNumber') fields at least.
* More data may be neccesary depending on the message type
* Example: $additional_parameters = array(
* 'smsType' => EXAMPLE_SMS_TYPE,
* 'userId' => $userId,
* 'moreData' => $moreData
* );
* @return void
*/
public function send($additionalParameters)
{
$trimmedKey = trim(CONFIG_SECURITY_API_KEY);
if (!empty($trimmedKey)) {
$message = array(
"to" => array_key_exists("mobilePhoneNumber",$additionalParameters) ?
$additionalParameters['mobilePhoneNumber'] :
$this->getMobilePhoneNumberById($additionalParameters['userId']),
"message" => $this->getSms($additionalParameters)
);
if (!empty($message['message'])) {
$result = $this->api->send($message);
// Commented for future message logging / tracking purposes
/*if( $result["success"] ) {
echo "Message sent - ID: " . $result["id"];
} else {
echo "Message failed - Error: " . $result["error_message"];
}*/
}
}
}
/**
* buildSms (builds an SMS from a template and data)
* @param object KannelsmsPlugin object
* @param object Template object
* @param string Template file name
* @param string Text key from lang file
* @param array Data to fill message variables (if any)
* @return object Template object with message property updated
*/
public function buildSms($plugin, $tpl, $templateName, $messageKey, $parameters = null)
{
$result = Database::select(
'selected_value',
'settings_current',
array(
'where'=> array('variable = ?' => array('kannelsms_message'.$messageKey))
)
);
if (empty($result)) {
$tpl->assign('message', '');
} else {
$templatePath = 'kannelsms/sms_templates/';
$content = $tpl->fetch($templatePath.$templateName);
$message = $plugin->get_lang($messageKey);
if ($parameters !== null) {
$message = vsprintf($message, $parameters);
}
$tpl->assign('message', $message);
}
return $tpl->params['message'];
}
/**
* getSms (returns an SMS message depending of its type)
* @param array Data needed to send the SMS. It is mandatory to include the
* 'smsType' and 'userId' (or 'mobilePhoneNumber') fields at least.
* More data may be neccesary depending on the message type
* Example: $additional_parameters = array(
* 'smsType' => EXAMPLE_SMS_TYPE,
* 'userId' => $userId,
* 'moreData' => $moreData
* );
* @return string A ready to be sent SMS
*/
public function getSms($additionalParameters)
{
$plugin = KannelsmsPlugin::create();
$tool_name = $plugin->get_lang('plugin_title');
$tpl = new Template($tool_name);
switch (constant('KannelsmsPlugin::'.$additionalParameters['smsType'])) {
case KannelsmsPlugin::WELCOME_LOGIN_PASSWORD:
$userInfo = api_get_user_info($additionalParameters['userId']);
return $this->buildSms(
$plugin,
$tpl,
'welcome_login_password.tpl',
'WelcomeXLoginXPasswordX',
array(
api_get_setting('siteName'),
$userInfo['username'],
$additionalParameters['password']
)
);
break;
case KannelsmsPlugin::NEW_FILE_SHARED_COURSE_BY:
return $this->buildSms(
$plugin,
$tpl,
'new_file_shared_course_by.tpl',
'XNewFileSharedCourseXByX',
array(
api_get_setting('siteName'),
$additionalParameters['courseTitle'],
$additionalParameters['userUsername']
)
);
break;
case KannelsmsPlugin::ACCOUNT_APPROVED_CONNECT:
return $this->buildSms(
$plugin,
$tpl,
'account_approved_connect.tpl',
'XAccountApprovedConnectX',
array(
api_get_setting('siteName'),
$tpl->params['_p']['web']
)
);
break;
case KannelsmsPlugin::NEW_COURSE_BEEN_CREATED:
return $this->buildSms(
$plugin,
$tpl,
'new_course_been_created.tpl',
'XNewCourseXBeenCreatedX',
array(
api_get_setting('siteName'),
$additionalParameters['courseName'],
$additionalParameters['creatorUsername']
)
);
break;
case KannelsmsPlugin::NEW_USER_SUBSCRIBED_COURSE:
return $this->buildSms(
$plugin,
$tpl,
'new_user_subscribed_course.tpl',
'XNewUserXSubscribedCourseX',
array(
api_get_setting('siteName'),
$additionalParameters['userUsername'],
$additionalParameters['courseCode']
)
);
break;
case KannelsmsPlugin::NEW_COURSE_SUGGESTED_TEACHER:
return $this->buildSms(
$plugin,
$tpl,
'new_course_suggested_teacher.tpl',
'XNewCourseSuggestedTeacherX',
array(
api_get_setting('siteName'),
$additionalParameters['userUsername']
)
);
break;
case KannelsmsPlugin::COURSE_OPENING_REQUEST_CODE_REGISTERED:
return $this->buildSms(
$plugin,
$tpl,
'course_opening_request_code_registered.tpl',
'XCourseOpeningRequestCodeXRegistered',
array(
api_get_setting('siteName'),
$additionalParameters['courseCode']
)
);
break;
case KannelsmsPlugin::COURSE_OPENING_REQUEST_CODE_APPROVED:
return $this->buildSms(
$plugin,
$tpl,
'course_opening_request_course_code_approved.tpl',
'XCourseOpeningRequestCourseCodeXApproved',
array(
api_get_setting('siteName'),
$additionalParameters['courseCode']
)
);
break;
case KannelsmsPlugin::COURSE_OPENING_REQUEST_CODE_REJECTED:
return $this->buildSms(
$plugin,
$tpl,
'request_open_course_code_rejected.tpl',
'XRequestOpenCourseCodeXReject',
array(
api_get_setting('siteName'),
$additionalParameters['courseCode']
)
);
break;
case KannelsmsPlugin::COURSE_OPENING_REQUEST_CODE:
return $this->buildSms(
$plugin,
$tpl,
'course_opening_request_course_code.tpl',
'XCourseOpeningRequestCourseCodeX',
array(
api_get_setting('siteName'),
$additionalParameters['courseCode']
)
);
break;
case KannelsmsPlugin::BEEN_SUBSCRIBED_COURSE:
return $this->buildSms(
$plugin,
$tpl,
'been_subscribed_course.tpl',
'XBeenSubscribedCourseX',
array(
api_get_setting('siteName'),
$additionalParameters['courseTitle']
)
);
break;
case KannelsmsPlugin::ASSIGNMENT_BEEN_CREATED_COURSE:
return $this->buildSms(
$plugin,
$tpl,
'assignment_been_created_course.tpl',
'XAssignmentBeenCreatedCourseX',
array(
api_get_setting('siteName'),
$additionalParameters['courseTitle']
)
);
break;
// Message types to be implemented. Fill the array parameter with arguments.
/*case KannelsmsPlugin::ACCOUNT_CREATED_UPDATED_LOGIN_PASSWORD:
return $this->buildSms(
$plugin,
$tpl,
'account_created_updated_login_password.tpl',
'XAccountCreatedUpdatedLoginXPasswordX',
array(
api_get_setting('siteName')
)
);
break;*/
/*case KannelsmsPlugin::PASSWORD_UPDATED_LOGIN_PASSWORD:
return $this->buildSms(
$plugin,
$tpl,
'password_updated_login_password.tpl',
'XPasswordUpdatedLoginXPasswordX',
array(
api_get_setting('siteName')
)
);
break;*/
/*case KannelsmsPlugin::REQUESTED_PASSWORD_CHANGE:
return $this->buildSms(
$plugin,
$tpl,
'requested_password_change.tpl',
'XPasswordUpdatedLoginXPasswordX',
array(
api_get_setting('siteName')
)
);
break;*/
/*case KannelsmsPlugin::RECEIVED_NEW_PERSONAL_MESSAGES:
return $this->buildSms(
$plugin,
$tpl,
'received_new_personal_messages.tpl',
'XReceivedNewPersonalMessages',
array(
api_get_setting('siteName')
)
);
break;*/
/*case KannelsmsPlugin::NEW_USER_PENDING_APPROVAL:
return $this->buildSms(
$plugin,
$tpl,
'new_user_pending_approval.tpl',
'XNewUserXPendingApproval',
array(
api_get_setting('siteName')
)
);
break;*/
/*case KannelsmsPlugin::POSTED_FORUM_COURSE:
return $this->buildSms(
$plugin,
$tpl,
'posted_forum_course.tpl',
'XXPostedForumXCourseX',
array(
api_get_setting('siteName')
)
);
break;*/
/*case KannelsmsPlugin::CHECK_EMAIL_CONNECT_MORE_INFO:
return $this->buildSms(
$plugin,
$tpl,
'check_email_connect_more_info.tpl',
'XXXCheckEmailConnectMoreInfo',
array(
api_get_setting('siteName')
)
);
break;*/
/*case KannelsmsPlugin::STUDENT_ANSWERED_TEST:
return $this->buildSms(
$plugin,
$tpl,
'student_answered_test.tpl',
'XXStudentXAnsweredTestX',
array(
api_get_setting('siteName')
)
);
break;*/
/*case KannelsmsPlugin::STUDENT_ANSWERED_TEST_OPEN_QUESTION:
return $this->buildSms(
$plugin,
$tpl,
'student_answered_test_open_question.tpl',
'XXStudentXAnsweredTestXOpenQuestion',
array(
api_get_setting('siteName')
)
);
break;*/
/*case KannelsmsPlugin::STUDENT_ANSWERED_TEST_VOICE_QUESTION:
return $this->buildSms(
$plugin,
$tpl,
'student_answered_test_voice_question.tpl',
'XXStudentXAnsweredTestXVoiceQuestion',
array(
api_get_setting('siteName')
)
);
break;*/
/*case KannelsmsPlugin::ANSWER_OPEN_QUESTION_TEST_REVIEWED:
return $this->buildSms(
$plugin,
$tpl,
'answer_open_question_test_reviewed.tpl',
'XXAnswerOpenQuestionTestXReviewed',
array(
api_get_setting('siteName')
)
);
break;*/
/*case KannelsmsPlugin::NEW_THREAD_STARTED_FORUM:
return $this->buildSms(
$plugin,
$tpl,
'new_thread_started_forum.tpl',
'XXNewThreadXStartedForumX',
array(
api_get_setting('siteName')
)
);
break;*/
/*case KannelsmsPlugin::NEW_ANSWER_POSTED_FORUM:
return $this->buildSms(
$plugin,
$tpl,
'new_answer_posted_forum.tpl',
'XXNewAnswerPostedXForumX',
array(
api_get_setting('siteName')
)
);
break;*/
/*case KannelsmsPlugin::NEW_SYSTEM_ANNOUNCEMENT_ADDED:
return $this->buildSms(
$plugin,
$tpl,
'new_system_announcement_added.tpl',
'XXNewSystemAnnouncementAdded',
array(
api_get_setting('siteName')
)
);
break;*/
/*case KannelsmsPlugin::TEST_NEW_SYSTEM_ANNOUNCEMENT_ADDED:
return $this->buildSms(
$plugin,
$tpl,
'test_new_system_announcement_added.tpl',
'XTestXNewSystemAnnouncementAdded',
array(
api_get_setting('siteName')
)
);
break;*/
/*case KannelsmsPlugin::SYSTEM_ANNOUNCEMENT_UPDATE:
return $this->buildSms(
$plugin,
$tpl,
'system_announcement_update.tpl',
'XXSystemAnnouncementUpdate',
array(
api_get_setting('siteName')
)
);
break;*/
/*case KannelsmsPlugin::TEST_SYSTEM_ANNOUNCEMENT_UPDATE:
return $this->buildSms(
$plugin,
$tpl,
'test_system_announcement_update.tpl',
'XXSystemAnnouncementUpdate',
array(
api_get_setting('siteName')
)
);
break;*/
/*case KannelsmsPlugin::USER_UPLOADED_ASSIGNMENT_COURSE_STUDENT_SUBMITS_PAPER:
return $this->buildSms(
$plugin,
$tpl,
'user_uploaded_assignment_course_student_submits_paper.tpl',
'XUserXUploadedAssignmentXCourseXStudentSubmitsPaper',
array(
api_get_setting('siteName')
)
);
break;*/
/*case KannelsmsPlugin::USER_UPLOADED_ASSIGNMENT_CHECK_STUDENT_SUBMITS_PAPER:
return $this->buildSms(
$plugin,
$tpl,
'user_uploaded_assignment_check_student_submits_paper.tpl',
'XUserXUploadedAssignmentXCheckXStudentSubmitsPaper',
array(
api_get_setting('siteName')
)
);
break;*/
/*case KannelsmsPlugin::USER_UPLOADED_ASSIGNMENT_COURSE:
return $this->buildSms(
$plugin,
$tpl,
'user_uploaded_assignment_course.tpl',
'XUserXUploadedAssignmentXCourseX',
array(
api_get_setting('siteName')
)
);
break;*/
/*case KannelsmsPlugin::USER_UPLOADED_ASSIGNMENT_CHECK:
return $this->buildSms(
$plugin,
$tpl,
'user_uploaded_assignment_check.tpl',
'XUserXUploadedAssignmentXCheckX',
array(
api_get_setting('siteName')
)
);
break;*/
/*case KannelsmsPlugin::SUBSCRIBED_SESSION:
return $this->buildSms(
$plugin,
$tpl,
'subscribed_session.tpl',
'XSubscribedSessionX',
array(
api_get_setting('siteName')
)
);
break;*/
/*case KannelsmsPlugin::SUBSCRIBED_SESSION_CSV:
return $this->buildSms(
$plugin,
$tpl,
'subscribed_session_csv.tpl',
'XSubscribedSessionXCSV',
array(
api_get_setting('siteName')
)
);
break;*/
/*case KannelsmsPlugin::USER_SUGGESTED_BE_FRIENDS:
return $this->buildSms(
$plugin,
$tpl,
'user_suggested_be_friends.tpl',
'XUserXSuggestedBeFriends',
array(
api_get_setting('siteName')
)
);
break;*/
/*case KannelsmsPlugin::USER_ANSWERED_INBOX_MESSAGE:
return $this->buildSms(
$plugin,
$tpl,
'user_answered_inbox_message.tpl',
'XUserXAnsweredInboxMessage',
array(
api_get_setting('siteName')
)
);
break;*/
/*case KannelsmsPlugin::BEEN_INVITED_JOIN_GROUP:
return $this->buildSms(
$plugin,
$tpl,
'been_invited_join_group.tpl',
'XBeenInvitedJoinGroupX',
array(
api_get_setting('siteName')
)
);
break;*/
/*case KannelsmsPlugin::MESSAGES_SENT_EDITED_GROUP_EDITED:
return $this->buildSms(
$plugin,
$tpl,
'messages_sent_edited_group_edited.tpl',
'XMessagesSentEditedGroupXEdited',
array(
api_get_setting('siteName')
)
);
break;*/
/*case KannelsmsPlugin::MESSAGES_SENT_EDITED_GROUP_ADDED:
return $this->buildSms(
$plugin,
$tpl,
'messages_sent_edited_group_added.tpl',
'XMessagesSentEditedGroupXAdded',
array(
api_get_setting('siteName')
)
);
break;*/
/*case KannelsmsPlugin::BEEN_INVITED_COMPLETE_SURVEY_COURSE:
return $this->buildSms(
$plugin,
$tpl,
'been_invited_complete_survey_course.tpl',
'XBeenInvitedCompleteSurveyXCourseX',
array(
api_get_setting('siteName')
)
);
break;*/
/*case KannelsmsPlugin::REMINDER_ASSIGNMENT_COURSE_DUE:
return $this->buildSms(
$plugin,
$tpl,
'reminder_assignment_course_due.tpl',
'XReminderAssignmentXCourseXDue',
array(
api_get_setting('siteName')
)
);
break;*/
/*case KannelsmsPlugin::USER_DETAILS_MODIFIED:
return $this->buildSms(
$plugin,
$tpl,
'user_details_modified.tpl',
'XUserDetailsModified',
array(
api_get_setting('siteName')
)
);
break;*/
default:
return '';
}
}
}

@ -0,0 +1,180 @@
<?php
/* For licensing terms, see /vendor/license.txt */
/**
* Class KannelsmsPlugin
* This script contains SMS type constants and basic plugin functions
*
* @package chamilo.plugin.kannelsms.lib
* @author Imanol Losada <imanol.losada@beeznest.com>
*/
class KannelsmsPlugin extends Plugin
{
const WELCOME_LOGIN_PASSWORD = 0;
const NEW_FILE_SHARED_COURSE_BY = 1;
const ACCOUNT_APPROVED_CONNECT = 2;
const NEW_COURSE_BEEN_CREATED = 3;
const NEW_USER_SUBSCRIBED_COURSE = 4;
const NEW_COURSE_SUGGESTED_TEACHER = 5;
const COURSE_OPENING_REQUEST_CODE_REGISTERED = 6;
const COURSE_OPENING_REQUEST_CODE_APPROVED = 7;
const COURSE_OPENING_REQUEST_CODE_REJECTED = 8;
const COURSE_OPENING_REQUEST_CODE = 9;
const BEEN_SUBSCRIBED_COURSE = 10;
const ASSIGNMENT_BEEN_CREATED_COURSE = 11;
const ACCOUNT_CREATED_UPDATED_LOGIN_PASSWORD = 12;
const PASSWORD_UPDATED_LOGIN_PASSWORD = 13;
const REQUESTED_PASSWORD_CHANGE = 14;
const RECEIVED_NEW_PERSONAL_MESSAGES = 15;
const NEW_USER_PENDING_APPROVAL = 16;
const POSTED_FORUM_COURSE = 17;
const CHECK_EMAIL_CONNECT_MORE_INFO = 18;
const STUDENT_ANSWERED_TEST = 19;
const STUDENT_ANSWERED_TEST_OPEN_QUESTION = 20;
const STUDENT_ANSWERED_TEST_VOICE_QUESTION = 21;
const ANSWER_OPEN_QUESTION_TEST_REVIEWED = 22;
const NEW_THREAD_STARTED_FORUM = 23;
const NEW_ANSWER_POSTED_FORUM = 24;
const NEW_SYSTEM_ANNOUNCEMENT_ADDED = 25;
const TEST_NEW_SYSTEM_ANNOUNCEMENT_ADDED = 26;
const SYSTEM_ANNOUNCEMENT_UPDATE = 27;
const TEST_SYSTEM_ANNOUNCEMENT_UPDATE = 28;
const USER_UPLOADED_ASSIGNMENT_COURSE_STUDENT_SUBMITS_PAPER = 29;
const USER_UPLOADED_ASSIGNMENT_CHECK_STUDENT_SUBMITS_PAPER = 30;
const USER_UPLOADED_ASSIGNMENT_COURSE = 31;
const USER_UPLOADED_ASSIGNMENT_CHECK = 32;
const SUBSCRIBED_SESSION = 33;
const SUBSCRIBED_SESSION_CSV = 34;
const USER_SUGGESTED_BE_FRIENDS = 35;
const USER_ANSWERED_INBOX_MESSAGE = 36;
const BEEN_INVITED_JOIN_GROUP = 37;
const MESSAGES_SENT_EDITED_GROUP_EDITED = 38;
const MESSAGES_SENT_EDITED_GROUP_ADDED = 39;
const BEEN_INVITED_COMPLETE_SURVEY_COURSE = 40;
const REMINDER_ASSIGNMENT_COURSE_DUE = 41;
const USER_DETAILS_MODIFIED = 42;
public $isCoursePlugin = true;
public $isMailPlugin = true;
/**
* create (a singleton function that ensures KannelsmsPlugin instance is
* created only once. If it is already created, it returns the instance)
* @return object KannelsmsPlugin instance
*/
public static function create()
{
static $result = null;
return $result ? $result : $result = new self();
}
/**
* Constructor
* @return void
*/
protected function __construct()
{
$fields = array('tool_enable' => 'boolean', 'api_key' => 'text');
$smsTypeOptions = $this->getSmsTypeOptions();
foreach ($smsTypeOptions as $smsTypeOption) {
$fields[$smsTypeOption] = 'checkbox';
}
parent::__construct('0.1', 'Imanol Losada', $fields);
}
/**
* addMobilePhoneNumberField (adds a mobile phone number field if it is not
* already created)
* @return void
*/
private function addMobilePhoneNumberField()
{
$result = Database::select('mobile_phone_number', 'user_field');
if (empty($result)) {
require_once api_get_path(LIBRARY_PATH).'extra_field.lib.php';
$extraField = new Extrafield('user');
$extraField->save(array(
'field_type' => 1,
'field_variable' => 'mobile_phone_number',
'field_display_text' => $this->get_lang('mobile_phone_number'),
'field_default_value' => null,
'field_order' => 2,
'field_visible' => 1,
'field_changeable' => 1,
'field_filter' => null
));
}
}
/**
* getSmsTypeOptions (returns all SMS types)
* @return array SMS types
*/
private function getSmsTypeOptions()
{
return array(
'MessageWelcomeXLoginXPasswordX',
'MessageXNewFileSharedCourseXByX',
'MessageXAccountApprovedConnectX',
'MessageXNewCourseXBeenCreatedX',
'MessageXNewUserXSubscribedCourseX',
'MessageXNewCourseSuggestedTeacherX',
'MessageXCourseOpeningRequestCodeXRegistered',
'MessageXCourseOpeningRequestCourseCodeXApproved',
'MessageXRequestOpenCourseCodeXReject',
'MessageXCourseOpeningRequestCourseCodeX',
'MessageXBeenSubscribedCourseX',
'MessageXAssignmentBeenCreatedCourseX',
'MessageXAccountCreatedUpdatedLoginXPasswordX',
'MessageXPasswordUpdatedLoginXPasswordX',
'MessageXRequestedPasswordChange',
'MessageXReceivedNewPersonalMessages',
'MessageXNewUserXPendingApproval',
'MessageXXPostedForumXCourseX',
'MessageXXXCheckEmailConnectMoreInfo',
'MessageXXStudentXAnsweredTestX',
'MessageXXStudentXAnsweredTestXOpenQuestion',
'MessageXXStudentXAnsweredTestXVoiceQuestion',
'MessageXXAnswerOpenQuestionTestXReviewed',
'MessageXXNewThreadXStartedForumX',
'MessageXXNewAnswerPostedXForumX',
'MessageXXNewSystemAnnouncementAdded',
'MessageXTestXNewSystemAnnouncementAdded',
'MessageXXSystemAnnouncementUpdate',
'MessageXTestXSystemAnnouncementUpdate',
'MessageXUserXUploadedAssignmentXCourseXStudentSubmitsPaper',
'MessageXUserXUploadedAssignmentXCheckXStudentSubmitsPaper',
'MessageXUserXUploadedAssignmentXCourseX',
'MessageXUserXUploadedAssignmentXCheckX',
'MessageXSubscribedSessionX',
'MessageXSubscribedSessionXCSV',
'MessageXUserXSuggestedBeFriends',
'MessageXUserXAnsweredInboxMessage',
'MessageXBeenInvitedJoinGroupX',
'MessageXMessagesSentEditedGroupXEdited',
'MessageXMessagesSentEditedGroupXAdded',
'MessageXBeenInvitedCompleteSurveyXCourseX',
'MessageXReminderAssignmentXCourseXDue',
'MessageXUserDetailsModified'
);
}
/**
* install (installs the plugin)
* @return void
*/
public function install()
{
$this->addMobilePhoneNumberField();
}
/**
* install (uninstalls the plugin and removes all plugin's tables and/or rows)
* @return void
*/
public function uninstall()
{
$tSettings = Database::get_main_table(TABLE_MAIN_SETTINGS_CURRENT);
$sql = "DELETE FROM $tSettings WHERE subkey = 'kannelsms'";
Database::query($sql);
}
}

@ -0,0 +1,5 @@
This plugin, as the rest of Chamilo, is released under the GNU/GPLv3 license.
The Kannel library included is provided under the ICS license, compatible
with GNU/GPLv3. See https://github.com/mediaburst/kannel-php/issues/3 for
details.

@ -0,0 +1,10 @@
<?php
/* For licensing terms, see /vendor/license.txt */
/**
* @package chamilo.plugin.kannelsms
* @author Imanol Losada <imanol.losada@beeznest.com>
*/
require_once dirname(__FILE__).'/config.php';
$plugin_info = KannelsmsPlugin::create()->get_info();

@ -0,0 +1,3 @@
This plugin enables Chamilo to send SMS messages to Chamilo users when a notification email is sent.
SMS message types (a new course is created, an account is approved and so on) can be enabled or disabled from it's plugin configuration option.

@ -0,0 +1,16 @@
<?php
/* For licensing terms, see /vendor/license.txt */
/**
* This script is included by main/admin/settings.lib.php when unselecting a plugin
* and is meant to remove things installed by the install.php script in both
* the global database and the courses tables
*
* @package chamilo.plugin.kannelsms
* @author Imanol Losada <imanol.losada@beeznest.com>
*/
/**
* Queries
*/
require_once dirname(__FILE__).'/config.php';
KannelsmsPlugin::create()->uninstall();
Loading…
Cancel
Save