-
Notifications
You must be signed in to change notification settings - Fork 3
/
kern.tex
4421 lines (3569 loc) · 209 KB
/
kern.tex
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
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
%revised
\chapter{Der Serendipity-Kern}
\label{workflow}%
\index{Serendipity!Kernarchitektur}%
\index{Framework}%
Serendipity ist im Inneren ein Framework, das entsprechend der angeforderten
URL die gewünschte Aktion ausführt. Daher initialisiert sich bei jedem Aufruf
einer URL von Serendipity das gesamte Kernkonstrukt auf die immer gleiche Art
und Weise.
\section{Frontend}
Zentrale Anlaufstelle fast aller Aktionen im Frontend ist die
\cmd{index.php}-Datei. Egal ob ein einzelner Blog-Artikel, eine Übersicht oder
der Inhalt eines Plugins ausgegeben wird -- alle Ausgaben werden durch diese
Datei \emph{geroutet}. Auch bei der Verwendung von \emph{URL-Umformung} mittels
\cmd{mod\_re\-wri\-te} oder Ähnlichem werden alle Aufrufe über die
\cmd{.htaccess}-Datei im Hintergrund zur \cmd{index.php} weitergeleitet.
Aufgabe der \cmd{index.php}-Datei ist es nun, die Serendipity-Komponenten
\emph{zusammenzubauen}. Zuerst sendet diese Datei einige benötigte
HTTP"=Kopfzeilen und bindet die Datei \cmd{serendipity\_config.inc.php} ein.
Diese Datei ist das Herz des Frameworks, da sie sich darum kümmert, alle
benötigten Komponenten und Sourcecode-Dateien einzubinden und erforderliche
Konfigurationswerte einzulesen.
Dort werden einige PHP-Konstanten gesetzt, eine PHP-Session gestartet und die wichtigen
Serendipity-Stammpfade festgelegt. Daraufhin erfolgt die Einbindung der Datei
\cmd{include/compat.inc.php}. Hier werden die URL-Variablen korrekt zugewiesen
und abhängig von der Konfiguration des PHP-Servers bearbeitet. Zusätzlich wird
hier die zentrale \cmd{\$serendipity}-Variable erstmals instanziert. Auch werden
einige zentrale PHP-Funktionen definiert, die Serendipity im Folgenden
immer wieder benötigen wird.
Nachdem diese Datei abgearbeitet wurde, folgt in der
Datei \cmd{serendipity\_""config.inc.php} die weitere Definition des
\cmd{\$serendipity}-Arrays. Hier wird beispielsweise die Versionsnummer der
Software festgehalten, die Art der Fehlerbehandlung bestimmt, und Standardwerte
für einige der Serendipity"=Optionen werden vorbelegt.
Nachdem diese Variablen feststehen, ist es an der Zeit, den Sprachkern
nachzuladen. Dieser richtet sich nach der vom Besucher festgelegten Sprache.
Falls der Besucher ein angemeldeter Redakteur ist, wird dessen Sprachvariable
aus den persönlichen Einstellungen bezogen. Auch die konfigurierte
Browser-Sprache kann einen Einfluss darauf haben, in welcher Sprache Serendipity
mit dem Benutzer spricht. Die einmal festgelegte Sprache wird
daraufhin in der PHP-Session für den nächsten Aufruf gespeichert. Alle
sprachbezogenen Aktionen werden mittels der \cmd{include/lang.inc.php}-Datei
durchgeführt.
Nachdem nun die gewünschte Sprachdatei eingebunden wurde, kann Serendipity mit
dem Besucher interagieren. An dieser Stelle wird geprüft, ob Serendipity
überhaupt bereits installiert wurde (falls nicht, startet der Installationsprozess).
Als Nächstes setzt Serendipity die PHP-Include-Pfade so, dass alle zu
Serendipity gehörenden Dateien eingebunden werden können. Dies ist besonders dann
wichtig, wenn Serendipity in einer \emph{Shared Installation}
(siehe Seite \pageref{sharedinstall}) betrieben wird.
Nun kann Serendipity die zentrale Konfigurationsdatei
\cmd{serendipity\_con\-fig\_local.inc.php} einlesen. Hierin sind die
Zugangsparameter zur Datenbank enthalten. Wenn diese Zugangsparameter korrekt
gelesen wurden, kann eine Verbindung zur Datenbank hergestellt werden.
Die Einbindung der \cmd{include/functions.inc.php} sorgt dafür, dass sämtliche
PHP-Kernfunktionen Serendipitys geladen werden. Dazu werden weitere Dateien wie
\cmd{include/functions\_config.inc.php} eingebunden, die diese Funktionen
jeweils themenspezifisch bündeln (siehe auch Seite \pageref{s9yfiles}).
\longpage
Nun wird das \cmd{\$serendipity}-Array mit allen Konfigurationswerten der
Datenbank befüllt. Der Redakteur kann so mit der Benutzerdatenbank abgeglichen
werden, um einen gültigen Login zu erkennen und ggf. die persönliche
Konfiguration des Besuchers zu laden.
Als Letztes erfolgt in der \cmd{serendipity\_config.inc.php} der Aufruf der
Plugin-API (siehe Seite \pageref{pluginapi}). Beim ersten Aufruf werden
alle installierten Plugins in den Speicher geladen und etwaige Aktionen ausgeführt.
Nachdem nun das Serendipity-Framework geladen wurde, kann der Ablauf der
\cmd{index.php} fortgesetzt werden. Hier werden weitere HTTP-Kopfzeilen
gesendet.
Da nun der vollständige Zugriff auf die Datenbank möglich ist, kann Serendipity
abhängig von der Konfiguration der Permalinks prüfen, welche Seite der
Besucher angefordert hat. Dazu dienen zahlreiche \cmd{IF-Abfragen}, die den
Großteil dieser Datei ausmachen.
Jeder mögliche Ausgabefall (Archiv-Übersicht, Kategorie-Übersicht,
Einzelartikel, Volltextsuche \ldots) wird hier mit der aktuellen URL
(\cmd{\$uri}) verglichen. Falls eine der IF-Bedingungen zutrifft, ruft
Serendipity die für die Unterseite notwendigen Befehle ab.
Meist bestehen diese Befehle darin, benötigte Variablen vorzubelegen und
Komponenten der URL (Autor-ID, Kategorie-ID, Zeitraum der Archive \ldots)
auszulesen. Abschließend wird in beinahe jeder der IF-Bedingungen die Datei
\cmd{include/genpage.inc.php} aufgerufen, die für die Ausgabe einer
Template-Datei verantwortlich zeichnet.
In dieser Datei wird hauptsächlich die \emph{Smarty}-Bibliothek geladen, die für
die Auswertung der Template-Dateien zuständig ist. Serendipity reicht einige
Parameter an die dafür zuständige \cmd{serendipity\_smarty\_init()}-Funktion
weiter. Diese Funktion wird in der Datei \cmd{include/functions\_""smarty.inc.php}
deklariert. Sie setzt alle gewünschten Variablen und wertet anschließend etwaige
\cmd{config.inc.php}-Dateien Ihres Templates aus. Darüber können zusätzliche
Template-Optionen eingestellt werden. Sämtliche zusätzlichen Smarty-Modifier und
eigene Smarty-Funktionen werden an dieser Stelle des Ablaufs gesetzt, und
Standard-Serendipity-Variablen werden an die Templates weitergereicht.
Daraufhin kann Serendipity anhand der URL-Parameter den eigentlichen Inhalt der
Seite zusammenstellen. Die Funktion \cmd{serendipity\_fetchEn\-tries()} sorgt
dafür, dass die angeforderten Artikel aus der Datenbank eingelesen werden.
Daraufhin werden sie über die Funktion \cmd{serendipity\_""print\-Entries}
bearbeitet und letztlich an die erforderliche Template-Datei zugewiesen.
Nachdem die Datei \cmd{genpage.inc.php} den eigentlichen Seiteninhalt
aufbereitet hat (Smarty-Variable \ospsmarty{CONTENT}), kann die \cmd{index.php}-Datei als letzte
Maßnahme für die Ausgabe des Inhalts sorgen, indem sie den Darstellungsprozess
von \emph{Smarty} aufruft.
\section{Backend}
Der Ablauf im Backend ist beinahe identisch. Anstelle der \cmd{index.php} wird
hier jedoch immer die \cmd{serendipity\_admin.php} aufgerufen. Diese prüft den
Aufruf zusätzlich auf einen gültigen Login und stellt das Menü zusammen.
Anschließend wird abhängig von der gewählten Aktion im Backend die entsprechende
Include-Datei aus dem Verzeichnis \cmd{include/admin/} eingebunden. Diese Datei
führt die gewünschte Aktion aus (z.\,B.\ Verwalten von Einträgen) und liefert den
HTML-Teil zurück, der im rechten Bereich des Backends angezeigt werden soll.
Dieser HTML-Teil wird über die Template-Datei \cmd{admin/index.tpl} entsprechend
eingebunden und anschließend zusammen mit dem Menü und dem Kopfbereich ausgegeben.
Eine Übersicht über die Inhalte aller zu Serendipity gehörenden Dateien finden
Sie ab Seite \pageref{s9yfiles}.
\section{Sonderfälle}
Obwohl die meisten Serendipity-Ansichten entweder über das Backend
(also \cmd{serendipity\_admin.php}) oder Frontend (\cmd{index.php}) geroutet werden,
gibt es einige Sonderfälle. Diesen Sonderfällen ist jedoch gemein, dass sie alle
das Serendipity"=Framework einbinden, um auf identische Funktionen und Plugins
zugreifen zu können.
\index{Trackbacks}%
\subsection{Kommentare, Trackbacks}
Eingehende Trackbacks (und Pingbacks) werden nicht über das zentrale Framework
abgearbeitet, sondern über eine eigenständige Datei \cmd{comment.""php}. Diese
bindet das Serendipity-Framework zwar ein, dient aber ansonsten aus Gründen der
Übersichtlichkeit ausschließlich der Abarbeitung von Trackbacks. Da diese einen
ressourcenintensiven Prozess darstellen, werden sie nicht über die zentrale
Datei bearbeitet. Dies erleichtert Logging und evtl. auch den Ausschluss des
Trackback-Mechanismus' bei Ressourcenproblemen (siehe Seite \pageref{commentphp}).
Falls Ihr Serendipity-Blog so konfiguriert ist, dass Kommentare in einem Popup
angezeigt werden, dient die \cmd{comment.php} auch zur Darstellung
und Entgegennahme von Kommentaren. Ohne Popup-Darstellung übernimmt dies
wie gewohnt die \cmd{index.php}-Datei, daher befindet sich hier
stellenweise duplizierter Code.
\index{wfwComment}%
Einen Sonderfall von Kommentaren stellen die sogenannten \cmd{wfwComments} dar. Sie
sind Teil eines Standards, der speziell für RSS-Reader ins Leben gerufen wurde.
Er erlaubt, dass man direkt vom RSS-Reader aus Kommentare zu einem Blog-Eintrag
verfassen kann, ohne dazu erst die URL des Blogs und dort ein
Kommentarfeld aufrufen zu müssen. Serendipity nimmt derartige Kommentare über die Datei
\cmd{wfwcomment.php} entgegen.
\subsection{Exit-Nachverfolgung}
Serendipitys Plugin zum \cmd{Externe Links zählen} (siehe Seite \pageref{trackexits})
dient zur statistischen Erfassung, auf welche Links Ihre Besucher klicken. Dabei
leitet Serendipity den Besucher auf die eigentlich gewünschte URL weiter. Damit
dies Ressourcen sparend geschehen kann, ist diese Funktionalität in der Datei
\cmd{exit.php} gekapselt.
\subsection{RSS-Feeds}
Da die Darstellung von RSS-Feeds unabhängig vom Frontend geschieht, ist diese Aufgabe
über die separate Datei \cmd{rss.php} geregelt.
\subsection{Mediendatenbank-Popup}
Die Mediendatenbank kann an einigen Stellen des Front- und Backends aufgerufen
werden und erfolgt meist als Popup. Um dies komfortabler und isolierter zu
verwalten, befindet sich der dafür notwendige Code in der Datei
\cmd{serendipity\_admin\_image\_selector.php}.
\index{XML-RPC}%
\subsection{XML-RPC}
Serendipity unterstützt über ein Plugin die Möglichkeit, Blog-Artikel mittels
fremder Anwendungen zu erstellen, ohne dafür das Serendipity-Backend benutzen zu
müssen.
Hierfür wurde die Datei \cmd{serendipity\_xmlrpc.php} geschaffen. In früheren
Serendipity-Versionen war hier der vollständige Code enthalten, um die
gewünschte API zum Erstellen von Artikeln abzudecken. Nachdem dies als Plugin
ausgelagert wurde, dient die Datei nur noch als eine Art Grundgerüst, um das
Plugin aufzurufen.
\index{Serendipity!Dateien}%
\section{Serendipity-Dateien}
\label{s9yfiles}
Serendipity besteht aus einer größeren Menge an Dateien und Systembibliotheken:
\begin{ospdescription}
\ospitem{Stammverzeichnis} Das Stammverzeichnis enthält folgende Dateien:
\begin{ospdescription}
\ospitem{\cmd{.htaccess}} Steueranweisungen für den Webserver
(\emph{URL"=Umformung} etc.)
\ospitem{\cmd{comment.php}} stellt Kommentare/Trackbacks in einem Popup dar.
\ospitem{\cmd{exit.php}} leitet verfolgte URLs an das gewünschte Ziel weiter (bei
Verwendung des Plugins \emph{URL-Exits verfolgen}).
\ospitem{\cmd{index.php}} stellt den zentralen Anlaufpunkt für alle
Frontend"=Ausgaben dar.
\ospitem{\cmd{rss.php}} gibt RSS-Feeds aus.
\ospitem{\cmd{serendipity.css.php}} gibt die Stylesheets von Serendipity aus.
\ospitem{\cmd{serendipity\_admin.php}} stellt den zentralen Anlaufpunkt für alle
Backend-Ausgaben dar.
\ospitem{\cmd{serendipity\_admin\_image\_selector.php}} stellt das
Mediendatenbank"=Popup dar.
\ospitem{\cmd{serendipity\_config.inc.php}} lädt das Serendipity Framework.
\ospitem{\cmd{serendipity\_config\_local.inc.php}} enthält zentrale
Konfigurationswerte Serendipitys.
\ospitem{\cmd{serendipity\_define.js.php}} konvertiert einige PHP-Variablen, damit sie
in JavaScripts zur Verfügung stehen.
\ospitem{\cmd{serendipity\_editor.js}} stellt JavaScript-Funktionen der
Mediendatenbank bereit.
\ospitem{\cmd{serendipity\_xmlrpc.php}} bindet die Anlaufstelle für die XML-RPC API
ein.
\ospitem{\cmd{wfwcomment.php}} bindet eine Anlaufstelle für wfwComment-API-Aufrufe ein.
\end{ospdescription}
\ospitem{Verzeichnis \cmd{archives}}
Dient nur als Platzhalter für das symbolische Verzeichnis \cmd{archives}, das
Serendipity innerhalb der URL verwendet. Hier werden jedoch keine Dateien
gespeichert, sondern diese werden aus der Datenbank gelesen. Einige Plugins
speichern in diesem Verzeichnis temporäre Dateien.
\ospitem{Verzeichnis \cmd{bundled-libs}}
Enthält einige Fremd-Bibliotheken zur Erweiterung der Funktionen Serendipitys
(z.\,B.\ \cmd{PEAR}-Klassen und \cmd{Smarty}).
\index{Deployment}%
\ospitem{Verzeichnis \cmd{deployment}}
Enthält funktionsreduzierte Rumpf-Dateien für die \emph{Shared Installation}
(siehe Seite \pageref{sharedinstall}) von Serendipity. Diese entsprechen den
Dateinamen des Stammverzeichnisses und binden die entsprechende Datei später ein.
\ospitem{Verzeichnis \cmd{docs}}
Enthält einige Dateien zur Dokumentation Serendipitys. Die Datei \cmd{NEWS}
enthält ein Protokoll von Änderungen zwischen den verschiedenen Versionen
Serendipitys.
\ospitem{Verzeichnis \cmd{htmlarea}}
Enthält den Sourcecode des \cmd{HTMLArea}-WYSIWYG-Editors zur
Darstellung einer Microsoft Word-ähnlichen Oberfläche beim
Bearbeiten von Artikeln (siehe Seite \pageref{wysiwyg}).
\ospitem{Verzeichnis \cmd{include}}
Enthält die zentralen Funktionskomponenten Serendipitys:
\begin{ospdescription}
\ospitem{\cmd{compat.inc.php}} enthält Bearbeitungsroutinen, die zur
Kompatibilitätswahrung und Vereinheitlichung verschiedener PHP"=Versionen nötig sind.
\ospitem{\cmd{functions.inc.php}} enthält zentrale Funktionen für Serendipity und
lädt die Unter-Funktionsdateien.
\ospitem{\cmd{functions\_calendars.inc.php}} enthält Funktionen zur Bearbeitung von
Datumsangaben und Zeitwerten.
\ospitem{\cmd{functions\_comments.inc.php}} enthält Funktionen zur Behandlung von Blog-Kommentaren.
\ospitem{\cmd{functions\_entries.inc.php}} enthält Funktionen zur Behandlung von
Blog-Artikeln.
\ospitem{\cmd{functions\_entries\_admin.inc.php}} enthält Funktionen zur Bearbeitung
von Blog-Artikeln im Backend.
\ospitem{\cmd{functions\_images.inc.php}} enthält Funktionen zur Behandlung von
Objekten der Mediendatenbank.
\ospitem{\cmd{functions\_images\_crop.inc.php}} enthält Funktionen zum Beschneiden
von Bildern (derzeit noch experimentell).
\ospitem{\cmd{functions\_installer.inc.php}} enthält Funktionen zur Installation Serendipitys.
\ospitem{\cmd{functions\_permalinks.inc.php}} enthält Funktionen zur Bearbeitung von
Permalinks/URL"=Werten.
\ospitem{\cmd{functions\_plugins\_admin.inc.php}} enthält Funktionen zur
Konfiguration von Plugins im Backend.
\ospitem{\cmd{functions\_rss.inc.php}} enthält Funktionen zur Ausgabe von RSS-Feeds.
\ospitem{\cmd{functions\_smarty.inc.php}} enthält Funktionen zur Interaktion mit der
Smarty-Bibliothek.
\ospitem{\cmd{functions\_trackbacks.inc.php}} enthält Funktionen zur Annahme und
zum Versand von Trackbacks.
\ospitem{\cmd{functions\_upgrader.inc.php}} enthält Funktionen zum
Aktualisierungsvorgang für Serendipity.
\ospitem{\cmd{genpage.inc.php}} enthält Anweisungen zur Erstellung und zur Ausgabe von
Seiten im Frontend.
\ospitem{\cmd{lang.inc.php}} enthält Anweisungen zum Laden der notwendigen Sprachdateien.
\ospitem{\cmd{plugin\_api.inc.php}} enthält die Klassen der Plugin-Schnittstelle.
\ospitem{\cmd{plugin\_api\_extension.inc.php}} enthält erweiterte Funktionen, auf
die Plugins zurückgreifen\osplinebreak{} können.
\ospitem{\cmd{plugin\_internal.inc.php}} enthält eine Liste eingebauter Plugins,
die für Serendipity zur Verfügung stehen.
\ospitem{\cmd{template\_api.inc.php}} enthält die Klasse der Template"=Schnittstelle,
wenn eine andere Schnittstelle als Smarty zum Einsatz kommen soll (siehe Seite
\pageref{templateapi}).
\end{ospdescription}
\ospitem{Verzeichnis \cmd{include/admin}}
Enthält die Unterseiten des Backends:
\begin{ospdescription}
\ospitem{\cmd{category.inc.php}} enthält die Maske zur Bearbeitung von Kategorien.
\ospitem{\cmd{comments.inc.php}} enthält die Maske zur Bearbeitung von Kommentaren.
\ospitem{\cmd{configuration.inc.php}} enthält die Maske zur Konfiguration Serendipitys.
\ospitem{\cmd{entries.inc.php}} enthält die Maske zum Bearbeiten/Erstellen von
Blog"=Artikeln.
\ospitem{\cmd{entries\_overview.inc.php}} enthält die Maske für die Übersicht der Blog-Artikel.
\ospitem{\cmd{export.inc.php}} enthält die Maske zum Exportieren von Blog-Artikeln.
\ospitem{\cmd{groups.inc.php}} enthält die Maske zur Bearbeitung von Benutzergruppen.
\ospitem{\cmd{images.inc.php}} enthält die Maske zum Verwalten der Mediendatenbank.
\ospitem{\cmd{import.inc.php}} enthält die Maske zum Importieren von Blog-Artikeln.
\ospitem{\cmd{installer.inc.php}} enthält die Maske zur Installation Serendipitys.
\ospitem{\cmd{overview.inc.php}} enthält die Maske zur Startseite des Backends.
\ospitem{\cmd{personal.inc.php}} enthält die Maske zu den persönlichen Einstellungen.
\ospitem{\cmd{plugins.inc.php}} enthält die Maske zur Verwaltung von Plugins.
\ospitem{\cmd{templates.inc.php}} enthält die Maske zum Verwalten von Templates.
\ospitem{\cmd{upgrader.inc.php}} enthält die Maske zum Aktualisieren von Serendipity.
\ospitem{\cmd{users.inc.php}} enthält die Maske zur Verwaltung von Redakteuren.
\end{ospdescription}
\ospitem{Verzeichnis \cmd{include/admin/importers}}
Enthält die verschiedenen Import-Module für die Schnittstelle zu anderen
Blog-Systemen. Der Dateiname steht jeweils für das Blog"=System, die Datei
\cmd{generic.inc.php} enthält den RSS-Feed-Import.
\ospitem{Verzeichnis \cmd{include/db}}
Enthält die Funktionsbibliotheken zur Verwendung unterschiedlicher
Datenbanksysteme. Die Datei \cmd{db.inc.php} enthält die systemübergreifenden
Funktionen, die anderen Dateien enthalten den Funktionssatz des jeweils
gleichnamigen Datenbanksystems.
\ospitem{Verzeichnis \cmd{include/tpl}}
Enthält einige Vorlagedateien zur Darstellung von Konfigurationsoptionen des
Blogs. Die \cmd{htacces\_\ldots.tpl}-Dateien enthalten Vorlagen für die
automatisch erstellte \cmd{.htaccess}-Datei, in Abhängigkeit von der gewählten
Form der URL-Umformung und der eingesetzten PHP-Version (mit/ohne
CGI-Einbindung). Die Datei \cmd{config\_local.inc.""php} enthält die Anweisungen
zur zentralen Blog-Konfiguration (siehe Seite \pageref{configlocal}) und
\cmd{config\_personal.inc.php} die persönlichen Einstellungen.
\label{lang-dir}%
\ospitem{Verzeichnis \cmd{lang}}
Enthält die Sprachdateien zur Übersetzung der Serendipity"=Meldungen. Das Kürzel
am Ende jeder Datei steht für die entsprechende Sprache (\cmd{de} = Deutsch,
\cmd{en} = Englisch usw.). Die Dateien \cmd{addlang.*}, \cmd{plugin\_""lang.php}
und \cmd{append.sh} sind nur für Entwickler gedacht, damit einfach neue
Sprachkonstanten in alle Dateien hinzugefügt werden können.
Innerhalb dieser Datei sorgt der PHP-Befehl \cmd{define()} dafür, einer
Konstante (erster Parameter) einen beliebigen Wert (zweiter Parameter)
zuzuordnen. Wenn einfache oder doppelte Anführungszeichen im Inhalt einer
Konstante vorkommen, müssen Sie darauf achten, diese mit einem Backslash (\textbackslash)
zu escapen:
\begin{ospcode}
\@define('KONSTANTENNAME1', 'Ich bin{}\textbackslash{}'s, der "{}Waldi"{}!');
\@define('KONSTANTENNAME2', ``Ich bin's, der
\textbackslash{}"{}Waldi\textbackslash{}"{}!');
\end{ospcode}
Serendipity setzt das \cmd{@}-Zeichen vor jeden \cmd{define()}-Aufruf, damit etwaige
doppelte Deklarationen einer Konstante keine Fehlermeldung provozieren.
Das Unterverzeichnis \cmd{UTF-8} enthält dieselben Dateien ein weiteres Mal,
jedoch entgegen zur nationalen Zeichensatzkonvertierung (meist ISO) im UTF-8-Zeichensatz.
\ospitem{Verzeichnis \cmd{plugins}}
Enthält die installierbaren Plugins. Der Name des jeweiligen Unterverzeichnisses
entspricht dem Namen der Plugin-Dateien. Hier abgelegte Plugins müssen zuerst
über das Backend installiert werden, bevor sie aktiv sind.
\ospitem{Verzeichnis \cmd{sql}}
Enthält Dateien mit SQL-Anweisungen. Die Datei \cmd{db.sql} enthält alle
Anweisungen, die bei der Installation Serendipitys ausgeführt werden. Diese
Datei enthält einige Variablen (eingefasst in geschweiften Klammern), die bei der
Installation automatisch entsprechend des Datenbank-Zielsystems in den korrekten
SQL-Dialekt übersetzt werden.
Die Dateien \cmd{db\_update\_X\_Y\_Z.sql} enthalten die SQL-Anweisungen, die
beim Aktualisieren von Serendipity automatisch ausgeführt werden sollen, um neue
Tabellen zu erstellen bzw. bestehende Tabellen anzupassen. Dabei steht \cmd{X}
für die vorher installierte Serendipity-Version und \cmd{Y} für die neue
Version. Bei einem Update werden alle Versionszwischenstände
ebenfalls ausgeführt. \cmd{Z} steht dabei für das verwendete
Datenbank-Zielsystem (MySQL, PostgreSQL oder SQ\-Lite).
\ospitem{Verzeichnis \cmd{templates}}
Enthält die verfügbaren Templates. Das Verzeichnis \cmd{carl\_contest} enthält
seit Serendipity 1.0 alle Standarddateien, die
verwendet werden, wenn ein Template-Verzeichnis nicht über eine entsprechende
Datei verfügt. Das Verzeichnis \cmd{default} enthält darüber hinaus weitere
Standarddateien, falls diese nicht im Verzeichnis \cmd{carl\_contest} liegen.
Diese beiden Sonderverzeichnisse sollten daher bei jeder
Serendipity"=Installation beibehalten und stets aktualisiert werden. Änderungen
an diesen Dateien sollten Sie niemals dort vornehmen, sondern stattdessen in
einer lokalen Kopie eines eigenen Template"=Verzeichnisses.
\ospitem{Verzeichnis \cmd{templates\_c}}
Enthält die von Smarty erstellten Temporärdateien mit in PHP-Code übersetzten
Templates.
\ospitem{Verzeichnis \cmd{tests}}
\index{Unit-Tests}%
Enthält (rudimentäre) Unit-Test-Dateien für Serendipity.
\ospitem{Verzeichnis \cmd{uploads}}
In diesem Verzeichnis werden die Dateien der Mediendatenbank gespeichert.
\end{ospdescription}
\index{Serendipity!Funktionen}%
\section{Serendipity-Funktionen}
Auf eine ausführliche Beschreibung aller Serendipity-Funktionen muss aus
Platzgründen in diesem Buch verzichtet werden. Alle verfügbaren Parameter sowie
Rückgabewerte sind jedoch als PHPDoc-Kommentare oberhalb der
Funktionsdeklaration jeder Serendipity-Kerndatei enthalten und können dort
leicht nachgeschlagen werden. Der Name der Datei, in der sich die jeweilige Funktion
befindet, ist in der folgenden Liste aufgeführt.
Im Folgenden finden Sie eine Liste von gebräuchlichen Serendipity"=Funktionen,
die Sie bei der Entwicklung von Plugins und Ähnlichem häufig einsetzen werden.
\subsection{Zentrale Funktionen}
\label{zentralefunktionen}%
Zentrale Funktionen können an mehreren Stellen Serendipitys eingesetzt werden.
\begin{ospdescription}
\ospitem{\cmd{serendipity\_die()} (\cmd{include/compat.inc.php})}
Gibt eine (beliebige) Fehlermeldung aus, falls die reguläre Ausführung von
Serendipity unmöglich ist.
\ospitem{\cmd{serendipity\_mb()} (\cmd{include/lang.inc.php})}
Dient als Wrapper-Funktion, um Multi-Byte-Zeichensatzoperationen durchzuführen.
PHP bietet für derartige Multi-Byte-Sprachen (asiatische) spezielle Funktionen
an, was Serendipity für den Programmierer einfacher ansprechbar werden lässt.
\ospitem{\cmd{serendipity\_serverOffsetHour()} (\cmd{include/functions.inc.php})}
Liefert einen UNIX-Zeitstempel zurück, der abhängig von der Konfiguration des
Servers in die richtige Zeitzone umgerechnet wurde.
\ospitem{\cmd{serendipity\_strftime(), serendipity\_formatTime()}}
\ospadditem{(\cmd{include/functions.inc.php})}
Konvertiert einen UNIX-Zeitstempel in ein lesbares Format und wendet etwaige
Zeitzonen-Umrechnungen an.
\ospitem{\cmd{serendipity\_walkRecursive()} (\cmd{include/functions.inc.php})}
Dient als Hilfsfunktion, um eine hierarchische Struktur innerhalb eines
eindimensionalen Arrays zu durchwandern und aufzubereiten. Dies wird vor allem
für verschachtelte Kategorien und Kommentare verwendet, die eine Verschachtelung
anhand eines \cmd{parent\_id}-Array-Schlüssels angeben.
Üblicherweise enthält z.\,B.\ die Liste von Kategorien keine hierarchische
Struktur, sondern jede Kategorie ist in eine eindimensionale Liste alphabetisch
einsortiert. Der Sinn der Funktion \cmd{serendipity\_""walkRecursive} ist es nun,
das Array später korrekt eingerückt darzustellen, so dass Unterkategorien
sequentiell direkt auf die Oberkategorie folgen und mit Leerzeichen (oder
anderen Zeichen) eingerückt werden.
\ospitem{\cmd{serendipity\_sendMail()} (\cmd{include/functions.inc.php})}
Sendet eine E-Mail mit Serendipity-Kopf- und -Fußzeilen.
\ospitem{\cmd{serendipity\_utf8\_encoded()} (\cmd{include/functions.inc.php})}
Kodiert eine Zeichenkette im Zeichensatz des Blogs in das UTF-8-Format. Falls
die Zeichenkette bereits im UTF-8-Format vorliegt, wird keine weitere
Umkodierung vorgenommen.
\ospitem{\cmd{serendipity\_parseFileName()} (\cmd{include/functions.inc.php})}
Teilt eine Datei in ihre Bestandteile auf (Grundname, Datei-Endung).
\ospitem{\cmd{serendipity\_trackReferrer()} (\cmd{include/functions.inc.php})}
Liest den HTTP-Referrer aus und speichert ihn für statistische Zwecke in der Datenbank.
\ospitem{\cmd{serendipity\_request\_start(), serendipity\_request\_end()}}
\ospadditem{(\cmd{include/functions.inc.php})}
Führt bestimmte Operationen aus, bevor/nachdem Serendipity eine fremde URL
aufruft. Dies dient der Verhinderung von Schreibproblemen mit PHP-Sessions.
\ospitem{\cmd{serendipity\_build\_query()} (\cmd{include/functions.inc.php})}
Erstellt eine Zeichenkette anhand eines übergebenen Arrays, damit dessen Werte
z.\,B.\ in einer HTTP-GET-URL übertragen werden können.
\ospitem{\cmd{serendipity\_pickKey()} (\cmd{include/functions.inc.php})}
Dient als Smarty-Modifier, um die Elemente eines Unter-Arrays auszuliefern.
\ospitem{\cmd{serendipity\_getTemplateFile()}}
\ospadditem{(\cmd{include/functions\_config.inc.php})}
Liefert den vollen Pfad zu einer gewünschten Datei des aktuellen Templates.
\ospitem{\cmd{serendipity\_load\_configuration()}}
\ospadditem{(\cmd{include/functions\_config.inc.php})}
Liest alle Konfigurationswerte Serendipity in das zentrale
\cmd{\$serendi\-pity}-Array.
\ospitem{\cmd{serendipity\_logout()} (\cmd{include/functions\_config.inc.php})}
Führt den Logout eines Benutzers durch.
\ospitem{\cmd{serendipity\_session\_destroy()}}
\ospadditem{(\cmd{include/functions\_config.inc.php})}
Löscht alle PHP-Sessiondaten des aktuellen Benutzers, um ihn vollständig
auszuloggen.
\ospitem{\cmd{serendipity\_login(), serendipity\_authenticate\_author}}
\ospadditem{(\cmd{include/functions\_config.inc.php})}
Wertet den Login eines Redakteurs aus und initalisiert dessen Konfigurationswerte.
\ospitem{\cmd{serendipity\_issueAutologin(), serendipity\_setAuthorToken()}}
\ospadditem{(\cmd{include/functions\_config.inc.php})}
Setzt ein Login-Cookie, damit ein Redakteur automatisch bei den folgenden Seitenaufrufen
eingeloggt werden kann.
\ospitem{\cmd{serendipity\_checkAutologin()}}
\ospadditem{(\cmd{include/functions\_config.inc.php})}
Wertet ein automatisches Login-Cookie eines Redakteurs aus.
\ospitem{\cmd{serendipity\_userLoggedIn()}}
\ospadditem{(\cmd{include/functions\_config.inc.php})}
Liefert zurück, ob ein Redakteur momentan eingeloggt ist.
\ospitem{\cmd{serendipity\_JSsetcookie()}}
\ospadditem{(\cmd{include/functions\_config.inc.php})}
Gibt JavaScript-Code aus, um ein Cookie zu setzen.
\ospitem{\cmd{serendipity\_setCookie()}}
\ospadditem{(\cmd{include/functions\_config.inc.php})}
Setzt ein Cookie.
\ospitem{\cmd{serendipity\_deleteCookie()}}
\ospadditem{(\cmd{include/functions\_config.inc.php})}
Löscht ein Cookie.
\ospitem{\cmd{serendipity\_is\_iframe()}}
\ospadditem{(\cmd{include/functions\_config.inc.php})}
Prüft, ob ein iframe zur Vorschau eines Artikels im Backend eingebunden werden
muss.
\ospitem{\cmd{serendipity\_iframe(), serendipity\_iframe\_create()}}
\ospadditem{(\cmd{include/functions\_config.inc.php})}
Erstellt einen iframe zur Artikelvorschau im Backend.
\ospitem{\cmd{serendipity\_probeInstallation()}}
\ospadditem{(\cmd{include/functions\_config.inc.php})}
Prüft, welche Voraussetzungen zur Installation der Server unterstützt
(Datenbanken, URL-Umformung).
\ospitem{\cmd{serendipity\_header()} (\cmd{include/functions\_config.inc.php})}
Sendet einen HTTP-Header.
\ospitem{\cmd{serendipity\_getSessionLanguage()}}
\ospadditem{(\cmd{include/functions\_config.inc.php})}
Liefert die aktuelle Sprache des Besuchers.
\ospitem{\cmd{is\_utf8()} (\cmd{include/functions\_trackbacks.inc.php})}
Prüft, ob eine Zeichenkette im UTF-8-Zeichensatz vorliegt.
\ospitem{\cmd{\_serendipity\_send()} (\cmd{include/functions\_trackbacks.inc.php})}
Öffnet eine Socket-Verbindung zu einem fremden Server und sendet Daten (meist Trackbacks/Pingbacks).
\end{ospdescription}
\subsection{Redakteure, Rechte}
Funktionen zur Verwaltung von Redakteuren und deren Rechten.
\begin{ospdescription}
\ospitem{\cmd{serendipity\_fetchUsers()} (\cmd{include/functions.inc.php})}
Holt ein Array mit der Liste aller verfügbaren Serendipity-Redakteure.
\ospitem{\cmd{serendipity\_fetchUser()} (\cmd{include/functions.inc.php})}
Holt ein Array mit den Eigenschaften eines speziellen Serendipity-Redakteurs.
\ospitem{\cmd{serendipity\_addAuthor()} (\cmd{include/functions\_config.inc.php})}
Fügt einen neuen Redakteur hinzu.
\ospitem{\cmd{serendipity\_deleteAuthor()}}
\ospadditem{(\cmd{include/functions\_config.inc.php})}
Löscht einen Redakteur.
\ospitem{\cmd{serendipity\_remove\_config\_var()}}
\ospadditem{(\cmd{include/functions\_config.inc.php})}
Entfernt eine Konfigurationsoption eines Redakteurs.
\ospitem{\cmd{serendipity\_set\_config\_var(), serendipity\_set\_user\_var()}}
\ospadditem{(\cmd{include/functions\_config.inc.php})}
Setzt einen Konfigurationswert eines Redakteurs.
\ospitem{\cmd{serendipity\_get\_config\_var(),
serendipity\_get\_user\_var()}}
\ospadditem{(\cmd{include/functions\_config.inc.php})}
Liest den Konfigurationswert eines Redakteurs aus.
\ospitem{\cmd{serendipity\_getPermissions()}}
\ospadditem{(\cmd{include/functions\_config.inc.php})}
Liefert die Rechte eines Redakteurs zurück.
\ospitem{\cmd{serendipity\_getPermissionNames()}}
\ospadditem{(\cmd{include/functions\_config.inc.php})}
Liefert alle verfügbaren internen Rechte sowie deren Einteilung in die
Benutzerränge von älteren Serendipity-Versionen zurück.
\ospitem{\cmd{serendipity\_getDBPermissionNames()}}
\ospadditem{(\cmd{include/functions\_config.inc.php})}
Liefert alle in der Datenbank hinterlegten Rechte zurück. Dort können auch
etwaige von Plugins vergebene Rechte miteinbezogen werden.
\ospitem{\cmd{serendipity\_getAllPermissionNames()}}
\ospadditem{(\cmd{include/functions\_config.inc.php})}
Liefert alle verfügbaren Rechte (interne und aus der Datenbank) zurück.
\ospitem{\cmd{serendipity\_checkPermission()}}
\ospadditem{(\cmd{include/functions\_config.inc.php})}
Prüft, ob ein Redakteur ein bestimmtes Recht besitzt.
\ospitem{\cmd{serendipity\_updateGroups()}}
\ospadditem{(\cmd{include/functions\_config.inc.php})}
Aktualisiert die Gruppenmitgliedschaften eines Redakteurs.
\ospitem{\cmd{serendipity\_getAllGroups()}}
\ospadditem{(\cmd{include/functions\_config.inc.php})}
Liefert alle eingerichteten Benutzergruppen zurück.
\ospitem{\cmd{serendipity\_fetchGroup()} (\cmd{include/functions\_config.inc.php})}
Liefert die einer Benutzergruppe zugeordneten Rechte zurück.
\ospitem{\cmd{serendipity\_getGroups()} (\cmd{include/functions\_config.inc.php})}
Liefert alle Gruppenmitgliedschaften eines Redakteurs zurück.
\ospitem{\cmd{serendipity\_getGroupUsers()}}
\ospadditem{(\cmd{include/functions\_config.inc.php})}
Liefert alle Mitglieder einer gewünschten Benutzergruppe zurück.
\ospitem{\cmd{serendipity\_deleteGroup()}}
\ospadditem{(\cmd{include/functions\_config.inc.php})}
Löscht eine Benutzergruppe.
\ospitem{\cmd{serendipity\_addGroup()} (\cmd{include/functions\_config.inc.php})}
Fügt eine Benutzergruppe hinzu.
\ospitem{\cmd{serendipity\_addDefaultGroup()}}
\ospadditem{\cmd{include/functions\_config.inc.php})}
Konvertiert einen Benutzerrang einer alten Serendipity-Installation in eine neue
Benutzergruppe gleichen Namens.
\ospitem{\cmd{serendipity\_intersectGroup()}}
\ospadditem{(\cmd{include/functions\_config.inc.php})}
Prüft, ob ein gewünschter Benutzer in derselben Gruppe ist wie der derzeit
eingeloggte Redakteur.
\ospitem{\cmd{serendipity\_updateGroupConfig()}}
\ospadditem{(\cmd{include/functions\_config.inc.php})}
Aktualisiert die einer Benutzergruppe zugewiesenen Rechte.
\ospitem{\cmd{serendipity\_ACLGrant()} (\cmd{include/functions\_config.inc.php})}
Gewährt einer Benutzergruppe Zugriff auf einen speziellen Objekttyp
(hauptsächlich für Objekte der Mediendatenbank).
\ospitem{\cmd{serendipity\_ACLGet()} (\cmd{include/functions\_config.inc.php})}
Prüft, ob ein Benutzer anhand seiner Gruppenmitgliedschaften Zugriff auf einen
speziellen Objekttyp besitzt.
\ospitem{\cmd{serendipity\_ACL\_SQL()} (\cmd{include/functions\_config.inc.php})}
Liefert Teile einer SQL-Abfrage, die benötigt werden, um Zugriffe auf bestimmte
Objekttypen (Mediendatenbank, Kategorien \ldots) in Abhängigkeit von den
Gruppenmitgliedschaften auszuwerten.
\ospitem{\cmd{serendipity\_hasPluginPermissions()}}
\ospadditem{(\cmd{include/functions\_config.inc.php})}
Prüft, ob es einem Redakteur erlaubt ist, die Funktionalitäten eines
auszuführenden Plugins aufzurufen (siehe Seite \pageref{verboteneplugins}).
\ospitem{\cmd{serendipity\_checkXSRF(), serendipity\_reportXSRF()}}
\ospadditem{(\cmd{include/functions\_config.inc.php})}
Prüft bei einem Seitenaufruf, ob der Redakteur diese Aktion tatsächlich
willentlich ausgelöst hat oder ob er Opfer einer XSRF-Attacke (siehe Seite \pageref{xsrf})
war.
\ospitem{\cmd{serendipity\_checkFormToken(), serendipity\_setFormToken()}}
\ospadditem{(\cmd{include/functions\_config.inc.php})}
Setzt bzw. überprüft einen eindeutigen Formularwert (\emph{Token}) auf gültigen
Inhalt. Dies wird für die XSRF-Prüfung benötigt.
\ospitem{\cmd{show\_plugins()} (\cmd{include/functions\_plugins\_admin.inc.php})}
Erstellt die Plugin-Verwaltungsansicht im Backend für eine gewünschte
Plugin-Sektion (Seitenleisten-Plugins, Ereignis-Plugins). Links zum Konfigurieren
und Verschieben der Plugins werden mit ausgeliefert. Über weitere
Hilfsfunktionen \cmd{ownership()} und \cmd{placement\_box()} werden Teilelemente
des Layouts (Plugin-Eigentümer, Platzierung) ausgeliefert.
\ospitem{\cmd{serendipity\_plugin\_config()}}
\ospadditem{(\cmd{include/functions\_plugins\_admin.inc.php})}
Stellt die Konfigurationsmaske für Plugins dar. Dabei werden die
Konfigurationswerte der Plugin API entnommen.
\end{ospdescription}
\subsection{Artikel, Kategorien, Kommentare, Trackbacks}
Funktionen zur Verwaltung von Artikeln, Kommentaren/Trackbacks und Kategorien.
\begin{ospdescription}
\ospitem{\cmd{serendipity\_addCategory()} (\cmd{include/functions.inc.php})}
Fügt dem Blog eine neue Kategorie hinzu.
\ospitem{\cmd{serendipity\_updateCategory()} (\cmd{include/functions.inc.php})}
Ändert eine bestehende Kategorie des Blogs.
\ospitem{\cmd{serendipity\_rememberComment()},}
\ospadditem{\cmd{serendipity\_rememberCommentDetails()},}
\ospadditem{\cmd{serendipity\_forgetCommentDetails()}}
\ospadditem{(\cmd{include/functions\_comments.inc.php})}
Speichert/löscht die Eingaben eines Kommentarformulars in Cookie-Werten.
\ospitem{\cmd{serendipity\_displayCommentForm()}}
\ospadditem{(\cmd{include/functions\_comments.inc.php})}
Stellt das Kommentarformular dar und weist die notwendigen Smarty-Variablen zu.
\ospitem{\cmd{serendipity\_fetchComments()}}
\ospadditem{(\cmd{include/functions\_comments.inc.php})}
Holt eine Liste gewünschter Kommentare.
\ospitem{\cmd{serendipity\_generateCommentList()}}
\ospadditem{(\cmd{include/functions\_comments.inc.php})}
Erstellt ein HTML \cmd{SELECT}-Auswahlfeld mit einer Liste aller gewünschten
Kommentare.
\ospitem{\cmd{serendipity\_printComments()}}
\ospadditem{(\cmd{include/functions\_comments.inc.php})}
Stellt eine Liste gewünschter Kommentare mittels Smarty-Templates dar.
\ospitem{\cmd{serendipity\_printCommentsByAuthor()}}
\ospadditem{(\cmd{include/functions\_comments.inc.php})}
Stellt eine Liste gewünschter Kommentare anhand der Übergabe eines
Kommentatornamens mittels Smarty-Templates dar.
\ospitem{\cmd{serendipity\_deleteComment()}}
\ospadditem{(\cmd{include/functions\_comments.inc.php})}
Löscht einen Blog-Kommentar.
\ospitem{\cmd{serendipity\_allowCommentsToggle()}}
\ospadditem{(\cmd{include/functions\_comments.inc.php})}
Schaltet einen Blog-Artikel für die Kommentierung frei oder hebt diese
Möglichkeit auf.
\ospitem{\cmd{serendipity\_approveComment()}}
\ospadditem{(\cmd{include/functions\_comments.inc.php})}
Schaltet einen moderierten Kommentar frei.
\ospitem{\cmd{serendipity\_saveComment()}}
\ospadditem{(\cmd{include/functions\_comments.inc.php})}
Speichert einen neuen Kommentar zu einem Blog-Artikel und führt etwaige
Anti-Spam-Prüfungen durch.
\ospitem{\cmd{serendipity\_mailSubscribers()}}
\ospadditem{(\cmd{include/functions\_comments.inc.php})}
Schickt eine E-Mail an alle Abonnenten eines Blog-Artikels.
\ospitem{\cmd{serendipity\_cancelSubscription()}}
\ospadditem{(\cmd{include/functions\_comments.inc.php})}
Hebt ein Abonnement eines Blog-Artikels auf.
\ospitem{\cmd{serendipity\_sendComment()}}
\ospadditem{(\cmd{include/functions\_comments.inc.php})}
Verschickt beim Eintreffen eines neuen Blog-Kommentars eine Information per E-Mail.
\ospitem{\cmd{serendipity\_deleteCategory()}}
\ospadditem{\cmd{include/functions\_entries.inc.php})}
Löscht eine Kategorie.
\ospitem{\cmd{serendipity\_fetchCategoryRange()}}
\ospadditem{(\cmd{include/functions\_entries.inc.php})}
Liefert eine Liste von Blog-Kategorien einer gewünschten Oberkategorie.
\ospitem{\cmd{serendipity\_getMultiCategoriesSQL()}}
\ospadditem{(\cmd{include/functions\_entries.inc.php})}
Liefert einen SQL-Codeteil, damit eine Artikelabfrage auf bestimmte
Kategoriezuordnungen eingeschränkt werden kann. Dabei werden etwaige Ober- und
Unterkategorien korrekt berücksichtigt.
\ospitem{\cmd{serendipity\_fetchCategoryInfo()}}
\ospadditem{(\cmd{include/functions\_entries.inc.php})}
Liefert die Eigenschaften einer gewünschten Kategorie.
\ospitem{\cmd{serendipity\_fetchEntries()}}
\ospadditem{(\cmd{include/functions\_entries.inc.php})}
Zentrale Funktion, um eine Liste von Blog-Artikeln zu erhalten, die bestimmten
Kriterien entsprechen.
\ospitem{\cmd{serendipity\_fetchEntryData()},}
\ospadditem{\cmd{serendipity\_fetchEntryProperties()},}
\ospadditem{(\cmd{include/functions\_entries.inc.php})}
Weist die erweiterten Eigenschaften von Artikeln und Kategoriezuordnungen einer
Liste von Blog-Artikeln zu, die mittels \cmd{serendipity""\_fetchEntries()}
bezogen wurden.
\ospitem{\cmd{serendipity\_fetchEntry()}}
\ospadditem{(\cmd{include/functions\_entries.inc.php})}
Liefert einen speziellen Artikeldatensatz mit allen erweiterten Eigenschaften
und Kategoriezuordnungen zurück.
\ospitem{\cmd{serendipity\_fetchCategories()}}
\ospadditem{(\cmd{include/functions\_entries.inc.php})}
Liefert eine Liste von Blog-Kategorien, auf die ein gewünschter Redakteur
Zugriff hat. Kann auch unabhängig vom Redakteur eine Liste aller Kategorien des
Blogs liefern.
\ospitem{\cmd{serendipity\_rebuildCategoryTree()}}
\ospadditem{(\cmd{include/functions\_entries.inc.php})}
Führt die notwendigen Datenbankoperationen aus, um bei neu hinzugefügten
Kategorien die IDs der Nested-Set-Architektur (siehe z.\,B.\ \cmd{http://www.klempert.de/nested\_sets/})
korrekt zu setzen.
\ospitem{\cmd{serendipity\_searchEntries()}}
\ospadditem{(\cmd{include/functions\_entries.inc.php})}
Liefert eine Liste von Blog-Artikeln zurück, die ein gewünschtes Suchwort enthalten.
\ospitem{\cmd{serendipity\_getTotalEntries()}}
\ospadditem{(\cmd{include/functions\_entries.inc.php})}
Liefert die Anzahl von aktuell im Frontend dargestellten Artikeln zurück.
\ospitem{\cmd{serendipity\_printEntries()}}
\ospadditem{(\cmd{include/functions\_entries.inc.php})}
Zentrale Funktion, um Blog-Einträge für die Ausgabe im Smarty"=Template
aufzubereiten. Benötigte Variablen und Arrays werden gesetzt, etwaige Plugins
ausgeführt und an das Smarty-Template \cmd{entries.""tpl} weitergegeben.
\ospitem{\cmd{serendipity\_printEntries\_rss()}}
\ospadditem{(\cmd{include/functions\_entries.inc.php})}
Stellt Einträge innerhalb eines RSS-Feeds dar.
\ospitem{\cmd{serendipity\_purgeEntry(), serendipity\_deleteEntry()}}
\ospadditem{(\cmd{include/functions\_entries.inc.php})}
Löscht einen Artikel.
\ospitem{\cmd{serendipity\_updertEntry()}}
\ospadditem{(\cmd{include/functions\_entries.inc.php})}
Aktualisiert einen Artikel oder fügt einen neuen ein (\emph{updert} =
\emph{Up\-d}a\-te + Ins\emph{ert}).
\ospitem{\cmd{serendipity\_generateCategoryList()}}
\ospadditem{(\cmd{include/functions\_entries.inc.php})}
Erzeugt ein HTML-Ausklappfeld mit allen verfügbaren Kategorien.
\ospitem{\cmd{serendipity\_generateCategoryList()}}
\ospadditem{(\cmd{include/functions\_entries.inc.php})}
Aktualisiert die Kategoriezuordnungen eines Artikels.
\ospitem{\cmd{serendipity\_printArchives()}}
\ospadditem{(\cmd{include/functions\_entries.inc.php})}
Erzeugt eine Archivübersicht mit Artikeln eines gewünschten Zeitraums und gibt
diese Artikelliste an das Smarty-Template \cmd{entries\_""archives.tpl} weiter.
\ospitem{\cmd{serendipity\_getTotalCount()}}
\ospadditem{(\cmd{include/functions\_entries.inc.php})}
Liefert die Anzahl aller im Blog vorhandenen Kommentare, Trackbacks oder
Artikel zurück.
\ospitem{\cmd{serendipity\_printEntryForm()}}
\ospadditem{(\cmd{include/functions\_entries\_admin.inc.php})}
Stellt das HTML-Formular zum Bearbeiten eines Blog-Artikels im Backend dar.
\ospitem{\cmd{serendipity\_emit\_htmlarea\_code()}}
\ospadditem{(\cmd{include/functions\_entries\_admin.inc.php})}
Gibt den benötigten JavaScript-Code zurück, damit ein WYSIWYG-Editor angezeigt
werden kann.
\ospitem{\cmd{serendipity\_handle\_references()}}
\ospadditem{(\cmd{include/functions\_trackbacks.inc.php})}
Überprüft alle in einem Blog-Artikel enthaltenen Links und speichert sie in den
entsprechenden Datenbanktabellen.
\ospitem{\cmd{serendipity\_trackback\_is\_success()},}
\ospadditem{\cmd{serendipity\_pingback\_is\_success()}}
\ospadditem{(\cmd{include/functions\_trackbacks.inc.php})}
Prüft, ob ein Trackback/Pingback gültig versendet wurde.
\ospitem{\cmd{serendipity\_pingback\_autodiscover()},}
\ospadditem{\cmd{serendipity\_trackback\_autodiscover()}}
\ospadditem{(\cmd{include/functions\_trackbacks.inc.php})}
Überprüft einen Blog-Artikel auf Trackback/Pingback"=Links und führt
diese aus.
\ospitem{\cmd{serendipity\_reference\_autodiscover()}}
\ospadditem{(\cmd{include/functions\_trackbacks.inc.php})}
Überprüft einen Blog-Artikel auf enthaltene Hyperlinks und speichert diese in
der Datenbank.
\ospitem{\cmd{add\_trackback(), add\_pingback()}}
\ospadditem{(\cmd{include/functions\_trackbacks.inc.php})}
Speichert ein eingehendes Trackback/Pingback.
\ospitem{\cmd{report\_trackback\_success()}, \cmd{report\_trackback\_failure()},}
\ospadditem{\cmd{report\_pingback\_success()}, \cmd{report\_pingback\_failure()}}
\ospadditem{(\cmd{include/functions\_trackbacks.inc.php})}
Liefert XML-Code für eine Erfolgs-/Fehlermeldung bei einem Trackback/Pingback zurück.
\end{ospdescription}
\subsection{Permalinks}
Funktionen zur Behandlung von URLs und Permalinks.
\begin{ospdescription}
\ospitem{\cmd{serendipity\_makeFilename()}}
\ospadditem{(\cmd{include/functions\_permalinks.inc.php})}
Konvertiert eine Zeichenkette in ein Format, das innerhalb einer URL ohne
Sonderzeichen verwendet werden kann.
\ospitem{\cmd{serendipity\_initPermalinks()}}
\ospadditem{(\cmd{include/functions\_permalinks.inc.php})}
Setzt die Serendipity-Variablen, die die Konfiguration der Permalinks enthalten.
\ospitem{\cmd{serendipity\_permalinkPatterns()}}
\ospadditem{(\cmd{include/functions\_permalinks.inc.php})}
Erzeugt eine Liste von regulären Ausdrücken, die verwendet werden, um zu prüfen,
ob die aktuelle URL einem festgelegten Permalink entspricht.
\ospitem{\cmd{serendipity\_searchPermalink()}}
\ospadditem{(\cmd{include/functions\_permalinks.inc.php})}
Durchsucht die Datenbank nach einem Permalink für die aktuelle URL.
\ospitem{\cmd{serendipity\_getPermalink(), serendipity\_rewriteURL(),}}
\ospadditem{\cmd{serendipity\_archiveURL(), serendipity\_authorURL(),}}
\ospadditem{\cmd{serendipity\_categoryURL(),}}
\ospadditem{\cmd{serendipity\_feedCategoryURL(),}}
\ospadditem{\cmd{serendipity\_feedAutorURL(),}}
\ospadditem{\cmd{serendipity\_archiveDateUrl()}}
\ospadditem{(\cmd{include/functions\_permalinks.inc.php})}
Gibt einen Permalink zu einem Objekt (Blog-Artikel, Redakteur, Kategorie) aus.
\ospitem{\cmd{serendipity\_updatePermalink()}}
\ospadditem{(\cmd{include/functions\_permalinks.inc.php})}
Aktualisiert einen in der Datenbank gespeicherten Permalink.
\ospitem{\cmd{serendipity\_insertPermalink()}}
\ospadditem{(\cmd{include/functions\_permalinks.inc.php})}
Fügt einen Permalink in die Datenbank ein, so dass die Ansicht des gewünschten
Objekts (Artikel, Redakteur, Kategorie) später über diese URL wieder aufgerufen
werden kann.
\ospitem{\cmd{serendipity\_buildPermalinks()}}
\ospadditem{(\cmd{include/functions\_permalinks.inc.php})}
Erzeugt Permalinks in der Datenbank für alle Artikel, Redakteure und Kategorien
des Blogs. Dabei wird die momentan konfigurierte Permalink"=Struktur verwendet.
\ospitem{\cmd{serendipity\_makePermalinks(),}}
\ospadditem{\cmd{serendipity\_makePermalinkRegex()}}
\ospadditem{(\cmd{include/functions\_permalinks.inc.php})}
Erzeugt einen Permalink, indem die Platzhalter der Permalink"=Konfiguration durch
die Werte des aufrufenden Objekts ersetzt werden.
\ospitem{\cmd{serendipity\_currentURL()}}
\ospadditem{(\cmd{include/functions\_permalinks.inc.php})}
Liefert die URL des im Frontend dargestellten Permalinks.
\ospitem{\cmd{serendipity\_getUriArguments()}}
\ospadditem{(\cmd{include/functions\_permalinks.inc.php})}
Liefert die URL-Bestandteile des im Frontend dargestellten Permalinks.
\end{ospdescription}
%PJ:Weiter bin ich noch nicht
\subsection{Installation, Upgrades}
Funktionen zur Installation und Aktualisierung Serendipitys.
\begin{ospdescription}
\ospitem{\cmd{serendipity\_ini\_bool(), serendipity\_ini\_bytesize()}}
\ospadditem{(\cmd{include/functions\_installer.inc.php})}
Liest PHP-Konfigurationswerte ein und wandelt sie in ein von Serendipity
interpretierbares Format um.
\ospitem{\cmd{serendipity\_updateLocalConfig()}}
\ospadditem{(\cmd{include/functions\_installer.inc.php})}
Aktualisiert die zentrale Konfigurationsdatei \cmd{serendipity\_config\_""local.inc.php}
mit den aktuellen Konfigurationswerten.
\ospitem{\cmd{serendipity\_installDatabase(),}}
\ospadditem{\cmd{serendipity\_parse\_sql\_tables(),}}
\ospadditem{\cmd{serendipity\_parse\_sql\_inserts()}}
\ospadditem{(\cmd{include/functions\_installer.inc.php})}
Richtet die Datenbank ein und erstellt die Serendipity-Tabellen.
\ospitem{\cmd{serendipity\_query\_default()}}
\ospadditem{(\cmd{include/functions\_installer.inc.php})}
Prüft einen Konfigurationswert auf jeweils sinnvolle Voreinstellungen bei der Installation.
\ospitem{\cmd{serendipity\_check\_rewrite()}}
\ospadditem{(\cmd{include/functions\_installer.inc.php})}
Prüft, ob der Server dynamische URL-Umformung unterstützt.