Пример #1
0
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;
}
Пример #2
0
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.");
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}
Пример #3
0
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.");
      }
    }
  }
}