ich war hier: Fall1aOeRJH » WikkaLinksToNorms

Version [77112]

Dies ist eine alte Version von WikkaLinksToNorms erstellt von WojciechLisiewicz am 2017-02-17 18:44:26.

 

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=}}""


Test

§ 5 StromGVV

Test


Diese Seite wurde noch nicht kommentiert.
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki