1<?php
2
3require_once "Services/ADT/classes/Bridges/class.ilADTFormBridge.php";
4
5class ilADTLocationFormBridge extends ilADTFormBridge
6{
7    protected function isValidADT(ilADT $a_adt)
8    {
9        return ($a_adt instanceof ilADTLocation);
10    }
11
12    public function addToForm()
13    {
14        global $DIC;
15
16        $lng = $DIC['lng'];
17
18        $adt = $this->getADT();
19
20        $default = false;
21        if ($adt->isNull()) {
22            // see ilPersonalProfileGUI::addLocationToForm()
23
24            // use installation default
25            include_once("./Services/Maps/classes/class.ilMapUtil.php");
26            $def = ilMapUtil::getDefaultSettings();
27            $adt->setLatitude($def["latitude"]);
28            $adt->setLongitude($def["longitude"]);
29            $adt->setZoom($def["zoom"]);
30
31            $default = true;
32        }
33
34        // :TODO: title?
35        $title = $this->isRequired()
36            ? $this->getTitle()
37            : $lng->txt("location");
38
39        $loc = new ilLocationInputGUI($title, $this->getElementId());
40        $loc->setLongitude($adt->getLongitude());
41        $loc->setLatitude($adt->getLatitude());
42        $loc->setZoom($adt->getZoom());
43
44        $this->addBasicFieldProperties($loc, $adt->getCopyOfDefinition());
45
46        if (!$this->isRequired()) {
47            $optional = new ilCheckboxInputGUI($this->getTitle(), $this->getElementId() . "_tgl");
48            $optional->addSubItem($loc);
49            $this->addToParentElement($optional);
50
51            if (!$default && !$adt->isNull()) {
52                $optional->setChecked(true);
53            }
54        } else {
55            $this->addToParentElement($loc);
56        }
57    }
58
59    public function importFromPost()
60    {
61        $do_import = true;
62        if (!$this->isRequired()) {
63            $toggle = $this->getForm()->getInput($this->getElementId() . "_tgl");
64            if (!$toggle) {
65                $do_import = false;
66            }
67        }
68
69        if ($do_import) {
70            // ilPropertyFormGUI::checkInput() is pre-requisite
71            $incoming = $this->getForm()->getInput($this->getElementId());
72            $this->getADT()->setLongitude($incoming["longitude"]);
73            $this->getADT()->setLatitude($incoming["latitude"]);
74            $this->getADT()->setZoom($incoming["zoom"]);
75        } else {
76            $this->getADT()->setLongitude(null);
77            $this->getADT()->setLatitude(null);
78            $this->getADT()->setZoom(null);
79        }
80
81        $field = $this->getForm()->getItemByPostvar($this->getElementId());
82        $field->setLongitude($this->getADT()->getLongitude());
83        $field->setLatitude($this->getADT()->getLatitude());
84        $field->setZoom($this->getADT()->getZoom());
85    }
86}
87