function getPopupUIMenu($layer_tablename, $row_id, $layer_name, $feature_title) { $menu=array(); $base_path=$GLOBALS['base_path']; if((isset($_SESSION['popup_layer_tablename']) && $_SESSION['popup_layer_tablename'] != $layer_tablename) || ((isset($_SESSION['popup_row_id']) && $_SESSION['popup_row_id'] != $row_id))) { if(isset($_SESSION['popup_menu'])) { unset($_SESSION['popup_menu']); } unset($_SESSION['popup_layer_tablename']); unset($_SESSION['popup_row_id']); } $_SESSION['popup_layer_tablename']=$layer_tablename; $_SESSION['popup_row_id']=$row_id; if(!isset($_SESSION['popup_menu']) || $_SESSION['popup_menu'] != "") { $user=$GLOBALS['user']; $menu['divId']="divPopupPane"; $menu['ulId']="ulPopupUIMenu"; /* details tab */ $details_lnk="{$base_path}ml_orchestrator.php?action=getLayerDataDetails&row_id={$row_id}&layer_tablename={$layer_tablename}&hasmenu=1"; $menu['details_id']='layerDetails'; $menu['details_lnk']=$details_lnk; $menu['details_title']='Details'; /* end details tab */ /* edit details */ if(userHasEditLayerDataPerm($layer_tablename, $row_id)) { $liID="editFeatureDetails"; $lnk="{$base_path}ml_orchestrator.php?action=getLayerTableSchema&layer_tablename={$layer_tablename}&id={$row_id}"; $title="Edit Details"; $menu['editDetails_id']=$liID; $menu['editDetails_lnk']=$lnk; $menu['editDetails_title']=$title; } /* end edit details */ /* drupal node */ $query='SELECT ' . AUTO_DBCOL_PREFIX . 'nid FROM "%s" where ' . AUTO_DBCOL_PREFIX . 'id = %d'; $result=db_query($query, $layer_tablename, $row_id); if(!$result) { } else { $obj=db_fetch_object($result); $nid=$obj-> { AUTO_DBCOL_PREFIX . 'nid' }; if($nid) { /* if drupal node is assigned, show it and comments. */ $liID="drupalNode"; $lnk="{$base_path}node/" . $nid . "/popup"; $title="More Details"; $menu['moreDetails_id']=$liID; $menu['moreDetails_lnk']=$lnk; $menu['moreDetails_title']=$title; if(node_access('update', node_load($nid))) { $liID="drupalEditDetails"; $lnk="{$base_path}node/{$nid}/edit/popup"; $title="Edit More Details"; $menu['editMoreDetails_id']=$liID; $menu['editMoreDetails_lnk']=$lnk; $menu['editMoreDetails_title']=$title; } if($user->uid) { $liID="drupalAddComments"; $lnk="{$base_path}comment/reply/$nid#comment-form"; $title="Add Comments"; $menu['addComments_id']=$liID; $menu['addComments_lnk']=$lnk; $menu['addComments_title']=$title; } } else { if($user->uid && user_access("create node_mlocate_feature")) { $liID="drupalAddMoreDetails"; $lnk="{$base_path}node/add/node-mlocate-feature/popup?layer_tablename={$layer_tablename}&point_id={$row_id}"; $title="Add More Details"; $menu['addMoreDetails_id']=$liID; $menu['addMoreDetails_lnk']=$lnk; $menu['addMoreDetails_title']=$title; } } } /* end drupal node */ /* charts */ $liID="featureCharts"; $menu['charts_id']=$liID; /* end charts */ /* media */ $columns_arr=array(); $columns_arr[]="media_columns"; $metainfo=get_values_metatable($layer_tablename, $row_id, TABLE_TYPE_LAYER, $columns_arr); $media_columns=$metainfo['media_columns']; if($media_columns != "") { $cols=explode(",", $media_columns); foreach($cols as $col) { $col=str_replace("'", "", $col); $col=trim($col); $title=strtoupper(substr($col, 0, 1)) . substr($col, 1); $lnk="{$base_path}ml_orchestrator.php?action=getMedia&id={$row_id}&layer_tablename={$layer_tablename}&media_column={$col}"; $liID='media_' . $col; $menu[$col . '_media_id']=$liID; $menu[$col . '_media_lnk']=$lnk; $menu[$col . '_media_title']=$title; } } /* end media */ /* link tables info */ $link_tablenames=getLinkTableNames($layer_tablename); $i=1; foreach($link_tablenames as $link) { $tablename=$link['tablename']; $liID="linkedData_{$i}"; $title=$link['name']; if($title == "") { $title="Linked Data {$i}"; } $lnk="{$base_path}ml_orchestrator.php?action=getLinkTableEntries&layerdata_id={$row_id}&layer_tablename={$layer_tablename}&link_tablename={$tablename}"; $arr_linktable[$title . '_liId']=$liID; $arr_linktable[$title . '_lnk']=$lnk; $arr_linktable[$title . '_title']=$title; $i++; } if(sizeof($link_tablenames) != 0) { $menu['linktable']=$link_tablenames; } else { $menu['linktable']=""; } /* end link tables info */ $_SESSION['popup_menu']=$menu; } else { $menu=$_SESSION['popup_menu']; } return $menu; }
function deleteMedia($xmlDoc, &$rootNode, $paramsNode) { $layer_tablename = $paramsNode->getElementsByTagName('layer_tablename')->item(0)->nodeValue; $row_id = $paramsNode->getElementsByTagName('row_id')->item(0)->nodeValue; $media_type = $paramsNode->getElementsByTagName('type')->item(0)->nodeValue; $filename = $paramsNode->getElementsByTagName('filename')->item(0)->nodeValue; if(($layer_tablename == null || $layer_tablename == '') || ($row_id == null || $row_id == '') || ($media_type == null || $media_type == '') || ($filename == null || $filename == '')) { setError($xmlDoc, $rootNode, "Required parameters not set.."); return; } else { if(!userHasEditLayerDataPerm($layer_tablename, $row_id)) { setError($xmlDoc, $rootNode, "You are not authorized."); return; } else { $col_type = 'media_columns'; if($media_type == 'videos') { $col_type = 'video_columns'; } $query = 'select %s from "Meta_Layer" where layer_tablename = \'%s\''; $query_args = array($col_type, $layer_tablename); $result = db_query($query, $query_args); if(!$result) { setError($xmlDoc, $rootNode, "Error talking to database. Please try again later."); return; } else { if($obj = db_fetch_array($result)) { $cols = $obj[$col_type]; if($cols == NULL || $cols == '') { setError($xmlDoc, $rootNode, "No columns specified in DB."); return; } else { $cols = str_replace("'", "", $cols); $colsarr = explode(",", $cols); $col = $colsarr[0]; $query = 'select %s from "%s" where __mlocate__id = %d'; $query_args = array($col, $layer_tablename, $row_id); $result = db_query($query, $query_args); if(!$result) { setError($xmlDoc, $rootNode, "Error talking to database. Please try again later."); return; } else { if($obj = db_fetch_array($result)) { if($obj[$col] == null || $obj[$col] == '') { setError($xmlDoc, $rootNode, "File not found."); return; } $fls = explode(",", $obj[$col]); $indx = array_search($filename, $fls); if($indx === false) { setError($xmlDoc, $rootNode, "File not found."); return; } else { array_splice($fls, $indx, 1); $query = 'update "%s" set %s = \'%s\''; $query_args = array($layer_tablename, $col, implode(",", $fls)); $result = db_query($query, $query_args); if(!$result) { setError($xmlDoc, $rootNode, "Error talking to database. Please try again later."); return; } else { $path = str_replace(str_replace(base_path(), "", $_SERVER['PHP_SELF']), "", $_SERVER['SCRIPT_FILENAME']) . 'sites/default/files/'; if($media_type == 'videos') { $path .= 'videos/' . $layer_tablename . '/' . $filename; @unlink($path); $path = substr($path, 0, strlen($path) - 4) . '_tn.jpg'; @unlink($path); } else { $path .= 'images/' . $layer_tablename . '/' . $filename; @unlink($path); } setNoError($xmlDoc, $rootNode, "File deleted."); } } } } } } } } } }
function saveFeatureInfo($xmlDoc, &$rootNode, $paramsNode) { $layer_tablename = $paramsNode->getElementsByTagName('layer_tablename')->item(0)->nodeValue; $row_id = $paramsNode->getElementsByTagName('row_id')->item(0)->nodeValue; if(($layer_tablename == null || $layer_tablename == '') || ($row_id == null || $row_id == '')) { setError($xmlDoc, $rootNode, "Required parameters not set."); return; } else { if(!userHasEditLayerDataPerm($layer_tablename, $row_id)) { setError($xmlDoc, $rootNode, "You are not authorized."); return; } else { $attribs = $paramsNode->getElementsByTagName('attribs')->item(0)->childNodes; $setarr = array(); foreach($attribs as $attribNode) { $key = $attribNode->nodeName; $val = $attribNode->nodeValue; $setarr[] = "{$key}='{$val}'"; } if(count($setarr) == 0) { setError($xmlDoc, $rootNode, "No columns specified."); return; } $query = "update " . $layer_tablename . " set " . implode(",", $setarr) . " where " . AUTO_DBCOL_PREFIX . "id=" . $row_id; $result = db_query($query); if(!$result) { setError($xmlDoc, $rootNode, "Error talking to database. Please try again later."); return; } else { setNoError($xmlDoc, $rootNode, "Record saved."); } } } }