public function article($cid)
 {
     // Check for request forgeries
     JSession::checkToken() or die(JText::_('JINVALID_TOKEN'));
     // Get items to remove from the request.
     $cid = JFactory::getApplication()->input->get('cid', array(), 'array');
     if (!is_array($cid) || count($cid) < 1) {
         JLog::add(JText::_($this->text_prefix . '_NO_ITEM_SELECTED'), JLog::WARNING, 'jerror');
     } else {
         //$model = $this->getModel();
         $params = JComponentHelper::getParams('com_einsatzkomponente');
         // Make sure the item ids are integers
         jimport('joomla.utilities.arrayhelper');
         JArrayHelper::toInteger($cid);
         foreach ($cid as $key => $val) {
             $query = 'SELECT * FROM `#__eiko_einsatzberichte` WHERE `id` = "' . $val . '" and state ="1" LIMIT 1';
             $db = JFactory::getDBO();
             $db->setQuery($query);
             $result = $db->loadObjectList();
             $kat = EinsatzkomponenteHelper::getTickerKat($result[0]->tickerkat);
             $db = JFactory::getDbo();
             $db->setQuery('SELECT MAX(asset_id) FROM #__content');
             $max = $db->loadResult();
             $asset_id = $max + 1;
             $link = JRoute::_(JURI::root() . 'index.php?option=com_einsatzkomponente&view=einsatzbericht&id=' . $result[0]->id);
             $image_intro = str_replace('/', '\\/', $result[0]->image);
             $image_intro = $db->escape($image_intro);
             if (str_replace('\\/com_einsatzkomponente\\/einsatzbilder\\/thumbs', '', $image_intro)) {
                 $image_fulltext = str_replace('\\/thumbs', '', $image_intro);
             }
             $user = JFactory::getUser();
             $db = JFactory::getDbo();
             $query = $db->getQuery(true);
             // !important, true for every new query
             $query->insert('#__content');
             // #__table_name = databse prefix + table name
             $query->set('`id`=NULL');
             $query->set('`asset_id`="' . $asset_id . '"');
             $query->set('`title`="' . $result[0]->summary . '"');
             $alias = strtolower($result[0]->summary);
             $alias = str_replace(" ", "-", $alias) . '_' . date("Y-m-d", strtotime($result[0]->date1));
             $query->set('`alias`="' . $alias . '"');
             $intro = $result[0]->desc;
             $intro = preg_replace("#(?<=.{" . $params->get('article_max_intro', '400') . "}?\\b)(.*)#is", " ...", $intro, 1);
             $query->set('`introtext`="' . $db->escape($intro) . '"');
             if ($params->get('article_orgas', '1')) {
                 $data = array();
                 foreach (explode(',', $result[0]->auswahl_orga) as $value) {
                     $db = JFactory::getDbo();
                     $sql = $db->getQuery(true);
                     $sql->select('name')->from('`#__eiko_organisationen`')->where('id = "' . $value . '"');
                     $db->setQuery($sql);
                     $results = $db->loadObjectList();
                     if (count($results)) {
                         $data[] = '' . $results[0]->name . '';
                     }
                 }
                 $auswahl_orga = implode(',', $data);
                 $orgas = str_replace(",", " +++ ", $auswahl_orga);
                 $orgas = '<br/><div class=\\"eiko_article_orga\\">Eingesetzte Kräfte: ' . $orgas . '</div>';
                 $query->set('`fulltext`="' . $db->escape($result[0]->desc) . $orgas . '"');
             } else {
                 $query->set('`fulltext`="' . $db->escape($result[0]->desc) . '"');
             }
             $query->set('`state`="1"');
             $query->set('`catid`="' . $params->get('article_category', '0') . '"');
             $query->set('`created`="' . date("Y-m-d H:i:s", strtotime($result[0]->date1)) . '"');
             $query->set('`created_by`="' . $user->id . '"');
             $query->set('`created_by_alias`=""');
             $query->set('`modified`=""');
             $query->set('`modified_by`="' . $user->id . '"');
             $query->set('`checked_out`="0"');
             $query->set('`checked_out_time`="0000-00-00 00:00:00.000000"');
             $query->set('`publish_up`="' . date("Y-m-d H:i:s", strtotime($result[0]->date1)) . '"');
             $query->set('`publish_down`="0000-00-00 00:00:00.000000"');
             $query->set('`images`="{\\"image_intro\\":\\"' . $image_intro . '\\",\\"float_intro\\":\\"\\",\\"image_intro_alt\\":\\"\\",\\"image_intro_caption\\":\\"\\",\\"image_fulltext\\":\\"' . $image_fulltext . '\\",\\"float_fulltext\\":\\"\\",\\"image_fulltext_alt\\":\\"\\",\\"image_fulltext_caption\\":\\"\\"}"');
             $query->set('`urls`="{\\"urla\\":\\"' . $link . '\\",\\"urlatext\\":\\"Weitere Informationen über diesen Einsatz im Detailbericht\\",\\"targeta\\":\\"\\",\\"urlb\\":\\"' . $result[0]->presse . '\\",\\"urlbtext\\":\\"' . $result[0]->presse_label . '\\",\\"targetb\\":\\"\\",\\"urlc\\":\\"' . $result[0]->presse2 . '\\",\\"urlctext\\":\\"' . $result[0]->presse2_label . '\\",\\"targetc\\":\\"\\"}"');
             $query->set('`attribs`="{\\"show_title\\":"",\\"link_titles\\":"",\\"show_tags\\":"",\\"show_intro\\":"",\\"info_block_position\\":"",\\"show_category\\":"",\\"link_category\\":"",\\"show_parent_category\\":"",\\"link_parent_category\\":"",\\"show_author\\":"",\\"link_author\\":"",\\"show_create_date\\":"",\\"show_modify_date\\":"",\\"show_publish_date\\":"",\\"show_item_navigation\\":"",\\"show_icons\\":"",\\"show_print_icon\\":"",\\"show_email_icon\\":"",\\"show_vote\\":"",\\"show_hits\\":"",\\"show_noauth\\":"",\\"urls_position\\":"",\\"alternative_readmore\\":"",\\"article_layout\\":"",\\"show_publishing_options\\":"",\\"show_article_options\\":"",\\"show_urls_images_backend\\":"",\\"show_urls_images_frontend\\":""}"');
             $query->set('`version`="1"');
             $query->set('`ordering`="0"');
             $query->set('`metakey`="' . $auswahl_orga . ',' . $params->get('article_meta_key', 'feuerwehr,einsatzbericht,unfall,feuer,hilfeleistung,polizei,thw,rettungsdienst,hilfsorganisation') . ',einsatzkomponente"');
             $query->set('`metadesc`="' . $params->get('article_meta_desc', 'Einsatzbericht') . '"');
             $query->set('`access`="1"');
             $query->set('`hits`="0"');
             $query->set('`metadata`="{\\"robots\\":\\"\\",\\"author\\":\\"' . $user->username . '\\",\\"rights\\":\\"\\",\\"xreference\\":\\"\\"}"');
             $query->set('`featured`="1"');
             $query->set('`language`="*"');
             $query->set('`xreference`=""');
             /* or something like this:
             		$query->columns('`1`,`2`,`3`');
             		$query->values('"one","two","three"');
             		*/
             $db->setQuery($query);
             try {
                 // Execute the query in Joomla 3.0.
                 $db->execute();
             } catch (Exception $e) {
                 //print the errors
                 print_r($e) . '';
             }
             $content_id = $db->insertId();
             // Joomla-Artikel Id in Einsatzbericht eintragen
             $query = "UPDATE `#__eiko_einsatzberichte` SET `article_id` = '" . $content_id . "' WHERE `id` = '" . $result[0]->id . "'";
             $db = JFactory::getDBO();
             $db->setQuery($query);
             $db->query();
             if ($params->get('article_frontpage', '1')) {
                 // Artikel als Haupteintrag-Eintrag markieren
                 $frontpage_query = "INSERT INTO `#__content_frontpage` SET `content_id`='" . $content_id . "'";
                 $db = JFactory::getDBO();
                 $db->setQuery($frontpage_query);
                 $db->query();
             }
         }
         $msg = count($cid) . ' Artikel erstellt';
     }
     return $msg;
 }
Ejemplo n.º 2
0
    /**
     * Display the view
     */
    public function display($tpl = null)
    {
        $this->next_id[0] = new stdClass();
        require_once JPATH_SITE . '/administrator/components/com_einsatzkomponente/helpers/einsatzkomponente.php';
        // Helper-class laden
        $app = JFactory::getApplication();
        $selectedOrga = $app->getUserStateFromRequest("com_einsatzkomponente.selectedOrga", 'selectedOrga', 'alle Organisationen');
        //echo $selectedOrga;
        $user = JFactory::getUser();
        //$id = $app->input->get(id);
        $this->state = $this->get('State');
        $this->item = $this->get('Data');
        $this->images = EinsatzkomponenteHelper::getEinsatzbilder($this->item->id);
        $this->prev_id = EinsatzkomponenteHelper::getPrev_id($this->item->date1, $selectedOrga);
        $this->next_id = EinsatzkomponenteHelper::getNext_id($this->item->date1, $selectedOrga);
        $this->params = $app->getParams('com_einsatzkomponente');
        $this->form = $this->get('Form');
        $this->gmap_config = EinsatzkomponenteHelper::load_gmap_config();
        // GMap-Config aus helper laden
        $this->einsatzlogo = EinsatzkomponenteHelper::getEinsatzlogo($this->item->data1);
        $this->tickerKat = EinsatzkomponenteHelper::getTickerKat($this->item->tickerkat);
        $this->alarmierungsart = EinsatzkomponenteHelper::getAlarmierungsart($this->item->alerting);
        // Get active menu
        $app = JFactory::getApplication();
        $menus = $app->getMenu();
        $this->menu = $menus->getActive();
        //print_r ($this->menu);
        //echo $this->menu->anzeigejahr;
        // Import CSS + JS
        $document = JFactory::getDocument();
        $document->addStyleSheet('components/com_einsatzkomponente/assets/css/einsatzkomponente.css');
        $document->addStyleSheet('components/com_einsatzkomponente/assets/css/responsive.css');
        $document->addScript('components/com_einsatzkomponente/assets/highslide/highslide-with-gallery.js');
        $document->addScript('components/com_einsatzkomponente/assets/highslide/highslide.config.js');
        $document->addStyleSheet('components/com_einsatzkomponente/assets/highslide/highslide.css');
        //print_r ($this->menu);
        $this->social = EinsatzkomponenteHelper::getSocial($this->params, $this->item->id, $this->item->summary);
        //		$sef = '';
        //		$sef_rewrite = '';
        //		$conf = JFactory::getConfig();
        //		@$sef = $conf[sef];
        //		@$sef_rewrite = $conf[sef_rewrite];
        //if ($sef_rewrite) :
        @($this->navbar = EinsatzkomponenteHelper::getNavbar($this->params, $this->prev_id['0']->id, $this->next_id['0']->id, $this->item->id, $this->menu->link . '&Itemid=' . $this->menu->id));
        //endif;
        //if (!$sef_rewrite) :
        //@$this->navbar = EinsatzkomponenteHelper::getNavbar($this->params,$this->prev_id['0']->id,$this->next_id['0']->id,$this->item->id,$this->menu->link.'&Itemid='.$this->params->get('homelink','').'');
        //endif;
        if ($this->params->get('gmap_action', '0') == '1') {
            if ($this->params->get('display_detail_organisationen', '1')) {
                $orga = EinsatzkomponenteHelper::getOrganisationen();
                $organisationen = '[';
                // Feuerwehr Details  ------>
                $n = 0;
                for ($i = 0; $i < count($orga); $i++) {
                    $orga_image = $orga[$i]->gmap_icon_orga;
                    if (!$orga_image) {
                        $orga_image = 'images/com_einsatzkomponente/images/map/icons/' . $this->params->get('einsatzkarte_orga_image', 'haus_rot.png');
                    }
                    if ($i == $n - 1) {
                        $organisationen = $organisationen . '["' . $orga[$i]->name . '",' . $orga[$i]->gmap_latitude . ',' . $orga[$i]->gmap_longitude . ',' . $i . ',"' . $orga_image . '"]';
                    } else {
                        $organisationen = $organisationen . '["' . $orga[$i]->name . '",' . $orga[$i]->gmap_latitude . ',' . $orga[$i]->gmap_longitude . ',' . $i . ',"' . $orga_image . '"';
                        $organisationen = $organisationen . '],';
                    }
                }
                $organisationen = substr($organisationen, 0, strlen($organisationen) - 1);
                $organisationen = $organisationen . ' ];';
            } else {
                $organisationen = '[["",1,1,0,"images/com_einsatzkomponente/images/map/icons/' . $this->params->get('einsatzkarte_orga_image', 'haus_rot.png') . '"],["",1,1,0,"images/com_einsatzkomponente/images/map/icons/' . $this->params->get('einsatzkarte_orga_image', 'haus_rot.png') . '"] ]';
            }
            $standort = EinsatzkomponenteHelper::getStandort_orga($this->item->auswahl_orga);
            $display_map_route = $this->params->get('display_map_route', 'true');
            //		 echo $standort->gmap_latitude;
            //		 echo $standort->gmap_longitude;
            //		 echo $standort->name;
            if ($this->params->get('display_detail_einsatzgebiet', '1')) {
                $alarmareas1 = $this->gmap_config->gmap_alarmarea;
                // Einsatzgebiet  ---->
                $alarmareas = explode('|', $alarmareas1);
                $einsatzgebiet = '[ ';
                for ($i = 0; $i < count($alarmareas) - 1; $i++) {
                    $areas = explode(',', $alarmareas[$i]);
                    $einsatzgebiet = $einsatzgebiet . 'new google.maps.LatLng(' . $areas[0] . ',' . $areas[1] . '),';
                }
                $areas = explode(',', $alarmareas[0]);
                $einsatzgebiet = $einsatzgebiet . 'new google.maps.LatLng(' . $areas[0] . ',' . $areas[1] . '),';
                $einsatzgebiet = substr($einsatzgebiet, 0, strlen($einsatzgebiet) - 1);
                $einsatzgebiet = $einsatzgebiet . ' ]';
            } else {
                $einsatzgebiet = '[[0,0]]';
            }
            $display_detail_popup = $this->params->get('display_detail_popup', 'false');
            $marker1_title = '';
            $marker1_lat = '';
            $marker1_lng = '';
            $marker1_image = '';
            $marker2_title = '';
            $marker2_lat = '';
            $marker2_lng = '';
            $marker2_image = '';
            if ($this->params->get('display_detail_einsatz_marker', '1') && $this->item->gmap == '1') {
                $marker1_title = $this->item->summary;
                $marker1_lat = $this->item->gmap_report_latitude;
                $marker1_lng = $this->item->gmap_report_longitude;
                $marker1_image = $this->einsatzlogo->icon;
                //$marker1_image 		= 'images/com_einsatzkomponente/images/map/icons/'.$this->params->get('detail_pointer1_image','circle.png');
            } else {
                $marker1_lat = '1';
                $marker1_lng = '1';
            }
            $center_lat = $this->item->gmap_report_latitude;
            $center_lng = $this->item->gmap_report_longitude;
            $gmap_zoom_level = $this->params->get('detail_gmap_zoom_level', '12');
            $gmap_onload = $this->params->get('detail_gmap_onload', 'HYBRID');
            $zoom_control = $this->params->get('detail_zoom_control', 'false');
            $document->addScript('https://maps.googleapis.com/maps/api/js?v=3.exp');
            $document->addScriptDeclaration(EinsatzkomponenteHelper::getGmap($marker1_title, $marker1_lat, $marker1_lng, $marker1_image, $marker2_title, $marker2_lat, $marker2_lng, $marker2_image, $center_lat, $center_lng, $gmap_zoom_level, $gmap_onload, $zoom_control, $organisationen, $orga_image, $einsatzgebiet, $display_detail_popup, $standort, $display_map_route));
        }
        if ($this->params->get('gmap_action', '0') == '2') {
            if ($this->params->get('display_detail_organisationen', '1')) {
                $orga = EinsatzkomponenteHelper::getOrganisationen();
                $organisationen = '[';
                // Feuerwehr Details  ------>
                $n = 0;
                for ($i = 0; $i < count($orga); $i++) {
                    $orga_image = $orga[$i]->gmap_icon_orga;
                    if (!$orga_image) {
                        $orga_image = 'images/com_einsatzkomponente/images/map/icons/' . $this->params->get('einsatzkarte_orga_image', 'haus_rot.png');
                    }
                    if ($i == $n - 1) {
                        $organisationen = $organisationen . '["' . $orga[$i]->name . '",' . $orga[$i]->gmap_latitude . ',' . $orga[$i]->gmap_longitude . ',' . $i . ',"' . $orga_image . '"]';
                    } else {
                        $organisationen = $organisationen . '["' . $orga[$i]->name . '",' . $orga[$i]->gmap_latitude . ',' . $orga[$i]->gmap_longitude . ',' . $i . ',"' . $orga_image . '"';
                        $organisationen = $organisationen . '],';
                    }
                }
                $organisationen = substr($organisationen, 0, strlen($organisationen) - 1);
                $organisationen = $organisationen . ' ];';
            } else {
                $organisationen = '[["",1,1,0,"images/com_einsatzkomponente/images/map/icons/' . $this->params->get('einsatzkarte_orga_image', 'haus_rot.png') . '"],["",1,1,0,"images/com_einsatzkomponente/images/map/icons/' . $this->params->get('einsatzkarte_orga_image', 'haus_rot.png') . '"] ]';
            }
            if ($this->params->get('display_detail_einsatzgebiet', '1')) {
                $alarmareas1 = $this->gmap_config->gmap_alarmarea;
                // Einsatzgebiet  ---->
                $alarmareas = explode('|', $alarmareas1);
                $einsatzgebiet = '[ ';
                for ($i = 0; $i < count($alarmareas) - 1; $i++) {
                    $areas = explode(',', $alarmareas[$i]);
                    $einsatzgebiet = $einsatzgebiet . '[' . $areas[1] . ',' . $areas[0] . '],';
                }
                $areas = explode(',', $alarmareas[0]);
                $einsatzgebiet = $einsatzgebiet . '[' . $areas[1] . ',' . $areas[0] . '],';
                $einsatzgebiet = substr($einsatzgebiet, 0, strlen($einsatzgebiet) - 1);
                $einsatzgebiet = $einsatzgebiet . ' ]';
            } else {
                $einsatzgebiet = '[[0,0]]';
            }
            $standort = EinsatzkomponenteHelper::getStandort_orga($this->item->auswahl_orga);
            $display_map_route = $this->params->get('$display_map_route', 'true');
            $display_detail_popup = $this->params->get('display_detail_popup', 'false');
            $marker1_title = '';
            $marker1_lat = '';
            $marker1_lng = '';
            $marker1_image = '';
            $marker2_title = '';
            $marker2_lat = '';
            $marker2_lng = '';
            $marker2_image = '';
            if ($this->params->get('display_detail_einsatz_marker', '1')) {
                $marker1_title = $this->item->summary;
                $marker1_lat = $this->item->gmap_report_latitude;
                $marker1_lng = $this->item->gmap_report_longitude;
                $marker1_image = $this->einsatzlogo->icon;
                //$marker1_image 		= 'images/com_einsatzkomponente/images/map/icons/'.$this->params->get('detail_pointer1_image','circle.png');
            } else {
                $marker1_title = $this->item->summary;
                $marker1_lat = '1';
                $marker1_lng = '1';
                $marker1_image = $this->einsatzlogo->icon;
            }
            $center_lat = $this->item->gmap_report_latitude;
            $center_lng = $this->item->gmap_report_longitude;
            $gmap_zoom_level = $this->params->get('detail_gmap_zoom_level', '12');
            $gmap_onload = $this->params->get('detail_gmap_onload', 'HYBRID');
            $zoom_control = $this->params->get('detail_zoom_control', 'false');
            $document->addScript('components/com_einsatzkomponente/assets/osm/util.js');
            $document->addScript('http://www.openlayers.org/api/OpenLayers.js');
            $document->addScript('http://www.openstreetmap.org/openlayers/OpenStreetMap.js');
            $document->addStyleSheet('components/com_einsatzkomponente/assets/osm/map.css');
            $document->addStyleSheet('components/com_einsatzkomponente/assets/osm/ie_map.css');
            $document->addScript('components/com_einsatzkomponente/assets/osm/OpenLayers_Map_minZoom_maxZoom_Patch.js');
            $document->addScriptDeclaration(EinsatzkomponenteHelper::getOsm($marker1_title, $marker1_lat, $marker1_lng, $marker1_image, $marker2_title, $marker2_lat, $marker2_lng, $marker2_image, $center_lat, $center_lng, $gmap_zoom_level, $gmap_onload, $zoom_control, $organisationen, $orga_image, $einsatzgebiet, $display_detail_popup, $standort, $display_map_route));
        }
        if ($this->params->get('display_detail_bootstrap', '0')) {
            // Import Bootstrap
            $document->addScript('components/com_einsatzkomponente/assets/bootstrap/js/bootstrap.min.js');
            $document->addStyleSheet('components/com_einsatzkomponente/assets/bootstrap/css/bootstrap.min.css');
            $document->addStyleSheet('components/com_einsatzkomponente/assets/bootstrap/css/bootstrap-responsive.min.css');
        }
        $document->addStyleDeclaration($this->params->get('detail_css', ''));
        ?>
    <script type="text/javascript">
	// override Highslide settings here
    // instead of editing the highslide.js file
    hs.graphicsDir = '<?php 
        echo JURI::Root();
        ?>
components/com_einsatzkomponente/assets/highslide/graphics/';
    </script>
 
 
 
 <?php 
        // Facebook OpenGraph
        if ($this->item->summary) {
            $summary = strip_tags($this->item->summary);
            $opengraph = '<meta property="og:title" content="#Einsatzinfo: ' . $summary . '"/>';
        }
        $opengraph .= '<meta property="og:type" content="article"/>';
        $opengraph .= '<meta property="og:url"  content="' . JURI::current() . '"/>';
        $opengraph .= '<meta property="og:site_name" content="#Einsatzinfo: ' . $this->einsatzlogo->title . '"/>';
        if ($this->item->summary) {
            $summary = strip_tags($this->item->summary);
            $opengraph .= '<meta property="og:description" content="Datum: ' . date('d.m.Y', strtotime($this->item->date1)) . ' --- Ort: #' . $this->item->address . ' --- #' . $summary . '" />';
        }
        if ($this->item->desc) {
            $desc = strip_tags($this->item->desc);
            $opengraph .= '<meta property="og:description" content="Datum: ' . date('d.m.Y', strtotime($this->item->date1)) . ' --- Ort: #' . $this->item->address . ' --- #' . $desc . '" />';
        }
        if ($this->einsatzlogo->list_icon) {
            $fileName_image = str_replace(' ', '%20', $this->einsatzlogo->list_icon);
            $opengraph .= '<meta property="og:image" content="' . JURI::base() . $fileName_image . '"/>';
        }
        //$opengraph .= '<meta property="article:publisher" content="https://www.einsatzkomponente.de" />';
        if ($this->item->image) {
            $fileName_image = str_replace(' ', '%20', $this->item->image);
            $opengraph .= '<meta property="og:image" content="' . JURI::base() . $fileName_image . '"/>';
        }
        if ($this->images) {
            for ($i = 0; $i < count($this->images); ++$i) {
                $fileName_image = str_replace(' ', '%20', $this->images[$i]->image);
                $opengraph .= '<meta property="og:image" content="' . JURI::base() . $fileName_image . '"/>';
            }
        }
        $document->addCustomTag($opengraph);
        // Wenn Titlebild in Bildergalerie enthalten, dann dieses aus der Bildergalerie löschen
        //	if ($this->images and $this->item->image) :
        //		$i='0';
        //		while ($i < count($this->images)){
        //		if ($this->images[$i]->image == $this->item->image) :
        //			unset($this->images[$i]);$this->images[$i] = '';
        //		endif;
        //		$i++;
        //		}
        //	endif;
        // Check for errors.
        if (count($errors = $this->get('Errors'))) {
            throw new Exception(implode("\n", $errors));
        }
        if ($this->_layout == 'edit') {
            $authorised = $user->authorise('core.create', 'com_einsatzkomponente');
            if ($authorised !== true) {
                throw new Exception(JText::_('JERROR_ALERTNOAUTHOR'));
            }
        }
        if ($this->item->state === '0') {
            throw new Exception(JText::_('JERROR_ALERTNOAUTHOR'), '0');
        }
        if ($this->item->state === '2') {
            throw new Exception(JText::_('JERROR_ALERTNOAUTHOR'), '2');
        }
        if ($this->item->state === '-2') {
            throw new Exception(JText::_('JERROR_ALERTNOAUTHOR'), '-2');
        }
        // Increment the hit counter of the event.
        $model = $this->getModel();
        $model->hit();
        $this->_prepareDocument();
        parent::display($tpl);
    }