From: <vo...@us...> - 2011-12-26 09:17:14
|
Revision: 8561 http://xoops.svn.sourceforge.net/xoops/?rev=8561&view=rev Author: voltan1 Date: 2011-12-26 09:17:08 +0000 (Mon, 26 Dec 2011) Log Message: ----------- Fix Queries Modified Paths: -------------- XoopsModules/fmcontent/branches/news/class/story.php XoopsModules/fmcontent/branches/news/class/topic.php XoopsModules/fmcontent/branches/news/index.php Modified: XoopsModules/fmcontent/branches/news/class/story.php =================================================================== --- XoopsModules/fmcontent/branches/news/class/story.php 2011-12-26 07:19:19 UTC (rev 8560) +++ XoopsModules/fmcontent/branches/news/class/story.php 2011-12-26 09:17:08 UTC (rev 8561) @@ -502,26 +502,27 @@ */ function News_GetContentList($NewsModule, $story_infos) { $ret = array (); - $criteria = new CriteriaCompo (); - $criteria->add ( new Criteria ( 'story_status', $story_infos ['story_status'] ) ); + $access_topic = NewsPermission::News_GetItemIds ( 'news_access', $NewsModule); $topic_handler = xoops_getmodulehandler ( 'topic', 'news' ); $topic_show = $topic_handler->allVisible($NewsModule,$story_infos ['topics'],$story_infos ['story_topic']); - $topiclist = array_intersect($access_topic , $topic_show); - $criteria->add ( new Criteria ( 'story_topic', '(' . implode ( ',', $topiclist ) . ')', 'IN' ) ); + if(isset($story_infos ['story_subtopic'])) { + $topiclist = array_intersect($access_topic , $topic_show , $story_infos ['story_subtopic']); + } else { + $topiclist = array_intersect($access_topic , $topic_show); + } + + + $criteria = new CriteriaCompo (); + $criteria->add ( new Criteria ( 'story_topic', '(' . implode ( ',', $topiclist ) . ')', 'IN' ) ); $criteria->add ( new Criteria ( 'story_modid', $NewsModule->getVar ( 'mid' ) ) ); + $criteria->add ( new Criteria ( 'story_status', $story_infos ['story_status'] ) ); + $criteria->add ( new Criteria ( 'story_uid', $story_infos ['story_user'] ) ); + $criteria->add ( new Criteria ( 'story_publish', 0 , '>' )); $criteria->add ( new Criteria ( 'story_publish', time() , '<=' )); - $criteria->add ( new Criteria ( 'story_publish', 0 , '>' )); - $criteria->add ( new Criteria ( 'story_expire', time() , '>=' )); - $criteria->add ( new Criteria ( 'story_expire', 0 ) ,'OR'); - $criteria->add ( new Criteria ( 'story_uid', $story_infos ['story_user'] ) ); - $criteria->add ( new Criteria ( 'story_topic', $story_infos ['story_topic'] ) ); - if(isset($story_infos ['story_subtopic'])) { - foreach ($story_infos ['story_subtopic'] as $subtopic){ - $criteria->add ( new Criteria ( 'story_topic', $subtopic ) ,'OR'); - } - } - $criteria->setSort ( $story_infos ['story_sort'] ); + $criteria->add ( new Criteria ( 'story_expire', 0 )); + $criteria->add ( new Criteria ( 'story_expire', time() , '>' ) ,'OR'); + $criteria->setSort ( $story_infos ['story_sort'] ); $criteria->setOrder ( $story_infos ['story_order'] ); $criteria->setLimit ( $story_infos ['story_limit'] ); $criteria->setStart ( $story_infos ['story_start'] ); @@ -654,22 +655,28 @@ * use in homepage function in NewsUtils class */ function News_GetContentCount($NewsModule, $story_infos) { - $criteria = new CriteriaCompo (); - $criteria->add ( new Criteria ( 'story_modid', $NewsModule->getVar ( 'mid' ) ) ); - $criteria->add ( new Criteria ( 'story_topic', $story_infos ['story_topic'] ) ); $access_topic = NewsPermission::News_GetItemIds ( 'news_access', $NewsModule); $topic_handler = xoops_getmodulehandler ( 'topic', 'news' ); $topic_show = $topic_handler->allVisible($NewsModule,$story_infos ['topics'],$story_infos ['story_topic']); - $topiclist = array_intersect($access_topic , $topic_show); - $criteria->add ( new Criteria ( 'story_topic', '(' . implode ( ',', $topiclist ) . ')', 'IN' ) ); if(isset($story_infos ['story_subtopic'])) { - foreach ($story_infos ['story_subtopic'] as $subtopic){ - $criteria->add ( new Criteria ( 'story_topic', $subtopic ) ,'OR'); - } - } - if ($story_infos ['story_static']) { - $criteria->add ( new Criteria ( 'story_topic', '0', '>' ) ); - } + $topiclist = array_intersect($access_topic , $topic_show , $story_infos ['story_subtopic']); + } else { + $topiclist = array_intersect($access_topic , $topic_show); + } + + $criteria = new CriteriaCompo (); + $criteria->add ( new Criteria ( 'story_topic', '(' . implode ( ',', $topiclist ) . ')', 'IN' ) ); + $criteria->add ( new Criteria ( 'story_modid', $NewsModule->getVar ( 'mid' ) ) ); + $criteria->add ( new Criteria ( 'story_status', $story_infos ['story_status'] ) ); + $criteria->add ( new Criteria ( 'story_uid', $story_infos ['story_user'] ) ); + $criteria->add ( new Criteria ( 'story_publish', 0 , '>' )); + $criteria->add ( new Criteria ( 'story_publish', time() , '<=' )); + $criteria->add ( new Criteria ( 'story_expire', 0 )); + $criteria->add ( new Criteria ( 'story_expire', time() , '>' ) ,'OR'); + $criteria->setSort ( $story_infos ['story_sort'] ); + $criteria->setOrder ( $story_infos ['story_order'] ); + $criteria->setLimit ( $story_infos ['story_limit'] ); + $criteria->setStart ( $story_infos ['story_start'] ); return $this->getCount ( $criteria ); } Modified: XoopsModules/fmcontent/branches/news/class/topic.php =================================================================== --- XoopsModules/fmcontent/branches/news/class/topic.php 2011-12-26 07:19:19 UTC (rev 8560) +++ XoopsModules/fmcontent/branches/news/class/topic.php 2011-12-26 09:17:08 UTC (rev 8561) @@ -309,6 +309,7 @@ */ function News_GetSubTopics($NewsModule , $id ,$topics) { $ret = array(); + $ret [] = $id; foreach ( $topics as $root ) { if($root->getVar ( 'topic_pid' ) == $id) { $ret [] = $root->getVar ( 'topic_id' ); Modified: XoopsModules/fmcontent/branches/news/index.php =================================================================== --- XoopsModules/fmcontent/branches/news/index.php 2011-12-26 07:19:19 UTC (rev 8560) +++ XoopsModules/fmcontent/branches/news/index.php 2011-12-26 09:17:08 UTC (rev 8561) @@ -148,7 +148,7 @@ $story_start = 0; } -$story_infos = array ('topics' => $topics, 'story_limit' => $story_limit, 'story_topic' => $story_topic, 'story_user' => $story_user, 'story_start' => $story_start, 'story_order' => $story_order, 'story_sort' => $story_sort, 'story_status' => '1', 'story_static' => true, 'admin_side' => false , 'story_subtopic' => $story_subtopic , 'id' => $default_id, 'title' => $default_title , 'alias' => $default_alias); +$story_infos = array ('topics' => $topics, 'story_limit' => $story_limit, 'story_topic' => $story_topic, 'story_user' => $story_user, 'story_start' => $story_start, 'story_order' => $story_order, 'story_sort' => $story_sort, 'story_status' => '1', 'story_subtopic' => $story_subtopic , 'id' => $default_id, 'title' => $default_title , 'alias' => $default_alias); // Get Information for Show in indexpage or topic pages $contents = NewsUtils::News_Homepage ( $NewsModule, $story_infos, $type ); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |