Merge pull request #231 from annando/master
[friendica-addons.git] / securemail / securemail.php
1 <?php\r
2 /**\r
3  * Name: Secure Mail\r
4  * Description: Send notification mail encrypted with user-defined public GPG key\r
5  * Version: 1.0\r
6  * Author: Fabio Comuni <http://kirgroup.com/profile/fabrixxm>\r
7  */\r
8  require_once 'php-gpg/libs/GPG.php';\r
9 \r
10  function securemail_install() {\r
11     register_hook('plugin_settings', 'addon/securemail/securemail.php', 'securemail_settings');\r
12     register_hook('plugin_settings_post', 'addon/securemail/securemail.php', 'securemail_settings_post');\r
13 \r
14     register_hook('emailer_send_prepare',  'addon/securemail/securemail.php', 'securemail_emailer_send_prepare');\r
15 \r
16     logger("installed securemail");\r
17 }\r
18 \r
19 function securemail_uninstall() {\r
20     unregister_hook('plugin_settings', 'addon/securemail/securemail.php', 'securemail_settings');\r
21     unregister_hook('plugin_settings_post', 'addon/securemail/securemail.php', 'securemail_settings_post');\r
22 \r
23     unregister_hook('emailer_send_prepare',  'addon/securemail/securemail.php', 'securemail_emailer_send_prepare');\r
24 \r
25     logger("removed securemail");\r
26 }\r
27 \r
28 \r
29 function securemail_settings(&$a,&$s){\r
30     if(! local_user())\r
31             return;\r
32 \r
33     $enable_checked = (intval(get_pconfig(local_user(),'securemail','enable')) ? ' checked="checked"' : '');\r
34     $publickey = get_pconfig(local_user(),'securemail','pkey');\r
35 \r
36     # all of this should be in a template...\r
37     $s .= '<span id="settings_securemail_inflated" class="settings-block fakelink" style="display: block;" onclick="openClose(\'settings_securemail_expanded\'); openClose(\'settings_securemail_inflated\');">';\r
38     $s .= '<h3>' . t('"Secure Mail" Settings').'</h3>';\r
39     $s .= '</span>';\r
40     $s .= '<div id="settings_securemail_expanded" class="settings-block" style="display: none;">';\r
41     $s .= '<span class="fakelink" onclick="openClose(\'settings_securemail_expanded\'); openClose(\'settings_securemail_inflated\');">';\r
42     $s .= '<h3>' . t('"Secure Mail" Settings').'</h3>';\r
43     $s .= '</span>';\r
44     $s .= '<div id="securemail-wrapper">';\r
45 \r
46     $s .= '<input id="securemail-enable" type="checkbox" name="securemail-enable" value="1"'.$enable_checked.' />';\r
47     $s .= '<label id="securemail-enable-label" for="securemail-enable">'.t('Enable Secure Mail').'</label>';\r
48 \r
49     $s .= '<div class="clear"></div>';\r
50     $s .= '<label id="securemail-label" for="securemail-pkey">'.t('Public key').' </label>';\r
51     $s .= '<textarea id="securemail-pkey" name="securemail-pkey">'.$publickey.'</textarea>';\r
52     $s .= '</div><div class="clear"></div>';\r
53 \r
54     $s .= '<div class="settings-submit-wrapper" ><input type="submit" id="securemail-submit" name="securemail-submit" class="settings-submit" value="' . t('Save Settings') . '" /></div>';\r
55     $s .= '</div>';\r
56 \r
57     return;\r
58 }\r
59 function securemail_settings_post(&$a, &$b){\r
60 \r
61     if(! local_user())\r
62         return;\r
63 \r
64     if($_POST['securemail-submit']) {\r
65                 set_pconfig(local_user(),'securemail','pkey',trim($_POST['securemail-pkey']));\r
66                 $enable = ((x($_POST,'securemail-enable')) ? 1 : 0);\r
67                 set_pconfig(local_user(),'securemail','enable', $enable);\r
68                 info( t('Secure Mail Settings saved.') . EOL);\r
69     }\r
70 }\r
71 \r
72 function securemail_emailer_send_prepare(&$a, &$b) {\r
73     if (!x($b,'uid')) return;\r
74         $uid = $b['uid'];\r
75 \r
76     $enable_checked = get_pconfig($uid,'securemail','enable');\r
77     if (!$enable_checked) return;\r
78 \r
79     $public_key_ascii = get_pconfig($uid,'securemail','pkey');\r
80 \r
81     $gpg = new GPG();\r
82 \r
83     # create an instance of a GPG public key object based on ASCII key\r
84     $pub_key = new GPG_Public_Key($public_key_ascii);\r
85 \r
86     # using the key, encrypt your plain text using the public key\r
87     $txt_encrypted = $gpg->encrypt($pub_key,$b['textVersion']);\r
88     $html_encrypted = $gpg->encrypt($pub_key,$b['htmlVersion']);\r
89 \r
90     $b['textVersion'] = $txt_encrypted;\r
91     $b['htmlVersion'] = $html_encrypted;\r
92     #var_dump($b);\r
93 }\r