| | |
| | | <?php |
| | | namespace JVBase\integrations; |
| | | |
| | | use JVBase\meta\MetaManager; |
| | | use JVBase\meta\Meta; |
| | | use WP_Error; |
| | | if (!defined('ABSPATH')) { |
| | | exit; |
| | |
| | | |
| | | class GoogleMyBusiness extends Integrations |
| | | { |
| | | protected array $allowedContent = [ |
| | | 'menu_item', |
| | | 'post', |
| | | 'event', |
| | | ]; |
| | | private ?string $access_token = null; |
| | | protected string $readMask = 'name,title,storefrontAddress,metadata,openInfo,storeCode,categories,phoneNumbers,labels,specialHours'; |
| | | private ?string $location = null; |
| | |
| | | } |
| | | |
| | | $postID = $data['post_id']; |
| | | $meta = new MetaManager($postID, 'post'); |
| | | $meta = Meta::forPost($postID); |
| | | $fields = [ |
| | | 'start_date', |
| | | 'end_date', |
| | |
| | | $result = $this->updatePost($fields["_{$this->service_name}_item_id"], $data); |
| | | } else { |
| | | $result = $this->createPost($data); |
| | | $meta->updateValue("_{$this->service_name}_item_id", $result['name']); |
| | | $meta->set("_{$this->service_name}_item_id", $result['name']); |
| | | } |
| | | |
| | | return [ |
| | |
| | | } |
| | | |
| | | $postID = $data['post_id']; |
| | | $meta = new MetaManager($postID, 'post'); |
| | | $meta = Meta::forPost($postID); |
| | | $fields = [ |
| | | 'post_excerpt', |
| | | 'post_title', |
| | |
| | | $result = $this->updatePost($fields["_{$this->service_name}_item_id"], $data); |
| | | } else { |
| | | $result = $this->createPost($data); |
| | | $meta->updateValue("_{$this->service_name}_item_id", $result['name']); |
| | | $meta->set("_{$this->service_name}_item_id", $result['name']); |
| | | } |
| | | |
| | | return [ |
| | |
| | | } |
| | | |
| | | $postID = $data['post_id']; |
| | | $meta = new MetaManager($postID, 'post'); |
| | | $meta = Meta::forPost($postID); |
| | | $fields = [ |
| | | 'post_excerpt', |
| | | 'post_title', |
| | |
| | | $result = $this->updatePost($fields["_{$this->service_name}_item_id"], $data); |
| | | } else { |
| | | $result = $this->createPost($data); |
| | | $meta->updateValue("_{$this->service_name}_item_id", $result['name']); |
| | | $meta->set("_{$this->service_name}_item_id", $result['name']); |
| | | } |
| | | |
| | | return [ |
| | |
| | | protected function collectMenu(array $menu_items): array |
| | | { |
| | | |
| | | $defaultMeta = new MetaManager($this->userID, 'integrations'); |
| | | $defaultMeta = Meta::forOptions($this->userID.'_integrations'); |
| | | $defaults = ['menu_name', 'menu_description', 'default_section', 'cuisines', 'source_url', 'language', 'default_currency']; |
| | | $defaults = $defaultMeta->getAll($defaults); |
| | | |
| | |
| | | |
| | | protected function buildMenuItem(\WP_Post $item, array $defaults):array |
| | | { |
| | | $meta = new MetaManager($item->ID, 'post'); |
| | | $meta = Meta::forPost($item->ID); |
| | | $fields = $this->mappedMenuFields($item->post_type); |
| | | $values = $meta->getAll(array_values($fields)); |
| | | |
| | |
| | | |
| | | protected function getMenuSectionsOrder(array $sections_map):array |
| | | { |
| | | $optionsMeta = new MetaManager(null, 'options'); |
| | | $sectionOrder = $optionsMeta->getValue('menu_section_order'); |
| | | $optionsMeta = Meta::forOptions('options'); |
| | | $sectionOrder = $optionsMeta->get('menu_section_order'); |
| | | |
| | | // Build final GMB menu structure |
| | | $ordered = []; |
| | |
| | | |
| | | // Collect cuisines from individual items if specified |
| | | foreach ($menu_items as $item) { |
| | | $meta = new MetaManager($item->ID, 'post'); |
| | | $item_cuisines = $meta->getValue('cuisines'); |
| | | $meta = Meta::forPost($item->ID); |
| | | $item_cuisines = $meta->get('cuisines'); |
| | | |
| | | if (!empty($item_cuisines)) { |
| | | $item_cuisines = is_array($item_cuisines) ? |