3 * SpamCop plugin - functions
5 * @copyright (c) 1999-2005 The SquirrelMail Project Team
6 * @license http://opensource.org/licenses/gpl-license.php GNU Public License
12 /* sqgetGlobalVar(), getPref(), setPref(), sqimap functions are used */
15 * Disable Quick Reporting by default
16 * @global boolean $spamcop_quick_report
17 * @since 1.4.3 and 1.5.0
19 global $spamcop_quick_report;
20 $spamcop_quick_report = false;
23 * Loads spamcop settings and validates some of values (make '' into 'default', etc.)
25 * Internal function used to reduce size of setup.php
29 function spamcop_load_function() {
30 global $username, $data_dir, $spamcop_enabled, $spamcop_delete, $spamcop_save,
31 $spamcop_method, $spamcop_id, $spamcop_quick_report, $spamcop_type;
33 $spamcop_enabled = getPref($data_dir, $username, 'spamcop_enabled');
34 $spamcop_delete = getPref($data_dir, $username, 'spamcop_delete');
35 $spamcop_save = getPref($data_dir, $username, 'spamcop_save',true);
36 $spamcop_method = getPref($data_dir, $username, 'spamcop_method');
37 $spamcop_type = getPref($data_dir, $username, 'spamcop_type');
38 $spamcop_id = getPref($data_dir, $username, 'spamcop_id');
39 if ($spamcop_method == '') {
40 // Default to web_form. It is faster.
41 $spamcop_method = 'web_form';
42 setPref($data_dir, $username, 'spamcop_method', $spamcop_method);
44 if (! $spamcop_quick_report && $spamcop_method=='quick_email') {
45 $spamcop_method = 'web_form';
46 setPref($data_dir, $username, 'spamcop_method', $spamcop_method);
48 if ($spamcop_type == '') {
49 $spamcop_type = 'free';
50 setPref($data_dir, $username, 'spamcop_type', $spamcop_type);
52 if ($spamcop_id == '')
57 * Add spamcop link to read_body (internal function)
61 function spamcop_show_link_function() {
62 global $spamcop_enabled, $spamcop_method, $spamcop_quick_report,$javascript_on;
64 if (! $spamcop_enabled)
68 sqgetGlobalVar('passed_id', $passed_id, SQ_FORM
);
69 sqgetGlobalVar('passed_ent_id',$passed_ent_id,SQ_FORM
);
70 sqgetGlobalVar('mailbox', $mailbox, SQ_FORM
);
71 if ( sqgetGlobalVar('startMessage', $startMessage, SQ_FORM
) ) {
72 $startMessage = (int)$startMessage;
76 // catch unset passed_ent_id
77 if (! sqgetGlobalVar('passed_ent_id', $passed_ent_id, SQ_FORM
) ) {
84 Catch situation when user uses quick_email and does not update
85 preferences. User gets web_form link. If prefs are set to
86 quick_email format - they will be updated after clicking the link
88 if (! $spamcop_quick_report && $spamcop_method=='quick_email') {
89 $spamcop_method = 'web_form';
92 // Javascript is used only in web based reporting
93 // don't insert javascript if javascript is disabled
94 if ($spamcop_method == 'web_form' && $javascript_on) {
95 ?
><script language
="javascript" type
="text/javascript">
96 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">');
97 document
.write("<?php echo _("Report
as Spam
"); ?>");
98 document
.write("</a>");
101 ?
><a href
="../plugins/spamcop/spamcop.php?passed_id=<?php echo urlencode($passed_id); ?>&mailbox=<?php echo urlencode($mailbox); ?>&startMessage=<?php echo urlencode($startMessage); ?>&passed_ent_id=<?php echo urlencode($passed_ent_id); ?>">
102 <?php
echo _("Report as Spam"); ?
></a
>
108 * Add spamcop option block (internal function)
112 function spamcop_options_function() {
113 global $optpage_blocks;
115 $optpage_blocks[] = array(
116 'name' => _("SpamCop - Spam Reporting"),
117 'url' => '../plugins/spamcop/options.php',
118 '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."),
124 * Process messages that are submitted by email.
126 * Delete spam if user wants to delete it. Don't save submitted emails.
127 * Implement overrides that fix compose.php behavior.
131 function spamcop_while_sending_function() {
132 global $mailbox, $spamcop_delete, $spamcop_save, $spamcop_is_composing, $auto_expunge,
133 $username, $key, $imapServerAddress, $imapPort;
135 if (sqgetGlobalVar('spamcop_is_composing' , $spamcop_is_composing)) {
136 // delete spam message
137 if ($spamcop_delete) {
138 $imapConnection = sqimap_login($username, $key, $imapServerAddress,
140 sqimap_mailbox_select($imapConnection, $mailbox);
141 sqimap_msgs_list_delete($imapConnection, $mailbox, array($spamcop_is_composing));
143 sqimap_mailbox_expunge($imapConnection, $mailbox, true);
145 if (! $spamcop_save) {
146 // disable use of send folder.
147 // Temporally override in order to disable saving of 'reply anyway' messages.
148 global $default_move_to_sent;
149 $default_move_to_sent=false;
151 // change default email composition setting. Plugin always operates in right frame.
152 // make sure that compose.php redirects to right page. Temporally override.
153 global $compose_new_win;
154 $compose_new_win = false;
159 * Internal spamcop plugin function.
161 * It is used to display similar action links.
164 function spamcop_enable_disable($option,$disable_action,$enable_action) {
166 $ret= _("Enabled") . " (<a href=\"options.php?action=$disable_action\">" . _("Disable it") . "</a>)\n";
168 $ret = _("Disabled") . " (<a href=\"options.php?action=$enable_action\">" . _("Enable it") . "</a>)\n";
174 * Stores message in attachment directory, when email based reports are used
176 * @todo Duplicate code in src/compose.php
178 function spamcop_getMessage_RFC822_Attachment($message, $composeMessage, $passed_id,
179 $passed_ent_id='', $imapConnection) {
180 global $attachment_dir, $username;
182 $hashed_attachment_dir = getHashedDir($username, $attachment_dir);
183 if (!$passed_ent_id) {
184 $body_a = sqimap_run_command($imapConnection,
185 'FETCH '.$passed_id.' RFC822',
186 TRUE, $response, $readmessage,
189 $body_a = sqimap_run_command($imapConnection,
190 'FETCH '.$passed_id.' BODY['.$passed_ent_id.']',
191 TRUE, $response, $readmessage,TRUE);
192 $message = $message->parent
;
194 if ($response == 'OK') {
195 array_shift($body_a);
196 $body = implode('', $body_a) . "\r\n";
198 $localfilename = GenerateRandomString(32, 'FILE', 7);
199 $full_localfilename = "$hashed_attachment_dir/$localfilename";
200 $fp = fopen( $full_localfilename, 'w');
204 /* dirty relative dir fix */
205 if (substr($attachment_dir,0,3) == '../') {
206 $attachment_dir = substr($attachment_dir,3);
207 $hashed_attachment_dir = getHashedDir($username, $attachment_dir);
209 $full_localfilename = "$hashed_attachment_dir/$localfilename";
211 $composeMessage->initAttachment('message/rfc822','email.txt',
212 $full_localfilename);
214 return $composeMessage;