| | |
| | | <?php |
| | | |
| | | use JVBase\registrar\Registrar; |
| | | |
| | | if (!defined('ABSPATH')) { |
| | | exit; |
| | | } |
| | |
| | | array_map(function ($role) { |
| | | return BASE.$role; |
| | | }, |
| | | jvbRolesWithDashboard()) |
| | | Registrar::getFeatured('has_dashboard', 'user')) |
| | | ) |
| | | )>0; |
| | | } |
| | | |
| | | /** |
| | | * The basis for the dashboard navigation |
| | | * @return array |
| | | */ |
| | | function jvbGetUserDashboardPages():array |
| | | { |
| | | if (!isOurPeople() && !current_user_can('manage_options')) { |
| | | return []; |
| | | } |
| | | $user = wp_get_current_user(); |
| | | $pages = get_transient('jvb_'.$user->ID.'_dashboard_pages'); |
| | | $pages = false; |
| | | if (!$pages) { |
| | | $pages = ['dash']; |
| | | $roles = array_intersect( |
| | | jvbRolesWithDashboard(), |
| | | array_map(function ($role) { |
| | | return jvbNoBase($role); |
| | | }, |
| | | $user->roles) |
| | | ); |
| | | |
| | | $content = []; |
| | | |
| | | foreach ($roles as $role) { |
| | | $content = array_unique(array_merge(jvbRolePages($role), $content)); |
| | | } |
| | | error_log('Content: '.print_r($content, true)); |
| | | foreach ($content as $c) { |
| | | |
| | | $permission = JVB_CONTENT[$c]['plural']??$c.'s'; |
| | | if (current_user_can('edit_'.$permission)) { |
| | | $pages[] = $c; |
| | | } |
| | | } |
| | | |
| | | |
| | | if (jvbCheck('can_invite', JVB_MEMBERSHIP) && jvbUserIsVerified()) { |
| | | $pages[] = 'invites'; |
| | | } |
| | | if (jvbCheck('term_approval', JVB_MEMBERSHIP) && jvbUserIsVerified()) { |
| | | $pages[] = 'approvals'; |
| | | } |
| | | if (jvbSiteHasTermContent()) { |
| | | $terms = array_filter(JVB_TAXONOMY, function ($tax) { |
| | | return jvbCheck('is_content', $tax); |
| | | }); |
| | | foreach ($terms as $term => $config) { |
| | | if (current_user_can('manage_'.$term)) { |
| | | $pages[] = $config['plural']; |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (jvbSiteHasIntegrations()) { |
| | | //TODO: Check that user has integrations enabled |
| | | $pages[] = 'integrations'; |
| | | } |
| | | if (jvbSiteHasForum() && |
| | | (empty(JVB_MEMBERSHIP['member_only']??[]) || array_intersect(JVB_MEMBERSHIP['member_only'], $roles) > 0)) { |
| | | $pages[] = 'news'; |
| | | } |
| | | |
| | | if (jvbCheck('member_content', JVB_MEMBERSHIP) && jvbUserCanCreate()) { |
| | | $pages[] = 'metrics'; |
| | | } |
| | | |
| | | if (jvbCheck('favourites', JVB_SITE)) { |
| | | $pages[] = 'favourites'; |
| | | } |
| | | |
| | | if (jvbSiteHasSupport()) { |
| | | $pages[] = 'support'; |
| | | } |
| | | $pages = apply_filters('jvbUserDashboardPages', $pages, $user->roles); |
| | | set_transient('jvb_'.$user->ID.'_dashboard_pages', $pages, WEEK_IN_SECONDS); |
| | | } |
| | | |
| | | return $pages; |
| | | } |
| | | |
| | | |
| | | /** |
| | |
| | | $types = get_post_meta($postID, BASE.'content_types', true); |
| | | if ($types === '') { |
| | | $types = []; |
| | | $link = (int) get_post_meta($postID, BASE.'link', true); |
| | | $link = (int) get_post_meta($postID, BASE.'profile_link', true); |
| | | if ($link === '' || !is_numeric($link)) { |
| | | return $types; |
| | | } |
| | |
| | | } |
| | | |
| | | $role = jvbUserRole((int) $link); |
| | | $config = JVB_USER[$role]; |
| | | foreach ($config['can_create'] as $type) { |
| | | if (is_array($type)) { |
| | | $types = array_unique(array_merge($types, array_values($type)[0])); |
| | | } else { |
| | | $types[] = $type; |
| | | } |
| | | } |
| | | $registrar = Registrar::getInstance($role); |
| | | if ($registrar && !empty($registrar->getCreatable())){ |
| | | foreach ($registrar->getCreatable() as $type) { |
| | | if (is_array($type)) { |
| | | $types = array_unique(array_merge($types, array_values($type)[0])); |
| | | } else { |
| | | $types[] = $type; |
| | | } |
| | | } |
| | | } |
| | | |
| | | $temp = []; |
| | | foreach ($types as $t) { |
| | | $permission = JVB_CONTENT[$t]['plural']??$t.'s'; |
| | | if (user_can($link, 'edit_'.$permission)){ |
| | | $permission = JVB()->roles()->getPermission('edit',$t); |
| | | if (user_can($link, $permission)){ |
| | | $temp[] = $t; |
| | | } |
| | | } |
| | | |
| | | global $jvb_feed; |
| | | $types = array_filter($temp, function ($type) use ($jvb_feed) { |
| | | return array_key_exists($type, $jvb_feed); |
| | | $types = Registrar::getFeatured('show_feed'); |
| | | $types = array_filter($temp, function ($type) use ($types) { |
| | | return in_array($type, $types); |
| | | }); |
| | | |
| | | update_post_meta($postID, BASE.'content_types', $types); |