DiscuzX/upload/source/class/table/table_common_nav.php

135 lines
5.0 KiB
PHP

<?php
/**
* [Discuz!] (C)2001-2099 Comsenz Inc.
* This is NOT a freeware, use is subject to license terms
*
* $Id: table_common_nav.php 36278 2016-12-09 07:52:35Z nemohou $
*/
if(!defined('IN_DISCUZ')) {
exit('Access Denied');
}
class table_common_nav extends discuz_table
{
public function __construct() {
$this->_table = 'common_nav';
$this->_pk = 'id';
parent::__construct();
}
public function fetch_by_id_navtype($id, $navtype) {
return DB::fetch_first('SELECT * FROM %t WHERE id=%d AND navtype=%d', array($this->_table, $id, $navtype));
}
public function fetch_by_type_identifier($type, $identifier) {
return DB::fetch_first('SELECT * FROM %t WHERE type=%d AND identifier=%s', array($this->_table, $type, $identifier));
}
public function fetch_all_by_navtype($navtype = null) {
$parameter = array($this->_table);
$wheresql = '';
if($navtype !== null) {
$parameter[] = $navtype;
$wheresql = ' WHERE navtype=%d';
}
return DB::fetch_all('SELECT * FROM %t '.$wheresql.' ORDER BY available DESC, displayorder', $parameter, $this->_pk);
}
public function fetch_all_by_navtype_parentid($navtype, $parentid) {
return DB::fetch_all('SELECT * FROM %t WHERE navtype=%d AND parentid=%d ORDER BY displayorder', array($this->_table, $navtype, $parentid), $this->_pk);
}
public function fetch_all_by_navtype_type($navtype, $type) {
return DB::fetch_all('SELECT * FROM %t WHERE navtype=%d AND type=%d', array($this->_table, $navtype, $type), $this->_pk);
}
public function fetch_all_mainnav() {
return DB::fetch_all('SELECT * FROM %t WHERE navtype=0 AND (available=1 OR type=0) AND parentid=0 ORDER BY displayorder', array($this->_table), $this->_pk);
}
public function fetch_all_subnav($parentid) {
return DB::fetch_all('SELECT * FROM %t WHERE navtype=0 AND parentid=%d AND available=1 ORDER BY displayorder', array($this->_table, $parentid), $this->_pk);
}
public function fetch_all_by_navtype_type_identifier($navtype, $type, $identifier) {
$navtype = dintval($navtype, true);
$type = dintval($type, true);
if($navtype && $type) {
$wherearr[] = DB::field('navtype', $navtype);
$wherearr[] = DB::field('type', $type);
$wherearr[] = DB::field('identifier', $identifier);
return DB::fetch_all('SELECT * FROM %t WHERE %i', array($this->_table, implode(' AND ', $wherearr)), 'identifier');
}
return array();
}
public function update_by_identifier($identifier, $data) {
if(is_array($identifier) && empty($identifier)) {
return 0;
}
if(!empty($data) && is_array($data)) {
return DB::update($this->_table, $data, DB::field('identifier', $identifier));
}
return 0;
}
public function update_by_navtype_type_identifier($navtype, $type, $identifier, $data) {
if(!empty($data) && is_array($data)) {
$navtype = dintval($navtype, true);
$type = dintval($type, true);
if(is_array($navtype) && empty($navtype) || is_array($type) && empty($type) || is_array($identifier) && empty($identifier)) {
return 0;
}
$wherearr[] = DB::field('navtype', $navtype);
$wherearr[] = DB::field('type', $type);
$wherearr[] = DB::field('identifier', $identifier);
return DB::update($this->_table, $data, implode(' AND ', $wherearr));
}
return 0;
}
public function update_by_type_identifier($type, $identifier, $data) {
$type = dintval($type, is_array($type) ? true : false);
if(is_array($identifier) && empty($identifier)) {
return 0;
}
if(!empty($data) && is_array($data)) {
return DB::update($this->_table, $data, DB::field('type', $type).' AND '.DB::field('identifier', $identifier));
}
return 0;
}
public function delete_by_navtype_id($navtype, $ids) {
$ids = dintval($ids, is_array($ids) ? true : false);
$navtype = dintval($navtype, is_array($navtype) ? true : false);
if($ids) {
return DB::delete($this->_table, DB::field('id', $ids).' AND '.DB::field('navtype', $navtype));
}
return 0;
}
public function delete_by_navtype_parentid($navtype, $parentid) {
$navtype = dintval($navtype, is_array($navtype) ? true : false);
$parentid = dintval($parentid, is_array($parentid) ? true : false);
return DB::delete($this->_table, DB::field('navtype', $navtype).' AND '.DB::field('parentid', $parentid));
}
public function delete_by_type_identifier($type, $identifier) {
if(is_array($identifier) && empty($identifier)) {
return 0;
}
$type = dintval($type, is_array($type) ? true : false);
return DB::delete($this->_table, DB::field('type', $type).' AND '.DB::field('identifier', $identifier));
}
public function delete_by_parentid($id) {
$id = dintval($id, is_array($id) ? true : false);
if($id) {
return DB::delete($this->_table, DB::field('parentid', $id));
}
return 0;
}
public function count_by_navtype_type_identifier($navtype, $type, $identifier) {
return DB::result_first('SELECT COUNT(*) FROM %t WHERE navtype=%d AND type=%d AND identifier=%s', array($this->_table, $navtype, $type, $identifier));
}
}
?>