| 
							- <?php
 - 
 - namespace dokuwiki\Subscriptions;
 - 
 - use Diff;
 - use InlineDiffFormatter;
 - use UnifiedDiffFormatter;
 - 
 - class PageSubscriptionSender extends SubscriptionSender
 - {
 -     /**
 -      * Send the diff for some page change
 -      *
 -      * @param string   $subscriber_mail The target mail address
 -      * @param string   $template        Mail template ('subscr_digest', 'subscr_single', 'mailtext', ...)
 -      * @param string   $id              Page for which the notification is
 -      * @param int|null $rev             Old revision if any
 -      * @param string   $summary         Change summary if any
 -      * @param int|null $current_rev     New revision if any
 -      *
 -      * @return bool                     true if successfully sent
 -      */
 -     public function sendPageDiff($subscriber_mail, $template, $id, $rev = null, $summary = '', $current_rev = null)
 -     {
 -         global $DIFF_INLINESTYLES;
 - 
 -         // prepare replacements (keys not set in hrep will be taken from trep)
 -         $trep = [
 -             'PAGE' => $id,
 -             'NEWPAGE' => wl($id, $current_rev ? ('rev=' . $current_rev) : '', true, '&'),
 -             'SUMMARY' => $summary,
 -             'SUBSCRIBE' => wl($id, ['do' => 'subscribe'], true, '&'),
 -         ];
 -         $hrep = [];
 - 
 -         if ($rev) {
 -             $subject = 'changed';
 -             $trep['OLDPAGE'] = wl($id, "rev=$rev", true, '&');
 - 
 -             $old_content = rawWiki($id, $rev);
 -             $new_content = rawWiki($id);
 - 
 -             $df = new Diff(
 -                 explode("\n", $old_content),
 -                 explode("\n", $new_content)
 -             );
 -             $dformat = new UnifiedDiffFormatter();
 -             $tdiff = $dformat->format($df);
 - 
 -             $DIFF_INLINESTYLES = true;
 -             $df = new Diff(
 -                 explode("\n", $old_content),
 -                 explode("\n", $new_content)
 -             );
 -             $dformat = new InlineDiffFormatter();
 -             $hdiff = $dformat->format($df);
 -             $hdiff = '<table>' . $hdiff . '</table>';
 -             $DIFF_INLINESTYLES = false;
 -         } else {
 -             $subject = 'newpage';
 -             $trep['OLDPAGE'] = '---';
 -             $tdiff = rawWiki($id);
 -             $hdiff = nl2br(hsc($tdiff));
 -         }
 - 
 -         $trep['DIFF'] = $tdiff;
 -         $hrep['DIFF'] = $hdiff;
 - 
 -         $headers = ['Message-Id' => $this->getMessageID($id)];
 -         if ($rev) {
 -             $headers['In-Reply-To'] = $this->getMessageID($id, $rev);
 -         }
 - 
 -         return $this->send(
 -             $subscriber_mail,
 -             $subject,
 -             $id,
 -             $template,
 -             $trep,
 -             $hrep,
 -             $headers
 -         );
 -     }
 - }
 
 
  |