/** * List of episode contributors * * **Examples** * * Iterating over a list of contributors * * ```jinja * {% for contributor in episode.contributors %} * {{ contributor.name }} * {% if not loop.last %}, {% endif %} * {% endfor %} * ``` * * Iterating over a grouped list of contributors * * ```jinja * {% for contributorGroup in episode.contributors({groupby: "group"}) %} * <strong>{{ contributorGroup.group.title }}:</strong> * {% for contributor in contributorGroup.contributors %} * {{ contributor.name }} * {% if not loop.last %}, {% endif %} * {% endfor %} * {% endfor %} * ``` * * **Parameters** * * - **id:** Fetch one contributor by its id. * Example: `episode.contributors({id: 'james'}).name` * - **group:** group slug. If none is given, show all contributors. * - **role:** role slug. If none is given, show all contributors. * - **groupby:** group or role slug. Group by "group" or "role". * If used, the returned data is has another layer for the groups. * See examples for more details. * - **order:** Designates the ascending or descending order of the 'orderby' parameter. Defaults to 'ASC'. * - 'ASC' - ascending order from lowest to highest values (1, 2, 3; a, b, c). * - 'DESC' - descending order from highest to lowest values (3, 2, 1; c, b, a). * - **orderby:** Sort contributors by parameter. Defaults to 'position'. * - 'position' - Order by the contributors position in the episode. * - 'comment' - Order by the contributors comment in the episode. * * @accessor * @dynamicAccessor episode.contributors */ public static function accessorEpisodeContributors($return, $method_name, $episode, $post, $args = array()) { return $episode->with_blog_scope(function () use($return, $method_name, $episode, $post, $args) { $defaults = array('order' => 'ASC', 'orderby' => 'position'); $args = wp_parse_args($args, $defaults); $contributions = EpisodeContribution::find_all_by_episode_id($episode->id); $contributions = \Podlove\Modules\Contributors\Contributors::orderContributions($contributions, $args); return \Podlove\Modules\Contributors\Contributors::filterContributions($contributions, $args); }); }
public static function clone_contributors($new_post_id, $old_post_object) { $old_episode = Episode::find_one_by_post_id($old_post_object->ID); $new_episode = Episode::find_or_create_by_post_id($new_post_id); $old_contributions = EpisodeContribution::find_all_by_episode_id($old_episode->id); foreach ($old_contributions as $old_contribution) { $c = new EpisodeContribution(); $c->contributor_id = $old_contribution->contributor_id; $c->episode_id = $new_episode->id; $c->role_id = $old_contribution->role_id; $c->group_id = $old_contribution->group_id; $c->position = $old_contribution->position; $c->comment = $old_contribution->comment; $c->save(); } }
public static function adn_tags($text, $post_id, $selected_role, $selected_group) { $contributor_adn_accounts = ''; $episode = \Podlove\Model\Episode::find_or_create_by_post_id($post_id); $contributions = \Podlove\Modules\Contributors\Model\EpisodeContribution::find_all_by_episode_id($episode->id); $adn_service = \Podlove\Modules\Social\Model\Service::find_one_by_property('type', 'app.net'); if (!$adn_service) { return; } foreach ($contributions as $contribution) { $contributor_adn_accounts .= ''; $social_accounts = \Podlove\Modules\Social\Model\ContributorService::find_all_by_contributor_id($contribution->contributor_id); array_map(function ($account) use($adn_service, &$contributor_adn_accounts, $contribution, $selected_role, $selected_group) { if ($account->service_id == $adn_service->id) { if ($selected_role == '') { if ($selected_group == '') { $contributor_adn_accounts .= "@" . $account->value . " "; } else { if ($contribution->group_id == $selected_group) { $contributor_adn_accounts .= "@" . $account->value . " "; } } } else { if ($selected_group == '' && $contribution->role_id == $selected_role) { $contributor_adn_accounts .= "@" . $account->value . " "; } else { if ($contribution->group_id == $selected_group && $contribution->role_id == $selected_role) { $contributor_adn_accounts .= "@" . $account->value . " "; } } } } }, $social_accounts); } $total_text_length = strlen($text) + strlen($contributor_adn_accounts); if ($total_text_length <= 256) { return str_replace('{episodeContributors}', $contributor_adn_accounts, $text); } return str_replace('{episodeContributors}', '', $text); }
function manage_podcast_columns($column_name) { switch ($column_name) { case 'contributors': $episode = \Podlove\Model\Episode::find_one_by_post_id(get_the_ID()); if (!$episode) { return; } $contributors = \Podlove\Modules\Contributors\Model\EpisodeContribution::find_all_by_episode_id($episode->id); $contributor_list = ""; foreach ($contributors as $contributor_id => $contributor) { $contributor_details = $contributor->getContributor(); if (is_object($contributor_details)) { $contributor_list = $contributor_list . "<a href=\"" . site_url() . "/wp-admin/edit.php?post_type=podcast&contributor=" . $contributor_details->id . "\">" . $contributor_details->getName() . "</a>, "; } } echo substr($contributor_list, 0, -2); break; } }