f133484d9c3e13edf15d47472cc78c44d2bd5a37
4 * SpamCop plugin - functions
6 * @copyright 1999-2012 The SquirrelMail Project Team
7 * @license http://opensource.org/licenses/gpl-license.php GNU Public License
13 /* sqgetGlobalVar(), getPref(), setPref(), sqimap functions are used */
16 * Disable Quick Reporting by default
17 * @global boolean $spamcop_quick_report
18 * @since 1.4.3 and 1.5.0
20 global $spamcop_quick_report;
21 $spamcop_quick_report = false;
24 * Loads spamcop settings and validates some of values (make '' into 'default', etc.)
26 * Internal function used to reduce size of setup.php
30 function spamcop_load_function() {
31 global $username, $data_dir, $spamcop_enabled, $spamcop_delete, $spamcop_save,
32 $spamcop_method, $spamcop_id, $spamcop_quick_report, $spamcop_type;
34 $spamcop_enabled = getPref($data_dir, $username, 'spamcop_enabled');
35 $spamcop_delete = getPref($data_dir, $username, 'spamcop_delete');
36 $spamcop_save = getPref($data_dir, $username, 'spamcop_save',true);
37 $spamcop_method = getPref($data_dir, $username, 'spamcop_method');
38 $spamcop_type = getPref($data_dir, $username, 'spamcop_type');
39 $spamcop_id = getPref($data_dir, $username, 'spamcop_id');
40 if ($spamcop_method == '') {
41 // Default to web_form. It is faster.
42 $spamcop_method = 'web_form';
43 setPref($data_dir, $username, 'spamcop_method', $spamcop_method);
45 if (! $spamcop_quick_report && $spamcop_method=='quick_email') {
46 $spamcop_method = 'web_form';
47 setPref($data_dir, $username, 'spamcop_method', $spamcop_method);
49 if ($spamcop_type == '') {
50 $spamcop_type = 'free';
51 setPref($data_dir, $username, 'spamcop_type', $spamcop_type);
53 if ($spamcop_id == '')
58 * Add spamcop link to read_body (internal function)
62 function spamcop_show_link_function(&$links) {
63 global $spamcop_enabled, $spamcop_method, $spamcop_quick_report;
65 if (! $spamcop_enabled)
69 sqgetGlobalVar('passed_id', $passed_id, SQ_FORM
, NULL, SQ_TYPE_BIGINT
);
70 sqgetGlobalVar('passed_ent_id',$passed_ent_id,SQ_FORM
);
71 sqgetGlobalVar('mailbox', $mailbox, SQ_FORM
);
72 if ( sqgetGlobalVar('startMessage', $startMessage, SQ_FORM
) ) {
73 $startMessage = (int)$startMessage;
77 // catch unset passed_ent_id
78 if (! sqgetGlobalVar('passed_ent_id', $passed_ent_id, SQ_FORM
) ) {
83 Catch situation when user uses quick_email and does not update
84 preferences. User gets web_form link. If prefs are set to
85 quick_email format - they will be updated after clicking the link
87 if (! $spamcop_quick_report && $spamcop_method=='quick_email') {
88 $spamcop_method = 'web_form';
91 // FIXME: do we need this javascript and if so, fix it
92 // <script type="text/javascript">
93 // document.write('<a href="../plugins/spamcop/spamcop.php?passed_id=<php echo urlencode($passed_id); >&js_web=1&mailbox=<php echo urlencode($mailbox); >&passed_ent_id=<php echo urlencode($passed_ent_id); >" target="_blank">');
94 //document.write("<php echo _("Report as Spam"); >");
95 //document.write("</a>");
99 $url = '../plugins/spamcop/spamcop.php?passed_id=' . urlencode($passed_id) .
100 '&mailbox=' . urlencode($mailbox) . '&startMessage=' . urlencode($startMessage) .
101 '&passed_ent_id=' . urlencode($passed_ent_id);
102 if ( $spamcop_method == 'web_form' && checkForJavascript() ) {
103 $url .= '&js_web=1';
106 $links[] = array ( 'URL' => $url,
107 'Text' => _("Report as Spam")
112 * Add spamcop option block (internal function)
116 function spamcop_options_function() {
117 global $optpage_blocks;
119 $optpage_blocks[] = array(
120 'name' => _("SpamCop - Spam Reporting"),
121 'url' => '../plugins/spamcop/options.php',
122 'desc' => _("Help fight the battle against unsolicited email. SpamCop reads the spam email and determines the correct addresses to send complaints to. Quite fast, really smart, and easy to use."),
128 * Process messages that are submitted by email.
130 * Delete spam if user wants to delete it. Don't save submitted emails.
131 * Implement overrides that fix compose.php behavior.
135 function spamcop_while_sending_function() {
136 global $mailbox, $spamcop_delete, $spamcop_save, $spamcop_is_composing, $auto_expunge,
137 $username, $imapServerAddress, $imapPort;
139 if (sqgetGlobalVar('spamcop_is_composing' , $spamcop_is_composing)) {
140 // delete spam message
141 if ($spamcop_delete) {
142 $imapConnection = sqimap_login($username, false, $imapServerAddress, $imapPort, 0);
143 sqimap_mailbox_select($imapConnection, $mailbox);
144 sqimap_msgs_list_delete($imapConnection, $mailbox, array($spamcop_is_composing));
146 sqimap_mailbox_expunge($imapConnection, $mailbox, true);
148 if (! $spamcop_save) {
149 // disable use of send folder.
150 // Temporally override in order to disable saving of 'reply anyway' messages.
151 global $default_move_to_sent;
152 $default_move_to_sent=false;
154 // change default email composition setting. Plugin always operates in right frame.
155 // make sure that compose.php redirects to right page. Temporally override.
156 global $compose_new_win;
157 $compose_new_win = false;
162 * Internal spamcop plugin function.
164 * It is used to display similar action links.
167 function spamcop_enable_disable($option,$disable_action,$enable_action) {
169 $ret= _("Enabled") . " (<a href=\"options.php?action=$disable_action\">" . _("Disable it") . "</a>)\n";
171 $ret = _("Disabled") . " (<a href=\"options.php?action=$enable_action\">" . _("Enable it") . "</a>)\n";
177 * Stores message in attachment directory, when email based reports are used
179 * @todo Duplicate code in src/compose.php
181 function spamcop_getMessage_RFC822_Attachment($message, $composeMessage, $passed_id,
182 $passed_ent_id='', $imapConnection) {
184 global $username, $attachment_dir;
186 if (!$passed_ent_id) {
187 $body_a = sqimap_run_command($imapConnection,
188 'FETCH '.$passed_id.' RFC822',
189 TRUE, $response, $readmessage,
192 $body_a = sqimap_run_command($imapConnection,
193 'FETCH '.$passed_id.' BODY['.$passed_ent_id.']',
194 TRUE, $response, $readmessage,TRUE);
195 $message = $message->parent
;
197 if ($response == 'OK') {
198 array_shift($body_a);
199 $body = implode('', $body_a) . "\r\n";
201 $filename = sq_get_attach_tempfile();
202 $hashed_attachment_dir = getHashedDir($username, $attachment_dir);
204 $fp = fopen("$hashed_attachment_dir/$filename", 'wb');
207 $composeMessage->initAttachment('message/rfc822','email.txt',
211 return $composeMessage;