allow to upload and delete logo files
This commit is contained in:
parent
3c497505a3
commit
2e27115031
|
@ -4,7 +4,7 @@ $Id$
|
|||
|
||||
This code is part of LDAP Account Manager (http://www.ldap-account-manager.org/)
|
||||
Copyright (C) 2003 - 2006 Michael Duergner
|
||||
2011 Roland Gruber
|
||||
2011 - 2013 Roland Gruber
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -237,4 +237,71 @@ function copyPdfProfiles($pdfProfiles, $scope, $dests = array()) {
|
|||
return $state;
|
||||
}
|
||||
|
||||
/**
|
||||
* Uploads a PDF logo file for the current server profile.
|
||||
*
|
||||
* @param String $file full path of temporary file
|
||||
* @param String $name file name
|
||||
* @return StatusMessage status message to display
|
||||
*/
|
||||
function uploadPDFLogo($file, $name) {
|
||||
if (!preg_match('/[a-zA-Z0-9_-]+\\.(png)|(jpg)/', $name)) {
|
||||
return new htmlStatusMessage('ERROR', _('Unable to upload logo file.'), _('The file name must end with ".png" or ".jpg".'));
|
||||
}
|
||||
$infos = getimagesize($file);
|
||||
if ($infos[0] <= 2000 && $infos[1] <= 300) {
|
||||
$dirPath = dirname(__FILE__) . '/../config/pdf/' . $_SESSION['config']->getName() . '/logos/';
|
||||
$success = copy($file, $dirPath . '/' . $name);
|
||||
if ($success) {
|
||||
return new htmlStatusMessage('INFO', _('Uploaded logo file.'), $name);
|
||||
}
|
||||
else {
|
||||
return new htmlStatusMessage('ERROR', _('Unable to upload logo file.'), $name);
|
||||
}
|
||||
}
|
||||
return new htmlStatusMessage('ERROR', _('Unable to upload logo file.'), _('The file must not exeed 2000x300px.'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes a PDF logo file.
|
||||
*
|
||||
* @param String $name file name
|
||||
* @return StatusMessage status message to display
|
||||
*/
|
||||
function deletePDFLogo($name) {
|
||||
// check if valid file
|
||||
$found = false;
|
||||
$logos = getAvailableLogos();
|
||||
foreach ($logos as $logo) {
|
||||
if ($logo['filename'] === $name) {
|
||||
$found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!$found) {
|
||||
return new htmlStatusMessage('ERROR', _('File does not exist.'), htmlspecialchars($name));
|
||||
}
|
||||
// check if still in use
|
||||
$activeTypes = $_SESSION['config']->get_ActiveTypes();
|
||||
foreach ($activeTypes as $type) {
|
||||
$structures = getPDFStructureDefinitions($type);
|
||||
foreach ($structures as $structure) {
|
||||
$data = loadPDFStructureDefinitions($type, $structure);
|
||||
if ($data['page_definitions']['filename'] == $name) {
|
||||
return new htmlStatusMessage('ERROR', _('Unable to delete logo file.'),
|
||||
sprintf(_('Logo is still in use by PDF structure "%s" in account type "%s".'), $structure, getTypeAlias($type)));
|
||||
}
|
||||
}
|
||||
}
|
||||
// delete file
|
||||
$dirPath = dirname(__FILE__) . '/../config/pdf/' . $_SESSION['config']->getName() . '/logos/';
|
||||
$success = @unlink($dirPath . '/' . $name);
|
||||
if ($success) {
|
||||
return new htmlStatusMessage('INFO', _('Logo file deleted.'), $name);
|
||||
}
|
||||
else {
|
||||
return new htmlStatusMessage('ERROR', _('Unable to delete logo file.'), $name);
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
|
@ -123,6 +123,19 @@ if (isset($_POST['importexport']) && ($_POST['importexport'] === '1')) {
|
|||
}
|
||||
}
|
||||
|
||||
// upload logo file
|
||||
if (isset($_POST['uploadLogo']) && !empty($_FILES['logoUpload']) && !empty($_FILES['logoUpload']['size'])) {
|
||||
$file = $_FILES['logoUpload']['tmp_name'];
|
||||
$filename = $_FILES['logoUpload']['name'];
|
||||
$container->addElement(uploadPDFLogo($file, $filename), true);
|
||||
}
|
||||
|
||||
// delete logo file
|
||||
if (isset($_POST['delLogo'])) {
|
||||
$toDel = $_POST['logo'];
|
||||
$container->addElement(deletePDFLogo($toDel), true);
|
||||
}
|
||||
|
||||
// get list of account types
|
||||
$availableScopes = '';
|
||||
$templateClasses = array();
|
||||
|
@ -149,7 +162,7 @@ for ($i = 0; $i < sizeof($templateClasses); $i++) {
|
|||
include '../main_header.php';
|
||||
?>
|
||||
<div class="user-bright smallPaddingContent">
|
||||
<form action="pdfmain.php" method="post" name="pdfmainForm" >
|
||||
<form enctype="multipart/form-data" action="pdfmain.php" method="post" name="pdfmainForm" >
|
||||
<?php
|
||||
if (isset($_GET['savedSuccessfully'])) {
|
||||
$message = new htmlStatusMessage("INFO", _("PDF structure was successfully saved."), htmlspecialchars($_GET['savedSuccessfully']));
|
||||
|
@ -210,8 +223,31 @@ include '../main_header.php';
|
|||
$existingContainer->addNewLine();
|
||||
}
|
||||
$container->addElement($existingContainer, true);
|
||||
$container->addElement(new htmlSpacer(null, '10px'), true);
|
||||
|
||||
// manage logos
|
||||
$logoContainer = new htmlTable();
|
||||
$logoContainer->addElement(new htmlSpacer(null, '30px'), true);
|
||||
$logoContainer->addElement(new htmlSubTitle(_('Manage logos')), true);
|
||||
$logos = getAvailableLogos();
|
||||
$logoOptions = array();
|
||||
foreach ($logos as $logo) {
|
||||
$file = $logo['filename'];
|
||||
$label = $file . ' (' . $logo['infos'][0] . ' x ' . $logo['infos'][1] . ")";
|
||||
$logoOptions[$label] = $file;
|
||||
}
|
||||
$logoSelect = new htmlSelect('logo', $logoOptions, null);
|
||||
$logoSelect->setHasDescriptiveElements(true);
|
||||
$logoContainer->addElement($logoSelect);
|
||||
$delLogo = new htmlButton('delLogo', _('Delete'));
|
||||
$delLogo->setIconClass('deleteButton');
|
||||
$logoContainer->addElement($delLogo, true);
|
||||
$logoContainer->addElement(new htmlInputFileUpload('logoUpload'));
|
||||
$logoUpload = new htmlButton('uploadLogo', _('Upload'));
|
||||
$logoUpload->setIconClass('upButton');
|
||||
$logoContainer->addElement($logoUpload);
|
||||
$container->addElement($logoContainer, true);
|
||||
|
||||
$container->addElement(new htmlSpacer(null, '10px'), true);
|
||||
// generate content
|
||||
$tabindex = 1;
|
||||
parseHtml(null, $container, array(), false, $tabindex, 'user');
|
||||
|
|
Loading…
Reference in New Issue