Integruje forum ipb 3+ ze stroną.
Jedną z funkcjonalności jest wyciągnięcie kalendarza na stronę główną STRONY.
Ponieważ nie bardzo wiedziałem, skąd wyciągnąć informacje o wydarzeniach z bieżącego miesiąca postanowiłem przerobić plik calendars.php i w metodzie calendarShowMonth() zwracam kalendarz, który w oryginale jest przypisywany tylko do zmiennej.
Dzięki temu i kilku preg_replace jestem w stanie wyświetlić sobie tabelkę z kalendarzem:
$forum_path = 'forum/';
chdir( $forum_path );
$forum_path='';
define( 'IPB_THIS_SCRIPT', 'public' );
require_once( $forum_path . 'initdata.php' );
/**
* Get IPB registry
*/
require_once( IPS_ROOT_PATH . 'sources/base/ipsRegistry.php' );
$ipbRegistry = ipsRegistry::instance();
$ipbRegistry->init();
include_once $forum_path."admin/sources/base/ipsController.php";
require_once( $forum_path . 'admin/applications_addon/ips/calendar/modules_public/calendar/calendars_1.php' );
$cal= new public_calendar_calendar_calendars;
$cal->makeRegistryShortcuts($ipbRegistry);
$cal -> initCalendar();
$calendar=$cal -> calendarShowMonth();
$this->month=$calendar[1];
$this->year=$calendar[2];
$c=preg_replace(array("/<ul>[^<]*<li class=\'cal\'>[^<]*<a[^>]+>[^<]+<\/a>[^<]*<\/li>[^<]*<\/ul>/",'/: Dziś/','/<th[^>]+>[^<]*<a[^>]+>[^<]*<img[^>]+>[^<]*<[^>]+>[^<]*<[^>]+>/'), array(' ',' ',' '), $calendar[3]);
chdir("../");
return $c;
A teraz moje pytanie. Czy da się to zrobić dzięki jakiejś klasie w "pretensjonalniejszy" sposób? Mój będzie mnie zmuszał do zmiany regexpa za każdym razem gdy zmieni się skin kalendarza...