db = new PDO; $this->config = Config::get(); $this->table = new Table; $this->opt = new \stdClass(); $this->opt->sort = "DESC"; $this->opt->logic = "AND"; $Listener = new Listener(); $this->getEventManager()->attachAggregate($Listener); } public function setEventManager(EventManagerInterface $events) { $events->setIdentifiers(array( __CLASS__, get_called_class(), )); $this->events = $events; return $this; } public function getEventManager() { if (NULL === $this->events) { $this->setEventManager(new EventManager()); } return $this->events; } public function fetchAll() { $wheresql = array(); if(isset($this->opt->where) && !empty($this->opt->where)) $wheresql = array_merge($wheresql,$this->opt->where); if(count($wheresql)>0) { $wheresql = " WHERE ".join($wheresql," ".$this->opt->logic." "); }else{ $wheresql = ''; } if(!empty($this->opt->order)) { $order = $this->opt->order; }else{ $order = "ar.id"; } $sql = "SELECT ar.* ,mb.username FROM {$this->table->arc_article} ar LEFT JOIN {$this->table->member} mb ON ar.userid = mb.id $wheresql ORDER BY $order {$this->opt->sort} "; if(!empty($this->opt->start)) { $sql .= " START {$this->opt->start} "; } if(!empty($this->opt->limit)){ $sql .= " LIMIT {$this->opt->limit} "; } //view::Dump($sql); $rs = $this->db->query($sql); return $rs->fetchAll(); } public function fetch($id) { if(is_numeric($id)) { $sql = "SELECT * FROM {$this->table->arc_article} WHERE id=$id"; }else{ if(preg_match("/\'/",$id)) { str_replace("'","''",$id); } $sql = "SELECT * FROM {$this->table->arc_article} WHERE title='$id'"; } $rs = $this->db->query($sql); return $rs->fetch(); } public function getParam() { $request = new Request; $data = array( 'uuid' => $request->getPost('uuid'), 'title' => $request->getPost('title'), 'source' => $request->getPost('source'), 'image' => $request->getPost('image'), 'body' => $request->getPost('content'), 'userid' => (int)view::User('id'), 'tags' => $request->getPost('tags'), 'ts_published' => $request->getPost('ts_published'), 'category' => $request->getPost('category'), 'is_pub' => $request->getPost('pub') ); return $data; } //添加 public function add($data,$id = 0) { $params = compact('data'); $results = $this->getEventManager()->trigger('submit.checkParam', $this, $params); $cache_data = $results->last(); if($cache_data !== true) { return $cache_data; } $results = $this->getEventManager()->trigger('submit.processData', $this, $params); $data = $results->last(); $dbh = new dbh(); if(empty($id)) { $id = $dbh->insert($this->table->arc_article,$data,true); if(!empty($id) && is_numeric($id)) { $this->getEventManager()->trigger('submit.recordPosted', $this, compact('params','data','id')); return true; }else{ if($id === false) { return '服务器开小差了,请稍后再试'; }else{ return '服务器处理中遇到错误,请联系管理员'; } } }//add else{ if(!$dbh->update($this->table->arc_article,$data," id=$id ",true)) { return "修改失败!请重试"; }else{ $this->getEventManager()->trigger('submit.recordChanged', $this, compact('params','data','id')); return true; } }//edit }// add() }