⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 blog.php

📁 php 开发的内容管理系统
💻 PHP
📖 第 1 页 / 共 2 页
字号:
		//xoops_message($articles);
		
	    /* set blog last article time */
	    if($blog_time>0){
		    $blog->setVar("blog_time", $blog_time, true);
		    $this->insert($blog, true);
	    }
	    
	    /* update articles */
		$article_handler =& xoops_getmodulehandler("article", $GLOBALS["moddirname"]);
		$count = $article_handler->do_update($articles);

		if($count>0 && !empty($GLOBALS["xoopsModuleConfig"]["notification_enabled"])){
			$notification_handler =& xoops_gethandler("notification");
			$tags = array();
			$tags["BLOG_TITLE"] = $blog->getVar("blog_title");
			$tags["BLOG_URL"] = XOOPS_URL . "/modules/" . $GLOBALS["moddirname"] . "/index.php".URL_DELIMITER."b" .$blog->getVar("blog_id");
			$notification_handler->triggerEvent("blog", $blog->getVar("blog_id"), "blog_update", $tags);
		}
		return $count;
    }
    
    /**
     * parse articles
     * 
     * @param 	object	$criteria 	{@link CriteriaElement} to match
     * @param 	array	$tags 		variables to fetch
     * @param 	bool	$asObject 	flag indicating as object, otherwise as array
     * @return 	array of blogs {@link Bblog}
     */
    function &parse(&$content, $charset = "UTF-8", $tags = array())
    {
	    $res = array();
	    if(empty($content)){
		    return $res;
	    }
		require_once XOOPS_ROOT_PATH."/modules/".$GLOBALS["moddirname"]."/class/xmlparser.php";
		
		$parser = new XmlParser( $content, $charset, empty($xlanguage["charset_base"]) ? _CHARSET : $xlanguage["charset_base"], $tags );
		if (!$parser) {
			return $res;
		}
		foreach($tags as $tag){
			$res[$tag] = $parser->{$tag};
		}
		return $res;
    }
    
    /**
     * get a list of blogs matching a condition of a category
     * 
     * @param 	object	$criteria 	{@link CriteriaElement} to match
     * @param 	array	$tags 		variables to fetch
     * @param 	bool	$asObject 	flag indicating as object, otherwise as array
     * @return 	array of blogs {@link Bblog}
     */
   	function &getByCategory($criteria = null, $tags = null, $asObject=true)
    {
	    if(is_array($tags) && count($tags)>0) {
		    if(!in_array($this->keyName, $tags)) $tags[] = "b.".$this->keyName;
		    $select = implode(",", $tags);
	    }
	    else $select = "*";
	    $limit = null;
	    $start = null;
        $sql = "SELECT $select".
        		" FROM " . $this->table. " AS b".
        		" LEFT JOIN ".planet_DB_prefix("blogcat")." AS bc ON b.blog_id = bc.blog_id";
        		//" LEFT JOIN (SELECT blog_id,  FROM ".planet_DB_prefix("blogcat").") AS bc ON blog_id = bc.blog_id";
        if (isset($criteria) && is_subclass_of($criteria, "criteriaelement")) {
            $sql .= " ".$criteria->renderWhere();
            if ($criteria->getSort() != "") {
                $sql .= " ORDER BY ".$criteria->getSort()." ".$criteria->getOrder();
                $orderSet = true;
            }
            $limit = $criteria->getLimit();
            $start = $criteria->getStart();
        }
        if(empty($orderSet)) $sql .= " ORDER BY b.".$this->keyName." DESC";
        $result = $this->db->query($sql, $limit, $start);
        $ret = array();
        while ($myrow = $this->db->fetchArray($result)) {
            $object =& $this->create(false);
            $object->assignVars($myrow);
            if($asObject){
            	$ret[$myrow[$this->keyName]] = $object;
        	}else{
	        	foreach($myrow as $key=>$val){
            		$ret[$myrow[$this->keyName]][$key] = ($object->vars[$key]["changed"])?$object->getVar($key):$val;
        		}
        	}
            unset($object);
        }
        return $ret;
    }

    /**
     * count blogs matching a condition of a category (categories)
     * 
     * @param object $criteria {@link CriteriaElement} to match
     * @return int count of blogs
     */
   	function getCountByCategory($criteria = null)
    {
        $sql = "SELECT COUNT(*) AS count".
        		" FROM " . $this->table. " AS b".
        		" LEFT JOIN ".planet_DB_prefix("blogcat")." AS bc ON b.blog_id = bc.blog_id";
        if (isset($criteria) && is_subclass_of($criteria, "criteriaelement")) {
            $sql .= " ".$criteria->renderWhere();
        }
        if (!$result = $this->db->query($sql)) {
            return false;
        }
        $myrow = $this->db->fetchArray($result);
        return intval($myrow["count"]);
    }
    
   	function getCountsByCategory($criteria = null)
    {
        $sql = "SELECT cat_id, COUNT(*)".
        		" FROM ".planet_DB_prefix("blogcat");
        if (isset($criteria) && is_subclass_of($criteria, "criteriaelement")) {
            $sql .= " ".$criteria->renderWhere();
        }
        $sql .= " GROUP BY cat_id"; 
        if (!$result = $this->db->query($sql)) {
            return false;
        }
        $ret = array();
        while (list($id, $count) = $this->db->fetchRow($result)) {
            $ret[$id] = $count;
        }
        return $ret;
    }
    
    /**
     * get a list of blogs matching a condition of user bookmark
     * 
     * @param 	object	$criteria 	{@link CriteriaElement} to match
     * @param 	array	$tags 		variables to fetch
     * @param 	bool	$asObject 	flag indicating as object, otherwise as array
     * @return 	array of blogs {@link Bblog}
     */
   	function &getByBookmark($criteria = null, $tags = null, $asObject = true)
    {
	    if(is_array($tags) && count($tags)>0) {
		    if(!in_array($this->keyName, $tags)) $tags[] = "b.".$this->keyName;
		    $select = implode(",", $tags);
	    }
	    else $select = "*";
	    $limit = null;
	    $start = null;
        $sql = "SELECT $select".
        		" FROM " . $this->table. " AS b".
        		" LEFT JOIN ".planet_DB_prefix("bookmark")." AS bm ON b.blog_id = bm.blog_id";
        		//" LEFT JOIN (SELECT blog_id,  FROM ".planet_DB_prefix("blogcat").") AS bc ON blog_id = bc.blog_id";
        if (isset($criteria) && is_subclass_of($criteria, "criteriaelement")) {
            $sql .= " ".$criteria->renderWhere();
            if ($criteria->getSort() != "") {
                $sql .= " ORDER BY ".$criteria->getSort()." ".$criteria->getOrder();
                $orderSet = true;
            }
            $limit = $criteria->getLimit();
            $start = $criteria->getStart();
        }
        if(empty($orderSet)) $sql .= " ORDER BY b.".$this->keyName." DESC";
        $result = $this->db->query($sql, $limit, $start);
        $ret = array();
        while ($myrow = $this->db->fetchArray($result)) {
            $object =& $this->create(false);
            $object->assignVars($myrow);
            if($asObject){
            	$ret[$myrow[$this->keyName]] = $object;
        	}else{
	        	foreach($myrow as $key=>$val){
            		$ret[$myrow[$this->keyName]][$key] = ($object->vars[$key]["changed"])?$object->getVar($key):$val;
        		}
        	}
            unset($object);
        }
        return $ret;
    }

    /**
     * count blogs matching a condition of user bookmark
     * 
     * @param object $criteria {@link CriteriaElement} to match
     * @return int count of blogs
     */
   	function getCountByBookmark($criteria = null)
    {
        $sql = "SELECT COUNT(*) AS count".
        		" FROM " . $this->table. " AS b".
        		" LEFT JOIN ".planet_DB_prefix("bookmark")." AS bm ON b.blog_id = bm.blog_id";
        if (isset($criteria) && is_subclass_of($criteria, "criteriaelement")) {
            $sql .= " ".$criteria->renderWhere();
        }
        if (!$result = $this->db->query($sql)) {
            return false;
        }
        $myrow = $this->db->fetchArray($result);
        return intval($myrow["count"]);
    }
    
    function delete(&$blog, $force=false)
    {
        $queryFunc = empty($force)?"query":"queryF";
        
	    /* remove bookmarks */
		$bookmark_handler =& xoops_getmodulehandler("bookmark", $GLOBALS["moddirname"]);
	    $bookmark_handler->deleteAll(new Criteria("blog_id", $blog->getVar("blog_id")));
	    
	    /* remove category-blog links */
        $sql = "DELETE FROM ".planet_DB_prefix("blogcat")." WHERE blog_id = ".$blog->getVar("blog_id");
        if (!$result = $this->db->{$queryFunc}($sql)) {
        }
	    
	    /* remove articles */
		$article_handler =& xoops_getmodulehandler("article", $GLOBALS["moddirname"]);
	    $arts_obj =& $article_handler->getAll(new Criteria("blog_id", $blog->getVar("blog_id")));
	    foreach(array_keys($arts_obj) as $id){
	    	$article_handler->delete($arts_obj[$id]);
	    }

        xoops_notification_deletebyitem($GLOBALS["xoopsModule"]->getVar("mid"), "blog", $blog->getVar("blog_id"));
	    
	    /* Remove cat-blog links */
	    parent::delete($blog, $force);
    }
    
    function do_empty(&$blog)
    {
	    /* remove articles */
		$article_handler =& xoops_getmodulehandler("article", $GLOBALS["moddirname"]);
	    $arts_obj =& $article_handler->getAll(new Criteria("blog_id", $blog->getVar("blog_id")));
	    foreach(array_keys($arts_obj) as $id){
	    	$article_handler->delete($arts_obj[$id]);
	    }
	    $blog->setVar("blog_time", 0);
	    $blog->setVar("blog_key", "");
	    $this->insert($blog, true);
	    return true;
    }
    
    /**
     * get categories of a blog
     * 
     * @param 	int		$blog 		blog ID
     * @param 	array	$categories 		array of category IDs
     * @return 	bool
     */
   	function setCategories($blog, $categories)
    {
		$category_handler =& xoops_getmodulehandler("category", $GLOBALS["moddirname"]);
        $crit = new Criteria("bc.blog_id", $blog);
    	$cats = array_keys($category_handler->getByBlog($crit));
	    $cats_add = array_diff($categories, $cats);
	    $cats_rmv = array_diff($cats, $categories);
	    if(count($cats_add)>0){
		    $_values = array();
		    foreach($cats_add as $cat){
			    $_values[] = "(".intval($blog).", ".intval($cat).")";
	        }
			$values = implode(",",$_values);
	        $sql = "INSERT INTO ".planet_DB_prefix("blogcat")." (blog_id, cat_id) VALUES ". $values;
	        if (!$result = $this->db->queryF($sql)) {
	            planet_message("Insert blog-cat error:" . $sql);
	        }
  		}
	    if(count($cats_rmv)>0){
	        $sql = "DELETE FROM ".planet_DB_prefix("blogcat")." WHERE ( blog_id=".intval($blog)." AND cat_id IN (".implode(",", $cats_rmv).") )";
	        if (!$result = $this->db->queryF($sql)) {
	            planet_message("remove blog-cat error:" . $sql);
	        }
  		}
        
        return count($cats_add);
    }
}
'
);
?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -