Skip to content

Commit

Permalink
Merge pull request #41 from GuatemalaPortal/master
Browse files Browse the repository at this point in the history
Update production
  • Loading branch information
GregoryPost committed May 6, 2024
2 parents fbeeae1 + 7248cc0 commit 0ae5f73
Show file tree
Hide file tree
Showing 16 changed files with 118 additions and 76 deletions.
18 changes: 9 additions & 9 deletions classes/ChecklistAdmin.php
Original file line number Diff line number Diff line change
Expand Up @@ -119,16 +119,16 @@ public function getChildrenChecklist(){
$retArr = Array();
$targetStr = $this->clid;
do{
$sql = 'SELECT c.clid, c.name, child.clid as pclid '.
'FROM fmchklstchildren child INNER JOIN fmchecklists c ON child.clidchild = c.clid '.
'WHERE child.clid IN('.trim($targetStr,',').') '.
'ORDER BY c.name ';
$sql = 'SELECT c.clid, c.name, child.clid as pclid
FROM fmchklstchildren child INNER JOIN fmchecklists c ON child.clidchild = c.clid
WHERE child.clid IN(' . trim($targetStr, ',') . ') AND child.clid != child.clidchild
ORDER BY c.name ';
$rs = $this->conn->query($sql);
$targetStr = '';
while($r = $rs->fetch_object()){
$retArr[$r->clid]['name'] = $r->name;
$retArr[$r->clid]['pclid'] = $r->pclid;
$targetStr .= ','.$r->clid;
$targetStr .= ',' . $r->clid;
}
$rs->free();
}while($targetStr);
Expand All @@ -140,16 +140,16 @@ public function getParentChecklists(){
$retArr = Array();
$targetStr = $this->clid;
do{
$sql = 'SELECT c.clid, c.name, child.clid as pclid '.
'FROM fmchklstchildren child INNER JOIN fmchecklists c ON child.clid = c.clid '.
'WHERE child.clidchild IN('.trim($targetStr,',').') ';
$sql = 'SELECT c.clid, c.name
FROM fmchklstchildren child INNER JOIN fmchecklists c ON child.clid = c.clid
WHERE child.clidchild IN(' . trim($targetStr, ',') . ') AND child.clid != child.clidchild';
$rs = $this->conn->query($sql);
$targetStr = '';
while($r = $rs->fetch_object()){
$retArr[$r->clid] = $r->name;
$targetStr .= ','.$r->clid;
}
if($targetStr) $targetStr = substr($targetStr,1);
if($targetStr) $targetStr = substr($targetStr, 1);
$rs->free();
}while($targetStr);
asort($retArr);
Expand Down
2 changes: 1 addition & 1 deletion classes/ChecklistManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ public function getClMetaData(){
public function getParentChecklist(){
$parentArr = array();
if($this->clid){
$sql = 'SELECT cl.clid, cl.name FROM fmchecklists cl INNER JOIN fmchklstchildren ch ON cl.clid = ch.clid WHERE ch.clidchild = '.$this->clid;
$sql = 'SELECT cl.clid, cl.name FROM fmchecklists cl INNER JOIN fmchklstchildren ch ON cl.clid = ch.clid WHERE ch.clid != ch.clidchild AND ch.clidchild = ' . $this->clid;
$rs = $this->conn->query($sql);
if($r = $rs->fetch_object()){
$parentArr[$r->clid] = $r->name;
Expand Down
2 changes: 1 addition & 1 deletion classes/ChecklistVoucherAdmin.php
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ public function setCollectionVariables(){
}
$result->free();
//Get children checklists
$sqlChildBase = 'SELECT clidchild FROM fmchklstchildren WHERE clid IN(';
$sqlChildBase = 'SELECT clidchild FROM fmchklstchildren WHERE clid != clidchild AND clid IN(';
$sqlChild = $sqlChildBase.$this->clid.')';
do{
$childStr = "";
Expand Down
2 changes: 1 addition & 1 deletion classes/GamesManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -343,7 +343,7 @@ public function getNameGameWordList(){
//Misc functions
private function setClidStr(){
$clidArr = array($this->clid);
$sqlBase = 'SELECT clidchild FROM fmchklstchildren WHERE clid IN(';
$sqlBase = 'SELECT clidchild FROM fmchklstchildren WHERE clid != clidchild AND clid IN(';
$sql = $sqlBase.$this->clid.')';
do{
$childStr = "";
Expand Down
36 changes: 20 additions & 16 deletions classes/ImInventories.php
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ public function getChecklistMetadata($pid){
$result->free();
if($retArr){
if($retArr['type'] == 'excludespp'){
$sql = 'SELECT clid FROM fmchklstchildren WHERE clidchild = '.$this->clid;
$sql = 'SELECT clid FROM fmchklstchildren WHERE clid != clidchild AND clidchild = ' . $this->clid;
$rs = $this->conn->query($sql);
while($r = $rs->fetch_object()){
$retArr['excludeparent'] = $r->clid;
Expand Down Expand Up @@ -155,13 +155,15 @@ public function updateChecklist($inputArr){
}
}
elseif($inputArr['type'] == 'excludespp' && is_numeric($inputArr['excludeparent'])){
$sql = 'INSERT IGNORE INTO fmchklstchildren(clid, clidchild) VALUES(?, ?)';
if($stmt = $this->conn->prepare($sql)){
$stmt->bind_param('ii', $inputArr['excludeparent'], $this->clid);
if(!$stmt->execute()){
$this->errorMessage = 'Error updating parent checklist for exclusion species list: '.$this->conn->error;
if($inputArr['excludeparent'] != $this->clid){
$sql = 'INSERT IGNORE INTO fmchklstchildren(clid, clidchild) VALUES(?, ?)';
if($stmt = $this->conn->prepare($sql)){
$stmt->bind_param('ii', $inputArr['excludeparent'], $this->clid);
if(!$stmt->execute()){
$this->errorMessage = 'Error updating parent checklist for exclusion species list: ' . $this->conn->error;
}
$stmt->close();
}
$stmt->close();
}
}
}
Expand Down Expand Up @@ -229,17 +231,19 @@ private function deleteChecklistTaxaLinks(){
//Child-Parent checklist functions
public function insertChildChecklist($clidChild, $modifiedUid){
$status = false;
$sql = 'INSERT INTO fmchklstchildren(clid, clidchild, modifiedUid) VALUES(?,?,?) ';
if($stmt = $this->conn->prepare($sql)){
$stmt->bind_param('iii', $this->clid, $clidChild, $modifiedUid);
if($stmt->execute()){
if($stmt->affected_rows && !$stmt->error){
$status = true;
if($this->clid != $clidChild){
$sql = 'INSERT INTO fmchklstchildren(clid, clidchild, modifiedUid) VALUES(?,?,?) ';
if($stmt = $this->conn->prepare($sql)){
$stmt->bind_param('iii', $this->clid, $clidChild, $modifiedUid);
if($stmt->execute()){
if($stmt->affected_rows && !$stmt->error){
$status = true;
}
else $this->errorMessage = 'ERROR inserting child checklist record (2): ' . $stmt->error;
}
else $this->errorMessage = 'ERROR inserting child checklist record (2): '.$stmt->error;
else $this->errorMessage = 'ERROR inserting child checklist record (1): ' . $stmt->error;
$stmt->close();
}
else $this->errorMessage = 'ERROR inserting child checklist record (1): '.$stmt->error;
$stmt->close();
}
return $status;
}
Expand Down
10 changes: 7 additions & 3 deletions classes/OccurrenceIndividual.php
Original file line number Diff line number Diff line change
Expand Up @@ -237,9 +237,10 @@ private function setDeterminations(){

private function setImages(){
global $imageDomain;
$sql = 'SELECT i.imgid, i.url, i.thumbnailurl, i.originalurl, i.sourceurl, i.notes, i.caption, CONCAT_WS(" ",u.firstname,u.lastname) as innerPhotographer, i.photographer '.
'FROM images i LEFT JOIN users u ON i.photographeruid = u.uid '.
'WHERE (i.occid = '.$this->occid.') ORDER BY i.sortoccurrence,i.sortsequence';
$sql = 'SELECT i.imgid, i.url, i.thumbnailurl, i.originalurl, i.sourceurl, i.notes, i.caption,
CONCAT_WS(" ",u.firstname,u.lastname) as innerPhotographer, i.photographer, i.rights, i.accessRights, i.copyright
FROM images i LEFT JOIN users u ON i.photographeruid = u.uid
WHERE (i.occid = '.$this->occid.') ORDER BY i.sortoccurrence,i.sortsequence';
$rs = $this->conn->query($sql);
if($rs){
while($row = $rs->fetch_object()){
Expand All @@ -260,6 +261,9 @@ private function setImages(){
$this->occArr['imgs'][$imgId]['sourceurl'] = $row->sourceurl;
$this->occArr['imgs'][$imgId]['caption'] = $row->caption;
$this->occArr['imgs'][$imgId]['photographer'] = $row->photographer;
$this->occArr['imgs'][$imgId]['rights'] = $row->rights;
$this->occArr['imgs'][$imgId]['accessrights'] = $row->accessRights;
$this->occArr['imgs'][$imgId]['copyright'] = $row->copyright;
if($row->innerPhotographer) $this->occArr['imgs'][$imgId]['photographer'] = $row->innerPhotographer;
}
$rs->free();
Expand Down
3 changes: 2 additions & 1 deletion classes/TPDescEditorManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,7 @@ public function insertDescriptionBlock($postArr){
public function updateDescriptionBlock($postArr){
$status = false;
if(is_numeric($postArr['tdbid'])){
$blockFieldArr = array('source' => 's', 'sourceurl' => 's', 'displaylevel' => 'i', 'notes' => 's' );
$blockFieldArr = array( 'caption' => 's', 'source' => 's', 'sourceurl' => 's', 'displaylevel' => 'i', 'notes' => 's', 'langid' => 's' );
$sqlFrag = '';
$paramArr = array();
$paramType = '';
Expand Down Expand Up @@ -206,6 +206,7 @@ public function updateDescriptionBlock($postArr){
else $this->errorMessage = $this->conn->error;
}
// Temp code until total refactor: transfer selected fields to decription profile
unset($postArr['caption']);
if(isset($postArr['source'])){
$postArr['publication'] = $postArr['source'];
}
Expand Down
4 changes: 2 additions & 2 deletions classes/TaxonProfile.php
Original file line number Diff line number Diff line change
Expand Up @@ -608,7 +608,7 @@ public function getSppArray($page, $taxaLimit, $pid, $clid){
//Misc functions
private function getChildrenClid($clid){
$clidArr = array($clid);
$sqlBase = 'SELECT clidchild FROM fmchklstchildren WHERE clid IN(';
$sqlBase = 'SELECT clidchild FROM fmchklstchildren WHERE clid != clidchild AND clid IN(';
$sql = $sqlBase.$clid.')';
do{
$childStr = '';
Expand Down Expand Up @@ -825,7 +825,7 @@ public function getParentChecklist($clid){
//Direct parent checklist
$sql = 'SELECT c.clid, c.name '.
'FROM fmchecklists c INNER JOIN fmchklstchildren cp ON c.clid = cp.clid '.
'WHERE (cp.clidchild = '.$clid.')';
'WHERE cp.clid != cp.clidchild AND (cp.clidchild = '.$clid.')';
$rs = $this->conn->query($sql);
if($r = $rs->fetch_object()){
$retArr[$r->clid] = $r->name;
Expand Down
36 changes: 14 additions & 22 deletions classes/TaxonomyHarvester.php
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,7 @@ private function addChecklistBankTaxon($taxonArr){
if(preg_match('/^([A-Z]{1}[a-z]+)\s{1}\(\D+\)\s{1}([a-z .]+)/', $approvedNameUsageArr[$targetKey]['accepted']['name']['scientificName'], $m)){
$acceptedBaseName = $m[1].' '.$m[2];
if($approvedNameUsageArr[$targetKey]['name']['scientificName'] == $acceptedBaseName){
$approvedNameUsageArr[0] = $approvedNameUsageArr[$targetKey]['name']['scientificName'];
$approvedNameUsageArr[0] = $approvedNameUsageArr[$targetKey];
$targetKey = 0;
}
}
Expand Down Expand Up @@ -473,7 +473,8 @@ public function fetchColNode($nodeSciname){
$this->logOrEcho('ABORT: target name is null',1);
return false;
}
$url = 'https://api.checklistbank.org/dataset/3/nameusage/search?content=SCIENTIFIC_NAME&q='.str_replace(' ','%20', $nodeSciname).'&offset=0&limit=100';
$datasetKey = 3;
$url = 'https://api.checklistbank.org/dataset/' . $datasetKey . '/nameusage/search?content=SCIENTIFIC_NAME&q=' . urlencode($nodeSciname) . '&offset=0&limit=100';
//echo '<div>API link: <a href="'.$url.'" target="_blank">'.$url.'</a></div>';
$contentArr = $this->getContentString($url);
$content = $contentArr['str'];
Expand All @@ -484,35 +485,30 @@ public function fetchColNode($nodeSciname){
$cbNameUsage = $result['usage'];
$nameUsageID = $cbNameUsage['id'];
if(!isset($cbNameUsage['name']['scientificName'])){
$retArr[$nameUsageID]['error'] = 'CoL ID-'.$nameUsageID.' skipped, unable to return name...';
//$retArr[$nameUsageID]['error'] = 'CoL ID-'.$nameUsageID.' skipped, unable to return name...';
continue;
}
$name = $cbNameUsage['name']['scientificName'];
if($nodeSciname != $name){
$retArr[$nameUsageID]['error'] = $name.' skipped, not an exact match...';
if(strtolower($nodeSciname) != strtolower($name)){
//$retArr[$nameUsageID]['error'] = $name.' skipped, not an exact match...';
continue;
}
$taxonArr = array('sciname' => $nodeSciname);
$taxonArr = array('sciname' => $name);
$this->buildTaxonArr($taxonArr);
$classArr = $this->getFormattedClassification($cbNameUsage, $taxonArr, $result['classification']);
if($classArr) $cbNameUsage['formattedClassification'] = $classArr;
$taxonKingdom = $this->getChecklistBankParent($cbNameUsage, 'Kingdom');
if($this->kingdomName && $this->kingdomName != $taxonKingdom){
$retArr[$nameUsageID]['error'] = '<a href="https://api.checklistbank.org/dataset/3/nameusage/'.$nameUsageID.'" target="_blank">'.$name.'</a> skipped, wrong kingdom: '.$this->kingdomName.' (!= '.$taxonKingdom.')';
$retArr[$nameUsageID]['error'] = '<a href="https://api.checklistbank.org/dataset/' . $datasetKey . '/nameusage/' . $nameUsageID . '" target="_blank">' . $name . '</a> skipped, wrong kingdom: ' . $this->kingdomName . ' (!= ' . $taxonKingdom . ')';
continue;
}
$retArr[$nameUsageID]['label'] = $cbNameUsage['labelHtml'];
$retArr[$nameUsageID]['datasetKey'] = $cbNameUsage['datasetKey'];
$retArr[$nameUsageID]['status'] = $cbNameUsage['status'];
if(isset($cbNameUsage['link'])) $retArr[$nameUsageID]['link'] = $cbNameUsage['link'];

$testUrl = 'https://api.checklistbank.org/dataset/3/tree/'.$nameUsageID.'/children?extinct=false';
$testContentArr = $this->getContentString($testUrl);
$testContent = $testContentArr['str'];
$testArr = json_decode($testContent,true);
if(isset($testArr['result'][0]['name_status']) && $testArr['result'][0]['name_status'] == 'accepted name'){
$retArr[$nameUsageID]['status'] = $cbNameUsage['status'];
if($cbNameUsage['status'] == 'accepted'){
$retArr[$nameUsageID]['isPreferred'] = true;
$retArr[$nameUsageID]['apiUrl'] = $testUrl;
$retArr[$nameUsageID]['apiUrl'] = 'https://api.checklistbank.org/dataset/' . $datasetKey . '/tree/' . $nameUsageID . '/children?&extinct=false';
}
else $retArr[$nameUsageID]['isPreferred'] = false;
}
Expand Down Expand Up @@ -551,8 +547,8 @@ private function addColChildern($id, $datasetKey, $nodeSciname, $parentTid, $ran
$contentArr = $this->getContentString($url);
if(isset($contentArr['str'])){
$content = $contentArr['str'];
$resultArr = json_decode($content,true);
if(!$resultArr['empty']){
$resultArr = json_decode($content, true);
if($resultArr['total']){
$this->logOrEcho('Will evaluate '.$resultArr['total'].' children of '.$nodeSciname.': '.$this->getChildrenStr($resultArr['result']),2);
foreach($resultArr['result'] as $nodeArr){
$this->transactionCount++;
Expand All @@ -574,10 +570,6 @@ private function addColChildern($id, $datasetKey, $nodeSciname, $parentTid, $ran
}
}
}
else{
$this->logOrEcho('ABORT: unable to get CoL node data: '.$url,1);
return false;
}
}
else{
if($contentArr['code'] == 401) $this->logOrEcho('ABORT: CoL API authorization required:'.$url,1);
Expand All @@ -590,7 +582,7 @@ private function addColChildern($id, $datasetKey, $nodeSciname, $parentTid, $ran
private function getChildrenStr($resultArr){
$childArr = array();
foreach($resultArr as $itemArr){
$childArr[] = $itemArr['name']['scientificName'];
$childArr[] = $itemArr['name'];
}
return implode(', ',$childArr);
}
Expand Down
10 changes: 6 additions & 4 deletions collections/individual/index.php
Original file line number Diff line number Diff line change
Expand Up @@ -956,6 +956,10 @@ function initializeMap(){
if($imgArr['url'] && substr($thumbUrl,0,7)!='process' && $imgArr['url'] != $imgArr['lgurl']) echo '<div><a href="'.$imgArr['url'].'" target="_blank">'.$LANG['OPEN_MEDIUM'].'</a></div>';
if($imgArr['lgurl']) echo '<div><a href="'.$imgArr['lgurl'].'" target="_blank">'.$LANG['OPEN_LARGE'].'</a></div>';
if($imgArr['sourceurl']) echo '<div><a href="'.$imgArr['sourceurl'].'" target="_blank">'.$LANG['OPEN_SOURCE'].'</a></div>';
//Use image rights settings as the default for current record
if($imgArr['rights']) $collMetadata['rights'] = $imgArr['rights'];
if($imgArr['copyright']) $collMetadata['rightsholder'] = $imgArr['copyright'];
if($imgArr['accessrights']) $collMetadata['accessrights'] = $imgArr['accessrights'];
?>
</div>
<?php
Expand All @@ -966,11 +970,9 @@ function initializeMap(){
}
//Rights
$rightsStr = $collMetadata['rights'];
if($collMetadata['rights']){
$rightsHeading = '';
if(isset($RIGHTS_TERMS)) $rightsHeading = array_search($rightsStr,$RIGHTS_TERMS);
if($rightsStr){
if(substr($collMetadata['rights'],0,4) == 'http'){
$rightsStr = '<a href="'.$rightsStr.'" target="_blank">'.($rightsHeading?$rightsHeading:$rightsStr).'</a>';
$rightsStr = '<a href="'.$rightsStr.'" target="_blank">' . $rightsStr . '</a>';
}
$rightsStr = '<div style="margin-top:2px;"><label>'.$LANG['USAGE_RIGHTS'].':</label> '.$rightsStr.'</div>';
}
Expand Down
2 changes: 1 addition & 1 deletion config/symbbase.php
Original file line number Diff line number Diff line change
Expand Up @@ -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.25';
$CODE_VERSION = '3.0.26';

if(!isset($CLIENT_ROOT) && isset($clientRoot)) $CLIENT_ROOT = $clientRoot;
if(substr($CLIENT_ROOT,-1) == '/') $CLIENT_ROOT = substr($CLIENT_ROOT,0,strlen($CLIENT_ROOT)-1);
Expand Down
2 changes: 1 addition & 1 deletion content/lang/taxa/taxonomy/batchloader.en.php
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@
$LANG['WEB_SERVICE_URL'] = 'Web Service URL';
$LANG['API_URL'] = 'API URL';
$LANG['COL_URL'] = 'CoL URL';
$LANG['TARGET_THIS_NODE'] = 'Target this node to harvest children';
$LANG['IMPORT_THIS_NODE'] = 'Import this node and child taxa';
$LANG['NO_VALID_COL'] = 'ERROR: no valid CoL targets returned';
$LANG['TAXA_LOADED_SUCCESS'] = 'taxa within the target node have been loaded successfully';
$LANG['TAX_UPLOAD_INSTRUCTIONS'] = 'Flat structured, CSV (comma delimited) text files can be uploaded here.
Expand Down
2 changes: 1 addition & 1 deletion content/lang/taxa/taxonomy/batchloader.es.php
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@
$LANG['WEB_SERVICE_URL'] = 'URL del Servicio Web';
$LANG['API_URL'] = 'URL de API ';
$LANG['COL_URL'] = 'URL de CoL';
$LANG['TARGET_THIS_NODE'] = 'Seleccione este nodo para capturar taxa hijos';
$LANG['IMPORT_THIS_NODE'] = 'Seleccione este nodo para capturar taxa hijos';
$LANG['NO_VALID_COL'] = 'ERROR: no se encontraron taxa objetivos en CoL';
$LANG['TAXA_LOADED_SUCCESS'] = 'taxa entre el nodo objetivo ha sido cargado exitosamente';
$LANG['TAX_UPLOAD_INSTRUCTIONS'] = 'Archivos de texto planos CSV (delimitados por coma) pueden ser cargados aquí.
Expand Down
35 changes: 31 additions & 4 deletions js/dojo-1.17.3/dojo/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 0ae5f73

Please sign in to comment.