| | |
| | | namespace JVBase\rest; |
| | | |
| | | use JVBase\managers\Cache; |
| | | use JVBase\registrar\Registrar; |
| | | use JVBase\utility\Features; |
| | | use WP_REST_Request; |
| | | use WP_REST_Response; |
| | |
| | | |
| | | // Keep existing author filtering logic |
| | | $authorQuery = []; |
| | | foreach (jvbAuthorUsers() as $type) { |
| | | foreach (Registrar::getFeatured('can_create', 'user') as $type) { |
| | | if (array_key_exists($type, $data)) { |
| | | $artist_ids = array_map( |
| | | 'absint', |
| | |
| | | |
| | | //Handle random |
| | | if (array_key_exists('orderby', $data) && $data['orderby'] === 'random') { |
| | | $current_seed = jvbGetRandomSeed(); |
| | | $current_seed = floor(time() / 1800); |
| | | $args['orderby'] = 'RAND(' . $current_seed . ')'; |
| | | unset($args['order']); |
| | | return $args; |
| | |
| | | $content = jvbNoBase($post_type); |
| | | |
| | | // Get config for this content type |
| | | $config = Features::getConfig($content); |
| | | if (!$config) { |
| | | $registrar = Registrar::getInstance($content); |
| | | if (!$registrar) { |
| | | return null; |
| | | } |
| | | |
| | | // Check if this orderby is a custom order |
| | | $customOrders = $config['custom_order'] ?? []; |
| | | $customOrders = $registrar->custom_order??[]; |
| | | if (empty($customOrders) || !isset($customOrders[$orderby])) { |
| | | return null; |
| | | } |
| | | |
| | | // Get field definition |
| | | $fields = $config['fields'] ?? []; |
| | | $fields = $registrar->getFields() ?? []; |
| | | if (!isset($fields[$orderby])) { |
| | | return null; |
| | | } |
| | |
| | | } |
| | | |
| | | /** |
| | | * Check if content type exists |
| | | */ |
| | | protected function checkContent(string $content, bool $returnBool = false): string|bool |
| | | { |
| | | $result = JVB_CONTENT[$content] ?? JVB_TAXONOMY[$content] ?? JVB_USER[$content] ?? ''; |
| | | return $returnBool ? ($result !== '') : $result; |
| | | } |
| | | |
| | | /** |
| | | * Check if user exists (cached) |
| | | */ |
| | | protected function checkUser(int $userId): bool |
| | |
| | | protected function isTimeline($args, $data):bool |
| | | { |
| | | $post_types = is_array($args['post_type']) ? $args['post_type'] : [$args['post_type']]; |
| | | foreach ($post_types as $type) { |
| | | if (Features::forContent($type)->has('is_timeline')) { |
| | | return true; |
| | | } |
| | | } |
| | | return false; |
| | | $hasTimeline = array_map(function($item) { return jvbCheckBase($item); },Registrar::getFeatured('is_timeline', 'post')); |
| | | return !empty(array_intersect($post_types, $hasTimeline)); |
| | | } |
| | | // ========================================================================= |
| | | // SECURITY |