📄 blog.php
字号:
//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 + -