public static function adn_contributor_filter()
    {
        if (!is_admin()) {
            return;
        }
        if (!\Podlove\Modules\Base::is_module_settings_page()) {
            return;
        }
        if (!\Podlove\Modules\Base::is_active('app_dot_net')) {
            return;
        }
        $adn = \Podlove\Modules\AppDotNet\App_Dot_Net::instance();
        $roles = \Podlove\Modules\Contributors\Model\ContributorRole::all();
        $groups = \Podlove\Modules\Contributors\Model\ContributorGroup::all();
        $selected_role = $adn->get_module_option('adn_contributor_filter_role');
        $selected_group = $adn->get_module_option('adn_contributor_filter_group');
        if (count($roles) > 0 || count($groups) > 0) {
            $adn->register_option('contributor_filter', 'callback', array('label' => __('Contributor Filter', 'podlove'), 'description' => __('<br />Filter <code title="' . __('The contributors of the episode', 'podlove') . '">{episodeContributors}</code> by Group and/or role', 'podlove'), 'callback' => function () use($selected_role, $selected_group, $roles, $groups) {
                if (count($groups) > 0) {
                    ?>
						<select class="chosen" id="podlove_module_app_dot_net_adn_contributor_filter_group" name="podlove_module_app_dot_net[adn_contributor_filter_group]">
							<option value="">&nbsp;</option>
							<?php 
                    foreach ($groups as $group) {
                        echo "<option value='" . $group->id . "' " . ($selected_group == $group->id ? "selected" : "") . ">" . $group->title . "</option>";
                    }
                    ?>
						</select> Group
					<?php 
                }
                if (count($roles) > 0) {
                    ?>
						<select class="chosen" id="podlove_module_app_dot_net_adn_contributor_filter_role" name="podlove_module_app_dot_net[adn_contributor_filter_role]">
							<option value="">&nbsp;</option>
							<?php 
                    foreach ($roles as $role) {
                        echo "<option value='" . $role->id . "' " . ($selected_role == $role->id ? "selected" : "") . ">" . $role->title . "</option>";
                    }
                    ?>
						</select> Role
					<?php 
                }
            }));
        }
    }
 public function prepare_items()
 {
     // number of items per page
     $per_page = 10;
     // define column headers
     $columns = $this->get_columns();
     $hidden = array();
     $sortable = $this->get_sortable_columns();
     $this->_column_headers = array($columns, $hidden, $sortable);
     // retrieve data
     $data = \Podlove\Modules\Contributors\Model\ContributorRole::all('ORDER BY title ASC');
     // get current page
     $current_page = $this->get_pagenum();
     // get total items
     $total_items = count($data);
     // extrage page for current page only
     $data = array_slice($data, ($current_page - 1) * $per_page, $per_page);
     // add items to table
     $this->items = $data;
     // register pagination options & calculations
     $this->set_pagination_args(array('total_items' => $total_items, 'per_page' => $per_page, 'total_pages' => ceil($total_items / $per_page)));
 }
    public function feed_settings($wrapper)
    {
        $contributors_roles = \Podlove\Modules\Contributors\Model\ContributorRole::all();
        $contributors_groups = \Podlove\Modules\Contributors\Model\ContributorGroup::all();
        $option_name = 'podlove_feed_' . $_REQUEST['feed'] . '_contributor_filter';
        $selected_filter = get_option($option_name);
        if (!$selected_filter) {
            $selected_filter = array('group' => NULL, 'role' => NULL);
        }
        $wrapper->subheader(__('Contributors', 'podlove'));
        $wrapper->callback('services_form_table', array('label' => __('Contributor Filter', 'podlove'), 'callback' => function () use($contributors_roles, $contributors_groups, $selected_filter) {
            ?>
					<select name="podlove_feed[contributor_filter][group]" id="">
						<option value=""></option>
						<?php 
            foreach ($contributors_groups as $group) {
                echo "<option value='" . $group->id . "' " . ($group->id == $selected_filter['group'] ? 'selected' : '') . ">" . $group->title . "</option>";
            }
            ?>
					</select>
					<?php 
            echo __('Group', 'podlove');
            ?>

					<select name="podlove_feed[contributor_filter][role]" id="">
						<option value=""></option>
						<?php 
            foreach ($contributors_roles as $role) {
                echo "<option value='" . $role->id . "' " . ($role->id == $selected_filter['role'] ? 'selected' : '') . ">" . $role->title . "</option>";
            }
            ?>
					</select>
					<?php 
            echo __('Role', 'podlove');
            ?>
					<p>
						<span class="description"><?php 
            echo __('Limit contributors to the given group and/or role.', 'podlove');
            ?>
</span>
					</p>
				<?php 
        }));
        return $wrapper;
    }