xref: /plugin/recommend/helper/mail.php (revision 5187ba70cd5a5dd1c55421693af3a2580f04e1f3)
1*5187ba70SAnna Dabrowska<?php
2*5187ba70SAnna Dabrowska
3*5187ba70SAnna Dabrowskause dokuwiki\Extension\AuthPlugin;
4*5187ba70SAnna Dabrowska
5*5187ba70SAnna Dabrowska/**
6*5187ba70SAnna Dabrowska * Mail helper
7*5187ba70SAnna Dabrowska */
8*5187ba70SAnna Dabrowskaclass helper_plugin_recommend_mail extends DokuWiki_Plugin
9*5187ba70SAnna Dabrowska{
10*5187ba70SAnna Dabrowska    /**
11*5187ba70SAnna Dabrowska     * @param string $recipient
12*5187ba70SAnna Dabrowska     * @param string $mailtext
13*5187ba70SAnna Dabrowska     * @param string $sender
14*5187ba70SAnna Dabrowska     * @return void
15*5187ba70SAnna Dabrowska     */
16*5187ba70SAnna Dabrowska    public function sendMail($recipient, $mailtext, $sender)
17*5187ba70SAnna Dabrowska    {
18*5187ba70SAnna Dabrowska        global $INPUT;
19*5187ba70SAnna Dabrowska
20*5187ba70SAnna Dabrowska        $mailer = new Mailer();
21*5187ba70SAnna Dabrowska        $mailer->bcc($recipient);
22*5187ba70SAnna Dabrowska        $mailer->from($sender);
23*5187ba70SAnna Dabrowska
24*5187ba70SAnna Dabrowska        $subject = $INPUT->str('subject');
25*5187ba70SAnna Dabrowska        $mailer->subject($subject);
26*5187ba70SAnna Dabrowska        $mailer->setBody($mailtext);
27*5187ba70SAnna Dabrowska        $mailer->send();
28*5187ba70SAnna Dabrowska    }
29*5187ba70SAnna Dabrowska
30*5187ba70SAnna Dabrowska    /**
31*5187ba70SAnna Dabrowska     * Processes recipients from input and returns an array of emails
32*5187ba70SAnna Dabrowska     * with user groups resolved to individual users
33*5187ba70SAnna Dabrowska     *
34*5187ba70SAnna Dabrowska     * @param string $recipients
35*5187ba70SAnna Dabrowska     * @return array
36*5187ba70SAnna Dabrowska     * @throws Exception
37*5187ba70SAnna Dabrowska     */
38*5187ba70SAnna Dabrowska    public function resolveRecipients($recipients)
39*5187ba70SAnna Dabrowska    {
40*5187ba70SAnna Dabrowska        $resolved = [];
41*5187ba70SAnna Dabrowska
42*5187ba70SAnna Dabrowska        $recipients = explode(',', $recipients);
43*5187ba70SAnna Dabrowska
44*5187ba70SAnna Dabrowska        /** @var AuthPlugin $auth */
45*5187ba70SAnna Dabrowska        global $auth;
46*5187ba70SAnna Dabrowska
47*5187ba70SAnna Dabrowska        foreach ($recipients as $recipient) {
48*5187ba70SAnna Dabrowska            $recipient = trim($recipient);
49*5187ba70SAnna Dabrowska
50*5187ba70SAnna Dabrowska            if ($recipient[0] === '@') {
51*5187ba70SAnna Dabrowska                $users = $auth->retrieveUsers(0, 0, ['grps' => substr($recipient, 1)]);
52*5187ba70SAnna Dabrowska                foreach ($users as $user) {
53*5187ba70SAnna Dabrowska                    $resolved[] = $user['mail'];
54*5187ba70SAnna Dabrowska                }
55*5187ba70SAnna Dabrowska            } else {
56*5187ba70SAnna Dabrowska                if (!mail_isvalid($recipient)) {
57*5187ba70SAnna Dabrowska                    throw new \Exception($this->getLang('err_recipient'));
58*5187ba70SAnna Dabrowska                }
59*5187ba70SAnna Dabrowska                $resolved[] = $recipient;
60*5187ba70SAnna Dabrowska            }
61*5187ba70SAnna Dabrowska        }
62*5187ba70SAnna Dabrowska        return $resolved;
63*5187ba70SAnna Dabrowska    }
64*5187ba70SAnna Dabrowska}
65