nextcloud/apps/files_external/3rdparty/irodsphp/prods/src/ProdsQuery.class.php

107 lines
4.0 KiB
PHP

<?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;
}
}
?>