diff --git a/classes/GlossaryManager.php b/classes/GlossaryManager.php index 787ccb1fec..5a9b5dae06 100644 --- a/classes/GlossaryManager.php +++ b/classes/GlossaryManager.php @@ -53,20 +53,20 @@ public function __destruct(){ parent::__destruct(); } - public function getTermSearch($keyword,$language,$tid,$deepSearch = 1){ + public function getTermSearch($keyword, $language, $tid, $deepSearch = 1){ $retArr = array(); + if(!is_numeric($tid)) $tid = 0; $sqlWhere = ''; if($keyword){ - $sqlWhere .= 'AND (g.term LIKE "'.$this->cleanInStr($keyword).'%" OR g.term LIKE "% '.$this->cleanInStr($keyword).'%" '; - if($deepSearch) $sqlWhere .= 'OR g.definition LIKE "%'.$this->cleanInStr($keyword).'%"'; + $keyword = str_replace(array(' ','-'), array('% %','%-%'), $keyword); + $sqlWhere .= 'AND (g.term LIKE "%'.$this->cleanInStr($keyword).'%"'; + if($deepSearch) $sqlWhere .= ' OR g.definition LIKE "%'.$this->cleanInStr($keyword).'%"'; $sqlWhere .= ') '; } - if($language) $sqlWhere .= 'AND (g.`language` = "'.$this->cleanInStr($language).'") '; - if($tid && is_numeric($tid)) $sqlWhere .= 'AND (t.tid = '.$tid.' OR t2.tid = '.$tid.' OR (t.tid IS NULL AND t2.tid IS NULL)) '; - $sql = 'SELECT DISTINCT g.glossid, g.term '. - 'FROM glossary g LEFT JOIN glossarytermlink tl ON g.glossid = tl.glossid '. - 'LEFT JOIN glossarytaxalink t ON tl.glossgrpid = t.glossid '. - 'LEFT JOIN glossarytaxalink t2 ON g.glossid = t2.glossid '; + if($language) $sqlWhere .= 'AND (g.language = "'.$this->cleanInStr($language).'") '; + if($tid) $sqlWhere .= 'AND (t.tid = '.$tid.' OR t2.tid = '.$tid.') '; + $sql = 'SELECT DISTINCT g.glossid, g.term FROM glossary g INNER JOIN glossarytermlink tl ON g.glossid = tl.glossid '; + if($tid) $sql .= 'INNER JOIN glossarytaxalink t ON tl.glossgrpid = t.glossid INNER JOIN glossarytaxalink t2 ON g.glossid = t2.glossid '; if($sqlWhere) $sql .= 'WHERE '.substr($sqlWhere, 3); $sql .= 'ORDER BY g.term '; //echo '
'.$sql.'
'; @@ -82,10 +82,7 @@ public function getTermSearch($keyword,$language,$tid,$deepSearch = 1){ public function getTermArr(){ $retArr = array(); if($this->glossId){ - $sql = 'SELECT glossid, term, definition, `language`, source, notes, resourceurl, author, translator '. - 'FROM glossary '. - 'WHERE glossid = '.$this->glossId; - //echo $sql; + $sql = 'SELECT glossid, term, definition, `language`, source, notes, resourceurl, author, translator FROM glossary WHERE glossid = '.$this->glossId; if($rs = $this->conn->query($sql)){ if($r = $rs->fetch_object()){ $retArr['term'] = $r->term; @@ -998,155 +995,160 @@ private function setTargetPath(){ } //Export functions - public function getExportArr($language,$taxon,$images,$translations='',$definitions=''){ - $isTranslationTableRequest = ($definitions?true:false); + public function getExportArr($language, $tid, $keyword, $deepSearch=0, $images=0, $translations='', $definitions=''){ + if(!is_numeric($tid)) $tid = 0; $retArr = array(); $referencesArr = array(); $contributorsArr = array(); $groupMap = array(); - $sql = 'SELECT DISTINCT g.glossid, g.term, g.definition, g.language, g.source, g.translator, g.author, gt.glossgrpid '. - 'FROM glossary g LEFT JOIN glossarytermlink gt ON gt.glossid = g.glossid '. - 'LEFT JOIN glossarytaxalink gx ON gt.glossgrpid = gx.glossid '. - 'LEFT JOIN glossarytaxalink gx2 ON g.glossid = gx2.glossid '. - 'WHERE ((gx.tid = '.$taxon.') OR (gx2.tid = '.$taxon.')) AND (g.`language` = "'.$language.'") '. - 'ORDER BY g.term '; - //echo $sql.'
'; + $sql = 'SELECT DISTINCT g2.glossid, g2.term, g2.definition, g2.language, g2.source, g2.translator, g2.author, g.term as searchterm, gt.glossgrpid + FROM glossary g INNER JOIN glossarytermlink gt ON g.glossid = gt.glossid + INNER JOIN glossarytermlink gt2 ON gt.glossgrpid = gt2.glossgrpid + INNER JOIN glossary g2 ON gt2.glossid = g2.glossid '; + $sqlWhere = ''; + if($keyword){ + $keyword = str_replace(array(' ','-'), array('% %','%-%'), $keyword); + $sqlWhere .= '(g.term LIKE "%'.$this->cleanInStr($keyword).'%"'; + if($deepSearch) $sqlWhere .= ' OR g.definition LIKE "%'.$this->cleanInStr($keyword).'%"'; + $sqlWhere .= ') '; + } + if($tid){ + $sql .= 'LEFT JOIN glossarytaxalink gx ON gt.glossgrpid = gx.glossid LEFT JOIN glossarytaxalink gx2 ON g.glossid = gx2.glossid '; + $sqlWhere .= '(gx.tid = '.$tid.' OR gx2.tid = '.$tid.') '; + } + if($language) $sqlWhere .= ($sqlWhere?'AND ':'').'(g.language = "'.$this->cleanInStr($language).'" and g2.language = "'.$this->cleanInStr($language).'") '; + if($sqlWhere) $sql .= 'WHERE '.$sqlWhere; + $sql .= 'ORDER BY g2.term '; $rs = $this->conn->query($sql); while($r = $rs->fetch_object()){ - if($r->source && !in_array($r->source,$referencesArr)) $referencesArr[] = $r->source; - if($r->translator && !in_array($r->translator,$contributorsArr)) $contributorsArr[] = $r->translator; - if($r->author && !in_array($r->author,$contributorsArr)) $contributorsArr[] = $r->author; - $retArr[$r->glossid]['term'] = $r->term; - if(!$definitions || $definitions != 'nodef') $retArr[$r->glossid]['definition'] = $r->definition; + if($r->source && !in_array($r->source, $referencesArr)) $referencesArr[] = $r->source; + if($r->translator && !in_array($r->translator, $contributorsArr)) $contributorsArr[] = $r->translator; + if($r->author && !in_array($r->author, $contributorsArr)) $contributorsArr[] = $r->author; + $retArr[$r->glossid]['term'] = strip_tags($r->term); + $retArr[$r->glossid]['searchTerm'] = strip_tags($r->searchterm); + if(!$definitions || $definitions != 'nodef') $retArr[$r->glossid]['definition'] = strip_tags($r->definition); if($r->glossgrpid && $r->glossgrpid != $r->glossid) $groupMap[$r->glossgrpid][] = $r->glossid; } $rs->free(); - //Get translations; Is a translation table request - $glossIdArr = array(); - if($translations){ + if($retArr){ $glossIdArr = array_keys($retArr); - if($groupMap) $glossIdArr = array_unique(array_merge($glossIdArr,array_keys($groupMap))); - $sql = 'SELECT DISTINCT g.glossid, g.term, g.definition, g.language, g.source, g.translator, g.author, gt.glossgrpid '. - 'FROM glossary g LEFT JOIN glossarytermlink gt ON gt.glossid = g.glossid '. - 'WHERE (g.`language` IN("'.implode('","',$translations).'")) AND (g.`language` != "'.$language.'") '. - 'AND (g.glossid IN('.implode(',',$glossIdArr).') OR gt.glossgrpid IN('.implode(',',$glossIdArr).'))'; - //echo $sql; exit; - $rs = $this->conn->query($sql); - while($r = $rs->fetch_object()){ - if($r->source && !in_array($r->source,$referencesArr)) $referencesArr[] = $r->source; - if($r->translator && !in_array($r->translator,$contributorsArr)) $contributorsArr[] = $r->translator; - if($r->author && !in_array($r->author,$contributorsArr)) $contributorsArr[] = $r->author; - $targetArr = array(); - if(isset($retArr[$r->glossid])) $targetArr[] = $r->glossid; - if(isset($groupMap[$r->glossid])){ - $grpArr = $groupMap[$r->glossid]; - foreach($grpArr as $altId){ - if(isset($retArr[$altId])) $targetArr[] = $altId; - } - } - if($r->glossgrpid && $r->glossgrpid != $r->glossid){ - if(isset($retArr[$r->glossgrpid])) $targetArr[] = $r->glossgrpid; - if(isset($groupMap[$r->glossgrpid])){ - $grpArr = $groupMap[$r->glossgrpid]; + if($translations){ + //Get translations; Is a translation table request + if($groupMap) $glossIdArr = array_unique(array_merge($glossIdArr,array_keys($groupMap))); + $sql = 'SELECT DISTINCT g.glossid, g.term, g.definition, g.language, g.source, g.translator, g.author, gt.glossgrpid '. + 'FROM glossary g LEFT JOIN glossarytermlink gt ON gt.glossid = g.glossid '. + 'WHERE (g.language IN("'.implode('","',$translations).'")) AND (g.language != "'.$this->cleanInStr($language).'") '. + 'AND (g.glossid IN('.implode(',',$glossIdArr).') OR gt.glossgrpid IN('.implode(',',$glossIdArr).'))'; + $rs = $this->conn->query($sql); + while($r = $rs->fetch_object()){ + if($r->source && !in_array($r->source, $referencesArr)) $referencesArr[] = $r->source; + if($r->translator && !in_array($r->translator, $contributorsArr)) $contributorsArr[] = $r->translator; + if($r->author && !in_array($r->author, $contributorsArr)) $contributorsArr[] = $r->author; + $targetArr = array(); + if(isset($retArr[$r->glossid])) $targetArr[] = $r->glossid; + if(isset($groupMap[$r->glossid])){ + $grpArr = $groupMap[$r->glossid]; foreach($grpArr as $altId){ if(isset($retArr[$altId])) $targetArr[] = $altId; } } - } - $targetArr = array_unique($targetArr); - - foreach($targetArr as $targetId){ - $targetTerm = $r->term; - if(isset($retArr[$targetId]['trans'][$r->language]['term'])){ - //Term already exists, thus append it - $targetTerm .= '; '.$retArr[$targetId]['trans'][$r->language]['term']; + if($r->glossgrpid && $r->glossgrpid != $r->glossid){ + if(isset($retArr[$r->glossgrpid])) $targetArr[] = $r->glossgrpid; + if(isset($groupMap[$r->glossgrpid])){ + $grpArr = $groupMap[$r->glossgrpid]; + foreach($grpArr as $altId){ + if(isset($retArr[$altId])) $targetArr[] = $altId; + } + } } - $retArr[$targetId]['trans'][$r->language]['term'] = $targetTerm; - if($definitions == 'alldef'){ - $targetDef = $r->definition; - if(isset($retArr[$targetId]['trans'][$r->language]['definition'])){ - $targetTerm .= '; '.$retArr[$targetId]['trans'][$r->language]['definition']; + $targetArr = array_unique($targetArr); + + foreach($targetArr as $targetId){ + $targetTerm = $r->term; + if(isset($retArr[$targetId]['trans'][$r->language]['term'])){ + //Term already exists, thus append it + $targetTerm .= '; '.$retArr[$targetId]['trans'][$r->language]['term']; + } + $retArr[$targetId]['trans'][$r->language]['term'] = $targetTerm; + if($definitions == 'alldef'){ + $targetDef = $r->definition; + if(isset($retArr[$targetId]['trans'][$r->language]['definition'])){ + $targetTerm .= '; '.$retArr[$targetId]['trans'][$r->language]['definition']; + } + $retArr[$targetId]['trans'][$r->language]['definition'] = $targetDef; } - $retArr[$targetId]['trans'][$r->language]['definition'] = $targetDef; } } + $rs->free(); } - $rs->free(); - } - //Get images - if($images && $retArr){ - if(!$glossIdArr){ - $glossIdArr = array_keys($retArr); + if($images){ + //Get images if($groupMap) $glossIdArr = array_unique(array_merge($glossIdArr,array_keys($groupMap))); - } - $sql2 = 'SELECT glossid, glimgid, url, createdBy, structures, notes '. - 'FROM glossaryimages '. - 'WHERE glossid IN('.implode(',', $glossIdArr).') '; - //echo $sql2.'
'; exit; - $rs2 = $this->conn->query($sql2); - while($r2 = $rs2->fetch_object()){ - $targetId = $r2->glossid; - if(!isset($retArr[$targetId]) && isset($groupMap[$targetId])){ - $grpArr = $groupMap[$r2->glossid]; - foreach($grpArr as $altId){ - if(isset($retArr[$altId])) $targetId = $altId; + $sql2 = 'SELECT glossid, glimgid, url, createdBy, structures, notes FROM glossaryimages WHERE glossid IN('.implode(',', $glossIdArr).') '; + //echo $sql2.'
'; exit; + $rs2 = $this->conn->query($sql2); + while($r2 = $rs2->fetch_object()){ + $targetId = $r2->glossid; + if(!isset($retArr[$targetId]) && isset($groupMap[$targetId])){ + $grpArr = $groupMap[$r2->glossid]; + foreach($grpArr as $altId){ + if(isset($retArr[$altId])) $targetId = $altId; + } } - } - if(isset($retArr[$targetId])){ - if($r2->url && !isset($retArr[$targetId]['images'])){ - $retArr[$targetId]['images'][$r2->glimgid]['url'] = $r2->url; - $retArr[$targetId]['images'][$r2->glimgid]['createdBy'] = $r2->createdBy; - $retArr[$targetId]['images'][$r2->glimgid]['structures'] = $r2->structures; - $retArr[$targetId]['images'][$r2->glimgid]['notes'] = $r2->notes; + if(isset($retArr[$targetId])){ + if($r2->url && !isset($retArr[$targetId]['images'])){ + $retArr[$targetId]['images'][$r2->glimgid]['url'] = $r2->url; + $retArr[$targetId]['images'][$r2->glimgid]['createdBy'] = $r2->createdBy; + $retArr[$targetId]['images'][$r2->glimgid]['structures'] = $r2->structures; + $retArr[$targetId]['images'][$r2->glimgid]['notes'] = $r2->notes; + } } } + $rs2->free(); } - $rs2->free(); } - $retArr['meta'] = $this->getExportMetadata($taxon, $referencesArr, $contributorsArr); + $retArr['meta'] = $this->getExportMetadata($tid, $referencesArr, $contributorsArr); return $retArr; } - private function getExportMetadata($taxon,$referencesArr,$contributorsArr){ + private function getExportMetadata($tid, $referencesArr, $contributorsArr){ $retArr = array(); - //Get taxa for group - $sql = 'SELECT t.SciName, v.VernacularName '. - 'FROM taxa t LEFT JOIN taxavernaculars v ON t.tid = v.tid '. - 'WHERE (t.tid = '.$taxon.') '; - //echo $sql; - $rs = $this->conn->query($sql); - if($r = $rs->fetch_object()){ - $sciName = $r->SciName; - if($r->VernacularName) $sciName .= ' ('.$r->VernacularName.')'; - $retArr['sciname'] = $sciName; + if($tid){ + //Get taxa for group + $sql = 'SELECT t.SciName, v.VernacularName FROM taxa t LEFT JOIN taxavernaculars v ON t.tid = v.tid WHERE (t.tid = '.$tid.') '; + //echo $sql; + $rs = $this->conn->query($sql); + if($r = $rs->fetch_object()){ + $sciName = $r->SciName; + if($r->VernacularName) $sciName .= ' ('.$r->VernacularName.')'; + $retArr['sciname'] = $sciName; + } + $rs->free(); + //Append contributor information from glossarysource table + $sourceArr = $this->getGlossarySources($tid); + if(isset($sourceArr['ref'])) $referencesArr = array_unique(array_merge($sourceArr['ref'],$referencesArr)); + if(isset($sourceArr['con'])) $contributorsArr = array_unique(array_merge($sourceArr['con'],$contributorsArr)); } - $rs->free(); - //Append contributor information from glossarysource table - $sourceArr = $this->getGlossarySources($taxon); - if(isset($sourceArr['ref'])) $referencesArr = array_unique(array_merge($sourceArr['ref'],$referencesArr)); - if(isset($sourceArr['con'])) $contributorsArr = array_unique(array_merge($sourceArr['con'],$contributorsArr)); - - $retArr['references'] = $referencesArr; - $retArr['contributors'] = $contributorsArr; + if($referencesArr) $retArr['references'] = $referencesArr; + if($contributorsArr) $retArr['contributors'] = $contributorsArr; return $retArr; } private function getGlossarySources($tid){ $retArr = array(); - $sql = 'SELECT contributorTerm, contributorImage, translator, additionalSources '. - 'FROM glossarysources '. - 'WHERE tid = '.$tid; - //echo $sql; - $rs = $this->conn->query($sql); - while($r = $rs->fetch_object()){ - if($r->additionalSources) $retArr['ref'][] = $r->additionalSources; - if($r->translator) $retArr['con'][] = $r->translator; - if($r->contributorTerm) $retArr['con'][] = $r->contributorTerm; - if($r->contributorImage) $retArr['img'][] = $r->contributorImage; + if($tid){ + $sql = 'SELECT contributorTerm, contributorImage, translator, additionalSources FROM glossarysources WHERE tid = '.$tid; + $rs = $this->conn->query($sql); + while($r = $rs->fetch_object()){ + if($r->additionalSources) $retArr['ref'][] = $r->additionalSources; + if($r->translator) $retArr['con'][] = $r->translator; + if($r->contributorTerm) $retArr['con'][] = $r->contributorTerm; + if($r->contributorImage) $retArr['img'][] = $r->contributorImage; + } + $rs->free(); } - $rs->free(); return $retArr; } @@ -1248,11 +1250,11 @@ public function getStats(){ public function getLanguageArr($returnTag = ''){ $allArr = array(); $byTid = array(); - $sql = 'SELECT DISTINCT g.`language`, IFNULL(t.tid, t2.tid) as tid, l.iso639_1 as code '. - 'FROM glossary g LEFT JOIN glossarytermlink p ON g.glossid = p.glossid '. - 'LEFT JOIN glossarytaxalink t ON g.glossid = t.glossid '. - 'LEFT JOIN glossarytaxalink t2 ON p.glossgrpid = t2.glossid '. - 'LEFT JOIN adminlanguages l ON g.language = l.`langname`'; + $sql = 'SELECT DISTINCT g.language, IFNULL(t.tid, t2.tid) as tid, l.iso639_1 as code + FROM glossary g LEFT JOIN glossarytermlink p ON g.glossid = p.glossid + LEFT JOIN glossarytaxalink t ON g.glossid = t.glossid + LEFT JOIN glossarytaxalink t2 ON p.glossgrpid = t2.glossid + LEFT JOIN adminlanguages l ON g.language = l.langname'; if($rs = $this->conn->query($sql)){ while($r = $rs->fetch_object()){ $code = $r->code; diff --git a/classes/OccurrenceTaxaManager.php b/classes/OccurrenceTaxaManager.php index 1776aeb445..3ac6c65663 100644 --- a/classes/OccurrenceTaxaManager.php +++ b/classes/OccurrenceTaxaManager.php @@ -376,7 +376,7 @@ protected function cleanInputStr($str){ $str = trim($str,' ,;'); if($str == '%') $str = ''; $str = strip_tags($str); - $str = htmlspecialchars($str, HTML_SPECIAL_CHARS_FLAGS); + $str = htmlspecialchars($str, ENT_NOQUOTES | ENT_SUBSTITUTE | ENT_HTML401); return $str; } diff --git a/classes/TaxonSearchSupport.php b/classes/TaxonSearchSupport.php index 1881ccefaf..4f523f8298 100644 --- a/classes/TaxonSearchSupport.php +++ b/classes/TaxonSearchSupport.php @@ -99,12 +99,13 @@ private function getTaxaSuggestByRank(){ //Setters and getters public function setQueryString($queryString){ //$queryString = $this->cleanInStr($queryString); - $queryString = preg_replace('/[\'"+\=@$%]+/i', '', $queryString); + $queryString = preg_replace('/[\+\=@$%]+/i', '', $queryString); if(strpos($queryString, ' ')){ + $queryString = str_ireplace(array('"', "'"), '_', $queryString); $queryString = preg_replace('/\s{1}x{1}$/i', ' _', $queryString); $queryString = preg_replace('/\s{1}x{1}\s{1}/i', ' _ ', $queryString); - $queryString = str_ireplace(' x', ' _', $queryString); $queryString = str_ireplace(' x ', ' _ ', $queryString); + $queryString = str_ireplace(' x', ' _', $queryString); } $this->queryString = $queryString; } diff --git a/classes/TaxonomyHarvester.php b/classes/TaxonomyHarvester.php index b3bae6aa34..e1c99c722c 100644 --- a/classes/TaxonomyHarvester.php +++ b/classes/TaxonomyHarvester.php @@ -330,6 +330,9 @@ private function translateColNode($nodeArr){ elseif(isset($nodeArr['name']['scientificName'])) $taxonArr['sciname'] = $nodeArr['name']['scientificName']; if(isset($nodeArr['rank'])) $taxonArr['taxonRank'] = $nodeArr['rank']; elseif(isset($nodeArr['name']['rank'])) $taxonArr['taxonRank'] = $nodeArr['name']['rank']; + if($taxonArr['taxonRank'] == 'Unranked'){ + if(isset($nodeArr['accepted_name']['rank'])) $taxonArr['taxonRank'] = $nodeArr['accepted_name']['rank']; + } if(isset($nodeArr['genus'])) $taxonArr['unitname1'] = $nodeArr['genus']; elseif(isset($nodeArr['name']['genus'])) $taxonArr['unitname1'] = $nodeArr['name']['genus']; elseif(isset($nodeArr['name']['uninomial'])) $taxonArr['unitname1'] = $nodeArr['name']['uninomial']; diff --git a/classes/TaxonomyUpload.php b/classes/TaxonomyUpload.php index 408831a8d5..df1c7236f0 100644 --- a/classes/TaxonomyUpload.php +++ b/classes/TaxonomyUpload.php @@ -435,13 +435,13 @@ public function cleanUpload(){ $sql = 'UPDATE uploadtaxa u INNER JOIN uploadtaxa u2 ON u.sourceParentId = u2.sourceId '. 'SET u.parentstr = u2.sciname '. - 'WHERE (u.parentstr IS NULL) AND (u.sourceParentId IS NOT NULL) AND (u2.sourceId IS NOT NULL)'; + 'WHERE (u.parentstr IS NULL)'; if(!$this->conn->query($sql)){ $this->outputMsg('ERROR: '.$this->conn->error,1); } $sql = 'UPDATE uploadtaxa u INNER JOIN uploadtaxa u2 ON u.sourceAcceptedId = u2.sourceId '. 'SET u.acceptedstr = u2.sciname '. - 'WHERE (u.acceptedstr IS NULL) AND (u.sourceAcceptedId IS NOT NULL) AND (u2.sourceId IS NOT NULL)'; + 'WHERE (u.acceptedstr IS NULL)'; if(!$this->conn->query($sql)){ $this->outputMsg('ERROR: '.$this->conn->error,1); } @@ -452,7 +452,8 @@ public function cleanUpload(){ //Link names already in theusaurus $this->outputMsg('Linking names already in thesaurus... '); - $sql = 'UPDATE uploadtaxa u INNER JOIN taxa t ON u.sciname = t.sciname SET u.tid = t.tid WHERE (u.tid IS NULL) AND (t.kingdomname = "'.$this->kingdomName.'") '; + $sql = 'UPDATE uploadtaxa u INNER JOIN taxa t ON u.sciname = t.sciname SET u.tid = t.tid + WHERE (u.tid IS NULL) AND (t.kingdomname = "'.$this->kingdomName.'" OR t.sciname = "'.$this->kingdomName.'" OR t.rankid < 10) '; if(!$this->conn->query($sql)){ $this->outputMsg('ERROR: '.$this->conn->error,1); } @@ -465,7 +466,7 @@ public function cleanUpload(){ } $sql = 'UPDATE uploadtaxa u INNER JOIN taxa t ON u.acceptedstr = t.sciname '. 'SET u.tidaccepted = t.tid '. - 'WHERE (u.tidaccepted IS NULL) AND (t.kingdomname = "'.$this->kingdomName.'")'; + 'WHERE (u.tidaccepted IS NULL) AND (t.kingdomname = "'.$this->kingdomName.'" OR t.sciname = "'.$this->kingdomName.'" OR t.rankid < 10)'; if(!$this->conn->query($sql)){ $this->outputMsg('ERROR: '.$this->conn->error,1); } @@ -570,7 +571,9 @@ public function cleanUpload(){ $this->outputMsg('ERROR: '.$this->conn->error,1); } - $sql = 'UPDATE uploadtaxa up INNER JOIN taxa t ON up.parentstr = t.sciname SET parenttid = t.tid WHERE (parenttid IS NULL) AND (t.kingdomname = "'.$this->kingdomName.'")'; + $sql = 'UPDATE uploadtaxa up INNER JOIN taxa t ON up.parentstr = t.sciname + SET parenttid = t.tid + WHERE (parenttid IS NULL) AND (t.kingdomname = "'.$this->kingdomName.'" OR t.sciname = "'.$this->kingdomName.'" OR t.rankid < 10)'; if(!$this->conn->query($sql)){ $this->outputMsg('ERROR: '.$this->conn->error,1); } @@ -584,7 +587,7 @@ public function cleanUpload(){ $this->conn->query($sql); $sql = 'UPDATE uploadtaxa up INNER JOIN taxa t ON up.parentstr = t.sciname '. 'SET up.parenttid = t.tid '. - 'WHERE (up.parenttid IS NULL) AND (t.kingdomname = "'.$this->kingdomName.'")'; + 'WHERE (up.parenttid IS NULL) AND (t.kingdomname = "'.$this->kingdomName.'" OR t.sciname = "'.$this->kingdomName.'" OR t.rankid < 10)'; $this->conn->query($sql); //Load into uploadtaxa parents of species not yet in taxa table @@ -595,7 +598,7 @@ public function cleanUpload(){ $this->conn->query($sql); $sql = 'UPDATE uploadtaxa up LEFT JOIN taxa t ON up.parentstr = t.sciname '. 'SET up.parenttid = t.tid '. - 'WHERE ISNULL(up.parenttid) AND (t.kingdomname = "'.$this->kingdomName.'")'; + 'WHERE ISNULL(up.parenttid) AND (t.kingdomname = "'.$this->kingdomName.'" OR t.sciname = "'.$this->kingdomName.'" OR t.rankid < 10)'; $this->conn->query($sql); //Set acceptance to 0 where sciname <> acceptedstr diff --git a/classes/TaxonomyUtilities.php b/classes/TaxonomyUtilities.php index 10f979ee57..01a5e6ee56 100644 --- a/classes/TaxonomyUtilities.php +++ b/classes/TaxonomyUtilities.php @@ -46,9 +46,14 @@ public static function parseScientificName($inStr, $conn = null, $rankId = 0, $k $okToCloseConn = true; if($conn !== null) $okToCloseConn = false; if(count($sciNameArr)){ - if(strtolower($sciNameArr[0]) == 'x' || $sciNameArr[0] == '×' || mb_ord($sciNameArr[0]) == 215){ + if(strtolower($sciNameArr[0]) == 'x' || $sciNameArr[0] == '×'){ $retArr['unitind1'] = array_shift($sciNameArr); } + elseif(mb_ord($sciNameArr[0]) == 215){ + $retArr['unitind1'] = '×'; + $unitStr = substr(array_shift($sciNameArr), 2); + if($unitStr) array_unshift($sciNameArr, $unitStr); + } elseif($sciNameArr[0] == '†' || mb_ord($sciNameArr[0]) == 8224){ $retArr['unitind1'] = array_shift($sciNameArr); } @@ -59,11 +64,16 @@ public static function parseScientificName($inStr, $conn = null, $rankId = 0, $k //Genus $retArr['unitname1'] = ucfirst(strtolower(array_shift($sciNameArr))); if(count($sciNameArr)){ - if(strtolower($sciNameArr[0]) == 'x' || mb_ord($sciNameArr[0]) == 215){ - //Species level hybrid + if(strtolower($sciNameArr[0]) == 'x' || $sciNameArr[0] == '×'){ $retArr['unitind2'] = array_shift($sciNameArr); $retArr['unitname2'] = array_shift($sciNameArr); } + elseif(mb_ord($sciNameArr[0]) == 215){ + $retArr['unitind2'] = '×'; + $unitStr = substr(array_shift($sciNameArr), 2); + if($unitStr) $retArr['unitname2'] = $unitStr; + else $retArr['unitname2'] = array_shift($sciNameArr); + } elseif(strpos($sciNameArr[0],'.') !== false){ //It is assumed that Author has been reached, thus stop process $retArr['author'] = implode(' ',$sciNameArr); diff --git a/collections/editor/dupesearch.php b/collections/editor/dupesearch.php index 8bd242b36b..657581a557 100644 --- a/collections/editor/dupesearch.php +++ b/collections/editor/dupesearch.php @@ -74,7 +74,7 @@ //Matching event, thus limit output unset($tempOcc['family']); unset($tempOcc['sciname']); - unset($tempOcc['tid']); + unset($tempOcc['tidinterpreted']); unset($tempOcc['scientificnameauthorship']); unset($tempOcc['taxonremarks']); unset($tempOcc['identifiedby']); @@ -98,12 +98,11 @@ function transferRecord(occId,appendMode){ var openerForm = opener.document.fullform; if(document.getElementById("linkdupe-"+occId).checked == true){ openerForm.linkdupe.value = occId; - } for(var k in tArr){ try{ var elem = openerForm.elements[k]; - if(elem.disabled == false && elem.type != 'hidden' && (appendMode == false || elem.value == "")){ + if(elem.disabled == false && (elem.type != 'hidden' || k == "tidinterpreted") && (appendMode == false || elem.value == "")){ elem.value = tArr[k]; elem.style.backgroundColor = "lightblue"; if(k != "tid") opener.fieldChanged(k); diff --git a/collections/editor/occurrenceeditor.php b/collections/editor/occurrenceeditor.php index b922785588..410d053e11 100644 --- a/collections/editor/occurrenceeditor.php +++ b/collections/editor/occurrenceeditor.php @@ -515,7 +515,7 @@ function requestImage(){ - + diff --git a/collections/map/index.php b/collections/map/index.php index f25303ec61..ccc1169a6b 100644 --- a/collections/map/index.php +++ b/collections/map/index.php @@ -442,7 +442,7 @@ function afterEffects(){ buildCollKey(); buildTaxaKey(); jscolor.init(); - if(pointBounds){ + if(!pointBounds.isEmpty){ map.fitBounds(pointBounds); map.panToBounds(pointBounds); } diff --git a/config/symbbase.php b/config/symbbase.php index f56f58bc76..8ff9bd7370 100644 --- a/config/symbbase.php +++ b/config/symbbase.php @@ -2,7 +2,7 @@ header('X-Frame-Options: DENY'); header('Cache-control: private'); // IE 6 FIX date_default_timezone_set('America/Phoenix'); -$CODE_VERSION = '3.0.11'; +$CODE_VERSION = '3.0.12'; if(!isset($CLIENT_ROOT) && isset($clientRoot)) $CLIENT_ROOT = $clientRoot; if(substr($CLIENT_ROOT,-1) == '/') $CLIENT_ROOT = substr($CLIENT_ROOT,0,strlen($CLIENT_ROOT)-1); diff --git a/content/lang/glossary/index.en.php b/content/lang/glossary/index.en.php index 26528a24c8..22f7d63816 100644 --- a/content/lang/glossary/index.en.php +++ b/content/lang/glossary/index.en.php @@ -7,8 +7,6 @@ include_once($SERVER_ROOT.'/content/lang/glossary/addterm.en.php'); -$LANG['PLEASE_REFINE'] = 'Please select a language and taxonomic group to see term list.'; -$LANG['PLEASE_TO_DWNLD'] = 'Please select a primary language and taxonomic group to download.'; $LANG['PLEASE_TRANSL'] = 'Please select a maximum of three translations for the Translation Table. Please be sure to not select the primary language.'; $LANG['PLEASE_ONE'] = 'Please select at least one translation for the Translation Table. Please be sure to not select the primary language.'; $LANG['HOME'] = 'Home'; @@ -26,9 +24,12 @@ $LANG['SEARCH_TERM'] = 'Search Term'; $LANG['SEARCH_DEF'] = 'Search within definitions'; $LANG['SEARCH_TERMS'] = 'Search/Browse Terms'; -$LANG['NO_GLOSS'] = 'A glossary has not yet been established for this portal'; -$LANG['DISP_SRC'] = '(Display Sources)'; -$LANG['ADD_SRC'] = '(Add Sources)'; +$LANG['TERMS'] = 'Terms'; +$LANG['FOR'] = 'for'; +$LANG['IN'] = 'in'; +$LANG['KEYWORD'] = 'with keyword '; +$LANG['DISP_SRC'] = 'Display Sources'; +$LANG['ADD_SRC'] = 'Add Sources'; $LANG['TAX_CONTR'] = 'Contributors for Taxonomic Group'; $LANG['TERM_CONTR'] = 'Terms and Definitions contributed by'; $LANG['IMG_CONTR'] = 'Images contributed by'; diff --git a/content/lang/glossary/index.es.php b/content/lang/glossary/index.es.php index 1efe528914..99a4e9f80a 100644 --- a/content/lang/glossary/index.es.php +++ b/content/lang/glossary/index.es.php @@ -5,10 +5,8 @@ ------------------ */ -include_once($SERVER_ROOT.'/content/lang/glossary/addterm.en.php'); +include_once($SERVER_ROOT.'/content/lang/glossary/addterm.es.php'); -$LANG['PLEASE_REFINE'] = 'Por favor seleccione el idioma y grupo taxonómico para ver el listado de términos.'; -$LANG['PLEASE_TO_DWNLD'] = 'Por favor seleccione un idioma primario y un grupo taxonómico para descargar.'; $LANG['PLEASE_TRANSL'] = 'Por favor seleccione un máximo de traducciones para la Tabla de Traducciones. Por favor asegúrese de no seleccionar el idioma primario.'; $LANG['PLEASE_ONE'] = 'Por favor seleccione al menos una traducción para la Tabla de Traducciones. Por favor asegúrese de no seleccionar el idioma primario.'; $LANG['HOME'] = 'Inicio'; @@ -26,9 +24,12 @@ $LANG['SEARCH_TERM'] = 'Término de Búsqueda'; $LANG['SEARCH_DEF'] = 'Buscar entre las definiciones'; $LANG['SEARCH_TERMS'] = 'Buscar/Explorar Términos'; -$LANG['NO_GLOSS'] = 'Un glosario aún no ha sido establecido para este portal'; -$LANG['DISP_SRC'] = '(Desplegar Fuentes)'; -$LANG['ADD_SRC'] = '(Añadir Fuentes)'; +$LANG['TERMS'] = 'Términos'; +$LANG['FOR'] = 'para'; +$LANG['IN'] = 'en'; +$LANG['KEYWORD'] = 'con palabra clave'; +$LANG['DISP_SRC'] = 'Desplegar Fuentes'; +$LANG['ADD_SRC'] = 'Añadir Fuentes'; $LANG['TAX_CONTR'] = 'Contribuyentes para Grupo Taxonómico'; $LANG['TERM_CONTR'] = 'Términos y Definiciones contribuídas por'; $LANG['IMG_CONTR'] = 'Imágenes contribuídas por'; diff --git a/content/lang/glossary/individual.es.php b/content/lang/glossary/individual.es.php index 8e832e13b6..27091cbe58 100644 --- a/content/lang/glossary/individual.es.php +++ b/content/lang/glossary/individual.es.php @@ -5,7 +5,7 @@ ------------------ */ -include_once($SERVER_ROOT.'/content/lang/glossary/index.en.php'); +include_once($SERVER_ROOT.'/content/lang/glossary/index.es.php'); $LANG['GLOSS_TERM_INFO'] = 'Información de Términos del Glosario'; $LANG['LOADING'] = 'Descargando'; diff --git a/content/lang/glossary/sources.es.php b/content/lang/glossary/sources.es.php index 921e97f8ef..137a3c462b 100644 --- a/content/lang/glossary/sources.es.php +++ b/content/lang/glossary/sources.es.php @@ -5,7 +5,7 @@ ------------------ */ -include_once($SERVER_ROOT.'/content/lang/glossary/index.en.php'); +include_once($SERVER_ROOT.'/content/lang/glossary/index.es.php'); $LANG['G_SOURCES'] = 'Manejo de Fuentes del Glosario'; $LANG['MAIN_G'] = 'Glosario Principal'; diff --git a/content/lang/glossary/termdetails.es.php b/content/lang/glossary/termdetails.es.php index cfffd0a4d8..d2163a5043 100644 --- a/content/lang/glossary/termdetails.es.php +++ b/content/lang/glossary/termdetails.es.php @@ -5,7 +5,7 @@ ------------------ */ -include_once($SERVER_ROOT.'/content/lang/glossary/addterm.en.php'); +include_once($SERVER_ROOT.'/content/lang/glossary/addterm.es.php'); $LANG['G_MGMNT'] = 'Administración de Glosario'; $LANG['LOAD'] = 'Cargando'; diff --git a/glossary/glossdocexport.php b/glossary/glossdocexport.php index 7386d91a93..e44cea87b9 100644 --- a/glossary/glossdocexport.php +++ b/glossary/glossdocexport.php @@ -3,22 +3,26 @@ include_once($SERVER_ROOT.'/classes/GlossaryManager.php'); require_once $SERVER_ROOT.'/vendor/phpoffice/phpword/bootstrap.php'; -header("Content-Type: text/html; charset=".$CHARSET); +header('Content-Type: text/html; charset=' . $CHARSET); ini_set('max_execution_time', 3600); $language = array_key_exists('searchlanguage',$_POST)?$_POST['searchlanguage']:''; $taxon = array_key_exists('searchtaxa',$_POST)?$_POST['searchtaxa']:''; +$searchTerm = array_key_exists('searchterm',$_REQUEST)?$_REQUEST['searchterm']:''; +$deepSearch = array_key_exists('deepsearch',$_POST)?$_POST['deepsearch']:0; $exportType = array_key_exists('exporttype',$_POST)?$_POST['exporttype']:''; $translations = array_key_exists('language',$_POST)?$_POST['language']:array(); $definitions = array_key_exists('definitions',$_POST)?$_POST['definitions']:''; $images = array_key_exists('images',$_POST)?$_POST['images']:''; //Sanitation -$language = filter_var($language,FILTER_SANITIZE_STRING); -$taxon = filter_var($taxon,FILTER_SANITIZE_STRING); -$exportType = filter_var($exportType,FILTER_SANITIZE_STRING); -$definitions = filter_var($definitions,FILTER_SANITIZE_STRING); -$images = filter_var($images,FILTER_SANITIZE_STRING); +$language = htmlspecialchars($language, HTML_SPECIAL_CHARS_FLAGS); +$taxon = htmlspecialchars($taxon, HTML_SPECIAL_CHARS_FLAGS); +$searchTerm = htmlspecialchars($searchTerm, HTML_SPECIAL_CHARS_FLAGS); +if(!is_numeric($deepSearch)) $relatedLanguage = 0; +$exportType = htmlspecialchars($exportType, HTML_SPECIAL_CHARS_FLAGS); +$definitions = htmlspecialchars($definitions, HTML_SPECIAL_CHARS_FLAGS); +$images = htmlspecialchars($images, HTML_SPECIAL_CHARS_FLAGS); $fileName = ''; $citationFormat = $DEFAULT_TITLE.'. '.date('Y').'. '; @@ -47,8 +51,11 @@ $section = $phpWord->addSection(array('pageSizeW'=>12240,'pageSizeH'=>15840,'marginLeft'=>1080,'marginRight'=>1080,'marginTop'=>1080,'marginBottom'=>1080,'headerHeight'=>100,'footerHeight'=>0)); $glosManager = new GlossaryManager(); +$subTitle = ''; +if($language) $subTitle .= 'language: '.$language; +if($searchTerm) $subTitle .= '; search term: '.$searchTerm; if($exportType == 'translation'){ - $exportArr = $glosManager->getExportArr($language,$taxon,0,$translations,$definitions); + $exportArr = $glosManager->getExportArr($language, $taxon, $searchTerm, $deepSearch, 0, $translations, $definitions); if(in_array($language,$translations)){ foreach($translations as $k => $trans){ if($trans == $language) unset($translations[$k]); @@ -59,16 +66,24 @@ unset($exportArr['meta']); //ksort($exportArr, SORT_STRING | SORT_FLAG_CASE); - $fileName = $metaArr['sciname'].'_TranslationTable'; + $fileName = 'GlossaryTranslation'; + $sciname = ''; + if(isset($metaArr['sciname'])){ + $sciname = $metaArr['sciname']; + $fileName .= '_'.$sciname; + } $header = $section->addHeader(); - $header->addPreserveText($metaArr['sciname'].' - p.{PAGE} '.date("Y-m-d"),null,array('align'=>'right')); + $header->addPreserveText($sciname.' - p.{PAGE} '.date("Y-m-d"),null,array('align'=>'right')); $textrun = $section->addTextRun('titlePara'); if(isset($GLOSSARY_BANNER) && $GLOSSARY_BANNER){ $textrun->addImage($glosManager->getDomain() . $CLIENT_ROOT . '/images/layout/' . $GLOSSARY_BANNER, array('width'=>500, 'align'=>'center')); $textrun->addTextBreak(1); } - $textrun->addText(htmlspecialchars('Translation Table for '.$metaArr['sciname']),'titleFont'); + $titleStr = 'Translation Table'; + if($sciname) $titleStr .= ' for '.$sciname; + $textrun->addText(htmlspecialchars($titleStr),'titleFont'); + if($subTitle) $textrun->addText(' ('.trim($subTitle).')', 'transDefTextFont'); $textrun->addTextBreak(1); if($definitions == 'nodef'){ $table = $section->addTable('exportTable'); @@ -104,6 +119,7 @@ foreach($exportArr as $glossId => $glossArr){ $textrun = $section->addTextRun('transTermPara'); $textrun->addText(htmlspecialchars($glossArr['term']),'transMainTermDefFont'); + $translationStr = ''; foreach($translations as $trans){ $termStr = '[No Translation]'; if(array_key_exists('trans', $glossArr)){ @@ -111,8 +127,9 @@ $termStr = $glossArr['trans'][$trans]['term']; } } - $textrun->addText(htmlspecialchars(' ('.$trans.': '.$termStr.')'),'transTransTermNodefFont'); + $translationStr .= $trans.': '.$termStr.', '; } + if($translationStr) $textrun->addText(htmlspecialchars(' ('.trim($translationStr,', ').')'), 'transTransTermNodefFont'); if($definitions == 'onedef'){ if($glossArr['definition']){ $textrun = $section->addTextRun('transDefPara'); @@ -121,15 +138,15 @@ } } elseif($definitions == 'alldef'){ - $listItemRun = $section->addListItemRun(0,null,'transDefList'); + $listItemRun = $section->addListItemRun(0, null, 'transDefList'); if($glossArr['definition']){ - $listItemRun->addText(htmlspecialchars($glossArr['definition']),'transDefTextFont'); + $listItemRun->addText(htmlspecialchars($glossArr['definition']), 'transDefTextFont'); } else{ - $listItemRun->addText(htmlspecialchars('[No Definition]'),'transDefTextFont'); + $listItemRun->addText(htmlspecialchars('[No Definition]'), 'transDefTextFont'); } foreach($translations as $trans){ - $listItemRun = $section->addListItemRun(0,null,'transDefList'); + $listItemRun = $section->addListItemRun(0, null, 'transDefList'); if(array_key_exists('trans', $glossArr)){ if(array_key_exists($trans,$glossArr['trans'])){ @@ -184,26 +201,38 @@ $textrun->addText(htmlspecialchars($citationFormat),'transTransTermNodefFont'); } } -elseif($exportType == 'singlelanguage'){ - $exportArr = $glosManager->getExportArr($language,$taxon,$images); +else{ + $exportArr = $glosManager->getExportArr($language, $taxon, $searchTerm, $deepSearch, $images); if($exportArr){ $metaArr = $exportArr['meta']; unset($exportArr['meta']); //ksort($exportArr, SORT_STRING | SORT_FLAG_CASE); - $fileName = $metaArr['sciname'].'_SingleLanguage'; + $fileName = 'Glossary'; + $sciname = ''; + if(isset($metaArr['sciname'])){ + $sciname = $metaArr['sciname']; + $fileName .= '_'.$sciname; + } $header = $section->addHeader(); - $header->addPreserveText($metaArr['sciname'].' - p.{PAGE} '.date("Y-m-d"),null,array('align'=>'right')); + $header->addPreserveText($sciname.' - p.{PAGE} '.date("Y-m-d"),null,array('align'=>'right')); $textrun = $section->addTextRun('titlePara'); if(isset($GLOSSARY_BANNER) && $GLOSSARY_BANNER){ $textrun->addImage($glosManager->getDomain() . $CLIENT_ROOT . '/images/layout/' . $GLOSSARY_BANNER, array('width'=>500, 'align'=>'center')); $textrun->addTextBreak(1); } - $textrun->addText(htmlspecialchars('Single Language Glossary for '.$metaArr['sciname']),'titleFont'); + $titleStr = 'Glossary'; + if($sciname) $titleStr .= 'for '.$sciname; + $textrun->addText(htmlspecialchars($titleStr),'titleFont'); + if($subTitle) $textrun->addText(' ('.trim($subTitle).')', 'transDefTextFont'); $textrun->addTextBreak(1); foreach($exportArr as $singleEx => $singleExArr){ $textrun = $section->addTextRun('transTermPara'); - $textrun->addText(htmlspecialchars($singleExArr['term']),'transMainTermDefFont'); + $textrun->addText(htmlspecialchars($singleExArr['term']), 'transMainTermDefFont'); + if(isset($singleExArr['searchTerm']) && $singleExArr['searchTerm'] != $singleExArr['term']){ + $textrun->addText(' redirected from ', 'transDefTextFont'); + $textrun->addText(htmlspecialchars($singleExArr['searchTerm']), 'transMainTermDefFont'); + } if($singleExArr['definition']){ $textrun = $section->addTextRun('transDefPara'); $textrun->addText(htmlspecialchars($singleExArr['definition']),'transDefTextFont'); @@ -264,7 +293,7 @@ if(isset($metaArr['references'])){ $section->addTextBreak(1); $textrun = $section->addTextRun('titlePara'); - $textrun->addText(htmlspecialchars('References'),'transTransTermDefFont'); + $textrun->addText('References', 'transTransTermDefFont'); $referencesArr = $metaArr['references']; ksort($referencesArr); foreach($referencesArr as $ref){ @@ -304,7 +333,7 @@ $fileName = str_replace(array(' ', '/'), '_', $fileName); $fileName = preg_replace('/[^0-9A-Za-z\-_]/', '', $fileName); -$targetFile = $SERVER_ROOT.'/temp/report/'.$fileName.'.docx'; +$targetFile = $SERVER_ROOT.'/temp/report/'.$fileName.'_'.date('Y-m-d').'.docx'; $phpWord->save($targetFile, 'Word2007'); header('Content-Description: File Transfer'); diff --git a/glossary/index.php b/glossary/index.php index 77627f42ce..d9312c600f 100644 --- a/glossary/index.php +++ b/glossary/index.php @@ -3,7 +3,7 @@ include_once($SERVER_ROOT.'/classes/GlossaryManager.php'); if($LANG_TAG == 'en' || !file_exists($SERVER_ROOT.'/content/lang/glossary/index.'.$LANG_TAG.'.php')) include_once($SERVER_ROOT.'/content/lang/glossary/index.en.php'); else include_once($SERVER_ROOT.'/content/lang/glossary/index.'.$LANG_TAG.'.php'); -header("Content-Type: text/html; charset=".$CHARSET); +header('Content-Type: text/html; charset=' . $CHARSET); $glossId = array_key_exists('glossid',$_REQUEST)?$_REQUEST['glossid']:0; $language = array_key_exists('searchlanguage',$_REQUEST)?$_REQUEST['searchlanguage']:''; @@ -15,8 +15,8 @@ //Sanitation if(!is_numeric($glossId)) $glossId = 0; if(!is_numeric($tid)) $tid = 0; -$language = filter_var($language,FILTER_SANITIZE_STRING); -$searchTerm = filter_var($searchTerm,FILTER_SANITIZE_STRING); +$language = htmlspecialchars($language, HTML_SPECIAL_CHARS_FLAGS); +$searchTerm = htmlspecialchars($searchTerm, HTML_SPECIAL_CHARS_FLAGS); if(!is_numeric($deepSearch)) $relatedLanguage = 0; if(!$language) $language = $DEFAULT_LANG; @@ -49,8 +49,8 @@ ?> - <?php echo $DEFAULT_TITLE.' '.(isset($LANG['GLOSSARY'])?$LANG['GLOSSARY']:'Glossary'); ?> - + <?php echo $DEFAULT_TITLE.' '.$LANG['GLOSSARY']; ?> + "); - return false; - } - return true; - } - function verifyDownloadForm(f){ var searchForm = document.searchform; f.searchlanguage.value = searchForm.searchlanguage.value; f.searchtaxa.value = searchForm.searchtaxa.value; f.searchterm.value = searchForm.searchterm.value; - f.deepsearch.value = searchForm.deepsearch.value; - var language = f.searchlanguage.value; - var taxon = f.searchtaxa.value; - if(!language || !taxon){ - alert(""); - return false; - } + if(searchForm.deepsearch.checked) f.deepsearch.value = 1; var downloadtype = f.exporttype.value; if(downloadtype == 'translation'){ @@ -116,11 +102,11 @@ function verifyDownloadForm(f){ } } if(numTranslations > 3){ - alert(""); + alert(""); return false; } if(numTranslations === 0){ - alert(""); + alert(""); return false; } } @@ -145,28 +131,13 @@ function openTermPopup(glossid){ - - - - +
'.$GLOSSARY_DESCRIPTION.'
'; } ?> -
-
+
+
- +
@@ -212,7 +183,7 @@ function openTermPopup(glossid){
- - -

-
-
-
+

+
+ +
+ +
+ : + +
1){ - ?> -
- : - -
- '; - } - if(count($langArr) > 1){ - ?> -
- : - -
- '; - } + } + if(count($langArr) > 1){ ?> -
-
- : - -
-
- /> - -
-
- -
- -
-

'.(isset($LANG['NO_GLOSS'])?$LANG['NO_GLOSS']:'A glossary has not yet been established for this portal').'

'; - } - ?> +
+ : + +
+ +
+
+ : + +
+
+ /> + +
+
+ +
+ +
-
+
getTermSearch($searchTerm,$language,$tid,$deepSearch); + $termList = $glosManager->getTermSearch($searchTerm, $language, $tid, $deepSearch); if($termList){ - $title = ($taxonName?$taxonName.' terms ':'Terms ').($language?' in '.$language:''); - if($searchTerm) $title .= ' and with a keyword of '.$searchTerm; ?>
'.$title.'
'; $sourceArrFull = $glosManager->getTaxonSources($tid); $sourceArr = current($sourceArrFull); @@ -359,7 +309,7 @@ function openTermPopup(glossid){ ?>
- + ()
- + ()
-