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 language
="javascript" 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, $key, $imapServerAddress, $imapPort;
136 if (sqgetGlobalVar('spamcop_is_composing' , $spamcop_is_composing)) {
137 // delete spam message
138 if ($spamcop_delete) {
139 $imapConnection = sqimap_login($username, $key, $imapServerAddress,
141 sqimap_mailbox_select($imapConnection, $mailbox);
142 sqimap_msgs_list_delete($imapConnection, $mailbox, array($spamcop_is_composing));
144 sqimap_mailbox_expunge($imapConnection, $mailbox, true);
146 if (! $spamcop_save) {
147 // disable use of send folder.
148 // Temporally override in order to disable saving of 'reply anyway' messages.
149 global $default_move_to_sent;
150 $default_move_to_sent=false;
152 // change default email composition setting. Plugin always operates in right frame.
153 // make sure that compose.php redirects to right page. Temporally override.
154 global $compose_new_win;
155 $compose_new_win = false;
160 * Internal spamcop plugin function.
162 * It is used to display similar action links.
165 function spamcop_enable_disable($option,$disable_action,$enable_action) {
167 $ret= _("Enabled") . " (<a href=\"options.php?action=$disable_action\">" . _("Disable it") . "</a>)\n";
169 $ret = _("Disabled") . " (<a href=\"options.php?action=$enable_action\">" . _("Enable it") . "</a>)\n";
175 * Stores message in attachment directory, when email based reports are used
177 * @todo Duplicate code in src/compose.php
179 function spamcop_getMessage_RFC822_Attachment($message, $composeMessage, $passed_id,
180 $passed_ent_id='', $imapConnection) {
181 global $attachment_dir, $username;
183 $hashed_attachment_dir = getHashedDir($username, $attachment_dir);
184 if (!$passed_ent_id) {
185 $body_a = sqimap_run_command($imapConnection,
186 'FETCH '.$passed_id.' RFC822',
187 TRUE, $response, $readmessage,
190 $body_a = sqimap_run_command($imapConnection,
191 'FETCH '.$passed_id.' BODY['.$passed_ent_id.']',
192 TRUE, $response, $readmessage,TRUE);
193 $message = $message->parent
;
195 if ($response == 'OK') {
196 array_shift($body_a);
197 $body = implode('', $body_a) . "\r\n";
199 $localfilename = GenerateRandomString(32, 'FILE', 7);
200 $full_localfilename = "$hashed_attachment_dir/$localfilename";
201 $fp = fopen( $full_localfilename, 'w');
205 /* dirty relative dir fix */
206 if (substr($attachment_dir,0,3) == '../') {
207 $attachment_dir = substr($attachment_dir,3);
208 $hashed_attachment_dir = getHashedDir($username, $attachment_dir);
210 $full_localfilename = "$hashed_attachment_dir/$localfilename";
212 $composeMessage->initAttachment('message/rfc822','email.txt',
213 $full_localfilename);
215 return $composeMessage;