Active
Project:
Views Mail
Version:
6.x-1.x-dev
Component:
Code
Priority:
Normal
Category:
Bug report
Assigned:
Unassigned
Reporter:
Created:
16 Mar 2012 at 18:11 UTC
Updated:
16 Mar 2012 at 18:11 UTC
I made all the error go away and made it working
Here are my versions:
Views - 6.x-2.16
View mails - 6.x-1.x-dev
Views Bulk Operations - 6.x-1.12
Changes I had to do in the views_mail.module
Line No: 364
// This gets the list of fields from the view that has been selected.
// I think that the column key is created by combining the
// table name and field name.
$view_fields = array();
$view_email_fields = array();
foreach ($view->display['default']->display_options['fields'] as $name=>$value) {
//$field = $value['table'].'_'.$value['field']; /////////////WRONG HERE
$field = $name;
$label = $value['label'];
$view_fields[$field] = $label;
$view_email_fields[$field] = $label;
}
In my case I don't had to validate if the user has opted-out for email or not so I commented out this line
//if (views_mail_accept_mail($email) === TRUE) {
Near Line Number 1171
function views_mail_get_recipients($name_field, $email_field, $nid_field, $additional_mails = array(), $view, $build = TRUE) {
$count = 0;
$recipients = array();
$_SESSION['views_mail'][$view->name]['recipients'] = array();
if (empty($name_field) || empty($email_field)) {
return $count;
}
if (variable_get("views_mail_debug", 0) == 1) {
drupal_set_message('name_field : '.$name_field); // DEBUG
drupal_set_message('email_field : '.$email_field); // DEBUG
drupal_set_message('nid_field : '.$nid_field); // DEBUG
}
foreach ($view->result as $result) {
if (isset($result->$email_field)){
$email = $result->$email_field;
} else {
$email_field = $view->field[$email_field]->field_alias;
$email = $result->$email_field;
}
//drupal_set_message('email_field : '.$email_field);
//$email_field = $view->field[$email_field]->field_alias;
//drupal_set_message('email_field : '.$email_field);
//drupal_set_message('field_alias : '.$field_alias);
//$result_num = $view->row_index; // Sets the row number so we can get the correct value out of $view->result[]
//$email = $view->result[$result_num]->$field_alias;
if (isset($result->$name_field)){
$name = $result->$name_field;
} else {
$name_field = $view->field[$name_field]->field_alias;
$name = $result->$name_field;
}
//drupal_set_message('name : '.$name); // DEBUG
//drupal_set_message('email : '.$email); // DEBUG
if ($nid_field) {
//drupal_set_message('nid_field : '.$nid_field); // DEBUG
$nid = $result->$nid_field;
// Looks like this might just be nid instead of node_nid
if (!$nid) $nid = $result->nid;
} else {
$nid = 0;
}
if (variable_get("views_mail_debug", 0) == 1) {
drupal_set_message('<pre>'. print_r($result, TRUE) .'</pre>'); // DEBUG
}
if (valid_email_address($email)) {
// See if this user has opted out of receiving emails from us.
//if (views_mail_accept_mail($email) === TRUE) {
$recipients[$email]['name'] = $name;
$recipients[$email]['nid'] = $nid;
//}
}
// Add additional email addresses if they exist
// They will use the name field selected in this record
if ($additional_mails) {
foreach ($additional_mails as $additional_email_field => $checked) {
if ($checked) {
if (isset($result->$additional_email_field)){
$additional_email = $result->$additional_email_field;
} else {
$additional_email_field = $view->field[$additional_email_field]->field_alias;
$additional_email = $result->$additional_email_field;
}
if (valid_email_address($additional_email)) {
// See if this user has opted out of receiving emails from us.
//if (views_mail_accept_mail($additional_email) === TRUE) {
$recipients[$additional_email]['name'] = $name;
$recipients[$additional_email]['nid'] = $nid;
//}
}
}
}
}
}
$count = count($recipients);
if ($build == TRUE) {
$_SESSION['views_mail'][$view->name]['recipients'] = $recipients;
}
return $count;
}