Skip to content

Commit

Permalink
Merge pull request #14 from BioKIC/master
Browse files Browse the repository at this point in the history
Various updates pushed from Symbiota-light into CCH2 code repository
  • Loading branch information
egbot authored Jun 23, 2020
2 parents 3247437 + 3108ac0 commit b3448f9
Show file tree
Hide file tree
Showing 37 changed files with 3,094 additions and 3,081 deletions.
57 changes: 22 additions & 35 deletions checklists/checklist.php
Original file line number Diff line number Diff line change
Expand Up @@ -50,12 +50,8 @@
if($action == "Rebuild List") $defaultOverride = 1;

$clManager = new ChecklistManager();
if($clid){
$clManager->setClid($clid);
}
elseif($dynClid){
$clManager->setDynClid($dynClid);
}
if($clid) $clManager->setClid($clid);
elseif($dynClid) $clManager->setDynClid($dynClid);
$clArray = $clManager->getClMetaData();
$activateKey = $KEY_MOD_IS_ACTIVE;
$showDetails = 0;
Expand Down Expand Up @@ -103,36 +99,27 @@
if($IS_ADMIN || (array_key_exists("ClAdmin",$USER_RIGHTS) && in_array($clid,$USER_RIGHTS["ClAdmin"]))){
$isEditor = true;
}
if($isEditor){
if(array_key_exists("tidtoadd",$_POST) && is_numeric($_POST["tidtoadd"])){
$dataArr = array();
$dataArr["tid"] = $_POST["tidtoadd"];
if($_POST["familyoverride"]) $dataArr["familyoverride"] = $_POST["familyoverride"];
if($_POST['morphospecies']) $dataArr['morphospecies'] = $_POST['morphospecies'];
if($_POST["habitat"]) $dataArr["habitat"] = $_POST["habitat"];
if($_POST["abundance"]) $dataArr["abundance"] = $_POST["abundance"];
if($_POST["notes"]) $dataArr["notes"] = $_POST["notes"];
if($_POST["source"]) $dataArr["source"] = $_POST["source"];
if($_POST["internalnotes"]) $dataArr["internalnotes"] = $_POST["internalnotes"];
$statusStr = $clManager->addNewSpecies($dataArr);
if($isEditor && array_key_exists('formsubmit',$_POST)){
if($_POST['formsubmit'] == 'AddSpecies'){
$statusStr = $clManager->addNewSpecies($_POST);
}
}
$taxaArray = $clManager->getTaxaList($pageNumber,($printMode?0:500));
?>
<html>
<head>
<meta charset="<?php echo $CHARSET; ?>">
<title><?php echo $DEFAULT_TITLE; ?><?php echo $LANG['RESCHECK'];?>: <?php echo $clManager->getClName(); ?></title>
<title><?php echo $DEFAULT_TITLE; ?><?php echo $LANG['RESCHECK'];?>: <?php echo $clManager->getClName(); ?></title>
<?php
$activateJQuery = true;
if(file_exists($SERVER_ROOT.'/includes/head.php')){
include_once($SERVER_ROOT.'/includes/head.php');
}
else{
echo '<link href="'.$CLIENT_ROOT.'/css/jquery-ui.css" type="text/css" rel="stylesheet" />';
echo '<link href="'.$CLIENT_ROOT.'/css/base.css?ver=1" type="text/css" rel="stylesheet" />';
echo '<link href="'.$CLIENT_ROOT.'/css/main.css?ver=1" type="text/css" rel="stylesheet" />';
}
$activateJQuery = true;
if(file_exists($SERVER_ROOT.'/includes/head.php')){
include_once($SERVER_ROOT.'/includes/head.php');
}
else{
echo '<link href="'.$CLIENT_ROOT.'/css/jquery-ui.css" type="text/css" rel="stylesheet" />';
echo '<link href="'.$CLIENT_ROOT.'/css/base.css?ver=1" type="text/css" rel="stylesheet" />';
echo '<link href="'.$CLIENT_ROOT.'/css/main.css?ver=1" type="text/css" rel="stylesheet" />';
}
?>
<script type="text/javascript" src="../js/jquery.js"></script>
<script type="text/javascript" src="../js/jquery-ui.js"></script>
Expand All @@ -146,7 +133,7 @@
} );

</script>
<script type="text/javascript" src="../js/symb/checklists.checklist.js?ver=201901"></script>
<script type="text/javascript" src="../js/symb/checklists.checklist.js?ver=202004"></script>
<style type="text/css">
#sddm{margin:0;padding:0;z-index:30;}
#sddm:hover {background-color:#EAEBD8;}
Expand Down Expand Up @@ -246,7 +233,7 @@
<ul id="sddm">
<li>
<span onmouseover="mopen('m1')" onmouseout="mclosetime()">
<img src="../images/games/games.png" style="height:17px;" title="<?php echo (isset($LANG['ACCESS_GAMES'])?$LANG['ACCESS_GAMES']:'Access Species List Games'); ?>" />
<img src="../images/games/games.png" style="height:17px;" />
</span>
<div id="m1" onmouseover="mcancelclosetime()" onmouseout="mclosetime()">
<?php
Expand Down Expand Up @@ -327,7 +314,6 @@
echo '<div style="clear:both;"><span style="font-weight:bold;">'.(isset($LANG['CITATION'])?$LANG['CITATION']:'Citation').':</span> '.$pubStr.'</div>';
}
}

if(($clArray["locality"] || ($clid && ($clArray["latcentroid"] || $clArray["abstract"])) || $clArray["notes"])){
?>
<div class="moredetails printoff" style="<?php echo (($showDetails)?'display:none;':''); ?>"><a href="#" onclick="toggle('moredetails');return false;"><?php echo $LANG['MOREDETS'];?></a></div>
Expand All @@ -345,7 +331,7 @@
if($clArray['type'] == 'excludespp') $abstractTitle = $LANG['COMMENTS'];
echo "<div><span style='font-weight:bold;'>".$abstractTitle.": </span>".$clArray["abstract"]."</div>";
}
if($clid && $clArray['notes']){
if($clArray['notes']){
echo '<div><span style="font-weight:bold;">'.(isset($LANG['NOTES'])?$LANG['NOTES']:'Notes').': </span>'.$clArray['notes'].'</div>';
}
?>
Expand Down Expand Up @@ -470,7 +456,7 @@
<div>
<?php echo $LANG['TAXON']; ?>:<br/>
<input type="text" id="speciestoadd" name="speciestoadd" style="width:174px;" />
<input type="hidden" id="tidtoadd" name="tidtoadd" value="" />
<input type="hidden" id="tid" name="tid" />
</div>
<!--
<div>
Expand Down Expand Up @@ -513,7 +499,8 @@
<input type='hidden' name='taxonfilter' value='<?php echo $taxonFilter; ?>' />
<input type='hidden' name='searchcommon' value='<?php echo $searchCommon; ?>' />
<input type="hidden" name="emode" value="1" />
<button name="submitadd" type="submit" value="Add Species to List"><?php echo (isset($LANG['ADD_SPECIES'])?$LANG['ADD_SPECIES']:'Add Species to List'); ?></button>
<input type="hidden" name="formsubmit" value="AddSpecies" />
<button name="submitbtn" type="submit"><?php echo (isset($LANG['ADD_SPECIES'])?$LANG['ADD_SPECIES']:'Add Species to List'); ?></button>
<hr />
</div>
<div style="text-align:center;">
Expand Down Expand Up @@ -723,7 +710,7 @@
if(array_key_exists('vern',$sppArr)){
echo ' - <span class="vern-span">'.$sppArr['vern'].'</span>';
}
if($clArray["dynamicsql"]){
if($clid && $clArray['dynamicsql']){
?>
<span class="view-specimen-span printoff">
<a href="../collections/list.php?usethes=1&taxontype=2&taxa=<?php echo $tid."&targetclid=".$clid."&targettid=".$tid;?>" target="_blank">
Expand Down
80 changes: 38 additions & 42 deletions classes/ChecklistManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ class ChecklistManager {
private $pid = '';
private $projName = '';
private $taxaList = Array();
private $language = "English";
private $langId;
private $thesFilter = 0;
private $taxonFilter;
private $showAuthors = false;
Expand Down Expand Up @@ -117,14 +117,14 @@ private function setMetaData(){

private function setDynamicMetaData(){
if($this->dynClid){
$sql = 'SELECT name, details, notes, uid, type, initialtimestamp FROM fmdynamicchecklists WHERE (dynclid = '.$this->dynClid.')';
$sql = 'SELECT name, details, uid, type, initialtimestamp FROM fmdynamicchecklists WHERE (dynclid = '.$this->dynClid.')';
$result = $this->conn->query($sql);
if($result){
if($row = $result->fetch_object()){
$this->clName = $row->name;
$this->clMetadata["locality"] = $row->details;
$this->clMetadata["notes"] = $row->notes;
$this->clMetadata["type"] = $row->type;
$this->clMetadata['notes'] = $row->details;
$this->clMetadata['type'] = $row->type;
$this->clMetadata['locality'] = '';
}
$result->free();
}
Expand Down Expand Up @@ -272,13 +272,13 @@ public function getTaxaList($pageNumber = 1,$retLimit = 500){
if($this->childClidArr){
$clidStr .= ','.implode(',',array_keys($this->childClidArr));
}
$vSql = 'SELECT DISTINCT v.tid, v.occid, c.institutioncode, v.notes, o.catalognumber, o.recordedby, o.recordnumber, o.eventdate, o.collid '.
$vSql = 'SELECT DISTINCT v.tid, v.occid, c.institutioncode, v.notes, o.catalognumber, o.othercatalognumbers, o.recordedby, o.recordnumber, o.eventdate, o.collid '.
'FROM fmvouchers v INNER JOIN omoccurrences o ON v.occid = o.occid '.
'INNER JOIN omcollections c ON o.collid = c.collid '.
'WHERE (v.clid IN ('.$clidStr.')) AND v.tid IN('.implode(',',array_keys($this->taxaList)).') '.
'ORDER BY o.collid';
if($this->thesFilter){
$vSql = 'SELECT DISTINCT ts.tidaccepted AS tid, v.occid, c.institutioncode, v.notes, o.catalognumber, o.recordedby, o.recordnumber, o.eventdate, o.collid '.
$vSql = 'SELECT DISTINCT ts.tidaccepted AS tid, v.occid, c.institutioncode, v.notes, o.catalognumber, o.othercatalognumbers, o.recordedby, o.recordnumber, o.eventdate, o.collid '.
'FROM fmvouchers v INNER JOIN omoccurrences o ON v.occid = o.occid '.
'INNER JOIN omcollections c ON o.collid = c.collid '.
'INNER JOIN taxstatus ts ON v.tid = ts.tid '.
Expand All @@ -289,7 +289,7 @@ public function getTaxaList($pageNumber = 1,$retLimit = 500){
//echo $vSql; exit;
$vResult = $this->conn->query($vSql);
while ($row = $vResult->fetch_object()){
$displayStr = ($row->recordedby?$row->recordedby:$row->catalognumber);
$displayStr = ($row->recordedby?$row->recordedby:($row->catalognumber?$row->catalognumber:$row->othercatalognumbers));
if(strlen($displayStr) > 25){
//Collector string is too big, thus reduce
$strPos = strpos($displayStr,';');
Expand All @@ -299,8 +299,9 @@ public function getTaxaList($pageNumber = 1,$retLimit = 500){
}
if($row->recordnumber) $displayStr .= ' '.$row->recordnumber;
else $displayStr .= ' '.$row->eventdate;
if(!trim($displayStr)) $displayStr = 'undefined voucher';
$displayStr .= ' ['.$row->institutioncode.']';
$this->voucherArr[$row->tid][$row->occid] = $displayStr;
$this->voucherArr[$row->tid][$row->occid] = trim($displayStr);
}
$vResult->free();
}
Expand Down Expand Up @@ -333,8 +334,8 @@ private function setImages(){
$rs = $this->conn->query($sql);
$matchedArr = array();
while($row = $rs->fetch_object()){
$this->taxaList[$row->tid]["url"] = $row->url;
$this->taxaList[$row->tid]["tnurl"] = $row->thumbnailurl;
$this->taxaList[$row->tid]['url'] = $row->url;
$this->taxaList[$row->tid]['tnurl'] = $row->thumbnailurl;
$matchedArr[] = $row->tid;
}
$rs->free();
Expand All @@ -350,8 +351,8 @@ private function setImages(){
//echo $sql;
$rs2 = $this->conn->query($sql2);
while($row2 = $rs2->fetch_object()){
$this->taxaList[$row2->tid]["url"] = $row2->url;
$this->taxaList[$row2->tid]["tnurl"] = $row2->thumbnailurl;
$this->taxaList[$row2->tid]['url'] = $row2->url;
$this->taxaList[$row2->tid]['tnurl'] = $row2->thumbnailurl;
}
$rs2->free();
}
Expand All @@ -365,7 +366,7 @@ private function setVernaculars(){
'FROM taxstatus ts1 INNER JOIN taxstatus ts2 ON ts1.tidaccepted = ts2.tidaccepted '.
'INNER JOIN taxavernaculars v ON ts2.tid = v.tid '.
'WHERE ts1.taxauthid = 1 AND ts2.taxauthid = 1 AND (ts1.tid IN('.implode(',',array_keys($this->taxaList)).')) ';
if($this->language) $sql .= 'AND v.language = "'.$this->language.'" ';
if($this->langId) $sql .= 'AND v.langid = '.$this->langId.' ';
$sql .= 'ORDER BY v.sortsequence DESC ';
//echo $sql; exit;
$rs = $this->conn->query($sql);
Expand Down Expand Up @@ -523,14 +524,16 @@ public function downloadChecklistCsv(){
$this->showAuthors = 1;
if($taxaArr = $this->getTaxaList(1,0)){
$fh = fopen('php://output', 'w');
$headerArr = array('Family','ScientificName','ScientificNameAuthorship');
$headerArr = array('Family','ScientificName','ScientificNameAuthorship','morphoSpecies');
if($this->showCommon) $headerArr[] = 'CommonName';
$headerArr[] = 'Notes';
$headerArr[] = 'TaxonId';
fputcsv($fh,$headerArr);
foreach($taxaArr as $tid => $tArr){
unset($outArr);
$outArr = array($tArr['family'],html_entity_decode($tArr['sciname'],ENT_QUOTES|ENT_XML1),html_entity_decode($tArr['author'],ENT_QUOTES|ENT_XML1));
$outArr = array($tArr['family']);
$outArr[] = html_entity_decode($tArr['sciname'],ENT_QUOTES|ENT_XML1);
$outArr[] = html_entity_decode($tArr['author'],ENT_QUOTES|ENT_XML1);
$outArr[] = html_entity_decode($tArr['morphospecies'],ENT_QUOTES|ENT_XML1);
if($this->showCommon) $outArr[] = (array_key_exists('vern',$tArr)?html_entity_decode($tArr['vern'],ENT_QUOTES|ENT_XML1):'');
$outArr[] = (array_key_exists('notes',$tArr)?strip_tags(html_entity_decode($tArr['notes'],ENT_QUOTES|ENT_XML1)):'');
$outArr[] = $tid;
Expand All @@ -549,7 +552,7 @@ private function setClSql(){
if($this->childClidArr){
$clidStr .= ','.implode(',',array_keys($this->childClidArr));
}
$this->basicSql = 'SELECT t.tid, ctl.clid, CONCAT_WS(" ",t.sciname, ctl.morphospecies) as sciname, t.author, t.unitname1, t.rankid, ctl.habitat, ctl.abundance, ctl.notes, ctl.source, ts.parenttid, ';
$this->basicSql = 'SELECT t.tid, ctl.clid, t.sciname, t.author, ctl.morphospecies, t.unitname1, t.rankid, ctl.habitat, ctl.abundance, ctl.notes, ctl.source, ts.parenttid, ';
if($this->thesFilter){
$this->basicSql .= 'ts2.family FROM taxa t INNER JOIN taxstatus ts ON t.tid = ts.tidaccepted '.
'INNER JOIN fmchklsttaxalink ctl ON ts.tid = ctl.tid '.
Expand Down Expand Up @@ -601,34 +604,28 @@ private function setClSql(){
}

//Checklist editing functions
public function addNewSpecies($dataArr){
public function addNewSpecies($postArr){
if(!$this->clid) return 'ERROR adding species: checklist identifier not set';
$insertStatus = false;
$dataArr = array('tid','familyoverride','morphospecies','habitat','abundance','notes','source','internalnotes');
$colSql = '';
$valueSql = '';
foreach($dataArr as $k =>$v){
$colSql .= ','.$k;
if($v){
if(is_numeric($v)){
$valueSql .= ','.$v;
}
else{
$valueSql .= ',"'.$this->cleanInStr($v).'"';
}
}
else{
$valueSql .= ',NULL';
foreach($dataArr as $v){
if(isset($postArr[$v]) && $postArr[$v]){
$colSql .= ','.$v;
if(is_numeric($postArr[$v])) $valueSql .= ','.$postArr[$v];
else $valueSql .= ',"'.$this->cleanInStr($postArr[$v]).'"';
}
}
$conn = MySQLiConnectionFactory::getCon('write');
$sql = 'INSERT INTO fmchklsttaxalink (clid'.$colSql.') VALUES ('.$this->clid.$valueSql.')';
if($conn->query($sql)){
if($this->clMetadata['type'] == 'rarespp' && $this->clMetadata['locality'] && is_numeric($dataArr['tid'])){
if($this->clMetadata['type'] == 'rarespp' && $this->clMetadata['locality'] && is_numeric($postArr['tid'])){
$sqlRare = 'UPDATE omoccurrences o INNER JOIN taxstatus ts1 ON o.tidinterpreted = ts1.tid '.
'INNER JOIN taxstatus ts2 ON ts1.tidaccepted = ts2.tidaccepted '.
'SET o.localitysecurity = 1 '.
'WHERE (o.localitysecurity IS NULL OR o.localitysecurity = 0) AND (o.localitySecurityReason IS NULL) '.
'AND (ts1.taxauthid = 1) AND (ts2.taxauthid = 1) AND (o.stateprovince = "'.$this->clMetadata['locality'].'") AND (ts2.tid = '.$dataArr['tid'].')';
'AND (ts1.taxauthid = 1) AND (ts2.taxauthid = 1) AND (o.stateprovince = "'.$this->clMetadata['locality'].'") AND (ts2.tid = '.$postArr['tid'].')';
//echo $sqlRare; exit;
$conn->query($sqlRare);
}
Expand Down Expand Up @@ -669,7 +666,7 @@ public function getChecklists(){
}
else{
$pid = 0;
$projName = 'Undefinded Inventory Project';
$projName = 'Miscellaneous Inventories';
}
$retArr[$pid]['name'] = $this->cleanOutStr($projName);
$retArr[$pid]['clid'][$row->clid] = $this->cleanOutStr($row->name).($row->access=='private'?' (Private)':'');
Expand Down Expand Up @@ -851,15 +848,14 @@ public function getPid(){
}

public function setLanguage($l){
$l = strtolower($l);
if($l == "en"){
$this->language = 'English';
}
elseif($l == "es"){
$this->language = 'Spanish';
}
if(is_numeric($l)) $this->langId = $l;
else{
$this->language = $l;
$sql = 'SELECT langid FROM adminlanguages WHERE langname = "'.$this->cleanInStr($l).'" OR iso639_1 = "'.$this->cleanInStr($l).'"';
$rs = $this->conn->query($sql);
while($r = $rs->fetch_object()){
$this->langId = $r->langid;
}
$rs->free();
}
}

Expand Down
9 changes: 4 additions & 5 deletions classes/GamesManager.php
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
<?php
include_once($SERVER_ROOT.'/config/dbconnection.php');
include_once($SERVER_ROOT.'/classes/Manager.php');

class GamesManager {
class GamesManager extends Manager{

private $conn;
private $clid;
private $clidStr;
private $dynClid;
Expand All @@ -12,11 +11,11 @@ class GamesManager {
private $langId;

public function __construct(){
$this->conn = MySQLiConnectionFactory::getCon("readonly");
parent::__construct();
}

public function __destruct(){
if(!($this->conn === null)) $this->conn->close();
parent::__destruct();
}

public function getChecklistArr($projId = 0){
Expand Down
Loading

0 comments on commit b3448f9

Please sign in to comment.