Blame view

sources/apps/files_external/3rdparty/irodsphp/prods/src/ProdsQuery.class.php 4.01 KB
03e52840d   Kload   Init
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
  <?php
  /**
   * ProdsQuery class.
   *
   * This class provides high level PRODS queries, which aren't specific
   * to a path, account or resource.
   * @author Sifang Lu <sifang@sdsc.edu>
   * @copyright Copyright &copy; 2007, TBD
   * @package Prods
   */
  require_once("autoload.inc.php");
  
  class ProdsQuery
  {
      public $account;
  
      public function __construct(RODSAccount $account)
      {
          $this->account = $account;
      }
  
      /**
       * Get all user defined metadata names for all files on the server.
       * @return array of strings (metadata names).
       */
      public function getMetadataNamesForAllFiles()
      {
          $flds = array("COL_META_DATA_ATTR_NAME" => NULL);
          $select = new RODSGenQueSelFlds(array_keys($flds), array_values($flds));
          $condition = new RODSGenQueConds();
          $condition->add('COL_D_DATA_ID', '>=', '0');
          $conn = RODSConnManager::getConn($this->account);
          $results = $conn->query($select, $condition);
          RODSConnManager::releaseConn($conn);
  
          if ($results->getNumRow() < 1)
              return array();
          else {
              $values = $results->getValues();
              return $values['COL_META_DATA_ATTR_NAME'];
          }
      }
  
      /**
       * Get all user defined metadata names for all directories(collections) on the server.
       * @return array of strings (metadata names).
       */
      public function getMetadataNamesForAllDirs()
      {
          $flds = array("COL_META_COLL_ATTR_NAME" => NULL);
          $select = new RODSGenQueSelFlds(array_keys($flds), array_values($flds));
          $condition = new RODSGenQueConds();
          $condition->add('COL_COLL_ID', '>=', '0');
          $conn = RODSConnManager::getConn($this->account);
          $results = $conn->query($select, $condition);
          RODSConnManager::releaseConn($conn);
  
          if ($results->getNumRow() < 1)
              return array();
          else {
              $values = $results->getValues();
              return $values['COL_META_COLL_ATTR_NAME'];
          }
      }
  
      /**
       * Get all resources registered on the server
       * @return array with fields: id, name, type, zone, class, loc, info, comment, ctime, mtime, vault_path, free_space. If user not found return empty array.
       */
      public function getResources()
      {
          // set selected value
          $flds = array("COL_R_RESC_ID" => NULL, "COL_R_RESC_NAME" => NULL,
              "COL_R_ZONE_NAME" => NULL, "COL_R_TYPE_NAME" => NULL,
              "COL_R_CLASS_NAME" => NULL, "COL_R_LOC" => NULL,
              "COL_R_VAULT_PATH" => NULL, "COL_R_FREE_SPACE" => NULL,
              "COL_R_RESC_INFO" => NULL, "COL_R_RESC_COMMENT" => NULL,
              "COL_R_CREATE_TIME" => NULL, "COL_R_MODIFY_TIME" => NULL);
          $select = new RODSGenQueSelFlds(array_keys($flds), array_values($flds));
          $condition = new RODSGenQueConds();
          $conn = RODSConnManager::getConn($this->account);
          $results = $conn->query($select, $condition);
          RODSConnManager::releaseConn($conn);
          $result_vals = $results->getValues();
          $retval = array();
          for ($i = 0; $i < $results->getNumRow(); $i++) {
              $retval_row = array();
              $retval_row['id'] = $result_vals["COL_R_RESC_ID"][$i];
              $retval_row['name'] = $result_vals["COL_R_RESC_NAME"][$i];
              $retval_row['type'] = $result_vals["COL_R_TYPE_NAME"][$i];
              $retval_row['zone'] = $result_vals["COL_R_ZONE_NAME"][$i];
              $retval_row['class'] = $result_vals["COL_R_CLASS_NAME"][$i];
              $retval_row['loc'] = $result_vals["COL_R_LOC"][$i];
              $retval_row['info'] = $result_vals["COL_R_RESC_INFO"][$i];
              $retval_row['comment'] = $result_vals["COL_R_RESC_COMMENT"][$i];
              $retval_row['ctime'] = $result_vals["COL_R_CREATE_TIME"][$i];
              $retval_row['mtime'] = $result_vals["COL_R_MODIFY_TIME"][$i];
              $retval_row['vault_path'] = $result_vals["COL_R_VAULT_PATH"][$i];
              $retval_row['free_space'] = $result_vals["COL_R_FREE_SPACE"][$i];
              $retval[] = $retval_row;
          }
          return $retval;
  
      }
  }