a36ac3ceed0575143ef9002b5ff704f3184ab440
4 * SpamCop plugin - functions
6 * @copyright © 1999-2006 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() {
63 global $spamcop_enabled, $spamcop_method, $spamcop_quick_report,$javascript_on;
65 if (! $spamcop_enabled)
69 sqgetGlobalVar('passed_id', $passed_id, SQ_FORM
);
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
) ) {
85 Catch situation when user uses quick_email and does not update
86 preferences. User gets web_form link. If prefs are set to
87 quick_email format - they will be updated after clicking the link
89 if (! $spamcop_quick_report && $spamcop_method=='quick_email') {
90 $spamcop_method = 'web_form';
93 // Javascript is used only in web based reporting
94 // don't insert javascript if javascript is disabled
95 if ($spamcop_method == 'web_form' && $javascript_on) {
96 ?
><script type
="text/javascript">
97 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">');
98 document
.write("<?php echo _("Report
as Spam
"); ?>");
99 document
.write("</a>");
102 ?
><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); ?>">
103 <?php
echo _("Report as Spam"); ?
></a
>
109 * Add spamcop option block (internal function)
113 function spamcop_options_function() {
114 global $optpage_blocks;
116 $optpage_blocks[] = array(
117 'name' => _("SpamCop - Spam Reporting"),
118 'url' => '../plugins/spamcop/options.php',
119 '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."),
125 * Process messages that are submitted by email.
127 * Delete spam if user wants to delete it. Don't save submitted emails.
128 * Implement overrides that fix compose.php behavior.
132 function spamcop_while_sending_function() {
133 global $mailbox, $spamcop_delete, $spamcop_save, $spamcop_is_composing, $auto_expunge,
134 $username, $imapServerAddress, $imapPort;
136 if (sqgetGlobalVar('spamcop_is_composing' , $spamcop_is_composing)) {
137 // delete spam message
138 if ($spamcop_delete) {
139 $imapConnection = sqimap_login($username, false, $imapServerAddress, $imapPort, 0);
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;