Example #1
0
function activate_for_current_blog()
{
    Model\Feed::build();
    Model\FileType::build();
    Model\EpisodeAsset::build();
    Model\MediaFile::build();
    Model\Episode::build();
    Model\Template::build();
    Model\DownloadIntent::build();
    Model\DownloadIntentClean::build();
    Model\UserAgent::build();
    Model\GeoArea::build();
    Model\GeoAreaName::build();
    \podlove_init_capabilities();
    if (!Model\FileType::has_entries()) {
        $default_types = array(array('name' => 'MP3 Audio', 'type' => 'audio', 'mime_type' => 'audio/mpeg', 'extension' => 'mp3'), array('name' => 'BitTorrent (MP3 Audio)', 'type' => 'audio', 'mime_type' => 'application/x-bittorrent', 'extension' => 'mp3.torrent'), array('name' => 'MPEG-1 Video', 'type' => 'video', 'mime_type' => 'video/mpeg', 'extension' => 'mpg'), array('name' => 'MPEG-4 AAC Audio', 'type' => 'audio', 'mime_type' => 'audio/mp4', 'extension' => 'm4a'), array('name' => 'MPEG-4 ALAC Audio', 'type' => 'audio', 'mime_type' => 'audio/mp4', 'extension' => 'm4a'), array('name' => 'MPEG-4 Video', 'type' => 'video', 'mime_type' => 'video/mp4', 'extension' => 'mp4'), array('name' => 'M4V Video (Apple)', 'type' => 'video', 'mime_type' => 'video/x-m4v', 'extension' => 'm4v'), array('name' => 'Ogg Vorbis Audio', 'type' => 'audio', 'mime_type' => 'audio/ogg', 'extension' => 'oga'), array('name' => 'Ogg Vorbis Audio', 'type' => 'audio', 'mime_type' => 'audio/ogg', 'extension' => 'ogg'), array('name' => 'Ogg Theora Video', 'type' => 'video', 'mime_type' => 'video/ogg', 'extension' => 'ogv'), array('name' => 'WebM Audio', 'type' => 'audio', 'mime_type' => 'audio/webm', 'extension' => 'webm'), array('name' => 'WebM Video', 'type' => 'video', 'mime_type' => 'video/webm', 'extension' => 'webm'), array('name' => 'FLAC Audio', 'type' => 'audio', 'mime_type' => 'audio/flac', 'extension' => 'flac'), array('name' => 'Opus Audio', 'type' => 'audio', 'mime_type' => 'audio/ogg;codecs=opus', 'extension' => 'opus'), array('name' => 'Matroska Audio', 'type' => 'audio', 'mime_type' => 'audio/x-matroska', 'extension' => 'mka'), array('name' => 'Matroska Video', 'type' => 'video', 'mime_type' => 'video/x-matroska', 'extension' => 'mkv'), array('name' => 'PDF Document', 'type' => 'ebook', 'mime_type' => 'application/pdf', 'extension' => 'pdf'), array('name' => 'ePub Document', 'type' => 'ebook', 'mime_type' => 'application/epub+zip', 'extension' => 'epub'), array('name' => 'PNG Image', 'type' => 'image', 'mime_type' => 'image/png', 'extension' => 'png'), array('name' => 'JPEG Image', 'type' => 'image', 'mime_type' => 'image/jpeg', 'extension' => 'jpg'), array('name' => 'mp4chaps Chapter File', 'type' => 'chapters', 'mime_type' => 'text/plain', 'extension' => 'chapters.txt'), array('name' => 'Podlove Simple Chapters', 'type' => 'chapters', 'mime_type' => 'application/xml', 'extension' => 'psc'), array('name' => 'Subrip Captions', 'type' => 'captions', 'mime_type' => 'application/x-subrip', 'extension' => 'srt'), array('name' => 'WebVTT Captions', 'type' => 'captions', 'mime_type' => 'text/vtt', 'extension' => 'vtt'), array('name' => 'Auphonic Production Description', 'type' => 'metadata', 'mime_type' => 'application/json', 'extension' => 'json'));
        foreach ($default_types as $file_type) {
            $f = new Model\FileType();
            foreach ($file_type as $key => $value) {
                $f->{$key} = $value;
            }
            $f->save();
        }
    }
    $podcast = Model\Podcast::get();
    if (!$podcast->limit_items) {
        $podcast->limit_items = Model\Feed::ITEMS_NO_LIMIT;
    }
    $podcast->save();
    // required for all module hooks to fire correctly
    add_option('podlove_active_modules', []);
    // set default modules
    $default_modules = array('logging', 'podlove_web_player', 'open_graph', 'asset_validation', 'oembed', 'feed_validation', 'import_export', 'subscribe_button');
    foreach ($default_modules as $module) {
        \Podlove\Modules\Base::activate($module);
    }
    // set default expert settings
    $settings = get_option('podlove', array());
    if ($settings === array()) {
        $settings = array('merge_episodes' => 'on', 'hide_wp_feed_discovery' => 'off', 'use_post_permastruct' => 'on', 'episode_archive' => 'on', 'episode_archive_slug' => '/podcast/', 'custom_episode_slug' => '/podcast/%podcast%/');
        update_option('podlove', $settings);
    }
    // set default template
    if (!($template = Model\Template::find_one_by_property('title', 'default'))) {
        $template = new Model\Template();
        $template->title = 'default';
        $template->content = <<<EOT
{% if not is_feed() %}

\t{# display web player for episode #}
\t{{ episode.player }}
\t
\t{# display download menu for episode #}
\t{% include "@core/shortcode/downloads-select.twig" %}

{% endif %}
EOT;
        $template->save();
        $assignment = Model\TemplateAssignment::get_instance();
        $assignment->top = $template->id;
        $assignment->save();
    }
}