Skip to content

Commit

Permalink
Merge pull request #150 from OPUS4/4.6.3
Browse files Browse the repository at this point in the history
OPUSVIER-3951 - OPUS 4.6.3 Release
  • Loading branch information
j3nsch authored Nov 5, 2018
2 parents a53e6e9 + bd5ebca commit 809147b
Show file tree
Hide file tree
Showing 139 changed files with 6,729 additions and 1,886 deletions.
55 changes: 55 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,61 @@

---

## Release 4.6.3 2018-11-05

### Feature Request

* [OPUSVIER-2940] - Möglichkeit Dokumente direkt in der Administration zu erstellen
* [OPUSVIER-3582] - OAI-Schnittstelle erweitern um Ausgabe von DOI
* [OPUSVIER-3901] - DataCite-XML zum Debugging oder als Backup zwischenspeichern
* [OPUSVIER-3902] - Unterstützung von Microsoft Edge
* [OPUSVIER-3904] - Aufruf von Google Scholar aus der Frontdoor in einem eigenen Browserfenster
* [OPUSVIER-3906] - Datei datacite.xslt für DOI-Registrierung konfigurierbar machen
* [OPUSVIER-3908] - Prüfung von Dateinamen und deren Länge
* [OPUSVIER-3919] - Adressaten von DOI Benachrichtigungen über Accounts konfigurieren
* [OPUSVIER-3949] - GND-Schlagwörter in Frontdoor nicht alphabetisch sortieren

### Bugs

* [OPUSVIER-3892] - XML-Dateien werden bei Upload über SWORD ignoriert
* [OPUSVIER-3896] - Neue Enrichments <opus.doi.autoCreate> und <opus.urn.autoCreate> beim Update anlegen
* [OPUSVIER-3897] - Haken bei Checkbox "URN beim Veröffentlichen generieren" im Metadatenformular funktioniert nicht
* [OPUSVIER-3899] - Speichern von ungültigen Werten, z.B. ISBN, ermöglichen
* [OPUSVIER-3900] - DOIs werden nicht als lokal erkannt
* [OPUSVIER-3903] - Anzeigefehler wenn Englisch nicht als Übersetzungssprache vorhanden ist
* [OPUSVIER-3905] - Landing Page nicht korrekt
* [OPUSVIER-3907] - Bug in der Navigation in der Kurztrefferansicht
* [OPUSVIER-3909] - Enrichments ohne Wert im Import-XML sollten ohne Fehler ignoriert werden
* [OPUSVIER-3910] - Irreführende Fehlermeldung: plugin Opus_Document_Plugin_IdentifierDoi is not applicable for documents with server state ...
* [OPUSVIER-3911] - fehlendes "resumptionToken"
* [OPUSVIER-3912] - Aufruf von Twitter in neuem Browser-Fenster
* [OPUSVIER-3915] - Publish-Formular: Eingabe einer bereits im System vorhandenen DOI muss abgefangen werden
* [OPUSVIER-3916] - E-Mail-Text zum "Statusbericht über DOI-Registrierung" und "Statusbericht über DOI-Prüfung" ändern
* [OPUSVIER-3925] - assertQueryCount - Path und Count Parameter vertauscht
* [OPUSVIER-3931] - Fehler in Publish-Formular-Meldung bei zu großer Datei
* [OPUSVIER-3933] - DataCite Registrierung schlägt fehl bei fehlendem PublishedYear/CompletedYear
* [OPUSVIER-3950] - Ausgabe einer DOI mit "_" ist fehlerhaft im BibTeX CitationExport

### Aufgaben

* [OPUSVIER-2155] - CollectionRole-Feld "display_oai" aus Datenbank-Schema und Model entfernen
* [OPUSVIER-2294] - URN-Vergabe für bereits vorhandene Dokumente deaktivieren
* [OPUSVIER-3913] - ZIP und TAR Handhabung in PackageReader auf zwei Klassen aufteilen
* [OPUSVIER-3918] - View Helper für Ausgabe von Nachrichten
* [OPUSVIER-3920] - ActionBox Code vereinheitlichen
* [OPUSVIER-3921] - DOI Support Cron-Jobs lauffähig für OPUS-User (ohne sudo)
* [OPUSVIER-3922] - Aufruf Skript "Änderung der URL von Landing-Pages für lokale DOIs" klären und ggf. Handbuch anpassen
* [OPUSVIER-3923] - Testing OPUS 4 mit Ubuntu 18.04 LTS
* [OPUSVIER-3929] - Opus_Date-Objekte mit updateFromArray initialisieren
* [OPUSVIER-3934] - Vergleichen von Opus_Date und anderen Objekten
* [OPUSVIER-3939] - FromArray-Funktionen für Personen-Objekte
* [OPUSVIER-3945] - Erlaubnis für DOI-Notifikationen zur Zugriffskontrolle hinzufügen
* [OPUSVIER-3946] - Funktion, um alle Nutzer mit Zugriffsrecht zu ermitteln
* [OPUSVIER-3947] - Übersetzungsmechanik für Javascript
* [OPUSVIER-3948] - Funktion, um alle Jobs zu löschen

---

## Release 4.6.2 2018-06-11

### Feature Request
Expand Down
36 changes: 36 additions & 0 deletions RELEASE_NOTES.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,42 @@

---

## Release 4.6.3 2018-11-05

Mit diesem Release wurden eine Reihe von Fehlern behoben und kleinere Verbesserungen
eingebaut.

Für ISBN- und ISSN-Identifier werden jetzt im Browser mit Javascript Nachrichten
ausgegeben, wenn die Eingaben ungültig sind. Das Speichern von ungültigen Werten
wird nicht verhindert.

Die GND-Schlagwörter werden nicht länger automatisch alphabetisch sortiert. Mit dem
Eintrag `frontdoor.subjects.alphabeticalSorting = 1` in der Datei `config.ini` kann
die Sortierung wieder aktiviert werden.

Das DataCite-XML für die DOI-Registrierung wird nun unterhalb des "log"-Verzeichnisses
gespeichert, um Probleme besser diagnostizieren zu können.
Die Empfänger von DOI-Benachrichtungen können nun über die Rechteverwaltung in der
Administration festgelegt werden.

Dateinamen und ihre Länge werden im Publish-Formular nun bereits im Browser geprüft,
bevor die Dateien zum Server hochgeladen werden. Die Regeln für Dateinamen können in
der Konfiguration festgelegt werden.

Neue, leere Dokumente können nun direkt in der Administration angelegt werden. Das
Duplizieren von Dokumenten in der Administration ist in Arbeit.

Nach der Aktualisierung der Dateien (`git pull`) sollten die Composer-Abhängigkeiten
aktualisiert werden (`composer update` bzw. `php composer.phar update`). Das Schema
der Datenbank hat sich für diesen Release nicht verändert. Das Update-Skript sollte
ausgeführt werden (`bin/update.sh`), um notwendige Enrichments für den DOI-Support
anzulegen.

Fragen können Sie gerne über die User-Mailing-Liste an die OPUS 4 Entwicklung richten:
<http://listserv.zib.de/mailman/listinfo/kobv-opus-tester>

---

## Release 4.6.2 2018-06-11

Mit diesem Release wird der neue DOI-Support veröffentlicht.
Expand Down
31 changes: 22 additions & 9 deletions application/configs/application.ini
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ name = 'OPUS 4'
logoLink = home
security = 1
workspacePath = APPLICATION_PATH "/workspace"
version = 4.6.2
version = 4.6.3
update.latestVersionCheckUrl = "https://api.github.com/repos/opus4/application/releases/latest"
; base URL of your OPUS instance (used for generating absolute URLs, e.g. in email messages)
url = 'https://web.example.org/opus'
Expand Down Expand Up @@ -110,6 +110,8 @@ errorController.showRequest = 0

;PUBLICATION SETTINGS
publish.maxfilesize = 10240000
publish.filenameMaxLength = 50
publish.filenameFormat = "^[a-zA-Z0-9][a-zA-Z0-9_.-]+$"
publish.filetypes.allowed = pdf,txt,html,htm ; filetypes that are accepted in publication form
publish.path.documenttypes = APPLICATION_PATH "/application/configs/doctypes"
publish.path.documenttemplates = APPLICATION_PATH "/application/configs/doctypes_templates"
Expand Down Expand Up @@ -217,6 +219,7 @@ help.separate = false

frontdoor.numOfShortAbstractChars = 0
frontdoor.files.customSorting = 1
frontdoor.subjects.alphabeticalSorting = 0

; Visibility of fields in frontdoor (right now just BelongsToBibliography)
frontdoor.metadata.BelongsToBibliography = 0
Expand Down Expand Up @@ -344,6 +347,12 @@ orcid.linkAuthor.frontdoor = 1
gnd.baseUrl = http://d-nb.info/gnd/
gnd.linkAuthor.frontdoor = 1

; Google Scholar Settings
googleScholar.openInNewWindow = 0

; Twitter Settings
twitter.openInNewWindow = 0

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; ;
; SWORD related configuration settings ;
Expand Down Expand Up @@ -389,14 +398,18 @@ filetypes.txt.mimeType = 'text/plain'
filetypes.htm.mimeType = 'text/html'
filetypes.html.mimeType = 'text/html'

;Validation of identifier can set here. Add identifier.validation.identifier-type and bring it
;equal to the validation-class
identifier.validation.isbn.class = 'Opus_Validate_Isbn'
identifier.validation.isbn.messageTemplates.form = 'validation_error_form'
identifier.validation.isbn.messageTemplates.checkdigit = 'validation_error_checkdigit'
identifier.validation.issn.class = 'Opus_Validate_Issn'
identifier.validation.issn.messageTemplates.form = 'validation_error_form'
identifier.validation.issn.messageTemplates.checkdigit = 'validation_error_checkdigit'
; Validation of identifiers can be configured here.
; Add identifier.validation.[IDENTIFIER_TYPE] and then define the validation class and set message keys.

; Uncomment the following to prevent saving of invalid ISBN.
; identifier.validation.isbn.class = 'Opus_Validate_Isbn'
; identifier.validation.isbn.messageTemplates.form = 'validation_error_form'
; identifier.validation.isbn.messageTemplates.checkdigit = 'validation_error_checkdigit'

; Uncomment the following to prevent saving of invalid ISSN.
; identifier.validation.issn.class = 'Opus_Validate_Issn'
; identifier.validation.issn.messageTemplates.form = 'validation_error_form'
; identifier.validation.issn.messageTemplates.checkdigit = 'validation_error_checkdigit'

[staging : production]
phpSettings.display_startup_errors = 1
Expand Down
8 changes: 8 additions & 0 deletions application/configs/config.ini.template
Original file line number Diff line number Diff line change
Expand Up @@ -132,9 +132,17 @@ gnd.linkAuthor.frontdoor = 1
; This does not changes any values of your Apache or php.ini. Please assure
; the values in your Apache or php settings are big enough.
;publish.maxfilesize = 10240000

; publish.filetypes.allowed defines which filetypes can be uploaded.
;publish.filetypes.allowed = pdf,txt,html,htm ; filetypes that are accepted in publication form

; Set an limited length for an filename. Use 0 to deactivate.
;publish.filenameMaxLength = 50

; This is an regular expression which allows an alphanumerical filename. It is allowed to use _, - and . but not at beginning.
; Please use an expression without the typical starting and ending backslash, this is automatically added. The RegEx is used in JS and PHP. To deactivate choose "".
;publish.filenameFormat = "^[a-zA-Z0-9][a-zA-Z0-9_.-]+$"

; CHECKSUM SETTINGS
; Maximum filesize in MB (default 50 MB) for calculating MD5 and SHA512 hashes
; of files. The maximum filesize is limited to avoid excessive load on the
Expand Down
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"zendframework/zendframework1": "1.12.*",
"jpgraph/jpgraph": "dev-master",
"solarium/solarium": "3.4.1",
"opus4-repo/framework": "4.6.3",
"opus4-repo/framework": "4.6.4",
"opus4-repo/opus4-doi": "4.6.2",
"opus4-repo/search": "4.5",
"components/jquery": "1.12.4",
Expand Down
29 changes: 24 additions & 5 deletions library/Application/Configuration.php
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,11 @@ class Application_Configuration {
*/
private $_tempPath = null;

/**
* @var string
*/
private $defaultLanguage = null;

/**
* @var Application_Configuration
*/
Expand Down Expand Up @@ -162,13 +167,27 @@ public function isLanguageSupported($language) {
* @return string
*/
public function getDefaultLanguage() {
if ($this->isLanguageSelectionEnabled()) {
return self::DEFAULT_LANGUAGE;
}
else {
if (is_null($this->defaultLanguage)) {
$languages = $this->getSupportedLanguages();
return $languages[0];
$this->defaultLanguage = $languages[0];

if ($this->isLanguageSelectionEnabled()) {
$locale = new Zend_Locale();
$language = $locale->getDefault();
if (is_array($language) and count($language) > 0) {
reset($language);
$language = key($language);
} else {
$language = self::DEFAULT_LANGUAGE;
}

if ($this->isLanguageSupported($language)) {
$this->defaultLanguage = $language;
}
}
}

return $this->defaultLanguage;
}

/**
Expand Down
19 changes: 11 additions & 8 deletions library/Application/Controller/Action/Helper/AccessControl.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,8 @@
* @category Application
* @package Controller_Helper
* @author Jens Schwidder <[email protected]>
* @copyright Copyright (c) 2008-2013, OPUS 4 development team
* @copyright Copyright (c) 2008-2018, OPUS 4 development team
* @license http://www.gnu.org/licenses/gpl.html General Public License
* @version $Id$
*/

/**
Expand All @@ -40,11 +39,13 @@
* TODO weiter ausbauen und mit Opus_Security_IRealm konsolidieren (Framework vs. Application Security)
*/
class Application_Controller_Action_Helper_AccessControl extends Zend_Controller_Action_Helper_Abstract
implements Application_Security_AccessControl {
implements Application_Security_AccessControl
{

private $_acl;

public function direct($resource) {
public function direct($resource)
{
return $this->accessAllowed($resource);
}

Expand All @@ -59,7 +60,8 @@ public function direct($resource) {
* @param $resource
* @return bool
*/
public function accessAllowed($resource) {
public function accessAllowed($resource)
{
$acl = $this->getAcl();

if (strlen(trim($resource)) == 0) {
Expand All @@ -78,15 +80,16 @@ public function accessAllowed($resource) {
* Returns the Zend_Acl object or null.
* @return Zend_Acl
*/
protected function getAcl() {
protected function getAcl()
{
if (is_null($this->_acl)) {
$this->_acl = Zend_Registry::isRegistered('Opus_Acl') ? Zend_Registry::get('Opus_Acl') : null;
}
return $this->_acl;
}

public function setAcl($acl) {
public function setAcl($acl)
{
$this->_acl = $acl;
}

}
50 changes: 47 additions & 3 deletions library/Application/Controller/Action/Helper/FileTypes.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
* @category Application
* @package Application_Configuration
* @author Jens Schwidder <[email protected]>
* @copyright Copyright (c) 2017
* @copyright Copyright (c) 2017-2018
* @license http://www.gnu.org/licenses/gpl.html General Public License
*
* Class for handling file type configuration.
Expand All @@ -48,7 +48,8 @@ class Application_Controller_Action_Helper_FileTypes extends Application_Control
*
* @return mixed
*/
public function getValidMimeTypes() {
public function getValidMimeTypes()
{
if (is_null($this->_validMimeTypes))
{

Expand All @@ -72,6 +73,50 @@ public function getValidMimeTypes() {
return $this->_validMimeTypes;
}

/**
* Checks if a MIME-type is allowed for OPUS 4 files.
*
* @param $mimeType
* @return bool
*
* TODO more efficient method to check?
* TODO differentiate between extension/mime type not allowed or mime type does not match extension
*/
public function isValidMimeType($mimeType, $extension = null)
{
$mimeTypes = $this->getValidMimeTypes();

if (!is_null($extension)) {
if (isset($mimeTypes[$extension])) {
$mimeTypes = $mimeTypes[$extension];
}
else {
// unknown extension
return false;
}

if (is_array($mimeTypes)) {
return in_array($mimeType, $mimeTypes);
}
else {
return $mimeType === $mimeTypes;
}
}
else {
if (in_array($mimeType, $mimeTypes)) {
return true;
} else {
foreach ($mimeTypes as $extension => $types) {
if (is_array($types) && in_array($mimeType, $types)) {
return true;
}
}
}
}

return false;
}

/**
* Returns content disposition for MIME-type used for downloads.
*/
Expand All @@ -98,5 +143,4 @@ public function getContentDisposition($mimeType = null)

return $contentDisposition;
}

}
Loading

0 comments on commit 809147b

Please sign in to comment.