Overview

Namespaces

  • cli_db
    • propel
      • map
      • om
  • cli_import
  • LoggedPDO
  • None
  • PHP
  • webservices
    • cart
    • combisearch
    • details
      • annotations
        • feature
    • graphs
      • barplot
      • genome
    • listing
    • queue

Classes

  • Differential_expressions
  • Filters
  • Filters_diffexp
  • Isoforms
  • Multisearch
  • Organism_release
  • Searchbox
  • Overview
  • Namespace
  • Class
  • Tree
  1: <?php
  2: 
  3: namespace webservices\listing;
  4: 
  5: use \PDO as PDO;
  6: 
  7: /**
  8:  * Web Service.
  9:  * Filters for Graph, receives one (query1) or multiple(ids) ids, returns possible filters to display graph on
 10:  * Designed for use with filteredSelect javascript class
 11:  */
 12: class Filters extends \WebService {
 13: 
 14:     /**
 15:      * @inheritDoc
 16:      * returns array(
 17:      *   'data' => array(
 18:      *     'feature' => array(id=>metadata,....),
 19:      *     'assay' => array(id=>metadata,....)
 20:      *     'analysis' => array(id=>metadata,....)
 21:      *     'sample' => array(id=>metadata,....)
 22:      *   ),
 23:      *   'values' => array(
 24:      *     array( combination of feature,assay,analysis,sample ids ),...
 25:      *   )
 26:      * )
 27:      */
 28:     public function execute($querydata) {
 29:         global $db;
 30: 
 31: #UI hint
 32:         if (false)
 33:             $db = new PDO();
 34: 
 35: 
 36:         $ids = array();
 37:         if (isset($querydata['query1']) && !empty($querydata['query1'])) {
 38:             $ids[] = $querydata['query1'];
 39:         }
 40:         if (isset($querydata['ids'])) {
 41:             $ids = array_merge($ids, $querydata['ids']);
 42:         }
 43: 
 44:         if (count($ids) == 0) {
 45:             return array();
 46:         }
 47: 
 48:         $place_holders = implode(',', array_fill(0, count($ids), '?'));
 49: 
 50:         $query_get_filters = <<<EOF
 51: SELECT 
 52:   feature.feature_id,
 53:   analysis.analysis_id, analysis.name AS analysis_name, analysis.description AS analysis_description, analysis.program AS analysis_program, analysis.programversion AS analysis_programversion, analysis.algorithm AS analysis_algorithm,
 54:   assay.assay_id, assay.name AS assay_name, assay.description AS assay_description, 
 55:   biomaterial.biomaterial_id, biomaterial.name AS biomaterial_name, biomaterial.description AS biomaterial_description
 56: FROM 
 57:   feature, 
 58:   expressionresult, 
 59:   quantification, 
 60:   analysis,
 61:   acquisition,
 62:   assay,
 63:   biomaterial
 64: WHERE 
 65:   expressionresult.feature_id        = feature.feature_id AND
 66:   expressionresult.biomaterial_id    = biomaterial.biomaterial_id AND
 67:   expressionresult.analysis_id       = analysis.analysis_id AND
 68:   expressionresult.quantification_id = quantification.quantification_id AND
 69:   quantification.acquisition_id      = acquisition.acquisition_id AND
 70:   acquisition.assay_id               = assay.assay_id AND
 71:   feature.feature_id IN ({$place_holders});
 72: EOF;
 73: 
 74:         $stm_get_filters = $db->prepare($query_get_filters);
 75: 
 76:         $data = array();
 77: 
 78:         $stm_get_filters->execute($ids);
 79:         while ($filter = $stm_get_filters->fetch(PDO::FETCH_ASSOC)) {
 80: 
 81:             $data['data']['feature'][$filter['feature_id']] = self::getItem('feature', $filter);
 82:             $data['data']['assay'][$filter['assay_id']] = self::getItem('assay', $filter);
 83:             $data['data']['analysis'][$filter['analysis_id']] = self::getItem('analysis', $filter);
 84:             $data['data']['sample'][$filter['biomaterial_id']] = self::getItem('biomaterial', $filter);
 85: 
 86:             $data['values'][] = array(
 87:                 'feature' => $filter['feature_id'],
 88:                 'assay' => $filter['assay_id'],
 89:                 'analysis' => $filter['analysis_id'],
 90:                 'sample' => $filter['biomaterial_id'],
 91:             );
 92:         }
 93: 
 94:         return $data;
 95:     }
 96: 
 97:     /**
 98:      * returns an Array of all $row values whose key begins with $item_prefix (removing prefix)
 99:      * @param String $item_prefix
100:      * @param Array $row
101:      * @return Array item
102:      */
103:     private static function getItem($item_prefix, $row) {
104:         $item = array();
105:         foreach ($row as $key => $val) {
106:             $match = null;
107:             if (preg_match("/${item_prefix}_(.*)/", $key, $match)) {
108:                 $item[$match[1]] = $val;
109:             }
110:         }
111:         return $item;
112:     }
113: 
114: }
115: 
116: ?>
117: 
tbro API documentation generated by ApiGen 2.8.0