107 lines
3.7 KiB
PHP
107 lines
3.7 KiB
PHP
<?php
|
|
/**
|
|
* Copyright 2012-2017 Horde LLC (http://www.horde.org/)
|
|
*
|
|
* See the enclosed file COPYING for license information (GPL). If you
|
|
* did not receive this file, see http://www.horde.org/licenses/gpl.
|
|
*
|
|
* @category Horde
|
|
* @copyright 2012-2017 Horde LLC
|
|
* @license http://www.horde.org/licenses/gpl GPL
|
|
* @package IMP
|
|
*/
|
|
|
|
/**
|
|
* Special prefs handling for the 'pgppublickey' preference.
|
|
*
|
|
* @author Michael Slusarz <slusarz@horde.org>
|
|
* @category Horde
|
|
* @copyright 2012-2017 Horde LLC
|
|
* @license http://www.horde.org/licenses/gpl GPL
|
|
* @package IMP
|
|
*/
|
|
class IMP_Prefs_Special_PgpPublicKey implements Horde_Core_Prefs_Ui_Special
|
|
{
|
|
/**
|
|
*/
|
|
public function init(Horde_Core_Prefs_Ui $ui)
|
|
{
|
|
}
|
|
|
|
/**
|
|
*/
|
|
public function display(Horde_Core_Prefs_Ui $ui)
|
|
{
|
|
global $injector, $page_output, $prefs, $session;
|
|
|
|
$page_output->addScriptPackage('IMP_Script_Package_Imp');
|
|
|
|
$imp_pgp = $injector->getInstance('IMP_Crypt_Pgp');
|
|
|
|
/* Get list of Public Keys on keyring. */
|
|
try {
|
|
$pubkey_list = $imp_pgp->listPublicKeys();
|
|
} catch (Horde_Exception $e) {
|
|
$pubkey_list = array();
|
|
}
|
|
|
|
$pgp_url = IMP_Basic_Pgp::url();
|
|
|
|
$view = new Horde_View(array(
|
|
'templatePath' => IMP_TEMPLATES . '/prefs'
|
|
));
|
|
$view->addHelper('Horde_Core_View_Helper_Help');
|
|
$view->addHelper('Text');
|
|
|
|
if (!empty($pubkey_list)) {
|
|
$plist = array();
|
|
$self_url = $ui->selfUrl(array(
|
|
'special' => true,
|
|
'token' => true
|
|
));
|
|
|
|
foreach ($pubkey_list as $val) {
|
|
$plist[] = array(
|
|
'name' => $val['name'],
|
|
'email' => $val['email'],
|
|
'view' => Horde::link($pgp_url->copy()->add(array('actionID' => 'view_public_key', 'email' => $val['email'])), sprintf(_("View %s Public Key"), $val['name']), null, 'view_key'),
|
|
'info' => Horde::link($pgp_url->copy()->add(array('actionID' => 'info_public_key', 'email' => $val['email'])), sprintf(_("Information on %s Public Key"), $val['name']), null, 'info_key'),
|
|
'delete' => Horde::link($self_url->copy()->add(array('delete_pgp_pubkey' => 1, 'email' => $val['email'])), sprintf(_("Delete %s Public Key"), $val['name']), null, null, "window.confirm('" . addslashes(_("Are you sure you want to delete this public key?")) . "')")
|
|
);
|
|
}
|
|
$view->pubkey_list = $plist;
|
|
}
|
|
|
|
if ($session->get('imp', 'file_upload')) {
|
|
$view->can_import = true;
|
|
$view->no_source = !$prefs->getValue('add_source');
|
|
if (!$view->no_source) {
|
|
$page_output->addInlineScript(array(
|
|
'$("import_pgp_public").observe("click", function(e) { ' . Horde::popupJs($pgp_url, array('params' => array('actionID' => 'import_public_key', 'reload' => base64_encode($ui->selfUrl()->setRaw(true))), 'height' => 275, 'width' => 750, 'urlencode' => true)) . '; e.stop(); })'
|
|
), true);
|
|
}
|
|
}
|
|
|
|
return $view->render('pgppublickey');
|
|
}
|
|
|
|
/**
|
|
*/
|
|
public function update(Horde_Core_Prefs_Ui $ui)
|
|
{
|
|
global $injector, $notification;
|
|
|
|
if (isset($ui->vars->delete_pgp_pubkey)) {
|
|
try {
|
|
$injector->getInstance('IMP_Crypt_Pgp')->deletePublicKey($ui->vars->email);
|
|
$notification->push(sprintf(_("PGP Public Key for \"%s\" was successfully deleted."), $ui->vars->email), 'horde.success');
|
|
} catch (Horde_Exception $e) {
|
|
$notification->push($e);
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
}
|