add('name', PLUGIN_EVENT_STATIC_OSM_NAME); $propbag->add('description', PLUGIN_EVENT_STATIC_OSM_DESCRIPTION); $propbag->add('copyright', 'GPL'); $propbag->add('configuration', ['compress_gpx']); $propbag->add('event_hooks', [ 'frontend_header' => true, 'backend_image_add' => true ]); $propbag->add('author', PLUGIN_EVENT_OSM_AUTHOR); $propbag->add('version', PLUGIN_EVENT_OSM_VERSION); $propbag->add('requirements', [ 'php' => '7.0.0', 'serendipity' => '2.3' ]); $propbag->add('stackable', false); $propbag->add('groups', ['FRONTEND_ENTRY_RELATED']); $this->dependencies = [ 'serendipity_event_geo_osm' => 'keep' ]; } function generate_content(&$title) { $title = PLUGIN_EVENT_STATIC_OSM_NAME; } function event_hook($event, &$bag, &$eventData, $addData = null) { if ($event === 'frontend_header') { echo ' ' . PHP_EOL; echo ' ' . PHP_EOL; echo ' ' . PHP_EOL; echo ' ' . PHP_EOL; } else if ($event === 'backend_image_add') { $fileName = $eventData; if (str_ends_with(strtolower($fileName), '.gpx') && $this->get_config('compress_gpx', true) === true) { $gpx = new SimpleXMLElement($fileName, dataIsURL: true); $tmpGpx = new SimpleXMLElement(''); foreach (($gpx->trk ?? []) as $trk) { $tmpTrk = $tmpGpx->addChild('trk'); foreach (($trk->trkseg ?? []) as $trkseg) { $tmpTrkseg = $tmpTrk->addChild('trkseg'); foreach (($trkseg->trkpt ?? []) as $trkpt) { $tmpTrkpt = $tmpTrkseg->addChild('trkpt'); $tmpTrkpt->addAttribute('lat', $trkpt['lat']); $tmpTrkpt->addAttribute('lon', $trkpt['lon']); if ($trkpt->ele != '') { $tmpTrkpt->addChild('ele', $trkpt->ele); } } } } $tmpGpx->asXML($fileName); clearstatcache(true, $fileName); $fileId = $addData['image_id']; $fileSize = filesize($fileName); serendipity_updateImageInDatabase(['size' => $fileSize], $fileId); } } } function introspect_config_item($name, &$propbag) { switch($name) { case 'compress_gpx': $propbag->add('type', 'boolean'); $propbag->add('name', PLUGIN_EVENT_STATIC_OSM_COMPRESS_GPX); $propbag->add('description', PLUGIN_EVENT_STATIC_OSM_COMPRESS_GPX_DESCRIPTION); $propbag->add('default', true); break; default: return false; } return true; } }