[Kobv-opus-tester] Prüfziffernberechnung GND-Nummer
Jens Schwidder
schwidder at zib.de
Mi Sep 23 18:06:50 CEST 2015
Liebe Frau Lapp,
vielen Dank. Können Sie mir bitte ein oder zwei Beispielnummern
schicken, mit denen das Problem als Unit Test festgehalten werden kann.
Wir hatten schon einmal einen Bug bei der Checksummenberechnung gefixt
und anscheinend dabei doch noch etwas übersehen.
Der nächste OPUS 4 Release wird von den Sourcen auf GitHub kommen, was
völlig neue Möglichkeiten der Zusammenarbeit bietet. Unter anderem
könnten dort solche Vorschläge direkt als "Pull Request" übermittelt
werden, so daß nach einer Prüfung mehr oder weniger nur noch ein Klick
notwendig ist, um die Änderungen in die OPUS 4 Sourcen zu übernehmen.
Dazu entsteht unter
http://opus4.github.io
gerade Dokumentation. Es gibt auch Überlegungen irgendwann einen
Workshop zu diesem Thema abzuhalten. Wenn Sie Interesse haben kann ich
Ihnen aber auch schon vorher bei den ersten Schritten behilflich sein.
Die Idee ist OPUS 4 Instanzen in Zukunft auch direkt mit GIT Kommandos
zu installieren. Dadurch wird der Download und das Auspacken des
TARBALLs ersetzt. Der Vorteil ist, daß dann durch ein einfaches Kommando
Bugfixes wie dieser sofort in die eigene Instanz übernommen werden
können ohne auf den nächste Release warten zu müssen.
Herzliche Grüße
Jens Schwidder
On 09/23/2015 05:39 PM, Bettina Lapp wrote:
> Liebe OPUS4-Entwickler,
>
> bei der Eingabe der Autoren-GND-Nummer im Admin-Formular ist uns
> aufgefallen, daß anscheinend die Prüfziffer der GND-ID falsch berechnet
> wird, so daß korrekte GND-ID als falsch abgewiesen werden.
>
> Doku zur Prüfziffer hier:
> https://wiki.dnb.de/pages/viewpage.action?pageId=48139522
>
> Vorschlag zur Änderung von $BASEDIR/opus4/library/Form/Validate/Gnd.php:
>
> 65 /**
> 66 * Calculates the GND check digit.
> 67 */
> 68 public static function generateCheckDigit($baseDigits) {
> 69 $total = 0;
> 70 //$weight = 11;
> 71 $weight = 2;
> 72 //for ($i = 0; $i < strlen($baseDigits) - 1; $i++) {
> 73 for ($i = strlen($baseDigits) - 2; $i >= 0; $i--) {
> 74 $digit = intval($baseDigits{$i});
> 75 //$total += $digit * ($weight - $i);
> 76 $total += $digit * $weight; $weight++;
> 77 }
> 78 $remainder = $total % 11;
> 79 $result = (11 - $remainder) % 11;
> 80 $r = $result == 10 ? "X" : (string) $result;
> 81 return $result == 10 ? "X" : (string) $result;
> 82 }
>
>
> herzliche Grüße, Bettina Lapp
>
--
==============================================================
Jens Schwidder
Kooperativer Bibliotheksverbund Berlin-Brandenburg (KOBV)
c/o Konrad-Zuse-Zentrum für Informationstechnik Berlin (ZIB)
Takustr. 7, D-14195 Berlin
Telefon: (030) 841 85 - 308
Telefax: (030) 841 85 - 269
E-Mail: schwidder at zib.de
WWW: http://www.kobv.de
==============================================================
Mehr Informationen über die Mailingliste Kobv-opus-tester