[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