예제 #1
0
 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';
 }
예제 #2
0
 /**
  * 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;
     }
 }
예제 #3
0
        $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();
예제 #4
0
 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;
 }