%PDF- %PDF-
| Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/usermap/models/admin/ |
| Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/usermap/models/admin/EditForm.php |
<?php
/**
* User Location Map
*
* @package humhub.modules.usermap
* @author KeudellCoding
*/
namespace humhub\modules\usermap\models\admin;
use Yii;
use yii\base\Model;
class EditForm extends Model {
const DEFAULT_TILE_SERVER = 'https://{s}.tile.osm.org/{z}/{x}/{y}.png';
public $map_widget_location;
public $map_widget_location_sort_order;
public $osm_tile_server;
public $osm_map_center_latitude;
public $osm_map_center_longitude;
public $osm_map_center_zoom;
public $geocoding_provider;
public $geocoding_api_key;
/**
* @inheritdocs
*/
public function rules() {
return [
[['map_widget_location'], 'in', 'range' => array_keys(static::getWidgetLocations())],
[['map_widget_location_sort_order', 'osm_map_center_zoom'], 'number', 'min' => 0],
['osm_map_center_latitude', 'double', 'min' => -90, 'max' => 90],
['osm_map_center_longitude', 'double', 'min' => -180, 'max' => 180],
[['geocoding_provider'], 'in', 'range' => array_keys(static::getProviders())],
[['geocoding_api_key', 'map_widget_location_sort_order'], 'required'],
];
}
/**
* @inheritdocs
*/
public function init() {
$settings = Yii::$app->getModule('usermap')->settings;
$oldApiKey = $settings->get('google_geocoding_api_key');
if ($oldApiKey !== null) {
$settings->set('geocoding_provider', 'google');
$settings->set('geocoding_api_key', $oldApiKey);
$settings->delete('google_geocoding_api_key');
}
$this->map_widget_location = $settings->get('map_widget_location');
$this->map_widget_location_sort_order = $settings->get('map_widget_location_sort_order', 400);
$this->osm_tile_server = $settings->get('osm_tile_server', self::DEFAULT_TILE_SERVER);
$this->osm_map_center_latitude = $settings->get('osm_map_center_latitude', 51.0951);
$this->osm_map_center_longitude = $settings->get('osm_map_center_longitude', 10.2714);
$this->osm_map_center_zoom = $settings->get('osm_map_center_zoom', 5);
$this->geocoding_provider = $settings->get('geocoding_provider');
$this->geocoding_api_key = $settings->get('geocoding_api_key');
}
/**
* Saves the given form settings.
*/
public function save() {
$settings = Yii::$app->getModule('usermap')->settings;
$settings->set('map_widget_location', $this->map_widget_location);
$settings->set('map_widget_location_sort_order', $this->map_widget_location_sort_order);
$settings->set('osm_tile_server', $this->osm_tile_server);
$settings->set('osm_map_center_latitude', $this->osm_map_center_latitude);
$settings->set('osm_map_center_longitude', $this->osm_map_center_longitude);
$settings->set('osm_map_center_zoom', $this->osm_map_center_zoom);
$settings->set('geocoding_provider', $this->geocoding_provider);
$settings->set('geocoding_api_key', $this->geocoding_api_key);
return true;
}
/**
* @inheritdocs
*/
public function attributeLabels() {
return [
'osm_map_center_latitude' => 'Default Latitude',
'osm_map_center_longitude' => 'Default Longitude',
'osm_map_center_zoom' => 'Default Zoom Level'
];
}
/**
* @inheritdoc
*/
public function attributeHints() {
$result = [
'osm_tile_server' => 'Here you can specify your own tile server. You can find the format <a href="https://leafletjs.com/SlavaUkraini/reference.html#tilelayer" target="_blank" rel="noopener noreferrer">here</a>.',
'osm_map_center_latitude' => 'Please enter a decimal number with a dot as separator',
'osm_map_center_longitude' => 'Please enter a decimal number with a dot as separator'
];
return $result;
}
public static function getProviders() {
return [
'google' => 'Google',
'mapbox' => 'Mapbox',
'here' => 'Here.com'
];
}
public static function getWidgetLocations() {
return [
'dashboard_sidebar' => 'Dashboard sidebar',
'top_menu' => 'Top menu'
];
}
}