From: preecej Date: Wed, 17 Aug 2011 18:47:30 +0000 (+0000) Subject: Version of semantic_wiki/prototyping/TermSearch_JSON.php generalized for X-Git-Url: http://gitweb.planteome.org/?a=commitdiff_plain;h=c93f53f9172fa2fb7e597f44be47caf1f015bc28;p=old-jaiswallab-svn%2F.git Version of semantic_wiki/prototyping/TermSearch_JSON.php generalized for broader use (outside the plant annotation wiki) svn path=/; revision=157 --- diff --git a/preecej/php_singletons/PO_web_service.php b/preecej/php_singletons/PO_web_service.php new file mode 100644 index 0000000..9ba7afe --- /dev/null +++ b/preecej/php_singletons/PO_web_service.php @@ -0,0 +1,106 @@ + 50) { $number_of_terms = 50; } + + $qval = $_GET['qval']; + + $qval = isset($_GET['qval']) && strlen($_GET['qval']) > 0 + ? strtolower($_GET['qval']) + : die('Please provide a searchable value'); + + $format = strtolower($_GET['format']) != 'json' + ? strtolower($_GET['format']) + : 'json'; //json is the default + + /* connect to the db */ + $link = mysql_connect($_SERVER['mysql_host'], $_SERVER['mysql_user'], $_SERVER['mysql_pw']) or die('Cannot connect to the DB'); + mysql_select_db($_SERVER['mysql_db'],$link) or die('Cannot select the DB'); + + switch ($type) { + case 'autocomplete': + /* grab the terms from the db */ + $query = "SELECT t.$field FROM term t" + . " LEFT JOIN term_definition d ON d.term_id = t.id" + . " WHERE t.$field LIKE '%$qval%'" + . " AND t.term_type in ('plant_anatomy','plant_growth_and_development_stage')" + . " AND t.is_obsolete = 0" + . " AND UCASE(t.name) NOT LIKE 'OBSOLETE%'" + . " AND UCASE(d.term_definition) NOT LIKE 'OBSOLETE%'" + . " ORDER BY name LIMIT $number_of_terms"; + $result = mysql_query($query,$link) or die('Errant query: '.$query); + + /* create one master array of the records */ + $terms = array(); + if(mysql_num_rows($result)) { + while($term = mysql_fetch_assoc($result)) { + $terms[] = array('term'=>$term[$field]); + } + } + + /* output in necessary format */ + if($format == 'json') { + header('Content-type: application/json'); + echo json_encode(array('PO_term_lookup_response'=>$terms)); + } + else { + die('Sorry, this request cannot be fulfilled in '.$format.' format.'); + } + break; + + case 'term_detail': + /* grab the ontology data from the db */ + $query = "SELECT DISTINCT t.acc as 'acc', t.term_type as 'type', d.term_definition as 'definition', d.term_comment as 'comment'" + . " FROM term t" + . " LEFT JOIN term_definition d ON d.term_id = t.id" + . " WHERE t.name = '$qval'" + . " AND t.term_type in ('plant_anatomy','plant_growth_and_development_stage')" + . " AND t.is_obsolete = 0" + . " AND UCASE(t.name) NOT LIKE 'OBSOLETE%'" + . " AND UCASE(d.term_definition) NOT LIKE 'OBSOLETE%'" + . " ORDER BY t.name LIMIT 1"; + $result = mysql_query($query,$link) or die('Errant query: '.$query); + + /* create one master array of the records */ + $terms = array(); + if(mysql_num_rows($result)) { + while($term = mysql_fetch_assoc($result)) { + $terms[] = array( + 'accession_id'=>$term['acc'], + 'aspect'=>$term['type'] == "plant_anatomy" ? "Plant Anatomy" : "Plant Growth and Development Stage", + 'definition'=>$term['definition'], + 'comment'=>$term['comment']); + } + } + /* output in necessary format */ + if($format == 'json') { + header('Content-type: application/json'); + echo json_encode(array('PO_term_detail_response'=>$terms)); + } + else { + die('Sorry, this request cannot be fulfilled in '.$format.' format.'); + } + break; + default: + die('Sorry, this web service method is not available.'); + } + /* disconnect from the db */ + @mysql_close($link); +} +else { die('Not authorized.'); } +?> +