-
Notifications
You must be signed in to change notification settings - Fork 0
/
programm.php
215 lines (146 loc) · 6.03 KB
/
programm.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
<?php
// ToDo: bessere input sanitation
$article_request = rawurlencode(trim($form_start));
$article_request_decode = rawurldecode($article_request);
$article_compare = rawurlencode(trim($form_ziel));
$article_compare_decode = rawurldecode($article_compare);
/**
* Single point of control
*/
/**
* Limit for tries to find a connection between two articels
*/
// 0 fuer kein Limit // STIMMT DAS NOCH???
$limit_dreier = 500;
$limit_vierer = 50;
$limit_fuenfer = 15;
$minimum_links_in_article = 1;
$minimum_backlinks_in_article = 5;
/**
* prepares the cachedirectory for the selected language
*/
prepare_cachefolders();
/**
* Loop for checking the links between the wikipedia articles
*/
if($article_request != "" && $article_compare != "" ) {
if($article_request == $article_compare) {
// Anfrage und Vergleichsartikel sind gleich (a == v)
print("<p>Artikel und Vergleich sind gleich!</p>");
print("$article_request_decode<br>");
} else {
// Man muesste die jetzt noch nicht laden, aber ich wuesste gerne jetzt schon, ob die angeforderten Artikel gueltig sind
$artikellinks = cache_links($article_request);
$backlinks = cache_backlinks($article_compare);
$count_artikellinks = count($artikellinks);
$count_backlinks = count($backlinks);
?>
<form>
<fieldset>
<legend>Zu überprüfende Artikel</legend>
"<?= w_url($article_request_decode) ?>" verweist auf <?= $count_artikellinks ?> Artikel.<br>
<?= $count_backlinks ?> Artikel verweisen auf "<?= w_url($article_compare_decode) ?>".
</fieldset>
<p></p>
<fieldset>
<legend>Gefundene Pfade</legend>
<?php
if($count_artikellinks >= $minimum_links_in_article && $count_backlinks >= $minimum_backlinks_in_article) {
if(in_array($article_request_decode, $backlinks)) {
// Vergleichsartikel ist direkt verlinkt ( a => v )
// print("$article_request_decode → $article_compare_decode<br>");
print(w_url($article_request_decode).
" → ". w_url($article_compare_decode).
"</br>\n");
} else {
$anzahl_dreierverbindungen = 0;
foreach ($artikellinks as $k => $link) {
if(in_array($link, $backlinks)) {
// Eine Verlinkung des Artikel ist mit dem Vergleichsartikel verlinkt ( a => x => v )
// print(w_url($article_request_decode). " → $link → $article_compare_decode<br>\n");
print(w_url($article_request_decode).
" → ". w_url($link).
" → ". w_url($article_compare_decode).
"</br>\n");
$anzahl_dreierverbindungen++;
if($anzahl_dreierverbindungen >= $limit_dreier) {
print("<p>LIMIT $limit_dreier!</p>");
break 1;
}
}
}
if($anzahl_dreierverbindungen == 0) {
//echo "<p>keine Dreierverbindungen gefunden, suche nach Vier</p>";
$anzahl_viererverbindungen = 0;
foreach ($artikellinks as $k => $link) {
$ebene3 = cache_links(rawurlencode($link));
foreach($ebene3 as $ebene3artikel) {
if (in_array($ebene3artikel, $backlinks)) {
// Eine Verlinkung des Artikel ist ueber Umwege mit dem Vergleichsartikel verlinkt ( a => x => y => v )
print(w_url($article_request_decode).
" → ". w_url($link).
" → ". w_url($ebene3artikel).
" → ". w_url($article_compare_decode).
"</br>\n");
// Wenn wir eine vierer Verbindung gefunde haben, freuen wir uns ersteinmal
$anzahl_viererverbindungen++;
if($anzahl_viererverbindungen >= $limit_vierer) {
print("<p>LIMIT $limit_vierer!</p>");
break 2;
}
}
}
}
}
if($anzahl_dreierverbindungen == 0 && $anzahl_viererverbindungen == 0) {
//echo "<p>keine Viererverbindungen gefunden, suche nach Fuenf</p>";
$anzahl_fuenferverbindungen = 0;
foreach ($artikellinks as $k => $link) {
$ebene3 = cache_links(rawurlencode($link));
foreach($ebene3 as $ebene3artikel) {
$ebene4 = cache_links(rawurlencode($ebene3artikel));
foreach($ebene4 as $ebene4artikel) {
if (in_array($ebene4artikel, $backlinks)) {
// Eine Verlinkung des Artikel ist ueber Umwege mit dem Vergleichsartikel verlinkt ( a => x => y => z => v )
// print("$article_request_decode → $link → $ebene3artikel → $ebene4artikel → $article_compare_decode</br>\n");
print(w_url($article_request_decode).
" → ". w_url($link).
" → ". w_url($ebene3artikel).
" → ". w_url($ebene4artikel).
" → ". w_url($article_compare_decode).
"</br>\n");
// Wenn wir eine fuenfer Verbindung gefunde haben, freuen wir uns ersteinmal
$anzahl_fuenferverbindungen++;
if($anzahl_fuenferverbindungen >= $limit_fuenfer) {
print("<p>LIMIT $limit_fuenfer!</p>");
break 3;
}
}
}
}
}
}
if($anzahl_dreierverbindungen == 0 && $anzahl_viererverbindungen == 0 && $anzahl_fuenferverbindungen == 0) {
// (Also so langsam wird aber auch arg imperformant, erstmal abwarten, ob das bei 3 Zwischenschritten ueberhaupt noch funktioniert...)
print("Keine Verbindung in der Form<br>
Start => X => Y => Z => Ziel (also mit weniger als 5 Clicks)<br>
gefunden</br>\n");
}
}
?>
</fieldset>
<?php
} else {
// $minimum_backlinks_in_article
// $minimum_links_in_article
print("<p>Artikel oder Vergleichartikel kein gueltiger Wikipedia Artikel!<br>
(Gross/Kleinschreibung richtig beachtet?)<br>
Ausserdem gelten folgende Regeln: (experimentell!)<br>
Mindestanzahl Links bei Startartikel: $minimum_links_in_article<br>
Mindestanzahl Links ZU Zielartikel: $minimum_backlinks_in_article</p>");
}
}
} else {
print("<p>Artikel oder Vergleichartikel nicht angegeben!</p>");
}
?>