Alle Kategorien:
  E V T Z Allgemein
 EVTZ-Datenbank
  E V T Z Dokumente
 Kommentare
 Literaturdatenbank
  E V T Z Praxis
 Rechtsprechungsdatenbank
 Rechtsvorschriften
  Kooperationsinstrumente
 Startseite

Wiki source for WikkaLinksToNorms


Show raw source

==== Funktion zum Herausfischen von Vorschriften im Artikeltext ====

=== 1. Schritt 1: den Text im Artikel als Verweis auf Vorschrift identifizieren ===
Dazu werden benötigt:
- Kürzel des Gesetzes - hard-codiert oder (besser) aus der Datenbank
- regulärer Ausdruck, der auf eine Funktion verweist, die Kürzel checkt

Findet in der Datei /handlers/edit/edit.php statt - irgendwo sind folgende Zeilen zu sehen:

%% // ******************************************************************************
// Transformation der Angaben zu Vorschriften in WikiActions "{{pu oder du}}"
// ******************************************************************************

function replaceNorms($values) {
global $wakka;
$complete = $values[0];
$mark = $values[1];
$norm = $values[2];
$addin = $values[3];
$akt = $values[14];

//$closing = $values[4];
$rsstr = "SELECT lang, id_akty FROM akty_aliases WHERE alias='".$akt."';";
if ($aktdata = $wakka->LoadSingle($rsstr)) {
// skrot istnieje, zamień
switch ($aktdata["lang"]) {
case "pl":
$replace = "{{pu przepis=\"".$mark." ".$norm." ".$addin.$akt."\"}}".$values[15];
break;
case "de":
$replace = "{{du przepis=\"".$mark." ".$norm." ".$addin.$akt."\"}}".$values[15];
break;
}


// zusätzlich: in der DB notieren, dass die Vorschrift gerade zitiert wird (nur für polnisches System)
$bodyForTitle = $_POST["body"];
$strona = $wakka->tag;

$rsstr = "SELECT * FROM links_pu WHERE akt='".$akt."' AND przepis='".$norm."' AND strona='".$strona."';";
if ($wakka->LoadAll($rsstr)) {
// dann ist der Link zwischen dem Artikel und der Vorschrift bereits gesetzt (nur PL)
} else {
$title = "";
if (ereg( "(=){3,5}([^=\n]+)(=){3,5}", $bodyForTitle, $title)) {
$formatting_tags = array("**", "//", "__", "##", "''", "++", "#%", "@@", "\"\"");
$title = str_replace($formatting_tags, "", $title[2]);
}
if ($title) $title = strip_tags($wakka->Format($title)); # fix for forced links in heading
else $title = $page;
$rsstr = "INSERT INTO links_pu SET strona='".$strona."', przepis='".$norm."', akt='".$akt."', tytul='".$title."', last_search=now();";
$wakka->Query($rsstr);
}








} else {
// Abkürzung existiert nicht, in Ruhe lassen
$replace = $complete;
}
return $replace;
}
// Schreibweise "art. 12 § 2 KC" bereits berücksichtigt !!!
// OLD: $pattern = "/(art\.|§|artykuł)\040(\S*?)\040((ust\.|§|zd\.)\040\d+\S*?\040|)(.*?)(\.|\;|\,|\:|\?|\!|\)|\s)/i";
// NEW:
$pattern = "/(art\.|§|artykuł)\040(\S*?)\040((§{1,2}\040\d+\S*?(\040?\-\040?\d+\S*?|)\040)*(ust|Abs|\.?\040\d+\S*?(\040?\-\040?\d+\S*?|)\040)*(pkt\.?\040\d+\S*?(\040?\-\040?\d+\S*?|)\040)*(zd\.?\040\d+\S*?(\040?\-\040?\d+\S*?|)\040)*((i\040nast.{0,6}|in\040fine)\040)?)(.*?)(\.|\;\s|\,|\:|\?|\!|\)|\s|\>)/i";
$body = preg_replace_callback($pattern, "replaceNorms", $body);

// noch andere Testfassungen:
//$body = preg_replace_callback("/(art\.?|§) ([a-zA-Z0-9]*) (ust\.|§).* ([a-zA-Z0-9]*?)([\.,;\)]*\s)/i", "replaceNorms", $body);
//$body = preg_replace_callback("/(art\.?|§) (.*?) ([0-9a-zA-Z]) ==([\.,;\)]*\s)==/i", "<b><a href=\"javascript:myOpen('norm=$2&skrot=$3', 'przepis_$2_$3');\">$1 $2 $3</a></b>", $text);

// ****************************************
// ****** Ende der Transformation *********
// ****************************************

%%


=== 2. Schritt 2: die tags werden in der //action// interpretiert ""{{du przepis=""}}""===