PageRenderTime 62ms CodeModel.GetById 19ms RepoModel.GetById 1ms app.codeStats 0ms

/source/includes/function/base.php

http://prosporous.googlecode.com/
PHP | 1076 lines | 872 code | 61 blank | 143 comment | 129 complexity | 993b3fa9e6e6af58f544ad7db7e78f21 MD5 | raw file
Possible License(s): LGPL-2.1
  1. <?php
  2. //define('ROOT_PATH','sevenel/');
  3. function __autoload($class){
  4. Sf('ext',$class)&&$class='ext';
  5. switch($class){
  6. case "Smarty" :{
  7. include($_SERVER['DOCUMENT_ROOT'].ROOT_PATH."Plug-in/smarty/Smarty.class.php");
  8. break;
  9. }
  10. case "xajax" :{
  11. include($_SERVER['DOCUMENT_ROOT'].ROOT_PATH."Plug-in/xajax/xajax_core/xajax.inc.php");
  12. break;
  13. }
  14. case "ext" :{
  15. include($_SERVER['DOCUMENT_ROOT'].ROOT_PATH."includes/classes/ext/".$class.".php");
  16. break;
  17. }
  18. default:{
  19. include($_SERVER['DOCUMENT_ROOT'].ROOT_PATH."includes/classes/".ucfirst($class).".php");
  20. break;
  21. }
  22. }
  23. }
  24. /**array_unique;array ???? $xian ???????
  25. * @param unknown_type $ar
  26. * @xian str 0 ??????? 1 ??????????
  27. * @return array ???? $xian ???????
  28. */
  29. function Au($ar,$xian=0){
  30. $ar= array_unique($ar);
  31. switch($xian){
  32. case 0:{
  33. return $ar;
  34. }
  35. case 1:{
  36. $var1=array();
  37. foreach($ar as $valar){
  38. if($valar!=''){
  39. $var1[]=$valar;
  40. }
  41. }
  42. return $var1;
  43. }
  44. default :{
  45. $var1=array();
  46. foreach($ar as $valar){
  47. if(!in_array($valar,$xian)){
  48. $var1[]=$valar;
  49. }
  50. }
  51. return $var1;
  52. }
  53. }
  54. }
  55. function Dgd($arr){
  56. //tn tablename
  57. //cd condition
  58. //limit num
  59. //sql
  60. //rt return type json serialize default return array
  61. //start
  62. //count
  63. //column
  64. //tp
  65. //db database handle
  66. //ce test sql 1 echo sql and exit 2 only echo sql;
  67. $arg=func_get_args();
  68. //print_r($arg);
  69. $arg=$arg[0];
  70. global ${$arg['db']};
  71. autoAddField(${$arg['db']}->getc('prefix')."_".$arg['tn'],'del');
  72. switch(1){
  73. case $arg['tn']&&$arg['cd']&&$arg['limit']&&$arg['start']=='':{
  74. $sql="SELECT * FROM `".${$arg['db']}->getc('prefix')."_".$arg['tn']."` WHERE 1 and ".$arg['cd']." limit ".$arg['limit'].";";
  75. $arg['column']&&$sql="SELECT ".$arg['column']." FROM `".${$arg['db']}->getc('prefix')."_".$arg['tn']."` WHERE 1 and ".$arg['cd']." limit ".$arg['limit'].";";
  76. break;
  77. }
  78. case $arg['tn']&&$arg['cd']&&$arg['limit']&&$arg['start']!='':{
  79. $sql="SELECT * FROM `".${$arg['db']}->getc('prefix')."_".$arg['tn']."` WHERE 1 and ".$arg['cd']." limit ".$arg['start'].",".$arg['limit'].";";
  80. $arg['column']&&$sql="SELECT ".$arg['column']." FROM `".${$arg['db']}->getc('prefix')."_".$arg['tn']."` WHERE 1 and ".$arg['cd']." limit ".$arg['start'].",".$arg['limit'].";";
  81. break;
  82. }
  83. case $arg['sql']!='':{
  84. $sql=$arg['sql'];
  85. break;
  86. }
  87. default:{
  88. $sql="SELECT * FROM `".${$arg['db']}->getc('prefix')."_".$arg['tn']."` WHERE 1 and ".$arg['cd']." ;";
  89. $arg['column']&&$sql="SELECT ".$arg['column']." FROM `".${$arg['db']}->getc('prefix')."_".$arg['tn']."` WHERE 1 and ".$arg['cd']." ;"; break;
  90. }
  91. }
  92. $arg['ce']==1 && die($sql);
  93. $arg['ce']==2 && Ja($sql);
  94. $result_arr=${$arg['db']}->Dqsql($sql);
  95. //print_r($result_arr);
  96. if($arg['total']){
  97. $result_total=${$arg['db']}->Dqsql("SELECT count(*) as arrtotal FROM `".${$arg['db']}->getc('prefix')."_".$arg['tn']."` WHERE 1 and ".$arg['cd'].";");
  98. $result_arr1['data']=$result_arr;
  99. $result_arr1['total']=$result_total[0]['arrtotal'];
  100. $result_arr=$result_arr1;
  101. }
  102. if($result_arr){
  103. if ($arg['limit'] == 1) {
  104. if($result_arr[0]){
  105. $result_arr = $result_arr[0];
  106. }
  107. }
  108. //$arg['limit']==1&&$result_arr=$result_arr[0];
  109. if($arg['tp']){
  110. Tr($result_arr,$arg['tp']);
  111. }
  112. if($arg['rt']=='json'){
  113. $result_arr=json_encode($result_arr);
  114. }
  115. if($arg['rt']=='serialize'){
  116. $result_arr=serialize($result_arr);
  117. }
  118. return $result_arr;
  119. }else{
  120. return false;
  121. }
  122. }
  123. //initialization class
  124. function iniClass($name){
  125. foreach($name as $value){
  126. global ${$value['handle']};
  127. ${$value['handle']} = new $value['name']($value['args']);
  128. Sys::setc($value['name'],$value['handle']);
  129. //Ja($value['name']);
  130. }
  131. }
  132. //initialization js Plug-in
  133. function iniJs($name){
  134. global $jsstr;
  135. if(!is_array($name)){
  136. $temp[]=$name;
  137. $name=$temp;
  138. }
  139. foreach($name as $value){
  140. switch($value){
  141. case "ext":{
  142. $jsstr.="<link rel=\"stylesheet\" type=\"text/css\" href=\"".Js_path."/Plug-in/ext/resources/css/ext-all.css\" />
  143. <link rel=\"stylesheet\" type=\"text/css\" href=\"/Plug-in/ext/resources/css/xtheme-slate.css\" />
  144. <script type=\"text/javascript\" charset=\"utf-8\" src=\"".Js_path."/Plug-in/ext/adapter/ext/ext-base.js\"></script>
  145. <script type=\"text/javascript\" charset=\"utf-8\" src=\"".Js_path."/Plug-in/ext/ext-all.js\"></script><script type=\"text/javascript\">
  146. Ext.BLANK_IMAGE_URL = '".Js_path."/Plug-in/ext/resources/images/default/s.gif';
  147. </script>";
  148. break;
  149. }
  150. case "jsform":{
  151. break;
  152. }
  153. case "my97":{
  154. break;
  155. }
  156. case "lightbox":{
  157. $jsstr.="<link rel=\"stylesheet\" href=\"/Plug-in/lightbox/css/lightbox.css\" type=\"text/css\" media=\"screen\" />
  158. <script type=\"text/javascript\" src=\"/Plug-in/lightbox/prototype.js\"></script>
  159. <script type=\"text/javascript\" src=\"/Plug-in/lightbox/scriptaculous.js?load=effects\"></script>
  160. <script type=\"text/javascript\" src=\"/Plug-in/lightbox/lightbox.js\"></script>";
  161. break;
  162. }
  163. default:{
  164. }
  165. }
  166. }
  167. }
  168. /**
  169. * *********************
  170. * if No added the function json (javascript object notation) added
  171. */
  172. if ( !function_exists('json_decode') ){
  173. function json_decode($content, $assoc=false){
  174. require_once ($_SERVER['DOCUMENT_ROOT'].ROOT_PATH."includes/classes/Json.php");
  175. if ( $assoc ){
  176. $json = new Services_JSON(SERVICES_JSON_LOOSE_TYPE);
  177. } else {
  178. $json = new Services_JSON;
  179. }
  180. return $json->decode($content);
  181. }
  182. }
  183. if ( !function_exists('json_encode') ){
  184. function json_encode($content){
  185. require_once ($_SERVER['DOCUMENT_ROOT'].ROOT_PATH."includes/classes/Json.php");
  186. $json = new Services_JSON;
  187. return $json->encode($content);
  188. }
  189. }
  190. function stripslashes_deep($value)
  191. {
  192. $value = is_array($value) ?
  193. array_map('stripslashes_deep', $value) :
  194. stripslashes($value);
  195. return $value;
  196. }
  197. function _uri()
  198. {
  199. if (isset($_SERVER['REQUEST_URI']))
  200. {
  201. $uri = $_SERVER['REQUEST_URI'];
  202. }
  203. else
  204. {
  205. if (isset($_SERVER['argv']))
  206. {
  207. $uri = $_SERVER['PHP_SELF'] .'?'. $_SERVER['argv'][0];
  208. }
  209. else
  210. {
  211. $uri = $_SERVER['PHP_SELF'] .'?'. $_SERVER['QUERY_STRING'];
  212. }
  213. }
  214. return $uri;
  215. }
  216. function Sf($findme,$mystring ){
  217. $pos = strpos($mystring, $findme);
  218. if ($pos === false) {
  219. return false;
  220. } else {
  221. return true;
  222. }
  223. }
  224. function Tr($value,$tmpname){
  225. global $Tp;
  226. $Tp->assign($tmpname,$value);
  227. }
  228. function Ts($template,$type=0){
  229. global $Tp;
  230. $Tp->display($template);
  231. if($type ==1){
  232. exit;
  233. }
  234. }
  235. //????.
  236. function Mct(){
  237. list($usec, $sec) = explode(" ", microtime());
  238. return 100*(((float)$usec + (float)$sec));
  239. }
  240. //??gid??(????author by wangzuolong,????)
  241. function Bic() {
  242. list($usec, $sec) = explode(" ", microtime());
  243. $usec = $usec + (rand(1, 400) * rand(400, 900) * rand(900, 1300));
  244. $sec = $sec + (rand(1, 400) * rand(400, 900) * rand(900, 1300));
  245. return floor(100 * (((float) $usec + (float) $sec)));
  246. }
  247. function getip(){
  248. if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
  249. $ip = getenv("HTTP_CLIENT_IP");
  250. else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
  251. $ip = getenv("HTTP_X_FORWARDED_FOR");
  252. else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
  253. $ip = getenv("REMOTE_ADDR");
  254. else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
  255. $ip = $_SERVER['REMOTE_ADDR'];
  256. else
  257. $ip = "unknown";
  258. return($ip);
  259. }
  260. //????.
  261. function Ja($ar,$url=false){
  262. echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
  263. <html xmlns=\"http://www.w3.org/1999/xhtml\">
  264. <head>
  265. <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />
  266. <script language=\"javascript\" charset=\"utf-8\">
  267. alert('".addslashes($ar)."');";
  268. if($url){
  269. echo "window.location ='".$url."';";
  270. }
  271. echo "</script>";
  272. }
  273. function Di($database,$table,$pairs,$type=0){
  274. $app= new Dbt('d_'.$database,$table,$pairs);
  275. return $app->getInsertSQL($type);
  276. }
  277. function Du($database,$table,$pairs,$a,$b,$type=0){
  278. $app= new Dbt('d_'.$database,$table,$pairs);
  279. return $app->getUpdateSQL($a,$b,$type);
  280. }
  281. function Dd($database,$table,$a,$b,$type=0,$num){
  282. $app= new Dbt('d_'.$database,$table,$pairs);
  283. return $app->getDeleteSQL($a,$b,$type,$num);
  284. }
  285. function get_naps_bot()
  286. {
  287. $useragent = strtolower($_SERVER['HTTP_USER_AGENT']);
  288. if (strpos($useragent, 'googlebot') !== false){
  289. exit;
  290. exit;
  291. }
  292. if (strpos($useragent, 'msnbot') !== false){
  293. exit;
  294. exit;
  295. }
  296. if (strpos($useragent, 'slurp') !== false){
  297. exit;
  298. exit;
  299. }
  300. if (strpos($useragent, 'baiduspider') !== false){
  301. exit;
  302. exit;
  303. }
  304. if (strpos($useragent, 'sohu-search') !== false){
  305. exit;
  306. exit;
  307. }
  308. if (strpos($useragent, 'lycos') !== false){
  309. exit;
  310. exit;
  311. }
  312. if (strpos($useragent, 'robozilla') !== false){
  313. exit;
  314. exit;
  315. }
  316. }
  317. //get_naps_bot();
  318. //!eregi('win',$_SERVER['HTTP_USER_AGENT'])&&exit;
  319. function adxx($string) {
  320. if(!get_magic_quotes_gpc()) {
  321. if(is_array($string)) {
  322. foreach($string as $key => $val) {
  323. $string[$key] = adxx($val);
  324. }
  325. } else {
  326. $string = addslashes($string);
  327. }
  328. }
  329. return $string;
  330. }
  331. function Jt($url,$text="",$time="0.5",$go="0",$templates="loading.html"){
  332. global $Tp;
  333. if (!isset($url)) {
  334. $url="/index.php";
  335. }
  336. $time*=1000;
  337. if($go!="0"){
  338. echo "<script LANGUAGE=\"Javascript\">";
  339. echo "window.location= \"$url\" ";
  340. echo "</script>";
  341. exit;
  342. }
  343. $Tp->assign('url',$url);
  344. $Tp->assign('msg',$text);
  345. $Tp->assign('time',$time);
  346. Ts($templates);
  347. exit();
  348. }
  349. function Jc($var){ global $_POST ,$_GET,$_FILES,$_SESSION,$_REQUEST,$_SERVER,$_COOKIE,$ttt;
  350. print("<pre>");
  351. switch ($var)
  352. {
  353. case 'p':
  354. print_r($_POST);
  355. break;
  356. case 'g':
  357. print_r($_GET);
  358. break;
  359. case 'r':
  360. print_r($_REQUEST);
  361. break;
  362. case 's':
  363. print_r($_SESSION);
  364. break;
  365. case 'f':
  366. print_r($_FILES);
  367. break;
  368. case 'c':
  369. print_r($_COOKIE);
  370. break;
  371. case 'e':
  372. print_r($_SERVER);
  373. break;
  374. case 't':
  375. $ttt->debugging = true;
  376. break;
  377. default:
  378. print_r($var);
  379. }
  380. print("</pre>");
  381. }
  382. function judge($para){
  383. return $para?'<font color=green>??<b>?</b></font>':'<font color=red>???<b>×</b></font>';
  384. }
  385. function ext_request($msg){
  386. echo "{success:true,msg:'$msg'}";
  387. exit();
  388. }
  389. function ext_request_failure($msg){
  390. echo "{failure:true,msg:'$msg'}";
  391. exit();
  392. }
  393. function randomkeys($length)
  394. {
  395. $pattern = "1234567890abcdefghijklmnopqrstuvwxyz";
  396. for($i=0;$i<$length;$i++)
  397. {
  398. $key .= $pattern{rand(0,35)};
  399. }
  400. return $key;
  401. }
  402. function gettabname($parent_id,$prefix,$noprefix=false){
  403. $table=Dgd(array(
  404. 'db'=>'d_sevenel',
  405. 'cd'=>"id = $parent_id",
  406. 'tn'=>"datamod",
  407. 'limit'=>'1'
  408. ));
  409. if($noprefix){
  410. return $table['tabname'];
  411. }else{
  412. $tabname = $prefix.'_'.$table['tabname'];
  413. return $tabname;
  414. }
  415. }
  416. function getItemType($items_array,$compare){
  417. foreach($items_array as $arrow=>$value){
  418. if($value['value']==$compare){
  419. $type = $value['type'];
  420. }
  421. }
  422. $type==''&&$type = " varchar(50) NOT NULL";
  423. return $type;
  424. }
  425. function getCommend($value){
  426. if($value==''){
  427. $value='';
  428. }else{
  429. $value=" COMMENT '".$value."'";
  430. }
  431. return $value;
  432. }
  433. function get_date($format,$timestamp = ''){
  434. $timeoffset = 8;
  435. empty($timestamp) && $timestamp = time();
  436. return gmdate($format,$timestamp+$timeoffset*3600);
  437. }
  438. function is_odd($num){
  439. if($num%2==0){
  440. return false;
  441. }
  442. else{
  443. return true;
  444. }
  445. }
  446. function tableid($tp,$table,$id){
  447. $temp=Dgd(array(
  448. 'db'=>'d_sevenel',
  449. 'cd'=>"id = '".$id."' ",
  450. 'tn'=>$table,
  451. 'limit'=>1,
  452. 'tp'=>$tp
  453. ));
  454. }
  455. function Dga($name,$var,$tttttt=0){
  456. $sql="SELECT * FROM `se_".$name."` WHERE 1 and ".$var." limit 1;";
  457. if($tttttt!=0)
  458. {echo $sql;
  459. exit;
  460. }mysql_query("Set Names '".DEFAULT_CHARSET."' ");
  461. $resouce=mysql_query($sql);
  462. if($temp=mysql_fetch_assoc($resouce)){
  463. //echo $temp."is".$temp[0];
  464. return $temp;
  465. }
  466. else
  467. {
  468. return false;
  469. }
  470. }
  471. function Dgs($name,$var,$tttttt=0){
  472. global $prefix;
  473. $sql="SELECT * FROM se_".$name." WHERE 1 and ".$var.";";
  474. if($tttttt!=0)
  475. {echo $sql;
  476. exit;
  477. }//echo $sql;
  478. mysql_query("Set Names '".DEFAULT_CHARSET."' ");
  479. $resouce=mysql_query($sql);
  480. $nownum=mysql_num_rows($resouce);
  481. while($temp=mysql_fetch_array($resouce))
  482. {
  483. $temp[znum]=$nownum;
  484. $t[]=$temp;
  485. //print_r($t);
  486. }
  487. if($t){
  488. return $t;
  489. }
  490. else
  491. {
  492. return false;
  493. }
  494. }
  495. function fy(
  496. $param=array(
  497. 'result' =>'result',
  498. 'table' =>'',
  499. 'condition' =>'',
  500. 'perpage' =>8,
  501. 'type' =>1,
  502. 'nav' =>'nav',
  503. 'pagename' =>'page',
  504. 'debug'
  505. )
  506. ){
  507. $result = $param['result']==''?'result':$param['result'];
  508. $table = $param['table'];
  509. $condition = $param['condition'];
  510. $perpage = $param['perpage']==''?8:$param['perpage'];
  511. $type = $param['type']==''?1:$param['type'];
  512. $nav = $param['nav']==''?'nav':$param['nav'];
  513. $page_name = $param['page_name']==''?'page':$param['page_name'];
  514. //????
  515. !$condition && $condition=1;
  516. !$result && $result='result';
  517. !$nav && $nav='nav';
  518. $sql = "SELECT count(id) as num
  519. FROM se_{$table}
  520. where 1 and del!=1 and ".$condition;
  521. $res = mysql_query($sql);
  522. $num_row = mysql_num_rows($res);
  523. if(strrpos($condition,'group by')!==false){
  524. $temp['num'] = $num_row;
  525. }else{
  526. $temp = mysql_fetch_array($res);
  527. }
  528. //??
  529. $perpage = $perpage;
  530. !$_GET[$page_name] && $_GET[$page_name] = 1;
  531. $ajaxpage = new lm_page( array ('total'=>$temp[num], 'perpage'=>$perpage,'page_name'=>$page_name));
  532. mysql_free_result($res);
  533. Tr($ajaxpage->show($type),$nav);
  534. if($param['debug']!=''){
  535. Jc('<b>SQL:</b><br />');
  536. Jc("SELECT * FROM se_{$table} WHERE 1 AND del!=1 and {$condition} limit ".($_GET[$page_name]-1)*$perpage.",".$perpage);
  537. Jc('<b>Result:</b><br />');
  538. Jc(Dgs($table,"del!=1 and {$condition} limit ".($_GET[$page_name]-1)*$perpage.",".$perpage));
  539. Jc('<b>SQL:</b><br />');
  540. Dgs($table,"del!=1 and {$condition} limit ".($_GET[$page_name]-1)*$perpage.",".$perpage,1);
  541. }
  542. $R=Dgs($table,"del!=1 and {$condition} limit ".($_GET[$page_name]-1)*$perpage.",".$perpage.$debug);
  543. Tr($R,$result);
  544. return $R;
  545. }
  546. function cutstr($string, $sublen, $start = 0, $code = 'UTF-8'){
  547. if($code == 'UTF-8')
  548. {
  549. $pa = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/";
  550. preg_match_all($pa, $string, $t_string);
  551. if(count($t_string[0]) - $start > $sublen) return join('', array_slice($t_string[0], $start, $sublen))."...";
  552. return join('', array_slice($t_string[0], $start, $sublen));
  553. }
  554. else
  555. {
  556. $start = $start*2;
  557. $sublen = $sublen*2;
  558. $strlen = strlen($string);
  559. $tmpstr = '';
  560. for($i=0; $i<$strlen; $i++)
  561. {
  562. if($i>=$start && $i<($start+$sublen))
  563. {
  564. if(ord(substr($string, $i, 1))>129)
  565. {
  566. $tmpstr.= substr($string, $i, 2);
  567. }
  568. else
  569. {
  570. $tmpstr.= substr($string, $i, 1);
  571. }
  572. }
  573. if(ord(substr($string, $i, 1))>129) $i++;
  574. }
  575. if(strlen($tmpstr)<$strlen ) $tmpstr.= "...";
  576. return $tmpstr;
  577. }
  578. }
  579. function createthumb($src,$otype,$album,$wd,$hd,$ml,$im_des){
  580. if($otype!=".bmp")
  581. {
  582. $type=strtolower($otype);
  583. if($im_des==''){
  584. $im_des="../../uplods/thumb".$ml."/".$album.".jpg";
  585. }
  586. if($type==".jpg"||$type==".jpeg")
  587. $im=@imagecreatefromjpeg($src);
  588. if($type==".gif")
  589. $im=@imagecreatefromgif($src);
  590. if($type==".png")
  591. $im=@imagecreatefrompng($src);
  592. $width=@imagesx($im);
  593. $height=@imagesy($im);
  594. @$ratio=$height/$width;
  595. if($ratio<0.9)
  596. {
  597. $newwidth=$wd;
  598. @$newheight=$height*($wd/$width);
  599. }
  600. else
  601. {
  602. $newheight=$hd;
  603. $newwidth=$width*($hd/$height);
  604. }
  605. $im_s=@imagecreatetruecolor($newwidth,$newheight);
  606. @imagecopyresized($im_s,$im,0,0,0,0,$newwidth,$newheight,$width,$height);
  607. @imagejpeg($im_s,$im_des,70);
  608. chmod($im_des,0777);
  609. @imagedestroy($im);
  610. }
  611. }
  612. /*
  613. * ???PHP???? (?????????)
  614. * ???
  615. * $groundImage ???????????????????GIF,JPG,PNG???
  616. * $waterPos ??????10????0??????
  617. * 1??????2??????3??????
  618. * 4??????5??????6??????
  619. * 7??????8??????9??????
  620. * $waterImage ??????????????????GIF,JPG,PNG???
  621. * $waterText ?????????????????ASCII????????
  622. * $textFont ????????12???????
  623. * $textColor ??????????????????#FF0000(??)?
  624. *
  625. * ???Support GD 2.0?Support FreeType?GIF Read?GIF Create?JPG ?PNG
  626. * $waterImage ? $waterText ????????????????????? $waterImage?
  627. * ?$waterImage??????$waterString?$stringFont?$stringColor?????
  628. * ???????????? $groundImage ???
  629. * ???longware @ 2004-11-3 14:15:13
  630. * ???Zuolong @ 2010?01?29? ??? 14?34?54?
  631. * ??????????????????????
  632. */
  633. function imageWaterMark($groundImage,$bcmz,$waterPos=0,$waterImage="",$waterText="",$textFont=12,$syzt="wqy-microhei-lite.ttc",$textColor="#FF0000")
  634. {
  635. $isWaterImage = FALSE;
  636. $formatMsg = "????????????????????????GIF?JPG?PNG???";
  637. $font_file="../fonts/".$syzt; //?????????
  638. //??????
  639. if(!empty($waterImage) && file_exists($waterImage))
  640. {
  641. $isWaterImage = TRUE;
  642. $water_info = getimagesize($waterImage);
  643. $water_w = $water_info[0];//????????
  644. $water_h = $water_info[1];//????????
  645. switch($water_info[2])//?????????
  646. {
  647. case 1:$water_im = imagecreatefromgif($waterImage);break;
  648. case 2:$water_im = imagecreatefromjpeg($waterImage);break;
  649. case 3:$water_im = imagecreatefrompng($waterImage);break;
  650. default:ja($formatMsg);
  651. }
  652. }
  653. //??????
  654. if(!empty($groundImage) && file_exists($groundImage))
  655. {
  656. $ground_info = getimagesize($groundImage);
  657. $ground_w = $ground_info[0];//????????
  658. $ground_h = $ground_info[1];//????????
  659. switch($ground_info[2])//?????????
  660. {
  661. case 1:$ground_im = imagecreatefromgif($groundImage);break;
  662. case 2:$ground_im = imagecreatefromjpeg($groundImage);break;
  663. case 3:$ground_im = imagecreatefrompng($groundImage);break;
  664. default:ja($formatMsg);
  665. }
  666. }
  667. else
  668. {
  669. Ja("????????????");
  670. }
  671. //????
  672. if($isWaterImage)//????
  673. {
  674. $w = $water_w;
  675. $h = $water_h;
  676. $label = "???";
  677. }
  678. else//????
  679. {
  680. $temp = imagettfbbox($textFont,0,$font_file,$waterText);//???? TrueType ????????
  681. $w = $temp[2] - $temp[6];
  682. $h = $temp[3] - $temp[7];
  683. unset($temp);
  684. $label = "????";
  685. }
  686. if( ($ground_w<$w) || ($ground_h<$h) )
  687. {
  688. ja("?????????????????".$label."??????????");
  689. return;
  690. }
  691. switch($waterPos)
  692. {
  693. case 0://??
  694. $posX = rand(0,($ground_w - $w));
  695. $posY = rand(0,($ground_h - $h));
  696. break;
  697. case 1://1?????
  698. $posX = 0;
  699. $posY = 0;
  700. break;
  701. case 2://2?????
  702. $posX = ($ground_w - $w) / 2;
  703. $posY = 0;
  704. break;
  705. case 3://3?????
  706. $posX = $ground_w - $w;
  707. $posY = 0;
  708. break;
  709. case 4://4?????
  710. $posX = 0;
  711. $posY = ($ground_h - $h) / 2;
  712. break;
  713. case 5://5?????
  714. $posX = ($ground_w - $w) / 2;
  715. $posY = ($ground_h - $h) / 2;
  716. break;
  717. case 6://6?????
  718. $posX = $ground_w - $w;
  719. $posY = ($ground_h - $h) / 2;
  720. break;
  721. case 7://7?????
  722. $posX = 0;
  723. $posY = $ground_h - $h;
  724. break;
  725. case 8://8?????
  726. $posX = ($ground_w - $w) / 2;
  727. $posY = $ground_h - $h;
  728. break;
  729. case 9://9?????
  730. $posX = $ground_w - $w;
  731. $posY = $ground_h - $h;
  732. break;
  733. default://??
  734. $posX = rand(0,($ground_w - $w));
  735. $posY = rand(0,($ground_h - $h));
  736. break;
  737. }
  738. //?????????
  739. imagealphablending($ground_im, true);
  740. if($isWaterImage)//????
  741. {
  742. imagecopy($ground_im, $water_im, $posX, $posY, 0, 0, $water_w,$water_h);//?????????
  743. }
  744. else//????
  745. {
  746. if( !empty($textColor) && (strlen($textColor)==7) )
  747. {
  748. $R = hexdec(substr($textColor,1,2));
  749. $G = hexdec(substr($textColor,3,2));
  750. $B = hexdec(substr($textColor,5));
  751. }
  752. else
  753. {
  754. ja("????????????");
  755. }
  756. if(!is_file($font_file)){
  757. ja("???????????????????{$font_file}");
  758. }
  759. //imagestring ( $ground_im, $textFont, $posX, $posY, $waterText, imagecolorallocate($ground_im, $R, $G, $B));
  760. imagettftext ( $ground_im, $textFont, 0, $posX, $posY, imagecolorallocate($ground_im, $R, $G, $B), $font_file, $waterText);
  761. }
  762. //????????
  763. @unlink($bcmz);
  764. switch($ground_info[2])//?????????
  765. {
  766. case 1:imagegif($ground_im,$bcmz);break;
  767. case 2:imagejpeg($ground_im,$bcmz);break;
  768. case 3:imagepng($ground_im,$bcmz);break;
  769. default:ja($errorMsg);
  770. }
  771. //????
  772. if(isset($water_info)) unset($water_info);
  773. if(isset($water_im)) imagedestroy($water_im);
  774. unset($ground_info);
  775. imagedestroy($ground_im);
  776. }
  777. function getfirstchar($s0){
  778. $fchar = ord($s0{0});
  779. if($fchar >= ord("A") and $fchar <= ord("z") )return strtoupper($s0{0});
  780. $s1 = iconv("UTF-8","gb2312", $s0);
  781. $s2 = iconv("gb2312","UTF-8", $s1);
  782. if($s2 == $s0){$s = $s1;}else{$s = $s0;}
  783. $asc = ord($s{0}) * 256 + ord($s{1}) - 65536;
  784. if($asc>=-20319 and $asc<=-20284)return "a";
  785. if($asc>=-20283 and $asc<=-19776)return "b";
  786. if($asc>=-19775 and $asc<=-19219)return "c";
  787. if($asc>=-19218 and $asc<=-18711)return "d";
  788. if($asc>=-18710 and $asc<=-18527)return "e";
  789. if($asc>=-18526 and $asc<=-18240)return "f";
  790. if($asc>=-18239 and $asc<=-17923)return "g";
  791. if($asc>=-17922 and $asc<=-17418)return "h";
  792. if($asc>=-17417 and $asc<=-16475)return "j";
  793. if($asc>=-16474 and $asc<=-16213)return "k";
  794. if($asc>=-16212 and $asc<=-15641)return "l";
  795. if($asc>=-15640 and $asc<=-15166)return "m";
  796. if($asc>=-15165 and $asc<=-14923)return "n";
  797. if($asc>=-14922 and $asc<=-14915)return "o";
  798. if($asc>=-14914 and $asc<=-14631)return "p";
  799. if($asc>=-14630 and $asc<=-14150)return "q";
  800. if($asc>=-14149 and $asc<=-14091)return "r";
  801. if($asc>=-14090 and $asc<=-13319)return "s";
  802. if($asc>=-13318 and $asc<=-12839)return "t";
  803. if($asc>=-12838 and $asc<=-12557)return "w";
  804. if($asc>=-12556 and $asc<=-11848)return "x";
  805. if($asc>=-11847 and $asc<=-11056)return "y";
  806. if($asc>=-11055 and $asc<=-10247)return "z";
  807. return null;
  808. }
  809. function pinyin1($zh){
  810. $ret = "";
  811. $s1 = iconv("UTF-8","gb2312", $zh);
  812. $s2 = iconv("gb2312","UTF-8", $s1);
  813. if($s2 == $zh){$zh = $s1;}
  814. for($i = 0; $i < strlen($zh); $i++){
  815. $s1 = substr($zh,$i,1);
  816. $p = ord($s1);
  817. if($p > 160){
  818. $s2 = substr($zh,$i++,2);
  819. $ret .= getfirstchar($s2);
  820. }else{
  821. $ret .= $s1;
  822. }
  823. }
  824. return $ret;
  825. }
  826. /*
  827. ????1?
  828. RewriteEngine on
  829. RewriteCond %{HTTP_USER_AGENT} ^Baiduspider [NC]
  830. RewriteRule .* - [F]
  831. ????2?
  832. SetEnvIfNoCase User-Agent "^Baiduspider" bad_bot
  833. <Limit GET POST>
  834. Order Allow,Deny
  835. Allow from all
  836. Deny from env=bad_bot
  837. </Limit>
  838. */
  839. function Dz($sql, $ttttt=0) {
  840. global $db;
  841. mysql_query("Set Names '" . DEFAULT_CHARSET . "' ");
  842. if ($ttttt != 0) {
  843. echo $sql;
  844. exit;
  845. }
  846. $result = mysql_query($sql);
  847. while ($temp = mysql_fetch_array($result)) {
  848. $tempa[] = $temp;
  849. }
  850. mysql_free_result($result);
  851. return $tempa;
  852. }
  853. /**
  854. * *******************
  855. * ?????html??
  856. */
  857. function clearhtml($str) {
  858. $strtemp = trim($str);
  859. $search = array(
  860. "|'|Uis",
  861. "|<script[^>]*?>.*?</script>|Uis", // ?? javascript
  862. "|<[\/\!]*?[^<>]*?>|Uis", // ?? HTML ??
  863. "'&(quot|#34);'i", // ?? HTML ??
  864. "'&(amp|#38);'i",
  865. "|,|Uis",
  866. "|[\s]{2,}|is",
  867. "[&nbsp;]isu",
  868. "|[$]|Uis",
  869. );
  870. $replace = array(
  871. "`",
  872. "",
  873. "",
  874. "",
  875. "","",
  876. " ",
  877. " ",
  878. " dollar ",
  879. );
  880. $text = preg_replace($search, $replace, $strtemp);
  881. return $text;
  882. }
  883. /**
  884. * ?????
  885. * ????5.3????? date_diff???? ?date_diff_bic
  886. *
  887. * @param string time $date1 Y-m-d H:i:s
  888. * @param string time $date2 Y-m-d H:i:s
  889. * @param string $return_type
  890. * ????:'s'-? 'i'-? 'h'-?? 'd'-? 'w'-?? 'm'-? 'y'-?
  891. * ??:'d'-?
  892. * @param bool $ceil
  893. * ??????
  894. * ??:false
  895. * @return numeric
  896. * @author Bic
  897. * 2009?9?26? 10?28?46?
  898. * 2010?6?9? ?????
  899. */
  900. function date_diff_bic($date1, $date2, $return_type='d',$ceil=false) {
  901. $timestamp1 = is_numeric($date1)?$date1:strtotime($date1);
  902. $timestamp2 = is_numeric($date2)?$date2:strtotime($date2);
  903. switch ($return_type){
  904. case 's':
  905. case 'second':
  906. $result = ($timestamp2-$timestamp1);
  907. break;
  908. case 'i':
  909. case 'minute':
  910. $result = ($timestamp2-$timestamp1)/60;
  911. break;
  912. case 'h':
  913. case 'hour':
  914. $result = ($timestamp2-$timestamp1)/3600;
  915. break;
  916. case 'd':
  917. case 'day':
  918. $result = ($timestamp2-$timestamp1)/86400;
  919. break;
  920. case 'w':
  921. case 'week':
  922. $result = ($timestamp2-$timestamp1)/604800;
  923. break;
  924. case 'm':
  925. case 'month':
  926. $result = ($timestamp2-$timestamp1)/2592000;
  927. break;
  928. case 'y':
  929. case 'year':
  930. $result = ($timestamp2-$timestamp1)/946080000;
  931. break;
  932. }
  933. return $ceil?ceil($result):floor($result);
  934. }
  935. /**
  936. *????del??
  937. * @param type $table ??
  938. * @param type $fields ????????????“,”
  939. * @param type $fieldType ????
  940. * @param type $fieldLength ????
  941. */
  942. function autoAddField($table,$fields,$fieldType='TINYINT',$fieldLength=1){
  943. $rec = mysql_query("SHOW FULL FIELDS FROM {$table}");
  944. $fields = explode(',',$fields);
  945. foreach ($fields as $k => $v){
  946. $hadDelField = 0;
  947. while($fullfields = mysql_fetch_array($rec)){
  948. if($fullfields['Field']==$v){
  949. $hadDelField = 1;
  950. break;
  951. }
  952. }
  953. if($hadDelField != 1){
  954. mysql_query("ALTER TABLE `{$table}` ADD `{$v}` {$fieldType}( {$fieldLength} ) NOT NULL ;");
  955. }
  956. }
  957. }
  958. /**
  959. *???????
  960. * ???Du?????
  961. * @param type $table ??
  962. * @param type $pairs ??
  963. * @param type $debug ??
  964. * @return type
  965. */
  966. function I($table,$pairs,$debug=false){
  967. $app = new Dbt('d_sevenel',$table,$pairs);
  968. $app -> debug($debug);
  969. return $app->getInsertSQL(2);
  970. }
  971. /**
  972. *???????
  973. * ???Du?????
  974. * @param type $table ??
  975. * @param type $pairs ??
  976. * @param type $field ??
  977. * @param type $val ?
  978. * @param type $debug ??
  979. * @return type
  980. */
  981. function U($table,$pairs,$field,$val,$debug=false){
  982. $app= new Dbt('d_sevenel',$table,$pairs);
  983. $app -> debug($debug);
  984. return $app->getUpdateSQL($field,$val,2);
  985. }
  986. /**
  987. *Dga + Tr
  988. * @param type $tpl ???
  989. * @param type $table ??
  990. * @param type $con ??
  991. * @param type $debug ????SQL??
  992. * @return type
  993. */
  994. function Tra($tpl,$table,$con,$debug=0){
  995. $tmp = Dga($table,$con,$debug);
  996. Tr($tmp,$tpl);
  997. return $tmp;
  998. }
  999. /**
  1000. *Dgs + Tr
  1001. * @param type $tpl ???
  1002. * @param type $table ??
  1003. * @param type $con ??
  1004. * @param type $debug ????SQL??
  1005. * @return type
  1006. */
  1007. function Trs($tpl,$table,$con,$debug=0){
  1008. $tmp = Dgs($table,$con,$debug);
  1009. Tr($tmp,$tpl);
  1010. return $tmp;
  1011. }