123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227 |
- <?php
- elgg_register_event_handler('init', 'system', 'elggpg_init');
- function elggpg_init() {
-
- elgg_register_library('elggpg', elgg_get_plugins_path() . 'elggpg/lib/elggpg.php');
- elgg_register_library('elggpg:send:override', elgg_get_plugins_path() . 'elggpg/lib/messages_send.php');
-
- elgg_extend_view('css/elgg', 'elggpg/css');
-
-
- elgg_register_page_handler('elggpg', 'elggpg_page_handler');
-
- elgg_register_plugin_hook_handler('profile:fields', 'profile', 'elggpg_profile_fingerprint');
-
- elgg_register_plugin_hook_handler('email', 'system', 'elggpg_send_email_handler');
- elgg_extend_view("core/settings/account/email", "elggpg/viewkey", 1);
-
- $actions_path = elgg_get_plugins_path() . 'elggpg/actions/elggpg';
- elgg_register_action("elggpg/pubkey_upload", "$actions_path/pubkey_upload.php");
- elgg_register_action("elggpg/pubkey_delete", "$actions_path/pubkey_delete.php");
- elgg_register_action("messages/send", "$actions_path/send_encrypted.php");
-
- elgg_register_plugin_hook_handler('register', 'menu:owner_block', 'elggpg_owner_block_menu');
-
- elgg_register_event_handler('upgrade', 'system', 'elggpg_run_upgrades');
- }
- function elggpg_page_handler($page) {
- $pages_dir = elgg_get_plugins_path() . 'elggpg/pages/elggpg';
- switch($page[0]) {
- case 'owner':
- include("$pages_dir/owner.php");
- break;
- case 'raw':
- set_input('username', $page[1]);
- include("$pages_dir/raw.php");
- break;
- case 'download':
- set_input('username', $page[1]);
- include("$pages_dir/download.php");
- break;
- default:
- return false;
- }
- return true;
- }
- function elggpg_send_email_handler($hook, $type, $return, $params) {
- $from = $params['from'];
- $to = $params['to'];
- $subject = $params['subject'];
- $body = $params['body'];
- $headers = $params['headers'];
- $receiver = current(get_user_by_email($to));
-
- $body = html_entity_decode($body, ENT_COMPAT, 'UTF-8');
- $body = elgg_strip_tags($body);
- $body = preg_replace("/(\r\n|\r)/", "\n", $body);
- $body = preg_replace("/^From/", ">From", $body);
- $body = wordwrap($body);
-
- if (elgg_get_plugin_user_setting('encrypt_emails', $receiver->guid, 'elggpg') != 'no') {
- elgg_load_library('elggpg');
- $encrypted_body = elggpg_encrypt($body, $receiver, false);
- if ($encrypted_body) {
- $body = $encrypted_body;
- }
- }
-
- $header_eol = "\r\n";
- if (elgg_get_config('broken_mta')) {
-
- $header_eol = "\n";
- }
-
- if (strtolower(substr(PHP_OS, 0, 3)) == 'win') {
-
- if (strpos($to, '<')) {
- preg_match('/<(.*)>/', $to, $matches);
- $to = $matches[1];
- }
- if (strpos($from, '<')) {
- preg_match('/<(.*)>/', $from, $matches);
- $from = $matches[1];
- }
- }
- if (empty($headers)) {
- $headers = "From: $from{$header_eol}"
- . "Content-Type: text/plain; charset=UTF-8; format=flowed{$header_eol}"
- . "MIME-Version: 1.0{$header_eol}"
- . "Content-Transfer-Encoding: 8bit{$header_eol}";
- }
-
- $subject = preg_replace("/(\r\n|\r|\n)/", " ", $subject);
-
- $subject = html_entity_decode($subject, ENT_COMPAT, 'UTF-8');
- if (is_callable('mb_encode_mimeheader')) {
- $subject = mb_encode_mimeheader($subject, "UTF-8", "B");
- }
-
- $headers_string = '';
- foreach ($headers as $key => $value) {
- $headers_string .= "$key: $value{$header_eol}";
- }
- return mail($to, $subject, $body, $headers_string);
- }
- function elggpg_profile_fingerprint ($hook, $type, $return, $profile_defaults) {
- $return['openpgp_publickey'] = 'fingerprint';
- return $return;
- }
- function elggpg_owner_block_menu($hook, $type, $return, $params) {
- if ($params['entity']->guid == elgg_get_logged_in_user_guid()) {
- $url = "elggpg/owner/{$params['entity']->username}";
- $item = new ElggMenuItem('elggpg', elgg_echo('elggpg:manage'), $url);
- $return[] = $item;
- }
- return $return;
- }
- function elggpg_run_upgrades() {
- $path = elgg_get_plugins_path() . 'elggpg/upgrades/';
- $files = elgg_get_upgrade_files($path);
- foreach ($files as $file) {
- include "$path{$file}";
- }
- }
|