[303fae2] | 1 | <?php |
---|
| 2 | /** |
---|
| 3 | * Modulo paque permite el envio de las fechas de los procesos de planificacion para el registro de los proyectos operativos |
---|
| 4 | * Sistema Automatizado para la Planificación Estratégico-Situacional en la Administración Pública Venezolana |
---|
| 5 | * @file proyectos_operativos_mail.module |
---|
| 6 | * Drupal part Module to code ente planificador module |
---|
| 7 | * Copyright 2011 Sistema Automatizado para la Planificación Estratégico-Situacional en la Administración Pública Venezolana (CENDITEL) |
---|
| 8 | * |
---|
| 9 | * This program is free software; you can redistribute it and/or modify |
---|
| 10 | * it under the terms of the GNU General Public License as published by |
---|
| 11 | * the Free Software Foundation; either version 2 of the License, or |
---|
| 12 | * (at your option) any later version. |
---|
| 13 | * |
---|
| 14 | * This program is distributed in the hope that it will be useful, |
---|
| 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
---|
| 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
---|
| 17 | * GNU General Public License for more details. |
---|
| 18 | * |
---|
| 19 | * You should have received a copy of the GNU General Public License |
---|
| 20 | * along with this program; if not, write to the Free Software |
---|
| 21 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
---|
| 22 | * |
---|
| 23 | * @author Cenditel Merida - Ing. Jose Puentes |
---|
| 24 | * @date 2015-02-27 // (año-mes-dia) |
---|
| 25 | * @version 0.2 // (0.1) |
---|
| 26 | * |
---|
| 27 | */ |
---|
| 28 | |
---|
| 29 | /* |
---|
| 30 | * Implementation of hook_menu() |
---|
| 31 | */ |
---|
| 32 | function proyectos_operativos_mail_menu() { |
---|
| 33 | $items = array(); |
---|
| 34 | $items['fechas_planificacion/notificacion/envia_email/ambito'] = array( |
---|
| 35 | 'title' => 'Enviar Correo Electronico de las fecha de Planificación por Ambitos', |
---|
| 36 | 'page callback' => 'proyectos_operativos_fecha_planificacion_mail_ambito', |
---|
| 37 | 'access callback' => 'usuario_tiene_permisos', |
---|
| 38 | 'type' => MENU_NORMAL_ITEM, |
---|
| 39 | ); |
---|
| 40 | $items['fechas_planificacion/notificacion/envia_email/sector'] = array( |
---|
| 41 | 'title' => 'Enviar Correo Electronico de las fechas de Planificación por Sector', |
---|
| 42 | 'page callback' => 'proyectos_operativos_fecha_planificacion_mail_sector', |
---|
| 43 | 'access callback' => 'usuario_tiene_permisos', |
---|
| 44 | 'type' => MENU_NORMAL_ITEM, |
---|
| 45 | ); |
---|
| 46 | //configuracion del mensaje a enviar |
---|
| 47 | $items['admin/settings/ente_planificador/proyectos_operativos_mail'] = array( |
---|
| 48 | 'title' => t('Correos'), |
---|
| 49 | 'page callback' => 'drupal_get_form', |
---|
| 50 | 'page arguments' => array('proyectos_operativos_mail_admin_settings'), |
---|
| 51 | 'access arguments' => array('admin planificador'), |
---|
| 52 | 'weight' => -6, |
---|
| 53 | 'type' => MENU_LOCAL_TASK, |
---|
| 54 | 'file' => 'proyectos_operativos_mail.admin.inc', |
---|
| 55 | ); |
---|
| 56 | return $items; |
---|
| 57 | } |
---|
| 58 | |
---|
| 59 | /** |
---|
| 60 | * Permite el envio de las fechas de los procesos de planificacion por ambitos a los entes planificadores |
---|
| 61 | */ |
---|
| 62 | function proyectos_operativos_fecha_planificacion_mail_ambito($type_node) { |
---|
| 63 | global $user; |
---|
| 64 | $tid = variable_get('ente_planificador_sector_Ambitos', 0); |
---|
| 65 | $ambitos = taxonomy_get_tree($tid); |
---|
| 66 | $procesos = ente_planificador_procesos(); |
---|
| 67 | $procesos_status = ente_planificador_procesos('status'); |
---|
| 68 | $procesos = ente_planificador_procesos(); |
---|
| 69 | $procesos_ordenados = ente_planificador_ordena_procesos($procesos_status, $procesos); |
---|
| 70 | $procesos_status = $procesos_ordenados['status']; |
---|
| 71 | $default_from = variable_get('site_mail', ini_get('sendmail_from')); |
---|
| 72 | $name_ambitos = ""; |
---|
| 73 | $emails = array(); |
---|
| 74 | $list_emails = array(); |
---|
| 75 | foreach ($ambitos as $terms) { |
---|
| 76 | if ($terms->tid && $terms->depth == 0) { // si es un ambito |
---|
| 77 | $result = db_query("SELECT u.mail, ep.ambito, ep.sector FROM {users} AS u INNER JOIN {ente_user_planificador} AS e ON e.usuario = u.uid INNER JOIN {ente_planificador} AS ep ON e.nid = ep.nid WHERE status > 0 AND ep.ambito = %d", $terms->tid); |
---|
| 78 | while ($usuarios = db_fetch_object($result)) { |
---|
| 79 | if (!valid_email_address($usuarios->mail)) { |
---|
| 80 | form_set_error('email', t('That e-mail address is not valid %email.', array('%email' => $usuarios->mail))); |
---|
| 81 | } |
---|
| 82 | else { |
---|
| 83 | $emails[] = $usuarios->mail; |
---|
| 84 | } |
---|
| 85 | } |
---|
| 86 | $list_emails = implode(',',$emails); |
---|
| 87 | if(count($emails)) { |
---|
| 88 | $body_default = t('Estimado usuario a continuación le enviamos las fechas de Inicio y culminación de las distintas etapas de planificación') . "\n"; |
---|
| 89 | $body = variable_get("proyectos_oprativos_mail_body_message", $body_default) . "\n"; |
---|
| 90 | $body .= t("Ambito Social: ") . $terms->name . ".\n"; |
---|
| 91 | $body_message = ""; |
---|
| 92 | if (is_array($procesos_status) && count($procesos_status)) { |
---|
| 93 | $procesos_title = t('Etapa: ') . ' ' . check_plain($procesos[$type_node]['title']) . ".\n"; |
---|
| 94 | $proceso_info .= $procesos_title; |
---|
| 95 | $body_title = variable_get("proyectos_oprativos_mail_title_message", t('Fechas de Planificación: ')) . "\n"; |
---|
| 96 | $proceso_info .= $body_title; |
---|
| 97 | $FIPMI = variable_get('ente_planificador_' . $type_node . '_all_from_' . $terms->tid, date('Y/M/D')); |
---|
| 98 | $FIPMF = variable_get('ente_planificador_' . $type_node . '_all_until_' . $terms->tid, date('Y/M/D')); |
---|
| 99 | if ($FIPMI) { |
---|
| 100 | $FIPMI = format_date($FIPMI); |
---|
| 101 | } |
---|
| 102 | else { |
---|
| 103 | $FIPMI = t("N/A"); |
---|
| 104 | } |
---|
| 105 | if ($FIPMF) { |
---|
| 106 | $FIPMF = format_date($FIPMF); |
---|
| 107 | } |
---|
| 108 | else { |
---|
| 109 | $FIPMF = t("N/A"); |
---|
| 110 | } |
---|
| 111 | if ($FIPMI && $FIPMF) { |
---|
| 112 | $proceso_info .= ' ' . " " . t("Fecha de Inicio: ") . $FIPMI . ', ' . t("Fecha de Culminación: ") . $FIPMF . "\n"; |
---|
| 113 | $body .= $proceso_info; |
---|
| 114 | // Send the e-mail to the recipients using the site default language. |
---|
| 115 | $from = $user->mail; |
---|
| 116 | drupal_mail('proyectos_operativos_mail', 'page_mail', $list_emails, language_default(), $body, $from); |
---|
| 117 | drupal_set_message(t("El correo para el ambito %ambito fue enviado a los usuarios: !usuarios_emails", array('%ambito' => $terms->name, '!usuarios_emails' => theme('item_list', $emails)))); |
---|
| 118 | } |
---|
| 119 | } |
---|
| 120 | else { |
---|
| 121 | watchdog('mail', t("No se ha podido enviar la fecha del proceso de planificación %proceso para el ambito %ambito", array("%proceso" => check_plain($procesos[$type_node]['title']))), array("%ambito" => $terms->name), WATCHDOG_ERROR); |
---|
| 122 | drupal_set_message(t("No se ha podido enviar la fecha del proceso de planificación %proceso para el ambito %ambito", array("%proceso" => check_plain($procesos[$type_node]['title']), "%ambito" => $terms->name)), "error"); |
---|
| 123 | } |
---|
| 124 | } |
---|
| 125 | else { |
---|
| 126 | watchdog('mail', t("No se ha podido enviar la fecha del proceso de planificación %proceso para el ambito %ambito ya que no se poseen usuarios asignados a algun Ente planificador en dicho Ambito.", array("%proceso" => check_plain($procesos[$type_node]['title']))), array("%ambito" => $terms->name), WATCHDOG_ERROR); |
---|
| 127 | drupal_set_message(t("No se ha podido enviar la fecha del proceso de planificación %proceso para el ambito %ambito ya que no se poseen usuarios asignados a algun Ente planificador en dicho Ambito.", array("%proceso" => check_plain($procesos[$type_node]['title']), "%ambito" => $terms->name)), "error"); |
---|
| 128 | } |
---|
| 129 | } |
---|
| 130 | } |
---|
| 131 | drupal_goto('fechas_planificacion/edit/ambito/' . $type_node); |
---|
| 132 | } |
---|
| 133 | |
---|
| 134 | /** |
---|
| 135 | * Permite el envio de correos electronicos por sector social. |
---|
| 136 | */ |
---|
| 137 | function proyectos_operativos_fecha_planificacion_mail_sector($type_node) { |
---|
| 138 | global $user; |
---|
| 139 | $tid = variable_get('ente_planificador_sector_Ambitos', 0); |
---|
| 140 | $ambitos = taxonomy_get_tree($tid); |
---|
| 141 | $procesos = ente_planificador_procesos(); |
---|
| 142 | $procesos_status = ente_planificador_procesos('status'); |
---|
| 143 | $procesos = ente_planificador_procesos(); |
---|
| 144 | $procesos_ordenados = ente_planificador_ordena_procesos($procesos_status, $procesos); |
---|
| 145 | $procesos_status = $procesos_ordenados['status']; |
---|
| 146 | $default_from = variable_get('site_mail', ini_get('sendmail_from')); |
---|
| 147 | $name_sector = ""; |
---|
| 148 | $emails = array(); |
---|
| 149 | $list_emails = array(); |
---|
| 150 | foreach ($ambitos as $terms) { |
---|
| 151 | if ($terms->tid && $terms->depth == 1) { // si es un sector social |
---|
| 152 | $result = db_query("SELECT u.mail, ep.ambito, ep.sector FROM {users} AS u INNER JOIN {ente_user_planificador} AS e ON e.usuario = u.uid INNER JOIN {ente_planificador} AS ep ON e.nid = ep.nid WHERE status > 0 AND ep.ambito = %d", $terms->tid); |
---|
| 153 | while ($usuarios = db_fetch_object($result)) { |
---|
| 154 | if (!valid_email_address($usuarios->mail)) { |
---|
| 155 | form_set_error('email', t('That e-mail address is not valid %email.', array('%email' => $usuarios->mail))); |
---|
| 156 | } |
---|
| 157 | else { |
---|
| 158 | $emails[] = $usuarios->mail; |
---|
| 159 | } |
---|
| 160 | } |
---|
| 161 | $list_emails = implode(',',$emails); |
---|
| 162 | if(count($emails)) { |
---|
| 163 | $body_default = t('Estimado usuario a continuación le enviamos las fechas de Inicio y culminación de las distintas etapas de planificación') . "\n"; |
---|
| 164 | $body = variable_get("proyectos_oprativos_mail_body_message", $body_default) . "\n"; |
---|
| 165 | $body .= t("Sector Social: ") . $terms->name . ".\n"; |
---|
| 166 | $body_message = ""; |
---|
| 167 | if (is_array($procesos_status) && count($procesos_status)) { |
---|
| 168 | $procesos_title = t('Etapa: ') . ' ' . check_plain($procesos[$type_node]['title']) . ".\n"; |
---|
| 169 | $proceso_info .= $procesos_title; |
---|
| 170 | $body_title = variable_get("proyectos_oprativos_mail_title_message", t('Fechas de Planificación: ')) . "\n"; |
---|
| 171 | $proceso_info .= $body_title; |
---|
| 172 | $FIPMI = variable_get('ente_planificador_' . $type_node . '_all_from_' . $terms->tid, date('Y/M/D')); |
---|
| 173 | $FIPMF = variable_get('ente_planificador_' . $type_node . '_all_until_' . $terms->tid, date('Y/M/D')); |
---|
| 174 | if ($FIPMI) { |
---|
| 175 | $FIPMI = format_date($FIPMI); |
---|
| 176 | } |
---|
| 177 | else { |
---|
| 178 | $FIPMI = t("N/A"); |
---|
| 179 | } |
---|
| 180 | if ($FIPMF) { |
---|
| 181 | $FIPMF = format_date($FIPMF); |
---|
| 182 | } |
---|
| 183 | else { |
---|
| 184 | $FIPMF = t("N/A"); |
---|
| 185 | } |
---|
| 186 | if ($FIPMI && $FIPMF) { |
---|
| 187 | $proceso_info .= ' ' . " " . t("Fecha de Inicio: ") . $FIPMI . ', ' . t("Fecha de Culminación: ") . $FIPMF . "\n"; |
---|
| 188 | $body .= $proceso_info; |
---|
| 189 | // Send the e-mail to the recipients using the site default language. |
---|
| 190 | $from = $user->mail; |
---|
| 191 | drupal_mail('proyectos_operativos_mail', 'page_mail', $list_emails, language_default(), $body, $from); |
---|
| 192 | drupal_set_message(t("El correo para el Sector social %sector fue enviado a los usuarios: !usuarios_emails", array('%sector' => $terms->name, '!usuarios_emails' => theme('item_list', $emails)))); |
---|
| 193 | } |
---|
| 194 | } |
---|
| 195 | else { |
---|
| 196 | watchdog('mail', t("No se ha podido enviar la fecha del proceso de planificación %proceso para el Sector %sector", array("%proceso" => check_plain($procesos[$type_node]['title']))), array("%sector" => $terms->name), WATCHDOG_ERROR); |
---|
| 197 | drupal_set_message(t("No se ha podido enviar la fecha del proceso de planificación %proceso para el Sector %sector", array("%proceso" => check_plain($procesos[$type_node]['title']), "%sector" => $terms->name)), "error"); |
---|
| 198 | } |
---|
| 199 | } |
---|
| 200 | else { |
---|
| 201 | watchdog('mail', t("No se ha podido enviar la fecha del proceso de planificación %proceso para el Sector %sector ya que no se poseen usuarios asignados a algun Ente planificador en dicho Sector Social.", array("%proceso" => check_plain($procesos[$type_node]['title']))), array("%sector" => $terms->name), WATCHDOG_ERROR); |
---|
| 202 | drupal_set_message(t("No se ha podido enviar la fecha del proceso de planificación %proceso para el Sector %sector ya que no se poseen usuarios asignados a algun Ente planificador en dicho Sector Social.", array("%proceso" => check_plain($procesos[$type_node]['title']), "%sector" => $terms->name)), "error"); |
---|
| 203 | } |
---|
| 204 | } |
---|
| 205 | } |
---|
| 206 | drupal_goto('fechas_planificacion/edit/sector/' . $type_node); |
---|
| 207 | } |
---|
| 208 | |
---|