extra->source == $this->getId()) { ... */ namespace YellowTree\GeoipDetect\DataSources { abstract class AbstractDataSource { public function __construct() {} abstract public function getId(); public function getLabel() { return ''; } public function getDescriptionHTML() { return ''; } public function getStatusInformationHTML() { return ''; } public function getParameterHTML() { return ''; } public function saveParameters($post) { } public function getShortLabel() { return $this->getLabel(); } public function activate() { } public function deactivate() { } public function uninstall() {} public function getReader($locales = array('en'), $options = array()) { return null; } public function isWorking() { return false; } } /** * This Class extends the Maxmind City with more attributes. * * @property bool $isEmpty (Wordpress Plugin) If the record is empty or contains any data. * * @property \YellowTree\GeoipDetect\DataSources\ExtraInformation $extra (Wordpress Plugin) Extra Information added by the GeoIP Detect plugin */ class City extends \GeoIp2\Model\Insights { /** * @ignore */ protected $extra; /** * @ignore */ public function __construct($raw, $locales) { parent::__construct($raw, $locales); $this->extra = new ExtraInformation($this->get('extra')); } public function __get($attr) { if ($attr == 'isEmpty') return $this->raw['is_empty']; else return parent::__get($attr); } } /** * @property string $source Id of the source that this record is originating from. * * @property int $cached 0 if not cached, else Unix Timestamp when it was written to the cache. * * @property string $error Error message if one occured during lookup. If multiple errors, they are seperated by \n */ class ExtraInformation extends \GeoIp2\Record\AbstractRecord { /** * @ignore */ protected $validAttributes = array('source', 'cached', 'error', 'original', 'flag', 'tel'); } interface ReaderInterface extends \GeoIp2\ProviderInterface { /** * Closes the database and returns the resources to the system. */ public function close(); } abstract class AbstractReader implements \YellowTree\GeoipDetect\DataSources\ReaderInterface { protected $options; public function __construct($options = array()) { $this->options = $options; } public function city($ip) { throw new \BadMethodCallException('This datasource does not provide data for city()'); } public function country($ip) { throw new \BadMethodCallException('This datasource does not provide data for country()'); } public function close() { } } } // end namespace namespace { // global namespace function geoip_detect2_register_source($source) { $registry = \YellowTree\GeoipDetect\DataSources\DataSourceRegistry::getInstance(); $registry->register($source); } function geoip_detect2_is_source_active($sourceId) { $registry = \YellowTree\GeoipDetect\DataSources\DataSourceRegistry::getInstance(); return $sourceId == $registry->getCurrentSource(); } }