예제 #1
0
function delTopic()
{
    global $xoopsDB, $xoopsModule;
    if (!isset($_POST['ok'])) {
        xoops_cp_header();
        echo '<h4>' . _AM_NW_CONFIG . '</h4>';
        $xt = new XoopsTopic( $xoopsDB->prefix('nw_topics'), intval($_GET['topic_id']));
        xoops_confirm(array( 'op' => 'delTopic', 'topic_id' => intval($_GET['topic_id']), 'ok' => 1), 'index.php', _AM_NW_WAYSYWTDTTAL . '<br />' . $xt->topic_title('S'));
    } else {
    	xoops_cp_header();
        $xt = new XoopsTopic($xoopsDB->prefix('nw_topics'), intval($_POST['topic_id']));
	    if(isset($_SESSION['items_count'])) {
    		$_SESSION['items_count'] = -1;
    	}
        // get all subtopics under the specified topic
        $topic_arr = $xt->getAllChildTopics();
        array_push( $topic_arr, $xt );
        foreach( $topic_arr as $eachtopic ) {
            // get all stories in each topic
            $story_arr = nw_NewsStory :: getByTopic( $eachtopic -> topic_id() );
            foreach( $story_arr as $eachstory ) {
                if (false != $eachstory->delete()) {
                    xoops_comment_delete( $xoopsModule -> getVar( 'mid' ), $eachstory -> storyid() );
                    xoops_notification_deletebyitem($xoopsModule->getVar('mid'), 'story', $eachstory->storyid());
                }
            }
            // all stories for each topic is deleted, now delete the topic data
            $eachtopic -> delete();
            // Delete also the notifications and permissions
            xoops_notification_deletebyitem( $xoopsModule -> getVar( 'mid' ), 'category', $eachtopic -> topic_id );
			xoops_groupperm_deletebymoditem($xoopsModule->getVar('mid'), 'nw_approve', $eachtopic -> topic_id);
			xoops_groupperm_deletebymoditem($xoopsModule->getVar('mid'), 'nw_submit', $eachtopic -> topic_id);
			xoops_groupperm_deletebymoditem($xoopsModule->getVar('mid'), 'nw_view', $eachtopic -> topic_id);
        }
        nw_updateCache();
        redirect_header( 'index.php?op=topicsmanager', 1, _AM_NW_DBUPDATED );
        exit();
    }
}