1<?php
2/**
3 * Copyright 2012-2017 Horde LLC (http://www.horde.org/)
4 *
5 * See the enclosed file LICENSE for license information (ASL).  If you
6 * did not receive this file, see http://www.horde.org/licenses/apache.
7 *
8 * @author   Jan Schneider <jan@horde.org>
9 * @category Horde
10 * @license  http://www.horde.org/licenses/apache ASL
11 * @package  Ingo
12 */
13
14/**
15 * The form to manage spam filters.
16 *
17 * @author   Jan Schneider <jan@horde.org>
18 * @category Horde
19 * @license  http://www.horde.org/licenses/apache ASL
20 * @package  Ingo
21 */
22class Ingo_Form_Spam extends Ingo_Form_Base
23{
24    /**
25     * The form field for the spam folder.
26     *
27     * @var Horde_Form_Variable
28     */
29    public $folder_var;
30
31    public function __construct($vars, $title = '', $name = null)
32    {
33        parent::__construct($vars, $title, $name);
34
35        $v = $this->addVariable(_("Spam Level:"), 'level', 'int', true, false, _("Messages with a likely spam score greater than or equal to this number will be treated as spam."));
36        $v->setHelp('spam-level');
37
38        $this->folder_var = $this->addVariable(_("Folder to receive spam:"), 'folder', 'ingo_folders', true);
39        $this->folder_var->setHelp('spam-folder');
40        $this->addHidden('', 'actionID', 'text', false);
41        $this->addHidden('', 'folder_new', 'text', false);
42
43        $this->setButtons(_("Save"));
44    }
45
46    public function renderActive(
47        $renderer = null, $vars = null, $action = '', $method = 'get',
48        $enctype = null, $focus = true
49    )
50    {
51        if (is_null($vars)) {
52            $vars = $this->_vars;
53        }
54
55        $vars = clone $vars;
56        unset($vars->folder_new);
57
58        parent::renderActive(
59            $renderer, $vars, $action, $method, $enctype, $focus
60        );
61    }
62
63    public function validate($vars = null, $canAutoFill = false)
64    {
65        if (is_null($vars)) {
66            $vars = $this->_vars;
67        }
68        if (strlen($vars->get('folder_new'))) {
69            $this->folder_var->type->newFolderSet = true;
70        }
71        return parent::validate($vars, $canAutoFill);
72    }
73
74}
75