| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 | 
							- <?php
 
- defined('IN_PHPCMS') or exit('No permission resources.');
 
- pc_base::load_sys_class('model', '', 0);
 
- class attachment_model extends model {
 
- 	private $att_index_db;
 
- 	public function __construct() {
 
- 		$this->db_config = pc_base::load_config('database');
 
- 		$this->db_setting = 'default';
 
- 		$this->table_name = 'attachment';
 
- 		parent::__construct();
 
- 	}
 
- 	
 
- 	public function api_add($uploadedfile) {
 
- 		$uploadfield = array();
 
- 		$uploadfield = $uploadedfile;
 
- 		unset($uploadfield['fn']);
 
- 		$uploadfield = new_addslashes($uploadfield);
 
- 		$this->insert($uploadfield);
 
- 		$aid = $this->insert_id();
 
- 		$uploadedfile['aid'] = $aid;
 
- 		return $aid;
 
- 	}
 
- 	/**
 
- 	 * 附件更新接口.
 
- 	 * @param string $content 可传入空,html,数组形式url,url地址,传入空时,以cookie方式记录。
 
- 	 * @param string 传入附件关系表中的组装id
 
- 	 * @isurl intval 为本地地址时设为1,以cookie形式管理时设置为2
 
- 	 */
 
- 	public function api_update($content, $keyid, $isurl = 0) {
 
- 		if(pc_base::load_config('system','attachment_stat') == 0) return false;
 
- 		$keyid = trim($keyid);
 
- 		$isurl = intval($isurl);
 
- 		if($isurl==2 || empty($content)) {
 
- 			$this->api_update_cookie($keyid);
 
- 		} else {
 
- 			$att_index_db = pc_base::load_model('attachment_index_model');
 
- 			$upload_url = pc_base::load_config('system','upload_url');
 
- 			if(strpos($upload_url,'://')!==false) {
 
- 				$pos = strpos($upload_url,"/",8);
 
- 				$domain = substr($upload_url,0,$pos).'/';
 
- 				$dir_name = substr($upload_url,$pos+1);
 
- 			}
 
- 			if($isurl == 0) {
 
- 				$pattern = '/(href|src)=\"(.*)\"/isU';
 
- 				preg_match_all($pattern,$content,$matches);
 
- 				if(is_array($matches) && !empty($matches)) {
 
- 					$att_arr = array_unique($matches[2]);
 
- 					foreach ($att_arr as $_k=>$_v) $att_arrs[$_k] = md5(str_replace(array($domain,$dir_name), '', $_v));
 
- 				}
 
- 			} elseif ($isurl == 1) {
 
- 				if(is_array($content)) {
 
- 					$att_arr = array_unique($content);
 
- 					foreach ($att_arr as $_k=>$_v) $att_arrs[$_k] = md5(str_replace(array($domain,$dir_name), '', $_v));
 
- 				} else {
 
- 					$att_arrs[] = md5(str_replace(array($domain,$dir_name), '', $content));
 
- 				}
 
- 			}
 
- 			$att_index_db->delete(array('keyid'=>$keyid));	
 
- 			if(is_array($att_arrs) && !empty($att_arrs)) {
 
- 				foreach ($att_arrs as $r) {
 
- 					$infos = $this->get_one(array('authcode'=>$r),'aid');
 
- 					if($infos){
 
- 						$this->update(array('status'=>1),array('aid'=>$infos['aid']));
 
- 						$att_index_db->insert(array('keyid'=>$keyid,'aid'=>$infos['aid']));
 
- 					}
 
- 				}
 
- 			}
 
- 		}
 
- 		param::set_cookie('att_json','');
 
- 		return true;
 
- 	}
 
- 	/*
 
- 	 * cookie 方式关联附件
 
- 	 */
 
- 	private function api_update_cookie($keyid) {
 
- 		if(pc_base::load_config('system','attachment_stat') == 0) return false;
 
- 		$att_index_db = pc_base::load_model('attachment_index_model');
 
- 		$att_json = param::get_cookie('att_json');
 
- 		if($att_json) {
 
- 			$att_cookie_arr = explode('||', $att_json);
 
- 			$att_cookie_arr = array_unique($att_cookie_arr);
 
- 		} else {
 
- 			return false;
 
- 		}
 
- 		foreach ($att_cookie_arr as $_att_c) $att[] = json_decode($_att_c,true);
 
- 		foreach ($att as $_v) {
 
- 			$this->update(array('status'=>1),array('aid'=>$_v['aid']));
 
- 			$att_index_db->insert(array('keyid'=>$keyid,'aid'=>$_v['aid']));
 
- 		}		
 
- 	}
 
- 	/*
 
- 	 * 附件删除接口
 
- 	 * @param string 传入附件关系表中的组装id
 
- 	 */
 
- 	public function api_delete($keyid) {
 
- 		if(pc_base::load_config('system','attachment_stat') == 0) return false;
 
- 		$keyid = trim($keyid);
 
- 		if($keyid=='') return false;
 
- 		$att_index_db = pc_base::load_model('attachment_index_model');
 
- 		$attachment = pc_base::load_sys_class('attachment');
 
- 		$info = $att_index_db->select(array('keyid'=>$keyid),'aid');
 
- 		if($info) {
 
- 			$att_index_db->delete(array('keyid'=>$keyid));
 
- 			foreach ($info as $_v) {
 
- 				if(!$att_index_db->get_one(array('aid'=>$_v['aid']))) {
 
- 					$attachment->delete(array('aid'=>$_v['aid']));
 
- 				}
 
- 			}
 
- 			return true;
 
- 		} else {
 
- 			return false;
 
- 		}		
 
- 	}
 
- }
 
- ?>
 
 
  |