1 <?php
  2 /**
  3  * @package     Joomla.Platform
  4  * @subpackage  Google
  5  *
  6  * @copyright   Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved
  7  * @license     GNU General Public License version 2 or later; see LICENSE
  8  */
  9 
 10 defined('JPATH_PLATFORM') or die;
 11 
 12 use Joomla\Registry\Registry;
 13 
 14 /**
 15  * Google API object class for the Joomla Platform.
 16  *
 17  * @since       12.3
 18  * @deprecated  4.0  Use the `joomla/google` package via Composer instead
 19  */
 20 abstract class JGoogleEmbed
 21 {
 22     /**
 23      * @var    Registry  Options for the Google data object.
 24      * @since  12.3
 25      */
 26     protected $options;
 27 
 28     /**
 29      * @var    JUri  URI of the page being rendered.
 30      * @since  12.3
 31      */
 32     protected $uri;
 33 
 34     /**
 35      * Constructor.
 36      *
 37      * @param   Registry  $options  Google options object
 38      * @param   JUri      $uri      URL of the page being rendered
 39      *
 40      * @since   12.3
 41      */
 42     public function __construct(Registry $options = null, JUri $uri = null)
 43     {
 44         $this->options = $options ? $options : new Registry;
 45         $this->uri = $uri ? $uri : JUri::getInstance();
 46     }
 47 
 48     /**
 49      * Method to retrieve the javascript header for the embed API
 50      *
 51      * @return  string  The header
 52      *
 53      * @since   12.3
 54      */
 55     public function isSecure()
 56     {
 57         return $this->uri->getScheme() == 'https';
 58     }
 59 
 60     /**
 61      * Method to retrieve the header for the API
 62      *
 63      * @return  string  The header
 64      *
 65      * @since   12.3
 66      */
 67     abstract public function getHeader();
 68 
 69     /**
 70      * Method to retrieve the body for the API
 71      *
 72      * @return  string  The body
 73      *
 74      * @since   12.3
 75      */
 76     abstract public function getBody();
 77 
 78     /**
 79      * Method to output the javascript header for the embed API
 80      *
 81      * @return  null
 82      *
 83      * @since   12.3
 84      */
 85     public function echoHeader()
 86     {
 87         echo $this->getHeader();
 88     }
 89 
 90     /**
 91      * Method to output the body for the API
 92      *
 93      * @return  null
 94      *
 95      * @since   12.3
 96      */
 97     public function echoBody()
 98     {
 99         echo $this->getBody();
100     }
101 
102     /**
103      * Get an option from the JGoogleEmbed instance.
104      *
105      * @param   string  $key  The name of the option to get.
106      *
107      * @return  mixed  The option value.
108      *
109      * @since   12.3
110      */
111     public function getOption($key)
112     {
113         return $this->options->get($key);
114     }
115 
116     /**
117      * Set an option for the JGoogleEmbed instance.
118      *
119      * @param   string  $key    The name of the option to set.
120      * @param   mixed   $value  The option value to set.
121      *
122      * @return  JGoogleEmbed  This object for method chaining.
123      *
124      * @since   12.3
125      */
126     public function setOption($key, $value)
127     {
128         $this->options->set($key, $value);
129 
130         return $this;
131     }
132 }
133