Exemplo n.º 1
0
function get_photolist( $req_uid=array(), $uid, $max_entry, $offset=0, $params=array() ){

	$db = & $this->d3dConf->db;
	
	$on_uid = "ON ((d.uid=c.uid  OR c.uid='0') AND d.cid=c.cid) " ;
	$max_entry = !empty($max_entry) ? (int)$max_entry : 0 ;

	if($this->mPerm->isadmin){
		$whr_openarea = "";
	} else {
		// openarea permissions 
		$_params4op['use_gp'] = $this->gPerm->use_gp;
		$_params4op['use_pp'] = $this->gPerm->use_pp;
		$whr_openarea = " AND ".$this->mPerm->get_open_query( "photolist", $_params4op );
		//var_dump($whr_openarea);
	}

	$whr_uids = count($req_uid)>0 ? "d.uid IN (".implode(',',$req_uid).")" : " 1 ";
	
		$now = date("Y-m-d H:i:s");
		if ($this->mPerm->isadmin!=true and $this->mPerm->isauthor!=true) {
			$whr_nofuture = " AND d.create_time<'".$now."' ";
		} else {
			$whr_nofuture = "";
		}

	$whr_pid = "" ;
	$whr_cid = "" ;
	$whr_cat = "" ;
	$whr_tag = "" ;
	$table_tag = "" ;
	$whr_time = "";

	$odr = '';
	if (!empty($params)){
		$size = !empty($params['size']) ? (int)$params['size'] : 0 ;

		if(!empty($params['order'])){
			switch ($params['order']) {
			case 'random' :
				$odr = "rand()" ;
				break;
			case 'title_asc' :
				$odr = "cast(d.title as char) ASC" ;
				break;
			case 'title_dsc' :
				$odr = "cast(d.title as char) DESC" ;
				break;
			case 'hit_asc' :
				$odr = "d.view ASC" ;
				break;
			case 'hit_dsc' :
				$odr = "d.view DESC" ;
				break;
			case 'time_asc' :
				$odr = "d.create_time ASC" ;
				break;
			case 'time_dsc' :
			case 'time' :
			default :
				$odr = "d.create_time DESC" ;
			}
			
			$odr = ' ORDER BY ' . $odr;
		}

		$ofst_key = !empty($params['ofst_key']) ? $params['ofst_key'] : "phofst";

		if(!empty($params['pid'])){
			$whr_pid = " AND p.pid = '".$params['pid']."'" ;
		}
		if(!empty($params['cids'])){
			if( $params['cids'][0] == 0 ) {
				$whr_cid = " AND c.cid IS NULL " ;
		 	} else {
				$whr_cid = " AND c.cid IN (".implode("," , $params['cids']).")" ;
			}
		}
		if(!empty($params['categories'])){
			$whr_cat = " AND (" ;
		      	foreach($params['categories'] as $cat) {
				$whr_cat .= "c.cname LIKE '".$cat."' OR ";
			}
            		$whr_cat = rtrim( $whr_cat, "OR " ). ")" ;
		}
		if(!empty($params['tags'])){
			$table_tag = "LEFT JOIN ".$db->prefix($this->mydirname.'_tag')." t ON d.bid=t.bid " ;
			$whr_tag = " AND (" ;
		      	foreach($params['tags'] as $tag) {
				$whr_tag .= "t.tag_name LIKE '".$tag."' OR ";
			}
            		$whr_tag = rtrim( $whr_tag, "OR " ). ")" ;
		}
		if(!empty($params['day'])){
			$whr_time.=" AND d.create_time>='".$params['year']."-".$params['month']
				."-".$params['day']." 00:00:00"."' ";
			$whr_time.=" AND d.create_time<='".$params['year']."-".$params['month']
				."-".$params['day']." 23:59:59"."' ";
		} elseif(!empty($params['month'])){
			if($params['month']==12){
				$next_year=$params['year']+1;
				$next_month=1;
			}else{
				$next_year=$params['year'];
				$next_month=$params['month']+1;
			}
			$whr_time.=" AND d.create_time>='".$params['year']."-".$params['month']."-01 00:00:00"."' ";
			$whr_time.=" AND d.create_time<'".$next_year."-".$next_month."-01 00:00:00"."' ";
		}
		
		// params for info sanitize
		$max_info = !empty($params['max_info']) ? $params['max_info'] : 30 ;
		$enc = !empty($params['enc']) ? $params['enc'] : _CHARSET ;
		$f_truncate = !empty($params['f_truncate']) ? $params['f_truncate'] : false ;
	}

	$sql_base = "FROM ".$db->prefix($this->mydirname.'_photo')." p 
			INNER JOIN ".$db->prefix($this->mydirname.'_diary')." d USING(bid) 
			INNER JOIN ".$db->prefix('users')." u ON d.uid=u.uid 
			LEFT JOIN ".$db->prefix($this->mydirname.'_category')." c ".$on_uid." 
			LEFT JOIN ".$db->prefix($this->mydirname.'_config')." cfg ON d.uid=cfg.uid 
			".$table_tag."
			WHERE ".$whr_uids.$whr_openarea.$whr_nofuture.$whr_pid.$whr_cid.$whr_cat.$whr_tag.$whr_time.$odr ;

	// get total photos count
	$got_navi = array();
	if ($max_entry) {
		$sql = "SELECT count(p.pid) as count ".$sql_base ;
		$result = $db->query($sql);
		list ($count) = $db->fetchRow($result);
		if($count>$max_entry){
			if( !empty($_SERVER['QUERY_STRING'])) {
				if( preg_match("/^".$ofst_key."=[0-9]+/", $_SERVER['QUERY_STRING']) ) {
					$url = "";
				} else {
					$url = preg_replace("/^(.*)\&".$ofst_key."=[0-9]+/", "$1", $_SERVER['QUERY_STRING']);
				}
			} else {
				$url = "";
			}
			include_once dirname( dirname(__FILE__) ).'/class/d3diaryPagenavi.class.php';
			$nav = new d3diaryPageNav($count, $max_entry, $offset, $ofst_key, $url);
			if (!empty($params['getnav'])) {
				$got_navi = $nav->getNav();
				$got_navi['count'] = $count ;
			} else {
				$got_navi = $nav->renderNav();
			}
		}
	}
	
	$sql = "SELECT p.pid as pid, p.ptype as ptype, p.tstamp as tstamp, p.info as info, p.bid as bid, p.uid as uid, 
			title, uname, name, d.cid, GREATEST(d.openarea, COALESCE(cfg.openarea, 0), COALESCE(c.openarea, 0)) as openarea "
			.$sql_base ;
        $result = $db->query($sql, $max_entry, $offset);
	$rtn_ = array();
	while ( $dbdat = $db->fetchArray($result) ) {
		$photo['bid'] = (int)$dbdat['bid'];
		$photo['pid'] = $dbdat['pid'];
		$photo['ptype']= $dbdat['ptype'];
		$photo['pname'] = $this->myts->makeTboxData4Show($photo['pid'].$photo['ptype']);
		$photo['thumbnail'] = "t_".$photo['pid'].$photo['ptype'];
		$photo['info'] = $dbdat['info'] ? $this->substrTarea( $dbdat['info'], 0, $max_info, $f_truncate, $enc ) : "" ;
		$tmp = preg_split("/[-: ]/",$dbdat['tstamp']);
		$photo['tstamp'] = mktime($tmp[3],$tmp[4],$tmp[5],$tmp[1],$tmp[2],$tmp[0]);
		$photo['time'] = $dbdat['tstamp'] ;
		$photo['title'] = $this->myts->makeTboxData4Show($dbdat['title']);
		$photo['uid'] = (int)$dbdat['uid'];
		$photo['uname'] = htmlSpecialChars( $dbdat['uname'], ENT_QUOTES );
		$photo['name'] = htmlSpecialChars( $dbdat['name'], ENT_QUOTES );
		$photo['cid'] = (int)$dbdat['cid'];
		$photo['openarea'] = (int)$dbdat['openarea'];
		
		$rtn_[] = $photo;
	}

  	return array( $rtn_, $got_navi);

}
Exemplo n.º 2
0
 // query limit
 $whr_offset = " LIMIT " . $offset2 . "," . $max_entry2;
 // using d3diaryPageNav
 if ($num_rows > $max_entry) {
     if (!empty($_SERVER['QUERY_STRING'])) {
         if (preg_match("/^pofst=[0-9]+/", $_SERVER['QUERY_STRING'])) {
             $url = "";
         } else {
             $url = preg_replace("/^(.*)\\&pofst=[0-9]+/", "\$1", $_SERVER['QUERY_STRING']);
         }
     } else {
         $url = "";
     }
     include_once dirname(dirname(__FILE__)) . '/class/d3diaryPagenavi.class.php';
     $nav = new d3diaryPageNav($num_rows, $max_entry, $offset, "pofst", $url);
     $yd_pagenavi = $nav->getNav();
 } else {
     $yd_pagenavi = "";
 }
 // *********** SQL for actual entry
 // get entries on selected offset
 $sql = "SELECT d.diary, d.create_time, d.cid, d.title, d.bid, d.openarea AS openarea, d.dohtml, \n\t\t\td.view, d.vgids AS vgids, d.vpids AS vpids, u.uid, u.uname, u.name, u.user_avatar, \n\t\t\tc.cid, c.cname, c.openarea AS openarea_cat, c.showoption , c.vgids AS vgids_cat, c.vpids AS vpids_cat \n\t\t\tFROM " . $xoopsDB->prefix($mydirname . '_diary') . " d \n\t\t\tINNER JOIN " . $xoopsDB->prefix('users') . " u USING(uid) \n\t\t\tLEFT JOIN " . $xoopsDB->prefix($mydirname . '_category') . " c ON ((c.uid=d.uid or c.uid='0') and d.cid=c.cid) \n\t\t\tLEFT JOIN " . $xoopsDB->prefix($mydirname . '_config') . " cfg ON d.uid=cfg.uid " . $sql_tag . $where_ser_bids . " ORDER BY " . $odr;
 $result = $xoopsDB->query($sql);
 // flag for using d3comment
 if (!empty($mod_config['comment_dirname']) && intval($mod_config['comment_forum_id']) > 0) {
     $yd_param['use_d3comment'] = true;
 } else {
     $yd_param['use_d3comment'] = false;
 }
 $charmax = (int) $mod_config['preview_charmax'];
 $entry = array();