<?php /** * @package VikBooking * @subpackage core * @author Alessio Gaggii - E4J s.r.l. * @copyright Copyright (C) 2022 E4J s.r.l. All Rights Reserved. * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL * @link https://vikwp.com */ // No direct access defined('ABSPATH') or die('No script kiddies please!'); /** * Defines a registry of options to be binded to an admin widget. Options * are available as multitask data, but they live on a separate layer. * * @since 1.16.5 (J) - 1.6.5 (WP) */ final class VBOMultitaskOptions extends JObject { /** * Proxy for immediately accessing the object and bind data. * * @param array|object $data the options data to bind. */ public static function getInstance($data = null) { return new static($data); } /** * Attempts to fetch the booking id from the options set. The * booking ID could be a VikBooking ID or an OTA ID as well. * * @param string $key optional option key to fetch from. * * @return int|string the booking id found, or 0. */ public function fetchBookingId($key = '') { $values = [ $this->get('id'), $this->get('bid'), $this->get('booking_id'), $this->get('id_order'), ]; if ($key) { // prepend option value for the given key array_unshift($values, $this->get($key)); } foreach (array_filter($values) as $id) { // do not cast to integer if the booking contains non-number characters return preg_match("/^[0-9]+$/", $id) ? (int)$id : $id; } return 0; } /** * Detects if the options come from a Push notification message posted * by the ServiceWorker to the client application during rendering. * Can also detect if it's a Web Notification payload. * * @param bool $web_or_push true for both, false only for Push. * * @return bool */ public function gotPushData($web_or_push = true) { if ($web_or_push && !$this->get('_push') && !$this->get('_web')) { // not a Push notification, nor a Web notification return false; } if (!$web_or_push && !$this->get('_push')) { // not a Push notification return false; } $title = $this->get('title'); $message = $this->get('message'); return (isset($title) || isset($message)); } }