1*4654e4deSAdrian Lang<?php 2*4654e4deSAdrian Langrequire_once DOKU_PLUGIN . 'action.php'; 3*4654e4deSAdrian Lang 4*4654e4deSAdrian Langclass action_plugin_recommend extends DokuWiki_Action_Plugin { 5*4654e4deSAdrian Lang function getInfo(){ 6*4654e4deSAdrian Lang return confToHash(dirname(__FILE__).'/INFO.txt'); 7*4654e4deSAdrian Lang } 8*4654e4deSAdrian Lang 9*4654e4deSAdrian Lang function register($controller) { 10*4654e4deSAdrian Lang foreach(array('ACTION_ACT_PREPROCESS', 'TPL_ACT_UNKNOWN') as $event) { 11*4654e4deSAdrian Lang $controller->register_hook($event, 'BEFORE', $this, '_handle'); 12*4654e4deSAdrian Lang } 13*4654e4deSAdrian Lang } 14*4654e4deSAdrian Lang 15*4654e4deSAdrian Lang function _handle($event, $param) { 16*4654e4deSAdrian Lang global $INFO; 17*4654e4deSAdrian Lang if($event->data != 'recommend' || !isset($INFO['userinfo'])) { 18*4654e4deSAdrian Lang return; 19*4654e4deSAdrian Lang } 20*4654e4deSAdrian Lang 21*4654e4deSAdrian Lang $event->preventDefault(); 22*4654e4deSAdrian Lang 23*4654e4deSAdrian Lang if ($event->name === 'ACTION_ACT_PREPROCESS') { 24*4654e4deSAdrian Lang return; 25*4654e4deSAdrian Lang } 26*4654e4deSAdrian Lang 27*4654e4deSAdrian Lang $event->stopPropagation(); 28*4654e4deSAdrian Lang 29*4654e4deSAdrian Lang if($_SERVER['REQUEST_METHOD'] == 'POST' && $this->_handle_post()) { 30*4654e4deSAdrian Lang return; 31*4654e4deSAdrian Lang } 32*4654e4deSAdrian Lang $this->_show_form(); 33*4654e4deSAdrian Lang } 34*4654e4deSAdrian Lang 35*4654e4deSAdrian Lang function _show_form() { 36*4654e4deSAdrian Lang global $ID; 37*4654e4deSAdrian Lang $name = isset($_REQUEST['r_name']) ? $_REQUEST['r_name'] : ''; 38*4654e4deSAdrian Lang $mail = isset($_REQUEST['r_email']) ? $_REQUEST['r_email'] : ''; 39*4654e4deSAdrian Lang $comment = isset($_REQUEST['comment']) ? $_REQUEST['r_comment'] : ''; 40*4654e4deSAdrian Lang 41*4654e4deSAdrian Lang $form = new Doku_Form('recommend_plugin', '?do=recommend'); 42*4654e4deSAdrian Lang $form->addHidden('id', $ID); 43*4654e4deSAdrian Lang $form->startFieldset('Recommend page “' . hsc($ID). '”'); 44*4654e4deSAdrian Lang $form->addElement(form_makeTextField('r_name',$name,'Recipient name')); 45*4654e4deSAdrian Lang $form->addElement(form_makeTextField('r_email',$mail,'Recipient email address')); 46*4654e4deSAdrian Lang $form->addElement('<label><span>'.hsc('Additional comment').'</span>'. 47*4654e4deSAdrian Lang '<textarea name="comment" rows="3" cols="10" class="edit">' . 48*4654e4deSAdrian Lang $comment . '</textarea></label>'); 49*4654e4deSAdrian Lang $form->addElement(form_makeButton('submit','', 'Send recommendation')); 50*4654e4deSAdrian Lang $form->printForm(); 51*4654e4deSAdrian Lang } 52*4654e4deSAdrian Lang 53*4654e4deSAdrian Lang function _handle_post() { 54*4654e4deSAdrian Lang if(!isset($_POST['r_email']) || !mail_isvalid($_POST['r_email'])) { 55*4654e4deSAdrian Lang msg('Invalid email address submitted', -1); 56*4654e4deSAdrian Lang return false; 57*4654e4deSAdrian Lang } 58*4654e4deSAdrian Lang $email = $_POST['r_email']; 59*4654e4deSAdrian Lang 60*4654e4deSAdrian Lang if(!isset($_POST['id']) || !page_exists($_POST['id'])) { 61*4654e4deSAdrian Lang msg('Invalid page submitted', -1); 62*4654e4deSAdrian Lang return false; 63*4654e4deSAdrian Lang } 64*4654e4deSAdrian Lang $page = $_POST['id']; 65*4654e4deSAdrian Lang 66*4654e4deSAdrian Lang if(!isset($_POST['r_name']) || trim($_POST['r_name']) === '') { 67*4654e4deSAdrian Lang msg('Invalid name submitted', -1); 68*4654e4deSAdrian Lang return false; 69*4654e4deSAdrian Lang } 70*4654e4deSAdrian Lang $name = $_POST['r_name']; 71*4654e4deSAdrian Lang 72*4654e4deSAdrian Lang $comment = isset($_POST['comment']) ? $_POST['comment'] : null; 73*4654e4deSAdrian Lang 74*4654e4deSAdrian Lang $mailtext = file_get_contents(dirname(__FILE__).'/template.txt'); 75*4654e4deSAdrian Lang 76*4654e4deSAdrian Lang global $conf; 77*4654e4deSAdrian Lang global $USERINFO; 78*4654e4deSAdrian Lang foreach(array('NAME' => $name, 79*4654e4deSAdrian Lang 'PAGE' => $page, 80*4654e4deSAdrian Lang 'SITE' => $conf['title'], 81*4654e4deSAdrian Lang 'URL' => wl($page, '', true), 82*4654e4deSAdrian Lang 'COMMENT' => $comment, 83*4654e4deSAdrian Lang 'AUTHOR' => $USERINFO['name']) as $var => $val) { 84*4654e4deSAdrian Lang $mailtext = str_replace('@' . $var . '@', $val, $mailtext); 85*4654e4deSAdrian Lang } 86*4654e4deSAdrian Lang $mailtext = preg_replace('/\n{4,}/', "\n\n\n", $mailtext); 87*4654e4deSAdrian Lang 88*4654e4deSAdrian Lang mail_send($email, 'Page recommendation', $mailtext); 89*4654e4deSAdrian Lang 90*4654e4deSAdrian Lang echo 'Thanks for recommending our site.'; 91*4654e4deSAdrian Lang return true; 92*4654e4deSAdrian Lang } 93*4654e4deSAdrian Lang 94*4654e4deSAdrian Lang} 95