221 lines
8.3 KiB
PHP
221 lines
8.3 KiB
PHP
<?php
|
|
namespace filter_bibleversesnwt;
|
|
|
|
class bible {
|
|
|
|
protected $books = null;
|
|
protected $lang = "en";
|
|
|
|
static function languages(){
|
|
$langcodes = ["nl","en"];
|
|
|
|
$languages = [];
|
|
foreach($langcodes as $l){
|
|
$languages[$l] = get_string("l_".$l,'filter_bibleversesnwt');
|
|
}
|
|
return $languages;
|
|
}
|
|
|
|
private function wolhref($book,$chapter,$verse,$chapter_end,$verse_end=0){
|
|
$book = ($book > 0)?$book:1;
|
|
$chapter = ($chapter >0)?$chapter:1;
|
|
$verse = ($verse > 0)?$verse:1;
|
|
$verse_end = ($verse_end > $verse)?$verse_end:$verse;
|
|
|
|
if($this->lang == "nl"){
|
|
return "https://wol.jw.org/nl/wol/b/r18/lp-o/nwtsty/{$book}/{$chapter}#v={$book}:{$chapter}:{$verse}-{$book}:{$chapter_end}:{$verse_end}";
|
|
}
|
|
else { // if $this->lang == 'en'
|
|
return "https://wol.jw.org/nl/wol/b/r1/lp-e/nwtsty/{$book}/{$chapter}#v={$book}:{$chapter}:{$verse}-{$book}:{$chapter_end}:{$verse_end}";
|
|
}
|
|
}
|
|
|
|
static function booknames($lang){
|
|
$books = [
|
|
"nl" => [
|
|
[], // Intentionally left blank
|
|
["genesis","ge","gen"],
|
|
["exodus","ex"],
|
|
["leviticus","le","lev"],
|
|
["numeri","nu","num"],
|
|
["deuteronomium","de","deut"],
|
|
["jozua","joz"],
|
|
["rechters","re"],
|
|
["ruth","ru"],
|
|
["1 samuël","1 samuel","1sa","1sam","1 sam"],
|
|
["2 samuël","2 samuel","2sa","2sam","1 sam"],
|
|
["1 koningen","1kon","1 kon"],
|
|
["2 koningen","2kon","2 kon"],
|
|
["1 kronieken","1kr","1kron","1 kron"],
|
|
["2 kronieken","2kr","2kron","2 kron"],
|
|
["ezra","ezr"],
|
|
["nehemia","ne","neh"],
|
|
["esther","es"],
|
|
["job"],
|
|
["psalm","ps"],
|
|
["spreuken","sp", "spr"],
|
|
["prediker","pr","pred"],
|
|
["hooglied","hgl","hoogl"],
|
|
["jesaja","jes"],
|
|
["jeremia","jer"],
|
|
["klaagliederen","klg"],
|
|
["ezechiël","ezechiel","ez","eze","ezech"],
|
|
["daniël","daniel","da","dan"],
|
|
["hosea","ho","hos"],
|
|
["joël","joel","joë","joe"],
|
|
["amos","am"],
|
|
["obadja","ob"],
|
|
["jona","jon"],
|
|
["micha","mi","mic"],
|
|
["nahum","na", "nah"],
|
|
["habakuk","hab"],
|
|
["zefanja","ze"],
|
|
["haggai","haggaï","hag"],
|
|
["zacharia","za","zach"],
|
|
["maleachi","mal"],
|
|
["mattheus","mt", "mat","matt"],
|
|
["markus","mr"],
|
|
["lukas","lk"],
|
|
["johannes","jo", "joh"],
|
|
["handelingen","han"],
|
|
["romeinen","ro", "rom"],
|
|
["1 korinthiërs","1 korinthiers","1kor","1 kor"],
|
|
["2 korinthiërs","2 korinthiers","2kor","2 kor"],
|
|
["galaten","ga"],
|
|
["efziërs","efeziers","ef"],
|
|
["filippenzen","fil"],
|
|
["kolossenzen","kol"],
|
|
["1 thessalonicenzen","1th","1 thess", "1thess"],
|
|
["2 thessalonicenzen","2th","2 thess", "2thess"],
|
|
["1 timotheüs","1 timotheus","1ti", "1tim", "1 tim"],
|
|
["2 timotheüs","2 timotheus","2ti", "2tim", "2 tim"],
|
|
["titus","tit"],
|
|
["filemon","flm"],
|
|
["hebreeën","hebreeen","heb"],
|
|
["jakobus","jak"],
|
|
["1 petrus","1pe","1pet", "1 pet"],
|
|
["2 petrus","2pe","2pet", "2 pet"],
|
|
["1 johannes","1jo", "1joh","1 joh", "1 jo"],
|
|
["2 johannes","2jo", "2joh","2 joh", "2 jo"],
|
|
["3 johannes","3jo", "3joh","3 joh", "3 jo"],
|
|
["judas","ju", "jud"],
|
|
["openbaring","opb", "openb"],
|
|
],
|
|
"en" => [
|
|
[], // Intentionally left blank
|
|
["genesis","ge","gen"],
|
|
["exodus","ex"],
|
|
["leviticus","le","lev"],
|
|
["numbers","nu","num"],
|
|
["deuteronomium","de","deut"],
|
|
["joshua","jos"],
|
|
["rechters","jg"],
|
|
["ruth","ru"],
|
|
["1 samuel","1sa",],
|
|
["2 samuel","2sa",],
|
|
["1 kings","1ki",],
|
|
["2 kings","2ki",],
|
|
["1 chronicles","1ch",],
|
|
["2 chronicles","2ch",],
|
|
["ezra","ezr"],
|
|
["nehemia","ne","neh"],
|
|
["esther","es"],
|
|
["job"],
|
|
["psalm","ps"],
|
|
["proverbs","pr"],
|
|
["ecclesiastics","ec"],
|
|
["song of solomon","ca"],
|
|
["isaiah","isa"],
|
|
["jeremiah","jer"],
|
|
["lamentations","la"],
|
|
["ezekiel","eze"],
|
|
["daniel","da"],
|
|
["hosea","ho"],
|
|
["joel","joe"],
|
|
["amos","am"],
|
|
["obadiah","ob"],
|
|
["jonah","jon"],
|
|
["micah","mic"],
|
|
["nahum","na"],
|
|
["habakkuk","hab"],
|
|
["zephaniah","zep"],
|
|
["haggai","haggaï","hag"],
|
|
["zechariah","zec"],
|
|
["malachi","mal"],
|
|
["matthew","mt"],
|
|
["mark","mr"],
|
|
["luke","lk"],
|
|
["john","joh"],
|
|
["acts","ac"],
|
|
["romans","ro"],
|
|
["1 corinthians","1co"],
|
|
["2 corinthians","2co"],
|
|
["galatians","ga"],
|
|
["ephesians","eph"],
|
|
["philippians","php"],
|
|
["colossians","col"],
|
|
["1 thessalonians","1th"],
|
|
["2 thessalonians","2th"],
|
|
["1 timothy","1ti"],
|
|
["2 timothy","2ti"],
|
|
["titus","tit"],
|
|
["philemon","phm"],
|
|
["hebrews","heb"],
|
|
["james","jas"],
|
|
["1 peter","1pe"],
|
|
["2 peter","2pe"],
|
|
["1 john","1jo"],
|
|
["2 john","2jo"],
|
|
["3 john","3jo"],
|
|
["jude","ju"],
|
|
["revelation","re"],
|
|
]
|
|
];
|
|
|
|
return (array_key_exists($lang,$books))?$books[$lang]:$books["en"];
|
|
}
|
|
|
|
function __construct($lang="en"){
|
|
$this->books = static::booknames($lang);
|
|
$this->lang = $lang;
|
|
}
|
|
|
|
function parse($content){
|
|
for($booknum=1;$booknum<count($this->books);$booknum++){
|
|
$names = $this->books[$booknum];
|
|
|
|
foreach($names as $bookname){
|
|
$re = "/(\b{$bookname})\h*?(\d*):(\d+)(?:\h*[-,]\h*(\d+)(?::(\d+))?)?/i";
|
|
|
|
// First check the presence of the bookname before
|
|
if ( ($ix = stripos($content,$bookname)) !== false ) {
|
|
$lang = $this->lang;
|
|
$content = preg_replace_callback($re,function ($m) use ($lang,$booknum, $bookname){
|
|
$book = strtolower(trim($m[1]));
|
|
$ch = $m[2];
|
|
$verse = $m[3];
|
|
$ch_end = (count($m)>5)?$m[4]:$ch;
|
|
$verse_to = (count($m)>5)?$m[5]:((count($m)>4)?$m[4]:0);
|
|
|
|
if($book == $bookname){ // Check if name matches
|
|
$href = $this->wolhref($booknum, $ch, $verse, $ch_end, $verse_to);
|
|
$versedata = json_encode([ "lang" => $lang, "book" => $booknum,
|
|
"ch" => $ch, "verse" => $verse,
|
|
"ch_end" => $ch_end, "verse_end" => $verse_to,
|
|
"wolhref" => $href]);
|
|
return "<a href='{$href}' data-verseinfo='{$versedata}' target='_bible_' class='bible-link'>".$m[0]."</a>";
|
|
} else {
|
|
return $m[0];
|
|
}
|
|
},$content);
|
|
}
|
|
|
|
}
|
|
}
|
|
return $content;
|
|
|
|
|
|
}
|
|
|
|
|
|
} |