--- c:/TMP/Borrar/Print_Mail/print_mail.inc	Wed Mar 18 21:49:44 2009
+++ s:/wamp/www/presupuestum/sites/all/modules/print/print_mail/print_mail.inc	Wed Apr 22 12:21:20 2009
@@ -263,22 +263,42 @@
 
       $ok = FALSE;
       $addresses = explode(', ', $form_state['values']['txt_to_addrs']);
-      foreach ($addresses as $to) {
-        $ret = drupal_mail('print_mail', 'sendpage', $to, language_default(), $params, $from, TRUE);
-        if ($ret['result']) {
-          flood_register_event('print_mail');
-          $ok = TRUE;
-        }
-      }
+      foreach ($addresses as $to) {
+      	
+      	// Call to hook_print_mail_before_send($node,$to,$from,$params) in oder to know if we can send the mail.
+      	// Handlers must return TRUE o FALSE.
+      	$can_send = module_invoke_all('print_mail_before_send',$node,$to,$from,$params);
+      	
+      	$sent_using_Job_QUEUE ="";
+      	if ( !in_array(FALSE,$can_send) ){
+      		if ( (variable_get('print_mail_job_queue', 0)) && (function_exists('job_queue_add')) ) {
+      			// User Wants to use Job_Queue to send mails
+      			job_queue_add('drupal_mail', 'Queued Print_Mail Mail',array('print_mail', 'sendpage', $to, language_default(), $params, $from, TRUE));
+          	    $ret['result'] = true;
+          	    $sent_using_Job_QUEUE =t("(Using Job_Queue)");
+      		} else {
+		        $ret = drupal_mail('print_mail', 'sendpage', $to, language_default(), $params, $from, TRUE);
+      		}
+
+      		if ($ret['result']) {
+      		  // Call to hook_print_mail_after_send($node,$to,$from,$params) in oder give information to other modules.
+      	      module_invoke_all('print_mail_after_send',$node,$to,$from,$params);
+      			
+	          flood_register_event('print_mail');
+	          $ok = TRUE;
+	        }
+      	}
+      }
+      
       if ($ok) {
-        watchdog('print_mail', '%name [%from] sent %page to [%to]', array('%name' => $form_state['values']['fld_from_name'], '%from' => $form_state['values']['fld_from_addr'], '%page' => $form_state['values']['path'], '%to' => $form_state['values']['txt_to_addrs']));
+        watchdog('print_mail', '%name [%from] sent %page to [%to] %jqueue', array('%name' => $form_state['values']['fld_from_name'], '%from' => $form_state['values']['fld_from_addr'], '%page' => $form_state['values']['path'], '%to' => $form_state['values']['txt_to_addrs'],'%jqueue'=> $sent_using_Job_QUEUE));
         $site_name = variable_get('site_name', t('us'));
         $print_mail_text_confirmation = variable_get('print_mail_text_confirmation', t('Thank you for spreading the word about !site.'));
         drupal_set_message(t($print_mail_text_confirmation, array('!site' => $site_name)));
 
         $nodepath = drupal_get_normal_path($form_state['values']['path']);
         db_query("UPDATE {print_mail_page_counter} SET sentcount = sentcount + %d, sent_timestamp = %d WHERE path = '%s'", count($addresses), time(), $nodepath);
-      }
+      }
     }
   }
 
