📄 caijimoviemodel.php
字号:
<?php
/*
秀影已采集影片管理模型
*/
class caijimoviemodel{
private $db;
public function __construct(){
$this->db = $GLOBALS['DB'];
}
public function getRow( $where = null){
$select = $this->db->select();
$select->from(VODCMS_CAIJIMOVIE.' AS a', 'a.*');
$select->join(VODCMS_CAIJIURL.' as b', 'a.id=b.caijimovid' ,'b.playurl,b.path as url');
$select->where( $where );
$sql = $select->toString();
return $this->db->fetRow($sql);
}
/*
获取全部采集完成影片数据
*/
public function getAll( $where = null ){
$select = $this->db->select();
$select->from(VODCMS_CAIJIMOVIE);
$select->where( $where );
$select->order('id DESC');
$sql = $select->toString();
$this->total = $this->db->getCount($sql);
$page = new Page();
$page->set($this->total);
$this->printpage = $page->printpage();
return $this->db->fetAll($sql. $page->limit());
}
/*
返回json数据
*/
public function getJsonRow( $where = null ) {
$select = $this->db->select();
$select->from(VODCMS_CAIJIMOVIE);
$select->where( $where );
$sql = $select->toString();
$row = $this->db->fetRow($sql);
$select = $this->db->select();
$select->from(VODCMS_CAIJIURL);
$select->where( array('caijimovid'=> $row['id']) );
$select->order('id asc');
$sql = $select->toString();
$row['url'] = '<table border="0" cellpadding="0" cellspacing="1" class="tab" style="border-collapse:collapse">';
$i = 0;
foreach( $this->db->fetAll($sql) as $rs){
$i++;
if( $i % 2 == 0) {
$classname = 'double';
}else{
$classname = 'row';
}
$row['url'] = $row['url'] . '<tr class="'.$classname.'">
<td width="20" class="align-center">'.$i.'</td>
<td><a href="'.$rs['playurl'].'" target="_blank"> '.($rs['path'] ? $rs['path'] : $rs['playurl']).'</a></td></tr>';
}
$row['url'] = $row['url'] . '</table>';
$data = null;
foreach( $row as $key=>$val ){
$data[$key] = iconv( 'gb2312', 'UTF-8//IGNORE',$val);
}
unset($row);
return json_encode($data);
}
/*
将影片资料导入正式数据库
*/
public function import($id) {
try{
if(is_int((int)$id)) {
if( is_file(ROOT.'config/category.conf.php') ) {
require ROOT.'config/category.conf.php';
}
$data = $this->getData ( array('id'=> $id));
$movieobject = new moviemodel(); //创建影片模型实例
$caiji = new CaijiModel();
if( !$movieobject->exists( array('title'=> $data['name'])) ) {
if (is_array($replace_category)){
foreach($replace_category as $id=>$category){
if( stripos($category, $data['category'])!== false ) {
$data['category'] = $id;
}
}
}
if( is_int($data['category'])===false ) {//没有在转换列表中则查询是否已存在并且不存在时插入新记录
$data['category'] = $this->getCategory( $data['category'] );
}
$movie = array();
$movie['title'] = $data['name'];
$movie['actor'] = $data['actor'];
$movie['director'] = $data['director'];
$movie['category'] = $data['category'];
$movie['pic'] = $caiji->savepic($data['pic']);
$movie['otherpic'] = $movie['pic'];
$movie['content'] = $data['content'];
$movie['area'] = $data['area'];
$movie['look'] = 1;
$movie['lookgid'] = 0;
$movie['addtime'] = time();
$movie['modifytime'] = time();
$movie['author'] = 'admin';
$movie['player'] = $data['player'];
$movie['sid'] = $data['server'];
$movie['url'] = $data['url'];
$movie['sort'] = $data['sort'];
$movie['recmd'] = array(1,2,3);
if( $movieobject->add($movie) ) {
$this->db->update(VODCMS_CAIJIMOVIE, array('locked'=>1), array('id'=>$data['id']));
return true;
}else{
$this->error = $movieobject->error;
$this->db->update(VODCMS_CAIJIMOVIE, 'errors=errors+1', array('id'=>$data['id']));
return false;
}
}else{
$this->error = _('影片已经存在!');
$this->db->update(VODCMS_CAIJIMOVIE, array('locked'=>2), array('id'=>$data['id']));
return false;
}
}else{
throw new exception ('导入影片库方法出错:参数不是数字'.$id);
}
}catch (exception $e){
$this->error = $e->getMessage();
return false;
}
}
/*
获取影片全部数据
*/
public function getData($where = null ) {
$select = $this->db->select();
$select->from(VODCMS_CAIJIMOVIE);
$select->where( $where );
$sql = $select->toString();
$row = $this->db->fetRow($sql);
$select = $this->db->select();
$select->from(VODCMS_CAIJIURL);
$select->where( array('caijimovid'=> $row['id']) );
$select->order('id asc');
$sql = $select->toString();
$i=0;
foreach( $this->db->fetAll($sql) as $rs){
$i++;
$row['url'][] = $rs['path'];
$row['sort'][] = $i;
}
return $row;
}
/*
获取分类ID
找不到分类则插入新分类
@param string as $category
*/
public function getCategory($str) {
$row = '';
$category = new categorymodel();
$row = $category->getRow ( array( 'category'=> trim($str) ) );
if( $row['id'] ) {
return $row['id'];
}else{
return $category->Add( array(
'category'=> $str,
'parentid'=> 0) );
}
}
/*
将vodcms_caijiurl表中的影片地址采集为真实的地址
*/
public function getUrl($where = null, $start=1 ){
/*新增字段控制errors。错误次数默认超过3次失败则丢弃*/
$select = $this->db->select();
$select->from(VODCMS_CAIJIURL);
$select->where( $where );
$select->where('errors<4');
$page = ($start-1) * 10;
$select->limit($page.',10');
$sql = $select->toString();
$result = $this->db->fetall($sql);
$caiji = new CaijiModel();
$da = $caiji->getRow( array('id'=> $result[0]['rulesid']) );
if (count($result)>0){
foreach ($result as $row){
if ( ($playcontents = $caiji->getContent($row['playurl'])) == null ){
echo '读取播放器页面失败'.$row['playurl'].'<br />';
$this->db->update(VODCMS_CAIJIURL, 'errors = errors +1', array('id'=> $row['id']));
$this->db->update(VODCMS_CAIJIMOVIE, 'errors = errors +1', array('id'=> $row['cajimovid']));
}else{
if( $da['playrule'] ) {
preg_match($caiji->format($da['playrule']).'i', $playcontents, $temp);
$url = $temp[1];
}else{
$url = $row['playurl'];
}
$this->db->update(VODCMS_CAIJIURL, array('locked'=> 1, 'path'=> $url, 'errors'=>0), array('id'=> $row['id']));
}
}
return false;
}else{
return true;
}
}
/*获取采集播放地址总数*/
public function getCaijiUrlNum($where){
$select = $this->db->select();
$select->from(VODCMS_CAIJIURL);
$select->where( $where );
$sql = $select->toString();
//echo $sql;
return $this->db->getCount($sql);
}
/*根据传入ID删除资料
@param int or array*/
public function delete($id){
if (is_array($id)){
$id = implode(',', $id);
}
//echo $id;
$this->db->delete(VODCMS_CAIJIMOVIE, 'id in ('.$id.')');
$this->db->delete(VODCMS_CAIJIURL, 'caijimovid in ('.$id.')');
}
/*
获取已经采集完成但是未导入的影片数据
*/
public function findmovie(){
$select = $this->db->select();
$select->from(VODCMS_CAIJIMOVIE.' as a', 'a.id as id,a.name as name');
$select->join(VODCMS_CAIJIURL.' as b', 'a.id=b.caijimovid', '');
$select->where( "a.locked=0 AND a.errors<4 AND b.path <> '' " );
$select->group('b.caijimovid');
$sql = $select->toString();
return $this->db->fetAll($sql);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -