} elseif (!$permitted) { // make it clear to crawlers if (Surfer::is_crawler()) { Safe::header('Status: 401 Unauthorized', TRUE, 401); } elseif (!Surfer::is_logged()) { Safe::redirect($context['url_to_home'] . $context['url_to_root'] . 'users/login.php?url=' . urlencode(Articles::get_permalink($item))); } elseif (isset($_REQUEST['requested']) && ($requested = Users::get($_REQUEST['requested'])) && $requested['email']) { // prepare the mail message $to = Mailer::encode_recipient($requested['email'], $requested['full_name']); $subject = sprintf(i18n::c('%s: %s'), i18n::c('Request'), strip_tags($item['title'])); $message = Articles::build_notification('apply', $item, $overlay); $headers = Mailer::set_thread('article:' . $item['id']); // allow for skinnable template $message = Skin::build_mail_message($message); // build multiple parts, for HTML rendering $message = Mailer::build_multipart($message); // send the message to requested user if (Mailer::post(Surfer::from(), $to, $subject, $message, NULL, $headers)) { $text = sprintf(i18n::s('Your request has been transmitted to %s. Check your mailbox for feed-back.'), Skin::build_link(Users::get_permalink($requested), Codes::beautify_title($requested['full_name']), 'user')); $context['text'] .= Skin::build_block($text, 'note'); } // follow-up navigation $context['text'] .= '<div>' . i18n::s('Where do you want to go now?') . '</div>'; $menu = array(); $menu[] = Skin::build_link($context['url_to_root'], i18n::s('Front page'), 'button'); $menu[] = Skin::build_link(Surfer::get_permalink(), i18n::s('My profile'), 'span'); $context['text'] .= Skin::finalize_list($menu, 'menu_bar'); // offer to request some owner } else { // provide feed-back to surfer $context['text'] .= Skin::build_block(i18n::s('You are not allowed to access this page.'), 'caution');
if (!$label) { $to[] = $address; } else { if (preg_match('/,/', $label)) { $label = implode(' ', array_reverse(preg_split("/[\\s,]+/", $label))); } $to[] = Mailer::encode_recipient($address, $label); } } } // subject $subject = $_REQUEST['letter_title']; // enable yacs codes in messages $text = Codes::beautify($_REQUEST['letter_body']); // preserve tagging as much as possible $message = Mailer::build_multipart($text); // reply-to: from the letters configuration file if (isset($context['letter_reply_to']) && $context['letter_reply_to']) { $headers[] = 'Reply-To: ' . $context['letter_reply_to']; } // list and count recipients $recipients_errors = $recipients_processed = $recipients_ok = 0; if (is_array($to)) { $context['text'] .= i18n::s('A message has been sent to:') . "\n" . '<ul>' . "\n"; foreach ($to as $address) { $context['text'] .= '<li>' . encode_field($address) . '</li>' . "\n"; } $context['text'] .= '</ul>' . "\n"; $recipients_processed = count($to); } elseif ($to) { $context['text'] .= i18n::s('A message has been sent to:') . ' ' . encode_field($to) . BR . "\n";
/** * send a short email message * * This is the function used by yacs to notify community members of various events. * * @param string sender address, use default system parameter if NULL * @param string recipient address * @param string subject * @param string actual message * @param mixed to be given to Mailer::post() * @param array to be given to Mailer::post() * @return TRUE on success, FALSE otherwise * * @see agents/messages.php * @see control/configure.php * @see query.php * @see shared/logger.php * @see users/users.php */ public static function notify($from, $to, $subject, $message, $headers = '', $attachments = NULL) { global $context; // email services have to be activated if (!isset($context['with_email']) || $context['with_email'] != 'Y') { return FALSE; } // use surfer's address only if this has been explicitly allowed if (!isset($context['mail_from_surfer']) || $context['mail_from_surfer'] != 'Y') { $from = NULL; } // ensure we have a sender if (!$from) { $from = Mailer::get_from_recipient(); } else { $subject .= ' [' . $context['site_name'] . ']'; } // allow for skinnable template $message = Skin::build_mail_message($message); // build multiple parts, for HTML rendering $message = Mailer::build_multipart($message); // do the job -- don't stop on error if (Mailer::post($from, $to, $subject, $message, $attachments, $headers)) { return TRUE; } return FALSE; }