/**
  * Calendar initialization
  * Should be called from the project _config.php file
  * @param array|null $settings
  */
 public static function init($settings = null)
 {
     if (is_array($settings)) {
         //merging settings (and setting the global settings)
         //settings should be submitted via an array
         $settings = self::settings($settings);
     } else {
         $settings = self::settings();
     }
     if ($settings['enabled']) {
         $ssversion = self::subpackage_settings('ssversion');
         //Enabling calendars
         if (self::subpackage_enabled('calendars')) {
             if ($ssversion == '3.0') {
                 Object::add_extension('Event', 'EventCalendarExtension');
             } else {
                 Event::add_extension('EventCalendarExtension');
             }
             $s = self::subpackage_settings('calendars');
             if ($s['colors']) {
                 if ($ssversion == '3.0') {
                     Object::add_extension('Calendar', 'CalendarColorExtension');
                 } else {
                     Calendar::add_extension('CalendarColorExtension');
                 }
             }
             if ($s['shading']) {
                 if ($ssversion == '3.0') {
                     Object::add_extension('Calendar', 'ShadedCalendarExtension');
                 } else {
                     Calendar::add_extension('ShadedCalendarExtension');
                 }
             }
         }
         //Enabling categories
         if (self::subpackage_enabled('categories')) {
             if ($ssversion == '3.0') {
                 Object::add_extension('Event', 'EventCategoryExtension');
             } else {
                 Event::add_extension('EventCategoryExtension');
             }
         }
         //Enabling Event Page
         if (self::subpackage_setting('pagetypes', 'enable_eventpage')) {
             if ($ssversion == '3.0') {
                 Object::add_extension('Event', 'EventHasEventPageExtension');
             } else {
                 Event::add_extension('EventHasEventPageExtension');
             }
         }
         //Enabling debug mode
         if (self::subpackage_enabled('debug')) {
             if ($ssversion == '3.0') {
                 Object::add_extension('Event', 'EventDebugExtension');
             } else {
                 Event::add_extension('EventDebugExtension');
             }
         }
         //Enabling registrations
         if (self::subpackage_enabled('registrations')) {
             if ($ssversion == '3.0') {
                 Object::add_extension('Event', 'EventRegistrationExtension');
             } else {
                 Event::add_extension('EventRegistrationExtension');
             }
         }
         //Adding URL Segment extension to Calendar (currently done for all but could be made configurable later)
         Object::add_extension('Calendar', 'DoURLSegmentExtension');
         if ($ssversion == '3.0') {
             Object::add_extension('Calendar', 'DoURLSegmentExtension');
         } else {
             Calendar::add_extension('DoURLSegmentExtension');
         }
     }
 }