本文整理汇总了PHP中vB类的典型用法代码示例。如果您正苦于以下问题:PHP vB类的具体用法?PHP vB怎么用?PHP vB使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了vB类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: getNewRouteInfo
protected function getNewRouteInfo()
{
$arguments =& $this->arguments;
$param =& $this->queryParameters;
$keys = array_keys($param);
$idkey = array('t', 'threadid');
if (empty($param['do'])) {
$param['do'] = 'showsmilies';
}
switch ($param['do']) {
case 'bbcode':
$this->anchor = 'bbcode_reference/bbcode_why';
return 'help';
case 'showrules':
$this->anchor = 'community_overview/general_tos';
return 'help';
case 'showsmilies':
$this->anchor = 'bbcode_reference/bbcode_smilies';
return 'help';
case 'whoposted':
if ($set = array_intersect($keys, $idkey) and $pid = intval($param[reset($set)])) {
$oldid = $pid;
$oldcontenttypeid = vB_Types::instance()->getContentTypeID(array('package' => 'vBForum', 'class' => 'Thread'));
$node = vB::getDbAssertor()->getRow('vBForum:node', array('oldid' => $oldid, 'oldcontenttypeid' => $oldcontenttypeid));
if (!empty($node)) {
$arguments['nodeid'] = $node['nodeid'];
return $node['routeid'];
}
}
default:
throw new vB_Exception_404('invalid_page');
}
}
示例2: createSession
public function createSession($userid = 1)
{
//$this->session = vB_Session_Web::getSession(1);
$this->session = new vB_Session_Cli(vB::getDbAssertor(), vB::getDatastore(), vB::getConfig(), $userid);
vB::setCurrentSession($this->session);
$this->timeNow = time();
}
示例3: get_admin_detail_chat
public function get_admin_detail_chat()
{
global $vbulletin;
// Get the settings options and the user's info
$options = vB::getDatastore()->getValue('options');
$userinfo = vB::getCurrentSession()->fetch_userinfo();
// Api Key and Secret
$api = $options['chat_cat_messenger_api'];
$secret = $options['chat_cat_messenger_secret'];
$login_url = $options['chat_cat_messenger_login_url'];
$register_url = $options['chat_cat_messenger_register_url'];
$primary_domain = $options['chat_cat_messenger_primary_url'];
// echo $primary_domain;
// die();
// User info
$uname = $userinfo['username'];
$uid = $userinfo['userid'];
$desc = $userinfo['field1'];
$src = '';
$home = $options['bburl'] . '/member/' . $uid;
//echo $home;die;
$location = $userinfo['field2'];
$bod = $userinfo['birthday'];
if (!empty($bod)) {
$year = explode("-", $bod);
$bod = $year['2'];
}
$profilepic = $vbulletin->db->query_first("\n\t\t\tSELECT userid, dateline, height, width\n\t\t\tFROM " . TABLE_PREFIX . "customavatar\n\t\t\tWHERE userid = " . $uid);
if ($profilepic['dateline']) {
$img = $options['bburl'] . '/image.php?userid=' . $uid . '&thumb=1&dateline=' . $profilepic[dateline] . '&type=avtar';
} else {
$img = null;
}
$src = urlencode($img);
$home = urlencode($home);
//$src = urldecode($img);
$chatdata = array();
$chatdata['sinonurl'] = '';
if (isset($api) && $api != '') {
$chatdata['sinonurl'] = '/ajaxchat.php?uid=' . $uid . '&api=' . $api . '&secret=' . $secret . '&uname=' . $uname . '&desc=' . $desc . '&src=' . $src . '&home=' . $home . '&birthday=' . $bod . '&location=' . $location;
}
$chatdata['primaryurl'] = $primary_domain;
if ($login_url != '') {
$chatdata['loginurl'] = $login_url;
if (!preg_match("@^[hf]tt?ps?://@", $chatdata['loginurl'])) {
$chatdata['loginurl'] = "http://" . $chatdata['loginurl'];
}
} else {
$chatdata['loginurl'] = '';
}
if ($register_url != '') {
$chatdata['registerurl'] = $register_url;
if (!preg_match("@^[hf]tt?ps?://@", $chatdata['registerurl'])) {
$chatdata['registerurl'] = "http://" . $chatdata['registerurl'];
}
} else {
$chatdata['registerurl'] = $options['frontendurl'] . '/register';
}
return $chatdata;
}
示例4: __construct
public function __construct(&$routeInfo, &$matches, &$queryString = '')
{
if (isset($matches['params']) and !empty($matches['params'])) {
$paramString = strpos($matches['params'], '/') === 0 ? substr($matches['params'], 1) : $matches['params'];
$params = explode('/', $paramString);
if (count($params) >= 2) {
$this->pagenum = $params[1];
$this->folderid = $params[0];
} else {
if (!empty($params)) {
$this->pagenum = $params[1];
}
}
}
if (!empty($matches['pagenum']) and intval($matches['pagenum'])) {
$this->pagenum = $matches['pagenum'];
}
if (!empty($matches['folderid']) and intval($matches['folderid'])) {
$this->folderid = $matches['folderid'];
}
$routeInfo['arguments']['subtemplate'] = $this->subtemplate;
$userid = vB::getCurrentSession()->get('userid');
$pmquota = vB::getUserContext($userid)->getLimit('pmquota');
$vboptions = vB::getDatastore($userid)->getValue('options');
$canUsePmSystem = ($vboptions['enablepms'] and $pmquota);
if (!$canUsePmSystem and !$this->overrideDisable) {
throw new vB_Exception_NodePermission('privatemessage');
}
}
示例5: __construct
public function __construct(&$config, &$db_assertor)
{
parent::__construct($config, $db_assertor);
if (defined('SKIP_DEFAULTDATASTORE')) {
$this->cacheableitems = array('options', 'bitfields');
}
//this define is only used in this file so move it here.
$vb5_config =& vB::getConfig();
if (!empty($vb5_config['Misc']['datastorepath'])) {
$this->datastoreLocation = $vb5_config['Misc']['datastorepath'];
return;
}
//It's cool if the user can set this in fileSystem cache and let this pick it up.
if (!empty($vb5_config['Cache']['fileCachePath']) and file_exists($vb5_config['Cache']['fileCachePath']) and is_dir($vb5_config['Cache']['fileCachePath'])) {
$path = $vb5_config['Cache']['fileCachePath'] . '/datastore';
if (!file_exists($path)) {
mkdir($path);
file_put_contents($path . '/index.html', '');
}
if (is_dir($path)) {
if (!file_exists($path . '/datastore_cache.php') and file_exists(DIR . '/includes/datastore/datastore_cache.php')) {
copy(DIR . '/includes/datastore/datastore_cache.php', $path . '/datastore_cache.php');
}
if (!file_exists($path . 'datastore_cache.php')) {
$this->datastoreLocation = $path;
}
return;
}
}
$this->datastoreLocation = DIR . '/includes/datastore';
}
示例6: updateSetting
/**
* This function updates specified settings
* @param array $values
* 'varname' => $vbulletin->GPC['varname'],
* 'grouptitle' => $vbulletin->GPC['grouptitle'],
* 'optioncode' => $vbulletin->GPC['optioncode'],
* 'defaultvalue' => $vbulletin->GPC['defaultvalue'],
* 'displayorder' => $vbulletin->GPC['displayorder'],
* 'volatile' => $vbulletin->GPC['volatile'],
* 'datatype' => $vbulletin->GPC['datatype'],
* 'validationcode' => $vbulletin->GPC['validationcode'],
* 'product' => $vbulletin->GPC['product'],
* 'blacklist' => $vbulletin->GPC['blacklist'],
* 'title' => $vbulletin->GPC['title'],
* 'username' => $vbulletin->userinfo['username'],
* 'description' => $vbulletin->GPC['description']
* @return array, $response
*/
public function updateSetting($values)
{
require_once DIR . '/includes/class_xml.php';
require_once DIR . '/includes/functions_file.php';
require_once DIR . '/includes/adminfunctions_options.php';
require_once DIR . '/includes/adminfunctions.php';
$response = array();
$langid = $values['volatile'] ? -1 : 0;
if (defined('DEV_AUTOEXPORT') and DEV_AUTOEXPORT) {
$old_setting = vB::getDbAssertor()->getRow('setting', array(vB_dB_Query::TYPE_KEY => vB_dB_Query::QUERY_SELECT, 'varname' => $values['varname']));
}
vB::getDbAssertor()->assertQuery('setting', array(vB_dB_Query::TYPE_KEY => vB_dB_Query::QUERY_UPDATE, 'grouptitle' => $values['grouptitle'], 'optioncode' => $values['optioncode'], 'defaultvalue' => $values['defaultvalue'], 'displayorder' => $values['displayorder'], 'volatile' => $values['volatile'], 'datatype' => $values['datatype'], 'validationcode' => $values['validationcode'], 'product' => $values['product'], 'blacklist' => $values['blacklist'], 'ispublic' => $values['ispublic'], 'adminperm' => isset($values['adminperm']) ? $values['adminperm'] : '', vB_dB_Query::CONDITIONS_KEY => array(array('field' => 'varname', 'value' => $values['varname'], 'operator' => vB_dB_Query::OPERATOR_EQ))));
$phrases = vB::getDbAssertor()->assertQuery('vBForum:phrase', array(vB_dB_Query::TYPE_KEY => vB_dB_Query::QUERY_SELECT, 'languageid' => array(-1, 0), 'fieldname' => 'vbsettings', 'varname' => array("setting_" . $values['varname'] . "_title", "setting_" . $values['varname'] . "_desc")));
$full_product_info = fetch_product_list(true);
$product_version = $full_product_info[$values['product']]['version'];
if ($phrases and $phrases->valid()) {
foreach ($phrases as $phrase) {
if ($phrase['varname'] == "setting_" . $values['varname'] . "_title") {
vB::getDbAssertor()->assertQuery('vBForum:phrase', array(vB_dB_Query::TYPE_KEY => vB_dB_Query::QUERY_UPDATE, 'languageid' => $langid, 'text' => $values['title'], 'product' => $values['product'], 'username' => $values['username'], 'dateline' => TIMENOW, 'version' => $product_version, vB_dB_Query::CONDITIONS_KEY => array(array('field' => 'languageid', 'value' => $phrase['languageid'], 'operator' => vB_dB_Query::OPERATOR_EQ), array('field' => 'varname', 'value' => "setting_" . $values['varname'] . "_title", 'operator' => vB_dB_Query::OPERATOR_EQ))));
} else {
if ($phrase['varname'] == "setting_" . $values['varname'] . "_desc") {
vB::getDbAssertor()->assertQuery('vBForum:phrase', array(vB_dB_Query::TYPE_KEY => vB_dB_Query::QUERY_UPDATE, 'languageid' => $langid, 'text' => $values['description'], 'product' => $values['product'], 'username' => $values['username'], 'dateline' => TIMENOW, 'version' => $product_version, vB_dB_Query::CONDITIONS_KEY => array(array('field' => 'languageid', 'value' => $phrase['languageid'], 'operator' => vB_dB_Query::OPERATOR_EQ), array('field' => 'varname', 'value' => "setting_" . $values['varname'] . "_desc", 'operator' => vB_dB_Query::OPERATOR_EQ))));
}
}
}
}
vB::getDatastore()->build_options();
$response['update'] = true;
return $response;
}
示例7: buildOutputFromItems
protected function buildOutputFromItems($items, $options)
{
parent::buildOutputFromItems($items, $options);
$xml = new vB_Xml_Builder();
$xml->add_group('rss', array('version' => '0.91'));
$xml->add_group('channel');
$xml->add_tag('title', $this->rssinfo['title']);
$xml->add_tag('link', $this->rssinfo['link'] . '/', array(), false, true);
$xml->add_tag('description', $this->rssinfo['description']);
$xml->add_tag('language', $this->defaultLang['languagecode']);
$xml->add_group('image');
$xml->add_tag('url', $this->rssinfo['icon']);
$xml->add_tag('title', $this->rssinfo['title']);
$xml->add_tag('link', $this->rssinfo['link'] . '/', array(), false, true);
$xml->close_group('image');
$dateformat = vB::getDatastore()->getOption('dateformat');
$timeformat = vB::getDatastore()->getOption('timeformat');
// gather channel info
$channelsInfo = $this->getItemsChannelInfo($items);
$items = $this->formatItems($items, $options);
foreach ($items as $id => $item) {
$item = $item['content'];
$xml->add_group('item');
$xml->add_tag('title', $item['external_prefix_plain'] . vB_String::htmlSpecialCharsUni($item['external_title']));
$xml->add_tag('link', vB_Api::instanceInternal('route')->getAbsoluteNodeUrl($item['external_nodeid']), array(), false, true);
$xml->add_tag('description', vB_Phrase::fetchSinglePhrase('rss_91_forum_w_posted_by_x_post_time_y_at_z', array($channelsInfo[$item['channelid']]['htmltitle'], $item['authorname'], $this->callvBDate($dateformat, $item['publishdate']), $this->callvBDate($timeformat, $item['publishdate']))));
$xml->close_group('item');
}
$xml->close_group('channel');
$xml->close_group('rss');
$output .= '<!DOCTYPE rss PUBLIC "-//RSS Advisory Board//DTD RSS 0.91//EN" "http://www.rssboard.org/rss-0.91.dtd">' . "\r\n";
$output .= $xml->output();
return $xml->fetch_xml_tag() . $output;
}
示例8: handleUpdateEvents
/**
* Handle update events. The required data in $eventData depends on the particular event.
* Children may also handle their specific events.
*
* @param String $event One of the event strings in static::$updateEvents
* @param Array $eventData When $event is 'read_topic'|'read_channel', expects:
* int 'nodeid'
* int 'userid' (Optional)
*/
public static function handleUpdateEvents($event, $eventData)
{
if (!static::validateUpdateEvent($event)) {
return false;
}
$types = vB_Library::instance('Notification')->getNotificationTypes();
$typeid = $types[static::TYPENAME]['typeid'];
$assertor = vB::getDbAssertor();
switch ($event) {
case 'deleted_user':
$userid = (int) $eventData['userid'];
$check = $assertor->getRow('user', array('userid' => $userid));
if (empty($check)) {
// remove any notification owned by deleted user.
$assertor->assertQuery('vBForum:notification', array(vB_dB_Query::TYPE_KEY => vB_dB_Query::QUERY_DELETE, 'recipient' => $userid, 'typeid' => $typeid));
// remove any userrelation notifications sent from now-deleted user.
$assertor->assertQuery('vBForum:notification', array(vB_dB_Query::TYPE_KEY => vB_dB_Query::QUERY_DELETE, 'sender' => $userid, 'typeid' => $typeid));
}
break;
default:
break;
}
// skip parent handler. Nothing valid there that isn't already handled here.
return;
}
示例9: time
public static function time($timestamp)
{
if (empty($timestamp)) {
$timestamp = 0;
}
return vbdate(vB::getDatastore()->getOption('timeformat'), $timestamp);
}
示例10: convert_url_to_bbcode_callback
/**
* Callback function for convert_url_to_bbcode
*
* Should only be called from convert_url_to_bbcode
*
* @param string Message text
* @param string Text to prepend
*
* @return string
*/
function convert_url_to_bbcode_callback($messagetext, $prepend)
{
$datastore = vB::getDatastore();
$bbcodecache = $datastore->getValue('bbcodecache');
$bbcodeoptions = $datastore->getValue('bf_misc_bbcodeoptions');
// the auto parser - adds [url] tags around neccessary things
$messagetext = str_replace('\\"', '"', $messagetext);
$prepend = str_replace('\\"', '"', $prepend);
static $urlSearchArray, $urlReplaceArray, $emailSearchArray, $emailReplaceArray;
if (empty($urlSearchArray)) {
$taglist = '\\[b|\\[i|\\[u|\\[left|\\[center|\\[right|\\[indent|\\[quote|\\[highlight|\\[\\*' . '|\\[/b|\\[/i|\\[/u|\\[/left|\\[/center|\\[/right|\\[/indent|\\[/quote|\\[/highlight';
foreach ($bbcodecache as $customtag) {
if (!(intval($customtag['options']) & $bbcodeoptions['disable_urlconversion'])) {
$customtag_quoted = preg_quote($customtag['bbcodetag'], '#');
$taglist .= '|\\[' . $customtag_quoted . '|\\[/' . $customtag_quoted;
}
}
// Legacy Hook 'url_to_bbcode_callback' Removed //
$urlSearchArray = array('#(^|(?<=[^_a-z0-9-=\\]"\'/@]|(?<=' . $taglist . ')\\]))((https?|ftp|gopher|news|telnet)://|www\\.)((\\[(?!/)|[^\\s[^$`"{}<>])+)(?!\\[/url|\\[/img)(?=[,.!\')]*(\\)\\s|\\)$|[\\s[]|$))#siU');
$urlReplaceArray = array("[url]\\2\\4[/url]");
$emailSearchArray = array('/([ \\n\\r\\t])([_a-z0-9-+]+(\\.[_a-z0-9-+]+)*@[^\\s]+(\\.[a-z0-9-]+)*(\\.[a-z]{2,6}))/si', '/^([_a-z0-9-+]+(\\.[_a-z0-9-+]+)*@[^\\s]+(\\.[a-z0-9-]+)*(\\.[a-z]{2,6}))/si');
$emailReplaceArray = array("\\1[email]\\2[/email]", "[email]\\0[/email]");
}
$text = preg_replace($urlSearchArray, $urlReplaceArray, $messagetext);
if (strpos($text, "@")) {
$text = preg_replace($emailSearchArray, $emailReplaceArray, $text);
}
return $prepend . $text;
}
示例11: createChannel
/**
* Create a blog channel.
*
* @param array $input
* @param int $channelid
* @param int $channelConvTemplateid
* @param int $channelPgTemplateId
* @param int $ownerSystemGroupId
*
* @return int The nodeid of the new blog channel
*/
public function createChannel($input, $channelid, $channelConvTemplateid, $channelPgTemplateId, $ownerSystemGroupId)
{
$input['parentid'] = $channelid;
$input['inlist'] = 1;
// we don't want it to be shown in channel list, but we want to move them
$input['protected'] = 0;
if (empty($input['userid'])) {
$input['userid'] = vB::getCurrentSession()->get('userid');
}
if (!isset($input['publishdate'])) {
$input['publishdate'] = vB::getRequest()->getTimeNow();
}
$input['templates']['vB5_Route_Channel'] = $channelPgTemplateId;
$input['templates']['vB5_Route_Conversation'] = $channelConvTemplateid;
// add channel node
$channelLib = vB_Library::instance('content_channel');
$input['page_parentid'] = 0;
$result = $channelLib->add($input, array('skipFloodCheck' => true, 'skipDupCheck' => true));
//Make the current user the channel owner.
$userApi = vB_Api::instanceInternal('user');
$usergroup = vB::getDbAssertor()->getRow('usergroup', array('systemgroupid' => $ownerSystemGroupId));
if (empty($usergroup) or !empty($usergroup['errors'])) {
//This should never happen. It would mean an invalid parameter was passed
throw new vB_Exception_Api('invalid_request');
}
vB_User::setGroupInTopic($input['userid'], $result['nodeid'], $usergroup['usergroupid']);
vB_Cache::allCacheEvent(array('nodeChg_' . $this->blogChannel, "nodeChg_{$channelid}"));
vB::getUserContext()->rebuildGroupAccess();
vB_Channel::rebuildChannelTypes();
// clear follow cache
vB_Api::instanceInternal('follow')->clearFollowCache(array($input['userid']));
return $result['nodeid'];
}
示例12: fetchLanguages
/**
*
* @param mixed $languageIds - Language id or array of language ids
* @return array - Array of languages including:
* - languageid
* - dateoverride
* - timeoverride
* - locale
* - charset
*/
public function fetchLanguages($languageIds)
{
$result = array();
if (empty($languageIds)) {
return $result;
} else {
if (is_array($languageIds)) {
array_walk($languageIds, 'intval');
} else {
$languageIds = array(intval($languageIds));
}
}
$missing = array();
foreach ($languageIds as $languageId) {
if (isset($this->languages[$languageId])) {
$result[$languageId] = $this->languages[$languageId];
} else {
$missing[$languageId] = $languageId;
}
}
if (!empty($missing)) {
$query = array(vB_dB_Query::TYPE_KEY => vB_dB_Query::QUERY_SELECT, vB_dB_Query::COLUMNS_KEY => array('languageid', 'dateoverride', 'timeoverride', 'locale', 'charset'), vB_dB_Query::CONDITIONS_KEY => array('languageid' => $missing));
$dbLanguages = vB::getDbAssertor()->assertQuery('language', $query);
foreach ($dbLanguages as $lang) {
$this->languages[$lang['languageid']] = $lang;
$result[$lang['languageid']] = $lang;
}
}
return $result;
}
示例13: fetchHistoryComparison
public function fetchHistoryComparison($nodeid, $oldpost, $newpost)
{
if (!$this->canViewPostHistory($nodeid)) {
throw new Exception('no_permission');
}
$_posthistory = vB::getDbAssertor()->getRows('vBForum:postedithistory', array(vB_dB_Query::TYPE_KEY => vB_dB_Query::QUERY_SELECT, vB_dB_Query::CONDITIONS_KEY => array('nodeid' => $nodeid, 'postedithistoryid' => array($oldpost, $newpost)), vB_dB_Query::COLUMNS_KEY => array('postedithistoryid', 'reason', 'dateline', 'username', 'original', 'pagetext')), array('field' => 'postedithistoryid', 'direction' => vB_dB_Query::SORT_ASC));
if (!$_posthistory) {
throw new Exception('no_permission');
}
$posthistory = array();
$key = 1;
foreach ($_posthistory as $info) {
$posthistory['post' . $key] = $info;
$key++;
}
require_once DIR . '/includes/class_diff.php';
if ($posthistory['post2']) {
$textdiff_obj = new vB_Text_Diff($posthistory['post1']['pagetext'], $posthistory['post2']['pagetext']);
} else {
$textdiff_obj = new vB_Text_Diff($posthistory['post1']['pagetext'], $posthistory['post1']['pagetext']);
}
$results = array();
$diff = $textdiff_obj->fetch_diff();
foreach ($diff as $diffrow) {
$compare_show = array();
if ($diffrow->old_class == 'unchanged' and $diffrow->new_class == 'unchanged') {
// no change
$results[] = array('unchanged_olddata' => vB_String::fetchWordWrappedString(nl2br(vB_String::htmlSpecialCharsUni(implode("\n", $diffrow->fetch_data_old())))));
} else {
// something has changed
$results[] = array('changed_olddata' => vB_String::fetchWordWrappedString(nl2br(vB_String::htmlSpecialCharsUni(implode("\n", $diffrow->fetch_data_old())))), 'changed_newdata' => vB_String::fetchWordWrappedString(nl2br(vB_String::htmlSpecialCharsUni(implode("\n", $diffrow->fetch_data_new())))));
}
}
return $results;
}
示例14: __construct
protected function __construct()
{
parent::__construct();
$this->storage = vB::getDatastore()->getOption('attachfile');
$this->filePath = vB::getDatastore()->getOption('attachpath');
$this->assertor = vB::getDbAssertor();
}
示例15: createChannel
/**
* Create an article category channel. This function works basically like the blog library's version
*
* @param array $input data array, should have standard channel data like title, parentid,
* @param int $channelid parentid that the new channel should fall under.
* @param int $channelConvTemplateid "Conversation" level pagetemplate to use. Typically vB_Page::getArticleConversPageTemplate()
* @param int $channelPgTemplateId "Channel" level pagetemplate to use. Typically vB_Page::getArticleChannelPageTemplate()
* @param int $ownerSystemGroupId
*
* @return int The nodeid of the new blog channel
*/
public function createChannel($input, $channelid, $channelConvTemplateid, $channelPgTemplateId, $ownerSystemGroupId)
{
if (!isset($input['parentid']) or intval($input['parentid']) < 1) {
$input['parentid'] = $channelid;
}
$input['inlist'] = 1;
// we don't want it to be shown in channel list, but we want to move them
$input['protected'] = 0;
if (empty($input['userid'])) {
$input['userid'] = vB::getCurrentSession()->get('userid');
}
if (!isset($input['publishdate'])) {
$input['publishdate'] = vB::getRequest()->getTimeNow();
}
$input['templates']['vB5_Route_Channel'] = $channelPgTemplateId;
$input['templates']['vB5_Route_Article'] = $channelConvTemplateid;
$input['childroute'] = 'vB5_Route_Article';
// add channel node
$channelLib = vB_Library::instance('content_channel');
$input['page_parentid'] = 0;
$result = $channelLib->add($input, array('skipNotifications' => true, 'skipFloodCheck' => true, 'skipDupCheck' => true));
//Make the current user the channel owner.
$userApi = vB_Api::instanceInternal('user');
$usergroup = vB::getDbAssertor()->getRow('usergroup', array('systemgroupid' => $ownerSystemGroupId));
vB_Cache::allCacheEvent(array('nodeChg_' . $this->articleHomeChannel, "nodeChg_{$channelid}"));
vB::getUserContext()->rebuildGroupAccess();
vB_Channel::rebuildChannelTypes();
// clear follow cache
vB_Api::instanceInternal('follow')->clearFollowCache(array($input['userid']));
return $result['nodeid'];
}