/**
  * Generate the module
  */
 protected function compile()
 {
     //Categories selected in List-Module-Options
     $arrCategoriesToShow = deserialize($this->gloImmoConnectorTypeSelector);
     $filter = null;
     if (\Input::post('FORM_SUBMIT') == $this->_searchFormId) {
         $filter = array('objectType' => htmlspecialchars(\Input::post('objectType')), 'zipcode' => htmlspecialchars(\Input::post('zipcode')), 'city' => htmlspecialchars(\Input::post('city')), 'keyword' => htmlspecialchars(\Input::post('keyword')));
     }
     //Get Expose Page
     if ($this->jumpTo && ($objTarget = $this->objModel->getRelated('jumpTo')) !== null) {
         $this->_objTarget = $objTarget;
     }
     $objImmoConnector = new ImmoConnector('is24', \Config::get('gloImmoConnectorKey'), \Config::get('gloImmoConnectorSecret'));
     //User auf null setzen bzw. Username auslesen
     $objUser = \IcAuthModel::findByPk($this->gloImmoConnectorUser);
     if (is_null($objUser)) {
         throw new \Exception("Missing or invalid User selected for API-Connection", 1);
     }
     $objRes = $objImmoConnector->getAllUserObjects($objUser, $filter);
     $arrRes = $this->orderObjects(simplexml_import_dom($objRes));
     // Filtern auf die Kategorien der der Moduleinstellungen
     if (count($arrCategoriesToShow) > 0) {
         $arrRes = array_intersect_key($arrRes, array_flip($arrCategoriesToShow));
     }
     unset($objXml);
     $arrTypes = array_keys($arrRes);
     //Rendern der Objekt-Daten
     $arrRendered = array();
     foreach ($arrRes as $strType => $objList) {
         $arrRendered[$strType] = $this->renderObjectTypeGroup($strType, $objList);
     }
     unset($arrRes);
     $this->Template->realEstateObjects = $arrRendered;
 }
 /**
  * Generate the module
  */
 protected function compile()
 {
     global $objPage;
     //Prüfen ob eine numerische ExposeId angegeben wurde
     $exposeId = \Input::get("object");
     if ($exposeId == '' || !preg_match('/^\\d+$/', $exposeId)) {
         $this->redirectToNotFound($objPage);
     }
     //Get Object request Page
     if ($this->jumpTo && ($objTarget = $this->objModel->getRelated('jumpTo')) !== null) {
         $this->_objTarget = $objTarget;
     }
     $objImmoConnector = new ImmoConnector('is24', \Config::get('gloImmoConnectorKey'), \Config::get('gloImmoConnectorSecret'));
     //User auf null setzen bzw. Username auslesen
     $objUser = \IcAuthModel::findByPk($this->gloImmoConnectorUser);
     if (is_null($objUser)) {
         throw new \Exception("Missing or invalid User selected for API-Connection", 1);
     }
     //Expose laden
     $objExpose = $objImmoConnector->getExpose($exposeId, $objUser);
     $objAttachment = $objImmoConnector->getAttachment($exposeId);
     $xmlExpose = simplexml_import_dom($objExpose);
     //Typ der Immobilie bestimmen
     $strType = $this->getObjectType($objExpose);
     $strId = $this->getObjectId($objExpose);
     //Template je nach Typ setzen
     $this->Template = new \FrontendTemplate($this->getTemplateName($strType));
     //XML-Daten für Objekttyp aufbereiten
     //$arrData = $this->getDataForType($strType, $objExpose);
     //Objektdaten dem Template zuweisen
     $this->Template->gloImmoConnectorRemoveTitleText = $this->gloImmoConnectorRemoveTitleText;
     $this->Template->expose = $xmlExpose;
     $this->Template->attachment = $this->getAttachments($objAttachment);
     $this->Template->objectRequest = array('action' => $this->generateFrontendUrl($this->_objTarget->row()), 'exposeId' => $strId, 'exposeUrl' => \Environment::get('uri'), 'exposeTitle' => htmlspecialchars((string) $xmlExpose->title));
 }
 /**
  * Generate the module
  */
 protected function compile()
 {
     global $objPage;
     $objImmoConnector = new ImmoConnector('is24', \Config::get('gloImmoConnectorKey'), \Config::get('gloImmoConnectorSecret'));
     //User auf null setzen bzw. Username auslesen
     $objUser = \IcAuthModel::findByPk($this->gloImmoConnectorUser);
     if (is_null($objUser)) {
         throw new \Exception("Missing or invalid User selected for API-Connection", 1);
     }
     //Get Expose Page
     if ($this->gloImmoConnectorjumpTo && ($objTarget = $this->objModel->getRelated('gloImmoConnectorjumpTo')) !== null) {
         $this->_objTarget = $objTarget;
     }
     $objRes = $objImmoConnector->getAllUserObjects($objUser);
     $xpath = new \DOMXPath($objRes);
     $objList = $xpath->query("//realEstateElement");
     if ($objList->length > 0) {
         $index = rand(0, $objList->length - 1);
         //Zufalls-Item aus Liste laden
         $objRand = simplexml_import_dom($objList->item($index));
         $this->Template->title = $this->gloImmoConnectorRemoveTitleText != '' ? str_replace($this->gloImmoConnectorRemoveTitleText, '', $objRand->title) : (string) $objRand->title;
         if ($objRand->titlePicture) {
             foreach ($objRand->titlePicture->urls->url as $url) {
                 if ($url['scale'] == 'SCALE_AND_CROP') {
                     $this->Template->picture = array('url' => str_replace("%WIDTH%x%HEIGHT%", self::PICTURE_SIZE_FULL, $url['href']), 'title' => (string) $objRand->titlePicture->title);
                 }
             }
         }
         $this->Template->zipcode = (string) $objRand->address->postcode;
         $this->Template->city = (string) $objRand->address->city;
         $this->Template->exposeHref = $this->generateFrontendUrl($this->_objTarget->row(), '/object/' . $objRand['id']);
         $this->Template->objectType = $GLOBALS['TL_LANG']['immoConnector'][$this->getObjectType($objRand)];
         $this->Template->priceValue = (double) $objRand->price->value;
         $this->Template->priceCurrency = (string) $objRand->price->currency;
         switch ($this->getObjectType($objRand)) {
             case "houseBuy":
             case "apartmentBuy":
             case "investment":
             case "livingBuySite":
                 $this->Template->priceTitle = $GLOBALS['TL_LANG']['immoConnector']['buyPrice'];
                 break;
             case "houseRent":
             case "apartmentRent":
                 $this->Template->priceTitle = $GLOBALS['TL_LANG']['immoConnector']['rentPrice'];
                 break;
         }
     } else {
         $this->Template->noObjectFound = $GLOBALS['TL_LANG']['immoConnector']['noObjectFound'];
     }
 }