1<?php 2/** 3 * @package Whups 4 */ 5class Whups_Form_AddComment extends Horde_Form 6{ 7 8 public function __construct(&$vars, $title = '') 9 { 10 global $conf; 11 12 parent::__construct($vars, $title); 13 14 $this->addHidden('', 'id', 'int', true, true); 15 16 if (!$GLOBALS['registry']->getAuth()) { 17 $this->addVariable(_("Your Email Address"), 'user_email', 'email', true); 18 if (!empty($conf['guests']['captcha'])) { 19 $this->addVariable( 20 _("Spam protection"), 21 'captcha', 22 'figlet', 23 true, 24 null, 25 null, 26 array(Whups::getCAPTCHA(!$this->isSubmitted()), 27 $conf['guests']['figlet_font'])); 28 } 29 } 30 $this->addVariable(_("Comment"), 'newcomment', 'longtext', false); 31 $this->addVariable(_("Attachment"), 'newattachment', 'file', false); 32 $this->addVariable(_("Watch this ticket"), 'add_watch', 'boolean', false); 33 34 /* Group restrictions. */ 35 if ($GLOBALS['registry']->isAdmin(array('permission' => 'whups:admin')) || 36 $GLOBALS['injector']->getInstance('Horde_Perms')->hasPermission('whups:hiddenComments', $GLOBALS['registry']->getAuth(), Horde_Perms::EDIT)) { 37 $groups = $GLOBALS['injector']->getInstance('Horde_Group'); 38 $mygroups = $groups->listGroups($GLOBALS['registry']->getAuth()); 39 if ($mygroups) { 40 foreach (array_keys($mygroups) as $gid) { 41 $grouplist[$gid] = $groups->getName($gid, true); 42 } 43 asort($grouplist); 44 $grouplist = array_merge(array(0 => _("This comment is visible to everyone")), $grouplist); 45 $this->addVariable(_("Make this comment visible only to members of a group?"), 'group', 'enum', true, false, null, array($grouplist)); 46 } 47 } 48 } 49 50 public function validate(&$vars, $canAutoFill = false) 51 { 52 global $conf; 53 54 if (!parent::validate($vars, $canAutoFill)) { 55 if (!$GLOBALS['registry']->getAuth() && !empty($conf['guests']['captcha'])) { 56 $vars->remove('captcha'); 57 $this->removeVariable($varname = 'captcha'); 58 $this->insertVariableBefore('newcomment', _("Spam protection"), 'captcha', 'figlet', true, null, null, array(Whups::getCAPTCHA(true), $conf['guests']['figlet_font'])); 59 } 60 return false; 61 } 62 63 return true; 64 } 65 66} 67