db = $db; $this->auth = $auth; } function fetch($uuid = "",$include = true,$uid=0,$keyword=""){ if(empty($uuid)) { $wheresql = array(); if(!empty($keyword)) { if(preg_match("/\'/",$keyword)) { $keyword = preg_replace("/\'/","''",$keyword); } $wheresql[] = " title LIKE '%$keyword%'"; } if(!empty($uid)) { $wheresql[] = " userid=$uid "; } if(count($wheresql)>0) { $wheresql = " WHERE ".join(" AND ",$wheresql); }else{ $wheresql = ""; } $sql = "SELECT * FROM ".$this->tbl_fund." $wheresql ORDER BY id desc"; $rs = $this->db->query($sql); $rows = $rs->fetchAll(); return $rows; }else{ $wheresql = array(); if($include) { $wheresql[] = " mf.uuid='$uuid' "; }else{ $fids = $this->getMdFunds($uuid); if(count($fids)>0) { $wheresql[] = ' f.id NOT IN ('.join(",",$fids).')'; } } if(!empty($uid) && is_int($uid)) { $wheresql[] = " f.userid='$uid' "; } if(!empty($keyword)) { if(preg_match("/\'/",$keyword)) { $keyword = preg_replace("/\'/","''",$keyword); } $wheresql[] = " f.title LIKE '%$keyword%'"; } if(count($wheresql)>0) { $wheresql = " WHERE ".join(" AND ",$wheresql); }else{ $wheresql = ""; } if($include === true) { $sql = "SELECT f.*,mf.place,mf.id as mfid FROM ".$this->tbl_fund." f LEFT JOIN ".$this->tbl_mdfund." mf ON mf.fid=f.id $wheresql ORDER BY mf.place"; }else{ $sql = "SELECT f.* FROM ".$this->tbl_fund." f $wheresql ORDER BY f.id DESC"; } $rs = $this->db->query($sql); $rows = $rs->fetchAll(PDO::FETCH_BOTH); return $rows; } } function fetchFromData($count = true,$uid,$keyword){ $wheresql = array(); if(!empty($uid) && is_int($uid)) { $wheresql[] = " a.userid='$uid' "; } if(!empty($keyword)) { if(preg_match("/\'/",$keyword)) { $keyword = preg_replace("/\'/","''",$keyword); } $wheresql[] = " f.title LIKE '%$keyword%'"; } if($count !== true) { $wheresql[] = " f.id=$count "; } $wheresql[] = " md.title IS NOT NULL "; if(count($wheresql)>0) { $wheresql = " WHERE ".join(" AND ",$wheresql); }else{ $wheresql = ""; } if($count === true) { $sql = "SELECT f.*,count(md.uuid) as mds FROM ".$this->tbl_fund." f LEFT JOIN ".$this->tbl_mdfund." mf ON mf.fid=f.id LEFT JOIN metadata md ON md.uuid=mf.uuid left join mdauthor a on md.uuid=a.uuid $wheresql GROUP BY f.id"; }else{ $sql = "SELECT mf.id as mfid,md.title as mdtitle,md.uuid FROM ".$this->tbl_fund." f LEFT JOIN ".$this->tbl_mdfund." mf ON mf.fid=f.id LEFT JOIN metadata md ON md.uuid=mf.uuid left join mdauthor a on md.uuid=a.uuid $wheresql GROUP BY md.title,md.uuid,mf.id "; } $rs = $this->db->query($sql); $rows = $rs->fetchAll(PDO::FETCH_BOTH); return $rows; } function add($data,$uuid = NULL) { include_once("helper/dbh.php"); $dbh = new dbh($this->db); if(empty($uuid)) { return $dbh->insert($this->tbl_fund,$data); }else{ $fid = $dbh->insert($this->tbl_fund,$data,true); return $this->addToMdfund($uuid,$fid,1); } } function update($data,$id,$uid=0) { if(!is_numeric($id)) { return "参数错误"; } if(!empty($uid)) { if(!is_numeric($uid)) { return "参数错误"; } $sql = "SELECT * FROM ".$this->tbl_fund." WHERE userid=$uid AND id=$id"; $rs = $this->db->query($sql); $row = $rs->fetch(); if(empty($row['id'])) { return "您无权修改这条记录"; } $condition = " id=$id AND userid=$uid "; }else{ $condition = " id=$id "; } include_once("helper/dbh.php"); $dbh = new dbh($this->db); $state = $dbh->update($this->tbl_fund,$data,$condition,true); if( $state == true) { return true; }else{ return $state; } } function delete($id,$uid=0){ if(!is_numeric($id)) { return "参数错误"; } if(!empty($uid)) { if(!is_numeric($uid)) { return "参数错误"; } $sql = "SELECT * FROM ".$this->tbl_fund." WHERE userid=$uid AND id=$id"; $rs = $this->db->query($sql); $row = $rs->fetch(); if(empty($row['id'])) { return "您无权修改这条记录"; } $condition = " id=$id AND userid=$uid "; }else{ $condition = " id=$id "; } $sql = "DELETE FROM ".$this->tbl_fund." WHERE $condition"; return $this->db->exec($sql); } function mfdelete($id){ $sql = "DELETE FROM ".$this->tbl_mdfund." WHERE id=$id"; return $this->db->exec($sql); } function view($id){ $sql = "SELECT * FROM ".$this->tbl_fund." WHERE id=$id"; $rs = $this->db->query($sql); $row = $rs->fetch(); return $row; } function getMdFunds($uuid){ $sql = "SELECT * FROM ".$this->tbl_mdfund." WHERE uuid='$uuid'"; $rs = $this->db->query($sql); $rows = $rs->fetchAll(); $fids = array(); foreach($rows as $k=>$v) { $fids[] = $v['fid']; } return $fids; } function addToMdfund($uuid,$id,$order){ if(empty($order)) { $order = 0; } $data = array( 'uuid'=>$uuid, 'fid'=>(int)$id, 'place'=>(int)$order ); include_once("helper/dbh.php"); $dbh = new dbh($this->db); return $dbh->insert($this->tbl_mdfund,$data); } function changeorder($id,$order){ if(!is_numeric($id) || !is_numeric($order)) { return false; } $data = array( 'place'=>$order ); include_once("helper/dbh.php"); $dbh = new dbh($this->db); $state = $dbh->update($this->tbl_mdfund,$data,"id=$id",true); if( $state == true) { return true; }else{ return $state; } } function getData($id,$keyword="") { $search = ""; if(!empty($keyword)) { if(preg_match("/\'/",$keyword)) { $keyword = preg_replace("/\'/","''",$keyword); } $search = " AND md.title LIKE '%$keyword%' "; } $sql = "SELECT md.title,mf.id FROM ".$this->tbl_mdfund." mf LEFT JOIN ".$this->tbl_fund." f ON mf.fid=f.id LEFT JOIN metadata md ON md.uuid=mf.uuid WHERE f.id=$id $search"; $rs = $this->db->query($sql); $rows = $rs->fetchAll(); return $rows; } function _getParams(Zend_Controller_Request_Abstract $request) { $data = array( 'title' => trim($request->getParam('title')), 'fund_id' => trim($request->getParam('fund_id')), 'fund_type' => trim($request->getParam('fund_type')), 'title_en' => trim($request->getParam('title_en')), 'fund_type_en' => trim($request->getParam('fund_type_en')), ); return $data; } }