add_texts('localization/', true); $this->rcmail_inst = rcmail::get_instance(); $this->soap = new SoapClient(null, array('location' => $this->rcmail_inst->config->get('soap_url').'index.php', 'uri' => $this->rcmail_inst->config->get('soap_url'))); $this->register_action('plugin.ispconfig3_spam', array($this, 'init_html')); $this->register_action('plugin.ispconfig3_spam.save', array($this, 'save')); $this->api->output->add_handler('spam_form', array($this, 'gen_form')); $this->api->output->add_handler('sectionname_spam', array($this, 'prefs_section_name')); $this->api->output->add_handler('spam_table', array($this, 'gen_table')); $this->include_script('spam.js'); } function init_html() { $this->rcmail_inst->output->set_pagetitle($this->gettext('junk')); $this->rcmail_inst->output->send('ispconfig3_spam.spam'); } function prefs_section_name() { return $this->gettext('junk'); } function save() { $policy_id = get_input_value('_spampolicy_name', RCUBE_INPUT_POST); $move_junk = get_input_value('_spammove', RCUBE_INPUT_POST); if(!$move_junk) $move_junk = 'n'; else $move_junk = 'y'; try { $session_id = $this->soap->login($this->rcmail_inst->config->get('remote_soap_user'),$this->rcmail_inst->config->get('remote_soap_pass')); $spam_user = $this->soap->mail_spamfilter_user_get($session_id, array('email' => $this->rcmail_inst->user->data['username'])); if ($spam_user[0]['id'] == '') { $mail_user = $this->soap->mail_user_get($session_id, array('email' => $this->rcmail_inst->user->data['username'])); $params = array('server_id' => $mail_user[0]['server_id'], 'priority' => '5', 'policy_id' => $policy_id, 'email' => $this->rcmail_inst->user->data['username'], 'fullname' => $this->rcmail_inst->user->data['username'], 'local' => 'Y'); $uid = $this->soap->client_get_id($session_id, $mail_user[0]['sys_userid']); $add = $this->soap->mail_spamfilter_user_add($session_id, $uid, $params); $spam_user = $this->soap->mail_spamfilter_user_get($session_id, array('email' => $this->rcmail_inst->user->data['username'])); } else { $mail_user = $this->soap->mail_user_get($session_id, array('email' => $this->rcmail_inst->user->data['username'])); $uid = $this->soap->client_get_id($session_id, $mail_user[0]['sys_userid']); } $params = array('server_id' => $spam_user[0]['server_id'], 'priority' => $spam_user[0]['priority'], 'policy_id' => $policy_id, 'email' => $this->rcmail_inst->user->data['username'], 'fullname' => $this->rcmail_inst->user->data['username'], 'local' => $spam_user[0]['local']); $update = $this->soap->mail_spamfilter_user_update($session_id, $uid, $spam_user[0]['id'], $params); $params = array('server_id' => $mail_user[0]['server_id'], 'email' => $this->rcmail_inst->user->data['username'], 'name' => $mail_user[0]['name'], 'uid' => $mail_user[0]['uid'], 'gid' => $mail_user[0]['gid'], 'maildir' => $mail_user[0]['maildir'], 'quota' => $mail_user[0]['quota'], 'homedir' => $mail_user[0]['homedir'], 'autoresponder' => $mail_user[0]['autoresponder'], 'autoresponder_text' => $mail_user[0]['autoresponder_text'], 'autoresponder_start_date' => $mail_user[0]['autoresponder_start_date'], 'autoresponder_end_date' => $mail_user[0]['autoresponder_end_date'], 'move_junk' => $move_junk, 'custom_mailfilter' => $mail_user[0]['custom_mailfilter'], 'postfix' => $mail_user[0]['postfix'], 'access' => $mail_user[0]['access'], 'disableimap' => $mail_user[0]['disableimap'], 'disablepop3' => $mail_user[0]['disablepop3'], 'disabledeliver' => $mail_user[0]['disabledeliver'], 'disablesmtp' => $mail_user[0]['disablesmtp']); $update = $this->soap->mail_user_update($session_id, $uid, $mail_user[0]['mailuser_id'], $params); $this->soap->logout($session_id); $this->rcmail_inst->output->command('display_message', $this->gettext('successfullysaved'), 'confirmation'); } catch (SoapFault $e) { $this->rcmail_inst->output->command('display_message', 'Soap Error: '.$e->getMessage(), 'error'); } $this->init_html(); } function gen_form() { $policy_name = array(); $policy_id = array(); try { $session_id = $this->soap->login($this->rcmail_inst->config->get('remote_soap_user'),$this->rcmail_inst->config->get('remote_soap_pass')); $spam_user = $this->soap->mail_spamfilter_user_get($session_id, array('email' => $this->rcmail_inst->user->data['username'])); $mail_user = $this->soap->mail_user_get($session_id, array('email' => $this->rcmail_inst->user->data['username'])); $policy = $this->soap->mail_policy_get($session_id, array(1 => 1)); $policy_sel = $this->soap->mail_policy_get($session_id, array("id" => $spam_user[0]['policy_id'])); $this->soap->logout($session_id); for ( $i = 0; $i < count($policy); $i++ ) { $policy_name[] = $policy[$i]['policy_name']; $policy_id[] = $policy[$i]['id']; } } catch (SoapFault $e) { $this->rcmail_inst->output->command('display_message', 'Soap Error: '.$e->getMessage(), 'error'); } $enabled = $mail_user[0]['move_junk']; if ($enabled == 'y') $enabled = 1; else $enabled = 0; $this->rcmail_inst->output->set_env('framed', true); $attrib_str = create_attrib_string($attrib, array('style', 'class', 'id', 'cellpadding', 'cellspacing', 'border', 'summary')); $out .= '
\n"; $this->rcmail_inst->output->add_gui_object('spamform', 'spam-form'); return $out; } function gen_table($attrib) { $this->rcmail_inst->output->set_env('framed', true); $out = '\n"; return $out; } private function _spam_row($spam_table,$name,$tag,$kill,$attrib) { $spam_table->add(array('class' => 'policy'), $name); $spam_table->add(array('class' => 'value'), ' '.$tag); $spam_table->add(array('class' => 'value'), $kill); return $spam_table; } } ?>