xref: /plugin/publish/action/mail.php (revision 12699d357ad032bd483ad907ad7e4d9bda88b394)
1698cf656SMichael Große<?php
2698cf656SMichael Große/**
3698cf656SMichael Große * @license GNU General Public License, version 2
4698cf656SMichael Große */
5698cf656SMichael Große
6698cf656SMichael Große
7698cf656SMichael Großeif (!defined('DOKU_INC')) die();
8698cf656SMichael Große
9698cf656SMichael Große
10698cf656SMichael Große/**
11698cf656SMichael Große * Class action_plugin_publish_mail
12698cf656SMichael Große *
13698cf656SMichael Große * @author Michael Große <grosse@cosmocode.de>
14698cf656SMichael Große */
15698cf656SMichael Großeclass action_plugin_publish_mail extends DokuWiki_Action_Plugin {
16698cf656SMichael Große
17a9071e04SMichael Große    /**
18a9071e04SMichael Große     * @var helper_plugin_publish
19a9071e04SMichael Große     */
20a9071e04SMichael Große    private $hlp;
21a9071e04SMichael Große
22a9071e04SMichael Große    function __construct() {
23a9071e04SMichael Große        $this->hlp = plugin_load('helper','publish');
24a9071e04SMichael Große    }
25a9071e04SMichael Große
26698cf656SMichael Große    public function register(Doku_Event_Handler $controller) {
27698cf656SMichael Große
28698cf656SMichael Große        $controller->register_hook('IO_WIKIPAGE_WRITE', 'AFTER', $this, 'send_change_mail', array());
29698cf656SMichael Große    }
30698cf656SMichael Große
31698cf656SMichael Große    // Funktion versendet eine Änderungsmail
32698cf656SMichael Große    function send_change_mail(&$event, $param) {
33698cf656SMichael Große        global $ID;
34698cf656SMichael Große        global $ACT;
35698cf656SMichael Große        global $REV;
36698cf656SMichael Große        global $INFO;
37698cf656SMichael Große        global $conf;
38698cf656SMichael Große        $data = pageinfo();
39698cf656SMichael Große
40698cf656SMichael Große        if ($ACT != 'save') {
41698cf656SMichael Große            return true;
42698cf656SMichael Große        }
43698cf656SMichael Große        if (!$event->data[3]) {
44698cf656SMichael Große            return true;
45698cf656SMichael Große        }
46698cf656SMichael Große
47698cf656SMichael Große        // get mail receiver
48698cf656SMichael Große        //$receiver = 'grosse@cosmocode.de';//
49698cf656SMichael Große        $receiver = $this->getConf('apr_mail_receiver');
50698cf656SMichael Große
51698cf656SMichael Große        // get mail sender
52698cf656SMichael Große        $sender = $data['userinfo']['mail'];
53698cf656SMichael Große
54698cf656SMichael Große        if ($sender == $receiver) {
55698cf656SMichael Große            dbglog('Mail not send. Sender and receiver are identical.');
56698cf656SMichael Große//            return true;
57698cf656SMichael Große        }
58698cf656SMichael Große
59698cf656SMichael Große        if ($INFO['isadmin'] == '1') {
60698cf656SMichael Große            dbglog('Mail not send. Sender is admin.');
61698cf656SMichael Große//            return true;
62698cf656SMichael Große        }
63698cf656SMichael Große
64698cf656SMichael Große        // get mail subject
65698cf656SMichael Große        //$timestamp = time(); //$data['meta']['date']['modified'];
66698cf656SMichael Große        $timestamp = $data['lastmod'];
67698cf656SMichael Große//        date_default_timezone_set("Europe/Paris");
68698cf656SMichael Große        $datum = date("d.m.Y",$timestamp);
69698cf656SMichael Große        $uhrzeit = date("H:i",$timestamp);
70698cf656SMichael Große        $subject = $this->getLang('apr_mail_subject') . ': ' . $ID . ' - ' . $datum . ' ' . $uhrzeit;
71698cf656SMichael Große        dbglog($subject);
72698cf656SMichael Große
73698cf656SMichael Große        // get mail text
74698cf656SMichael Große        //$body = 'apr_changemail_text';
75698cf656SMichael Große        $body = $this->getLang('apr_changemail_text');
76698cf656SMichael Große        $body = str_replace('@DOKUWIKIURL@', DOKU_URL, $body);
77698cf656SMichael Große        $body = str_replace('@FULLNAME@', $data['userinfo']['name'], $body);
78698cf656SMichael Große        $body = str_replace('@TITLE@', $conf['title'], $body);
79698cf656SMichael Große
80*12699d35SMichael Große        /** @var helper_plugin_publish $helper */
81*12699d35SMichael Große        $helper = plugin_load('helper','publish');
82*12699d35SMichael Große        $rev = $data['lastmod'];
83*12699d35SMichael Große
84*12699d35SMichael Große        /**
85*12699d35SMichael Große         * todo it seems like the diff to the previous version is not that helpful after all. Check and remove.
86*12699d35SMichael Große        $changelog = new PageChangelog($ID);
87*12699d35SMichael Große        $difflinkPrev = $helper->getDifflink($ID, $changelog->getRelativeRevision($rev,-1), $rev);
88*12699d35SMichael Große        $difflinkPrev = '"' . $difflinkPrev . '"';
89*12699d35SMichael Große        $body = str_replace('@CHANGESPREV@', $difflinkPrev, $body);
90*12699d35SMichael Große        */
91*12699d35SMichael Große
92*12699d35SMichael Große        $difflinkApr = $helper->getDifflink($ID, $helper->getLatestApprovedRevision($ID), $rev);
93*12699d35SMichael Große        $difflinkApr = '"' . $difflinkApr . '"';
94*12699d35SMichael Große        $body = str_replace('@CHANGES@', $difflinkApr, $body);
95*12699d35SMichael Große
96698cf656SMichael Große        $apprejlink = $this->apprejlink($ID, $data['lastmod']);
97698cf656SMichael Große        $apprejlink = '"' . $apprejlink . '"';
98698cf656SMichael Große        $body = str_replace('@APPREJ@', $apprejlink, $body);
99698cf656SMichael Große
100*12699d35SMichael Große        dbglog('mail_send?');
101*12699d35SMichael Große        $returnStatus = mail_send($receiver, $subject, $body, $sender);
102*12699d35SMichael Große        dbglog($returnStatus);
103*12699d35SMichael Große        dbglog($body);
104*12699d35SMichael Große        return $returnStatus;
105698cf656SMichael Große    }
106698cf656SMichael Große
107698cf656SMichael Große    function getLastApproved() {
108698cf656SMichael Große        $data = pageinfo();
109698cf656SMichael Große        if (!$data['meta']['approval']) {
110698cf656SMichael Große            return '';
111698cf656SMichael Große        }
112698cf656SMichael Große        $allapproved = array_keys($data['meta']['approval']);
113698cf656SMichael Große        dbglog('$allapproved: ' . $allapproved);
114698cf656SMichael Große        rsort($allapproved);
115698cf656SMichael Große
116698cf656SMichael Große        $latestapproved = $allapproved[0];
117698cf656SMichael Große        dbglog('$latest_rev: ' . $latestapproved);
118698cf656SMichael Große
119698cf656SMichael Große        return $latestapproved;
120698cf656SMichael Große    }
121698cf656SMichael Große
122698cf656SMichael Große    /**
123698cf656SMichael Große     * erzeugt den Link auf die edit-Seite
124698cf656SMichael Große     *
125698cf656SMichael Große     * @param $id
126698cf656SMichael Große     * @param $rev
127698cf656SMichael Große     * @return mixed|string
128698cf656SMichael Große     */
129698cf656SMichael Große    function apprejlink($id, $rev) {
130698cf656SMichael Große        $data = pageinfo();
131698cf656SMichael Große
132698cf656SMichael Große        $options = array(
133698cf656SMichael Große             'rev'=> $rev,
134698cf656SMichael Große             'do'=>'edit',
135698cf656SMichael Große             'suggestfrom' => $data['userinfo']['mail'],
136698cf656SMichael Große        );
137698cf656SMichael Große        $difflink = wl($id, $options, true, '&');
138698cf656SMichael Große//        $difflink = str_replace('//', '/', $difflink);
139698cf656SMichael Große//        $difflink = str_replace('http:/', 'http://', $difflink);
140698cf656SMichael Große
141698cf656SMichael Große        return $difflink;
142698cf656SMichael Große    }
143698cf656SMichael Große
144698cf656SMichael Große    /**
145698cf656SMichael Große     * erzeugt den Diff-Link
146698cf656SMichael Große     */
147698cf656SMichael Große    function difflink($id, $rev1, $rev2) {
148698cf656SMichael Große        $data = pageinfo();
149698cf656SMichael Große
150698cf656SMichael Große        if ($rev1 == $rev2) {
151698cf656SMichael Große//            return '';
152698cf656SMichael Große        }
153698cf656SMichael Große        $options = array(
154698cf656SMichael Große            'do' => 'diff',
155698cf656SMichael Große            'rev2[0]' => 'lastappr',
156698cf656SMichael Große            'rev2[1]' => $rev2,
157698cf656SMichael Große            'suggestfrom' => $data['userinfo']['mail'],
158698cf656SMichael Große        );
159698cf656SMichael Große
160698cf656SMichael Große//        $difflink = DOKU_URL . wl($id, '&rev2[]=' . $rev1 . '&rev2[]=' . $rev2 . '&do[diff]=1&suggestfrom=' . $data['userinfo']['mail'], '', false, '&');
161698cf656SMichael Große        $difflink = wl($id, $options,true, '&');
162698cf656SMichael Große        //$difflink = str_replace('//', '/', $difflink);
163698cf656SMichael Große        //$difflink = str_replace('http:/', 'http://', $difflink);
164698cf656SMichael Große
165698cf656SMichael Große        return $difflink;
166698cf656SMichael Große    }
167698cf656SMichael Große
168698cf656SMichael Große}
169