Overview

Namespaces

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

Classes

  • Console_CommandLine_Action_ExtendedHelp
  • LightOpenID
  • Log_firebugJSON
  • WebService

Interfaces

  • CLI_Command

Functions

  • acquire_database
  • cli_error_handler
  • connect_queue_db
  • create_job
  • display_feature
  • display_feature_by_id
  • display_isoform_by_id
  • display_unigene_by_id
  • download
  • execute_command
  • execute_job
  • execute_query_dir
  • get_db_connection
  • get_job_results
  • get_program_databases
  • myErrorHandler
  • pdo_connect
  • report_results_cleanup
  • requestVal
  • smarty_function_call_webservice
  • smarty_function_dbxreflink
  • smarty_function_interprolink
  • smarty_function_publink
  • smarty_modifier_clean_id
  • split_fasta
  • unzip
  • Overview
  • Namespace
  • Function
  • Tree
  1: <?php
  2: 
  3: session_start();
  4: 
  5: require_once __DIR__ . DIRECTORY_SEPARATOR . 'config.php';
  6: 
  7: require_once 'TranscriptDB/WebService.php';
  8: require_once 'TranscriptDB/WebService.php';
  9: require_once 'smarty/Smarty.class.php';
 10: require_once 'lightopenid/openid.php';
 11: require_once 'TranscriptDB/db.php';
 12: 
 13: $dbpath = stream_resolve_include_path('TranscriptDB/db.php');
 14: define('CFG_SMARTY_DIR', substr($dbpath, 0, strlen($dbpath) - 7));
 15: 
 16: $smarty = new Smarty();
 17: $smarty->setTemplateDir(CFG_SMARTY_DIR . DIRECTORY_SEPARATOR . 'smarty' . DIRECTORY_SEPARATOR . 'templates');
 18: $smarty->setCompileDir(VAR_DIR . DIRECTORY_SEPARATOR . 'smarty' . DIRECTORY_SEPARATOR . 'templates_c');
 19: $smarty->setCacheDir(VAR_DIR . DIRECTORY_SEPARATOR . 'cache');
 20: $smarty->setConfigDir(CFG_SMARTY_DIR . DIRECTORY_SEPARATOR . 'configs');
 21: $smarty->addPluginsDir(CFG_SMARTY_DIR . DIRECTORY_SEPARATOR . 'smarty' . DIRECTORY_SEPARATOR . 'plugins');
 22: 
 23: $smarty->assign('AppPath', APPPATH);
 24: $smarty->assign('ServicePath', SERVICEPATH);
 25: $smarty->left_delimiter = '{#';
 26: $smarty->right_delimiter = '#}';
 27: 
 28: require_once('TranscriptDB/webservices/cart/Sync.php');
 29: $smarty->assign('regexCartName', \webservices\cart\Sync::$regexCartName);
 30: 
 31: $smarty->assign('default_release', DEFAULT_RELEASE);
 32: $smarty->assign('default_organism', DEFAULT_ORGANISM);
 33: 
 34: function requestVal($key, $regexp = "/^.*$/", $defaultvalue = "") {
 35:     if (!isset($_REQUEST[$key]) || !preg_match($regexp, $_REQUEST[$key]))
 36:         return $defaultvalue;
 37:     else
 38:         return $_REQUEST[$key];
 39: }
 40: 
 41: // OpenID stuff
 42: 
 43: $redir_url = isset($_SERVER['REDIRECT_URL']) ? $_SERVER['REDIRECT_URL'] : $_SERVER['REQUEST_URI'];
 44: 
 45: if (isset($_GET['logout'])) {
 46:     session_destroy();
 47:     header('Location: ' . preg_replace('/([?&])logout(=[^&]+)?(&|$)/', '$1', $redir_url));
 48:     die();
 49: }
 50: try {
 51:     $openid = new LightOpenID($_SERVER['HTTP_HOST']);
 52:     if (!$openid->mode) {
 53:         if (isset($_GET['login'])) {
 54:             $openid->identity = 'https://www.google.com/accounts/o8/id';
 55:             header('Location: ' . $openid->authUrl());
 56:             die();
 57:         }
 58:     } else {
 59:         if ($openid->validate()) {
 60:             $_SESSION['OpenID'] = $openid->identity;
 61:             header('Location: ' . $redir_url);
 62:             die();
 63:         }
 64:     }
 65: } catch (ErrorException $e) {
 66:     
 67: }
 68: 
 69: // Page display
 70: $page = requestVal('page', '/^[a-z-_\.]*$/', '');
 71: switch ($page) {
 72:     case 'js':
 73:         $js = requestVal('js', '/^[a-zA-Z-\.]*$/', '');
 74:         header('Content-type: application/javascript');
 75:         $smarty->display(sprintf('js/%s.js', $js));
 76:         die();
 77:     case 'multisearch':
 78:         $smarty->display('multisearch.tpl');
 79:         die();
 80:     case 'combisearch':
 81:         $smarty->display('combisearch.tpl');
 82:         die();
 83:     case 'advancedsearch':
 84:         $smarty->display('advanced_search.tpl');
 85:         die();
 86:     case 'details-byid':
 87:         if (display_feature_by_id(requestVal('feature_id', '/^[0-9]+$/', '')))
 88:             die();
 89:         break;
 90:     case 'details':
 91:         if (display_feature(requestVal('organism', '/^[0-9]+$/i', ''), requestVal('release', '/^[a-z0-9-_.]+$/', ''), requestVal('name', '/^[a-z0-9-_.]+$/', '')))
 92:             die();
 93:         break;
 94:     case 'diffexpr':
 95:         $smarty->display('diffexpr.tpl');
 96:         die();
 97:         break;
 98:     case 'graphs':
 99:         $cartname = requestVal('query', sprintf('/%s/i', \webservices\cart\Sync::$regexCartName), '');
100:         $smarty->assign('cartname', $cartname);
101:         $smarty->display('mav.tpl');
102:         die();
103:     case 'blast':
104:         $smarty->display('extends:blast-layout.tpl|blast.tpl');
105:         die();
106:     case 'blast_results':
107:         $smarty->display('extends:blast-layout.tpl|blast_results.tpl');
108:         die();
109: }
110: $smarty->display('welcome.tpl');
111: 
112: function display_feature($organism, $release, $name) {
113: 
114:     global $db;
115:     $stm = $db->prepare(<<<EOF
116: SELECT feature_id 
117:     FROM feature JOIN dbxref ON (feature.dbxref_id = dbxref.dbxref_id)
118:     WHERE organism_id = ? AND accession=? AND name=?
119: EOF
120:     );
121: 
122:     $stm->execute(array($organism, $release, $name));
123: 
124:     if ($stm->rowCount() == 0)
125:         return false;
126: 
127:     return display_feature_by_id($stm->fetchColumn());
128: }
129: 
130: function display_feature_by_id($feature_id) {
131:     global $db;
132:     global $smarty;
133:     $stm = $db->prepare(<<<EOF
134: SELECT type_id, dbxref.accession, organism_id FROM feature JOIN dbxref ON (feature.dbxref_id = dbxref.dbxref_id) WHERE feature_id=?;
135: EOF
136:     );
137:     $stm->execute(array($feature_id));
138:     if ($stm->rowCount() == 0)
139:         return false;
140:     $row = $stm->fetch(PDO::FETCH_ASSOC);
141:     $smarty->assign('release', $row['accession']);
142:     $smarty->assign('organism', $row['organism_id']);
143:     switch ($row['type_id']) {
144:         case CV_ISOFORM:
145:             return display_isoform_by_id($feature_id);
146:             break;
147:         case CV_UNIGENE:
148:             return display_unigene_by_id($feature_id);
149:             break;
150:         case CV_PREDPEP:
151:             $stm_parent_isoform = $db->prepare('SELECT srcfeature_id FROM featureloc WHERE feature_id=? ');
152:             $stm_parent_isoform->execute(array($feature_id));
153:             return display_feature_by_id($stm_parent_isoform->fetchColumn());
154:             die();
155:     }
156:     return false;
157: }
158: 
159: function display_unigene_by_id($unigene_feature_id) {
160:     global $smarty;
161:     $smarty->assign('unigene_feature_id', $unigene_feature_id);
162:     $smarty->display('display-unigene.tpl');
163:     return true;
164: }
165: 
166: function display_isoform_by_id($isoform_feature_id) {
167:     global $smarty;
168:     $smarty->assign('isoform_feature_id', $isoform_feature_id);
169:     $smarty->display('display-isoform.tpl');
170:     return true;
171: }
172: 
173: ?>
174: 
tbro API documentation generated by ApiGen 2.8.0