public function __construct(&$dBAssertor, &$datastore, &$config, $userid) { $restoreSessionInfo = array('userid' => $userid); parent::__construct($dBAssertor, $datastore, $config, '', $restoreSessionInfo); $this->set('userid', $userid); //If we are in unit test we need to force a load of userinfo. if (defined('VB_AREA') and VB_AREA == 'Unit Test' and $userid > 0) { $useroptions = array(); if (defined('IN_CONTROL_PANEL')) { $useroptions[] = vB_Api_User::USERINFO_ADMIN; } $this->userinfo = vB_User::fetchUserInfo($this->vars['userid'], $useroptions, $this->vars['languageid'], true); } //needed for error message handling. $_SERVER['HTTP_HOST'] = 'commandline'; }
/** * Updates the user status * * @param int UserID * @param String Status to set * * @return String Updated status from user. */ public function updateStatus($userid = false, $status) { $userContext = vB::getUserContext(); $currentUserId = $userContext->fetchUserId(); $userid = intval($userid); $vboptions = vB::getDatastore()->getValue('options'); if (vB_String::vbStrlen($status) > $vboptions['statusMaxChars']) { throw new vB_Exception_Api('please_enter_user_status_with_at_most_x_characters', array($vboptions['statusMaxChars'])); } if ($userid <= 0 and $currentUserId) { $userid = $currentUserId; } // check user is logged if (!$userid or !$currentUserId) { throw new vB_Exception_Api('invalid_userid'); } // Check if current user canadminusers try { $this->checkHasAdminPermission('canadminusers'); } catch (Exception $e) { // No. Then we need to do something here. if ($currentUserId != $userid) { // If current user isn't the same as passed $userid throw new vB_Exception_Api('no_permission'); } } $userInfo = vB_User::fetchUserInfo($userid); $userdata = new vB_Datamanager_User(); $userdata->set_existing($userInfo); $userdata->set('status', $status); $result = $userdata->save(); if (!is_array($result)) { $userInfo = vB_User::fetchUserInfo(0, array(), 0, true); return $userInfo['status']; } else { return false; } }
$noticeid = $assertor->insert('vBForum:notice', array('title' => $vbulletin->GPC['title'], 'displayorder' => $vbulletin->GPC['displayorder'], 'persistent' => $vbulletin->GPC['persistent'], 'active' => $vbulletin->GPC['active'], 'dismissible' => $vbulletin->GPC['dismissible'])); } // Check to see if there is criteria to insert if ($have_criteria) { // assemble criteria insertion query $criteria_sql = array(); foreach ($vbulletin->GPC['criteria'] as $criteriaid => $criteria) { if ($criteria['active']) { $criteria_sql[] = array('noticeid' => $noticeid, 'criteriaid' => $criteriaid, 'condition1' => trim($criteria['condition1']), 'condition2' => trim($criteria['condition2']), 'condition3' => trim($criteria['condition3'])); } } // insert criteria $assertor->insertMultiple('vBForum:noticecriteria', array('noticeid', 'criteriaid', 'condition1', 'condition2', 'condition3'), $criteria_sql); } // insert / update phrase $userInfo = vB_User::fetchUserInfo(); $options = vB::getDatastore()->getValue('options'); $assertor->assertQuery('replaceIntoPhrases', array('languageid' => 0, 'varname' => 'notice_' . $noticeid . '_html', 'text' => $vbulletin->GPC['html'], 'product' => 'vbulletin', 'fieldname' => 'global', 'enteredBy' => $userInfo['username'], 'dateline' => vB::getRequest()->getTimeNow(), 'version' => $options['templateversion'])); // update the datastore notice cache build_notice_datastore(); // rebuild languages require_once DIR . '/includes/adminfunctions_language.php'; build_language(-1); print_stop_message2(array('saved_notice_x_successfully', $vbulletin->GPC['title']), 'notice', array('do' => 'modify')); } // ############################################################################# // edit a notice if ($_REQUEST['do'] == 'edit' or $_REQUEST['do'] == 'add') { $vbulletin->input->clean_array_gpc('r', array('noticeid' => vB_Cleaner::TYPE_UINT)); // initialize some data storage $notice_cache = array();
protected function addContentInfo($results) { //the key of for each node is the nodeid, fortunately $userids = array(); $userContext = vB::getUserContext(); //If pagetext and previewtext aren't populated let's do that now. foreach ($results as $key => $record) { if (isset($record['pagetextimages'])) { unset($results[$key]['pagetextimages']); } //make sure the current user can see the content if (!$userContext->getChannelPermission('forumpermissions', 'canviewthreads', $record['nodeid'], false, $record['parentid'])) { continue; } if (!empty($record['userid']) and !in_array($record['userid'], $userids)) { $userids[] = $record['userid']; } if (empty($record['starter'])) { //The starter should never be empty or zero. Let's fix this. $starter = $this->getStarter($record['nodeid']); $data = array(vB_dB_Query::TYPE_KEY => vB_dB_Query::QUERY_UPDATE, 'nodeid' => $record['nodeid'], 'starter' => $starter); $this->assertor->assertQuery('vBForum:node', $data); $results[$key]['starter'] = $starter; } $results[$key]['attach'] = array(); } if (!empty($userids)) { vB_Library::instance('user')->preloadUserInfo($userids); $canseehiddencustomfields = vB::getUserContext()->hasPermission('genericpermissions', 'canseehiddencustomfields'); $fields = array(); if (!$canseehiddencustomfields) { // Get profile fields information $fieldsInfo = vB_Cache::instance(vB_Cache::CACHE_STD)->read('vBProfileFields'); if (empty($fieldsInfo)) { $fieldsInfo = $this->assertor->getRows('vBForum:profilefield'); vB_Cache::instance(vB_Cache::CACHE_STD)->write('vBProfileFields', $fieldsInfo, 1440, array('vBProfileFieldsChg')); } foreach ($fieldsInfo as $field) { $fields['field' . $field['profilefieldid']] = $field['hidden']; } } foreach ($results as $key => $record) { $userInfo = vB_User::fetchUserInfo($record['userid']); if (!empty($record['userid']) and !empty($userInfo)) { $results[$key]['userinfo'] = array('userid' => $userInfo['userid'], 'username' => $userInfo['username'], 'rank' => $userInfo['rank'], 'usertitle' => $userInfo['usertitle'], 'joindate' => $userInfo['joindate'], 'posts' => $userInfo['posts'], 'customtitle' => $userInfo['customtitle'], 'userfield' => array()); // Add userfields data foreach ($fields as $fieldname => $hidden) { if (isset($userInfo[$fieldname]) and ($canseehiddencustomfields or !$hidden)) { $results[$key]['userinfo']['userfield'][$fieldname] = $userInfo[$fieldname]; } } } } } //let's get the attachment info. $attachments = vB_Api::instanceInternal('node')->getNodeAttachments(array_keys($results)); foreach ($attachments as $attachment) { if (array_key_exists($attachment['parentid'], $results)) { if (!is_array($results[$attachment['parentid']]['attach'])) { $results[$attachment['parentid']]['attach'] = array(); } $results[$attachment['parentid']]['attach'][] = $attachment; } } foreach ($results as $key => $result) { if (empty($result)) { continue; } if (!empty($result['attach']) and is_array($result['attach'])) { $results[$key]['photocount'] = count($result['attach']); } else { $results[$key]['photocount'] = 0; } } return $results; }