Esempio n. 1
0
 /**
  * @AjaxCallable=TRUE
  * @AjaxMethod=POST
  * @AjaxAsync=TRUE
  */
 public function loadData()
 {
     $this->load->library('geo/*');
     $this->load->model('POIModel');
     $this->load->model('LabelModel');
     // Helper functions
     function addFlag(&$res, $flag)
     {
         in_array($flag, $res['flags']) ? null : ($res['flags'][] = $flag);
     }
     function hasFlag($res, $flag)
     {
         return in_array($flag, $res);
     }
     function addLabels(&$res, $labels)
     {
         $res['labels'] = array_merge($res['labels'], $labels);
     }
     // Required params
     $vBoundsWKT = filter_input(INPUT_POST, 'vBounds', FILTER_SANITIZE_STRING);
     $zoom = filter_input(INPUT_POST, 'zoom', FILTER_VALIDATE_INT);
     // Optional params, need to normalise if not present
     $types = filter_input(INPUT_POST, 'types', FILTER_SANITIZE_STRING, FILTER_REQUIRE_ARRAY);
     $poiId = filter_input(INPUT_POST, 'poiId', FILTER_VALIDATE_INT);
     $poiIds = filter_input(INPUT_POST, 'poiIds', FILTER_VALIDATE_INT, FILTER_REQUIRE_ARRAY);
     $flags = filter_input(INPUT_POST, 'flags', FILTER_SANITIZE_STRING, FILTER_REQUIRE_ARRAY);
     $vBounds = ViewBounds::fromWKT($vBoundsWKT);
     // Normalise parameters
     if ($types === NULL) {
         $types = [];
     }
     if ($poiId === NULL) {
         $poiId = 0;
     }
     if ($poiIds === NULL) {
         $poiIds = [];
     }
     if ($flags === NULL) {
         $flags = [];
     }
     // Prepare result object
     $res = ['labels' => [], 'flags' => []];
     if ($poiId !== 0 && !hasFlag($flags, 'excludePoiLabel')) {
         $poi = POIModel::load($poiId);
         $res['labels'][] = LabelModel::loadDynamic($poiId);
         $res['poi'] = [];
         addFlag($res, 'doLabelling');
         // Load poi info
         if (hasFlag($flags, 'poiInfo')) {
             $res['poi']['info'] = $poi->toObject();
         }
         // Load poi card
         if (hasFlag($flags, 'poiCard')) {
             $res['poi']['card'] = "<div>Card</div>";
             addFlag($res, 'showCard');
         }
         // Pan to poi and fit border or adjust zoom accordingly
         if (hasFlag($flags, 'panToPoi')) {
             $border = $poi->border();
             if ($border === NULL) {
                 $vBounds->setCenter($poi->latLng());
                 $vBounds->changeZoom(14 - $zoom);
                 $zoom = 14;
             } else {
                 $borderBounds = ViewBounds::fromPolygon($border);
                 $vBounds->fitBounds($borderBounds, $zoom);
             }
             addFlag($res, 'panToCenter');
         }
     }
     if (count($poiIds) > 0) {
         // Load labels by poiIds
         addLabels($res, LabelModel::loadDynamicByIds($poiIds));
         if (hasFlag($flags, 'zoomToPois')) {
             // Load pois for their positions and borders
             $pois = POIModel::loadByIds($poiIds);
             // Expand pois
             if ($poiId !== 0) {
                 $poi = POIModel::load($poiId);
                 $pois = array_merge($pois, [$poi]);
             }
             // Initialise bounds and extend by all pois
             $bounds = new ViewBounds($pois[0]->latLng(), $pois[0]->latLng());
             for ($i = 1; $i < count($pois); $i++) {
                 if ($pois[$i]->border() === NULL) {
                     $bounds->extendByLatLng($pois[$i]->latLng());
                 } else {
                     $borderBounds = ViewBounds::fromPolygon($pois[$i]->border());
                     $bounds->extendByBounds($borderBounds);
                 }
             }
             $vBounds->fitBounds($bounds, $zoom);
             $bounds->buffer(30, 30, $zoom);
             $vBounds->fitBounds($bounds, $zoom);
         }
         addFlag($res, 'panToCenter');
         addFlag($res, 'doLabelling');
     }
     if (count($types) > 0) {
         $bounds = $vBounds->toBounds();
         if (in_array('zoomToTypes', $flags)) {
             $guard = 18;
             //                while (!LabelModel::typesWithinBounds($bounds, $types, $poiId) && --$guard > 0) {
             while (!LabelModel::oneOfTypesWithinBounds($bounds, $types, $poiId) && --$guard > 0) {
                 $vBounds->zoomOut();
                 $bounds = $vBounds->toBounds();
                 $zoom--;
                 addFlag($res, 'panToCenter');
             }
         }
         addLabels($res, LabelModel::loadDynamicByBounds($bounds, $types, $poiId));
         addFlag($res, 'doLabelling');
     }
     if ($poiId !== 0 || $types !== NULL && count($types) > 0) {
         $bounds = $vBounds->toBounds();
         $exceptIds = array_merge($poiIds, [$poiId]);
         addLabels($res, LabelModel::loadStaticDynamicByBounds($bounds, $zoom, $exceptIds, $types));
     } else {
         $bounds = $vBounds->toBounds();
         addLabels($res, LabelModel::loadStaticByBounds($bounds, $zoom));
     }
     if (hasFlag($flags, 'newPois')) {
         // Parameter '1' TO BE changed to logged-in user's id
         $bounds = $vBounds->toBounds();
         $res['new'] = LabelModel::loadNew($bounds, 1);
     }
     $res['center'] = $vBounds->getCenter()->toWKT();
     $res['zoom'] = $zoom;
     return $res;
 }
Esempio n. 2
0
$duration = (int) $_POST['stopgps'] - (int) $_POST['startgps'];
$flagdatadir = getenv('SEGMENT_DATA_DIR');
$filename = $_POST['site'] . "-" . "SCIMON_DQ_" . $name . "-" . $_POST['startgps'] . "-" . $duration . ".xml";
if (eregi('/', $filename)) {
    die("Error: attempt to insert a slash into DQ filename: request denied");
}
$filename = $flagdatadir . "/" . $filename;
// construct username
$split_username = explode("@", $_POST[user]);
$username = $split_username[0] . "@ligo.org";
$pid = getmypid();
$node = gethostbyaddr(getenv('REMOTE_ADDR'));
$brief_desc = htmlspecialchars($_POST[comment]);
$process = "  <Table Name='process:table'>\n" . "    <Column Name='process:program' Type='lstring'/>\n" . "    <Column Name='process:version' Type='lstring'/>\n" . "    <Column Name='process:cvs_repository' Type='lstring'/>\n" . "    <Column Name='process:comment' Type='lstring'/>\n" . "    <Column Name='process:node' Type='lstring'/>\n" . "    <Column Name='process:username' Type='lstring'/>\n" . "    <Column Name='process:unix_procid' Type='int_4s'/>\n" . "    <Column Name='process:start_time' Type='int_4s'/>\n" . "    <Column Name='process:end_time' Type='int_4s'/>\n" . "    <Column Name='process:process_id' Type='ilwd:char'/>\n" . "    <Column Name='process:ifos' Type='lstring'/>\n" . "    <Stream Name='process:table' Type='Local' Delimiter=','>\n" . '    "submitflag.php"' . ',' . ' "1.0"' . ',' . ' "/lalsuite/glue/php/submitflag.php"' . ',' . '"' . $brief_desc . '"' . ',' . '"' . $node . '"' . ',' . '"' . $_POST[user] . '"' . ',' . " {$pid}" . ',' . " {$_POST['startgps']}" . ',' . " {$_POST['stopgps']}" . ',' . ' "process:process_id:0"' . ',' . ' "' . $_POST[site] . '"' . "\n" . '    </Stream>' . "\n" . '  </Table>' . "\n";
$segment_definer = " <Table Name='segment_definer:table'>\n" . "   <Column Name='segment_definer:process_id' Type='ilwd:char'/>\n" . "   <Column Name='segment_definer:segment_def_id' Type='ilwd:char'/>\n" . "   <Column Name='segment_definer:ifos' Type='lstring'/>\n" . "   <Column Name='segment_definer:name' Type='lstring'/>\n" . "   <Column Name='segment_definer:version' Type='int_4s'/>\n" . "   <Column Name='segment_definer:comment' Type='lstring'/>\n" . "   <Stream Name='segment_definer:table' Type='Local' Delimiter=','>\n" . ' "process:process_id:0"' . ',' . ' "segment_definer:segment_def_id:0"' . ',' . ' "' . $_POST[site] . '"' . ',' . '"' . $name . '"' . "," . " 1" . "," . '"' . $seg_def_comment . '"' . "   </Stream>\n" . " </Table>\n";
$segment = " <Table Name='segment:table'>\n" . "   <Column Name='segment:segment_id' Type='ilwd:char'/>\n" . "   <Column Name='segment:start_time' Type='int_4s'/>\n" . "   <Column Name='segment:end_time' Type='int_4s'/>\n" . "   <Column Name='segment:segment_def_id' Type='ilwd:char'/>\n" . "   <Column Name='segment:process_id' Type='ilwd:char'/>\n" . "   <Stream Name='segment:table' Type='Local' Delimiter=','>\n" . ' "segment:segment_id:0"' . ',' . " {$_POST['startgps']}" . "," . " {$_POST['stopgps']}" . "," . ' "segment_definer:segment_def_id:0"' . ',' . ' "process:process_id:0"' . "\n" . "   </Stream>\n" . " </Table>\n";
$url_string = htmlspecialchars($_POST[url]);
$segment_summary = " <Table Name='segment_summary:table'>\n" . "   <Column Name='segment_summary:start_time' Type='int_4s'/>\n" . "   <Column Name='segment_summary:end_time' Type='int_4s'/>\n" . "   <Column Name='segment_summary:comment' Type='lstring'/>\n" . "   <Column Name='segment_summary:segment_def_id' Type='ilwd:char'/>\n" . "   <Column Name='segment_summary:process_id' Type='ilwd:char'/>\n" . "   <Column Name='segment_summary:segment_sum_id' Type='ilwd:char'/>\n" . "   <Stream Name='segment_summary:table' Type='Local' Delimiter=','>\n" . " {$_POST['startgps']}" . "," . " {$_POST['stopgps']}" . "," . '"' . $url_string . '"' . ',' . ' "segment_definer:segment_def_id:0"' . ',' . ' "process:process_id:0"' . ',' . ' "segment_summary:segment_sum_id:0"' . "\n" . "   </Stream>\n" . " </Table>\n";
$flagData = $process . $segment_definer . $segment . $segment_summary;
addFlag($filename, $flagData);
?>
    <p>
     <center><input type="button" value="Enter Another Flag" onclick="history.go(-2)"></center>
    </p>

<?php 
require './scripts/footer.php';
?>
</body>
</head>