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=""> </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=""> </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; }