/*insert query*/ $db->query_write("\n\t\t\tINSERT INTO " . TABLE_PREFIX . "attachmenttype\n\t\t\t(\n\t\t\t\textension,\n\t\t\t\tsize,\n\t\t\t\theight,\n\t\t\t\twidth,\n\t\t\t\tmimetype,\n\t\t\t\tcontenttypes\n\t\t\t)\n\t\t\tVALUES\n\t\t\t(\n\t\t\t\t'" . $db->escape_string($vbulletin->GPC['type']['extension']) . "',\n\t\t\t\t" . intval($vbulletin->GPC['type']['size']) . ",\n\t\t\t\t" . intval($vbulletin->GPC['type']['height']) . ",\n\t\t\t\t" . intval($vbulletin->GPC['type']['width']) . ",\n\t\t\t\t'" . $db->escape_string($vbulletin->GPC['type']['mimetype']) . "',\n\t\t\t\t'" . $db->escape_string($vbulletin->GPC['type']['contenttype']) . "'\n\t\t\t)\n\t\t"); build_attachment_permissions(); } print_stop_message('saved_attachment_type_x_successfully', $vbulletin->GPC['type']['extension']); } // ###################### Remove File Type #################### if ($_REQUEST['do'] == 'removetype') { $vbulletin->input->clean_array_gpc('r', array('extension' => TYPE_STR)); print_form_header('attachment', 'killtype', 0, 1, '', '75%'); construct_hidden_code('extension', $vbulletin->GPC['extension']); print_table_header(construct_phrase($vbphrase['confirm_deletion_of_attachment_type_x'], $vbulletin->GPC['extension'])); print_description_row("\n\t\t<blockquote><br />" . construct_phrase($vbphrase['are_you_sure_you_want_to_delete_the_attachment_type_x'], $vbulletin->GPC['extension']) . "\n\t\t<br /></blockquote>\n\t"); print_submit_row($vbphrase['yes'], 0, 2, $vbphrase['no']); } // ###################### Kill File Type #################### if ($_POST['do'] == 'killtype') { $vbulletin->input->clean_array_gpc('r', array('extension' => TYPE_STR)); $db->query_write("\n\t\tDELETE FROM " . TABLE_PREFIX . "attachmenttype\n\t\tWHERE extension = '" . $db->escape_string($vbulletin->GPC['extension']) . "'\n\t"); $db->query_write("\n\t\tDELETE FROM " . TABLE_PREFIX . "attachmentpermission\n\t\tWHERE extension = '" . $db->escape_string($vbulletin->GPC['extension']) . "'\n\t"); build_attachment_permissions(); define('CP_REDIRECT', 'attachment.php?do=types'); print_stop_message('deleted_attachment_type_successfully'); } print_cp_footer(); /*======================================================================*\ || #################################################################### || # Downloaded: 03:13, Sat Sep 7th 2013 || # CVS: $RCSfile$ - $Revision: 76725 $ || #################################################################### \*======================================================================*/
/** * Delete an usergroup * * @param int $usergroupid Usergroup ID to be deleted * @return void */ public function delete($usergroupid) { $this->checkHasAdminPermission('canadminpermissions'); $db = vB::getDbAssertor(); // update users who are in this usergroup to be in the registered usergroup $db->assertQuery('user', array(vB_dB_Query::TYPE_KEY => vB_dB_Query::QUERY_UPDATE, 'usergroupid' => 2, vB_dB_Query::CONDITIONS_KEY => array('usergroupid' => $usergroupid))); $db->assertQuery('user', array(vB_dB_Query::TYPE_KEY => vB_dB_Query::QUERY_UPDATE, 'displaygroupid' => 0, vB_dB_Query::CONDITIONS_KEY => array('displaygroupid' => $usergroupid))); $db->assertQuery('user', array(vB_dB_Query::TYPE_KEY => vB_dB_Query::QUERY_UPDATE, 'infractiongroupid' => 0, vB_dB_Query::CONDITIONS_KEY => array('infractiongroupid' => $usergroupid))); $db->assertQuery('useractivation', array(vB_dB_Query::TYPE_KEY => vB_dB_Query::QUERY_UPDATE, 'usergroupid' => 2, vB_dB_Query::CONDITIONS_KEY => array('usergroupid' => $usergroupid))); $db->assertQuery('vBForum:subscription', array(vB_dB_Query::TYPE_KEY => vB_dB_Query::QUERY_UPDATE, 'nusergroupid' => -1, vB_dB_Query::CONDITIONS_KEY => array('nusergroupid' => $usergroupid))); $db->assertQuery('vBForum:subscriptionlog', array(vB_dB_Query::TYPE_KEY => vB_dB_Query::QUERY_UPDATE, 'pusergroupid' => -1, vB_dB_Query::CONDITIONS_KEY => array('pusergroupid' => $usergroupid))); /** @todo rewise this query - it's currently invalid **/ // $db->assertQuery('vBForum:subscriptionlog', array( // vB_dB_Query::TYPE_KEY => vB_dB_Query::QUERY_UPDATE, // 'displaygroupid' => 0, // vB_dB_Query::CONDITIONS_KEY => array( // 'displaygroupid' => $usergroupid // ), // )); // now get on with deleting stuff... $db->assertQuery('usergroup', array(vB_dB_Query::TYPE_KEY => vB_dB_Query::QUERY_DELETE, vB_dB_Query::CONDITIONS_KEY => array('usergroupid' => $usergroupid))); $db->assertQuery('vBForum:forumpermission', array(vB_dB_Query::TYPE_KEY => vB_dB_Query::QUERY_DELETE, vB_dB_Query::CONDITIONS_KEY => array('usergroupid' => $usergroupid))); $db->assertQuery('vBForum:permission', array(vB_dB_Query::TYPE_KEY => vB_dB_Query::QUERY_DELETE, vB_dB_Query::CONDITIONS_KEY => array('groupid' => $usergroupid))); vB_Library::instance('userrank')->deleteForUsergroup($usergroupid); $db->assertQuery('vBForum:usergrouprequest', array(vB_dB_Query::TYPE_KEY => vB_dB_Query::QUERY_DELETE, vB_dB_Query::CONDITIONS_KEY => array('usergroupid' => $usergroupid))); $db->assertQuery('userpromotion', array(vB_dB_Query::TYPE_KEY => vB_dB_Query::QUERY_DELETE, vB_dB_Query::CONDITIONS_KEY => array('usergroupid' => $usergroupid))); $db->assertQuery('deleteUserPromotion', array(vB_dB_Query::TYPE_KEY => vB_dB_Query::QUERY_STORED, 'usergroupid' => $usergroupid)); $db->assertQuery('vBForum:imagecategorypermission', array(vB_dB_Query::TYPE_KEY => vB_dB_Query::QUERY_DELETE, vB_dB_Query::CONDITIONS_KEY => array('usergroupid' => $usergroupid))); $db->assertQuery('vBForum:attachmentpermission', array(vB_dB_Query::TYPE_KEY => vB_dB_Query::QUERY_DELETE, vB_dB_Query::CONDITIONS_KEY => array('usergroupid' => $usergroupid))); $db->assertQuery('vBForum:prefixpermission', array(vB_dB_Query::TYPE_KEY => vB_dB_Query::QUERY_DELETE, vB_dB_Query::CONDITIONS_KEY => array('usergroupid' => $usergroupid))); $db->assertQuery('vBforum:usergroupleader', array(vB_dB_Query::TYPE_KEY => vB_dB_Query::QUERY_DELETE, vB_dB_Query::CONDITIONS_KEY => array('usergroupid' => $usergroupid))); $db->assertQuery('infractiongroup', array(vB_dB_Query::TYPE_KEY => vB_dB_Query::QUERY_DELETE, vB_dB_Query::CONDITIONS_KEY => array('usergroupid' => $usergroupid))); $db->assertQuery('infractiongroup', array(vB_dB_Query::TYPE_KEY => vB_dB_Query::QUERY_DELETE, vB_dB_Query::CONDITIONS_KEY => array('orusergroupid' => $usergroupid))); $db->assertQuery('infractionban', array(vB_dB_Query::TYPE_KEY => vB_dB_Query::QUERY_DELETE, vB_dB_Query::CONDITIONS_KEY => array('usergroupid' => $usergroupid))); $db->assertQuery('infractionban', array(vB_dB_Query::TYPE_KEY => vB_dB_Query::QUERY_DELETE, vB_dB_Query::CONDITIONS_KEY => array('banusergroupid' => $usergroupid))); require_once DIR . '/includes/adminfunctions.php'; build_channel_permissions(); require_once DIR . '/includes/adminfunctions_attachment.php'; build_attachment_permissions(); // remove this group from users who have this group as a membergroup $updateusers = array(); $casesql = ''; $users = $db->getRows('usergroup_fetchmemberstoremove', array(vB_dB_Query::TYPE_KEY => vB_dB_Query::QUERY_STORED, 'usergroupid' => $usergroupid)); if (count($users)) { $db->assertQuery('updateMemberForDeletedUsergroup', array(vB_dB_Query::TYPE_KEY => vB_dB_Query::QUERY_METHOD, 'users' => $users, 'usergroupid' => $usergroupid)); } vB::getUserContext()->rebuildGroupAccess(); }
/** * Step #102 * */ function step_102() { $this->show_message(sprintf($this->phrase['vbphrase']['update_table'], TABLE_PREFIX . 'attachment')); require_once DIR . '/includes/adminfunctions_attachment.php'; build_attachment_permissions(); // Kill duplicate files in the filedata table $files = $this->db->query_read("\n\t\t\tSELECT count(*) AS count, filehash, filesize\n\t\t\tFROM " . TABLE_PREFIX . "filedata\n\t\t\tGROUP BY filehash, filesize\n\t\t\tHAVING count > 1\n\t\t"); while ($file = $this->db->fetch_array($files)) { $refcount = 0; $filedataid = 0; $killfiles = array(); $files2 = $this->db->query("\n\t\t\t\tSELECT\n\t\t\t\t\tfiledataid, refcount, userid\n\t\t\t\tFROM " . TABLE_PREFIX . "filedata\n\t\t\t\tWHERE\n\t\t\t\t\tfilehash = '{$file['filehash']}'\n\t\t\t\t\t\tAND\n\t\t\t\t\tfilesize = {$file['filesize']}\n\t\t\t"); while ($file2 = $this->db->fetch_array($files2)) { $refcount += $file2['refcount']; if (!$filedataid) { $filedataid = $file2['filedataid']; } else { $killfiles[$file2['filedataid']] = $file2['userid']; } } $this->db->query_write("UPDATE " . TABLE_PREFIX . "filedata SET refcount = {$refcount} WHERE filedataid = {$filedataid}"); $this->db->query_write("UPDATE " . TABLE_PREFIX . "attachment SET filedataid = {$filedataid} WHERE filedataid IN (" . implode(",", array_keys($killfiles)) . ")"); $this->db->query_write("DELETE FROM " . TABLE_PREFIX . "filedata WHERE filedataid IN (" . implode(",", array_keys($killfiles)) . ")"); foreach ($killfiles as $filedataid => $userid) { if ($this->registry->GPC['attachtype'] == ATTACH_AS_FILES_NEW) { $path = $this->registry->options['attachpath'] . '/' . implode('/', preg_split('//', $userid, -1, PREG_SPLIT_NO_EMPTY)); } else { $path = $this->registry->options['attachpath'] . '/' . $userid; } @unlink($path . '/' . $filedataid . '.attach'); @unlink($path . '/' . $filedataid . '.thumb'); } } }
/** * Step #7 - Default User Setup... * */ function step_7($data = null) { if ($data['response']) { array_map('trim', $data['htmldata']); $errors = array(); if (empty($data['htmldata']['username'])) { $errors['username'] = $this->phrase['install']['error_username']; } if (empty($data['htmldata']['email']) or !is_valid_email($data['htmldata']['email'])) { $errors['email'] = $this->phrase['install']['error_email']; } if (empty($data['htmldata']['password']) or empty($data['htmldata']['confirmpassword'])) { if (empty($data['htmldata']['password'])) { $errors['password'] = $this->phrase['install']['error_password']; } else { if (empty($data['htmldata']['confirmpassword'])) { $errors['confirmpassword'] = $this->phrase['install']['error_confirmpassword']; } } } else { if ($data['htmldata']['password'] != $data['htmldata']['confirmpassword']) { $errors['mismatch'] = $this->phrase['install']['error_password_not_match']; } else { if ($data['htmldata']['password'] == $data['htmldata']['username'] and !defined('ALLOW_SAME_USERNAME_PASSWORD')) { $errors['samepasswordasusername'] = $this->phrase['install']['error_same_password_as_username']; } } } // check if a user already exists. If so, DO NOT CREATE A NEW USER. $vbexists = $this->fetch_vbexists(); if (!$vbexists) { $errors[] = $this->phrase['install']['user_table_missing']; // we can't create a user without a user table. } else { // assuming if user table exists, userid will exist. If a user exists, DO NOT CREATE A NEW USER if ($this->db->query_first("SELECT userid FROM " . trim($this->registry->config['Database']['tableprefix']) . "user LIMIT 1")) { $errors[] = $this->phrase['install']['user_already_exists']; } } if (empty($errors)) { require_once DIR . '/includes/class_bitfield_builder.php'; vB_Bitfield_Builder::save($this->db); $admin_defaults = array('vbasset_enable', 'showsignatures', 'showavatars', 'showimages', 'adminemail', 'dstauto', 'receivepm', 'showusercss', 'receivefriendemailrequest', 'vm_enable'); $admin_useroption = 0; foreach ($admin_defaults as $bitfield) { $admin_useroption |= $this->registry->bf_misc_useroptions["{$bitfield}"]; } require_once DIR . '/includes/functions_user.php'; //for now we'll just include these to get the define for the salt length. Should investigate //using the DM to add the initial admin user, but there may be issues with doing that without //a proper user session (which we can't have until we require the user. require_once DIR . '/includes/class_dm.php'; require_once DIR . '/includes/class_dm_user.php'; $salt = fetch_user_salt(SALT_LENGTH); /*insert query*/ $this->db->query_write("\n\t\t\t\t\tINSERT INTO " . TABLE_PREFIX . "user\n\t\t\t\t\t\t(username, salt, password, email, usertitle, joindate, lastvisit, lastactivity, usergroupid, passworddate, options, showvbcode)\n\t\t\t\t\tVALUES (\n\t\t\t\t\t\t'" . $this->db->escape_string(htmlspecialchars_uni($data['htmldata']['username'])) . "',\n\t\t\t\t\t\t'" . $this->db->escape_string($salt) . "',\n\t\t\t\t\t\t'" . $this->db->escape_string(md5(md5($data['htmldata']['password']) . $salt)) . "',\n\t\t\t\t\t\t'" . $this->db->escape_string($data['htmldata']['email']) . "',\n\t\t\t\t\t\t'" . $this->db->escape_string($this->phrase['install']['usergroup_admin_usertitle']) . "',\n\t\t\t\t\t\t" . TIMENOW . ",\n\t\t\t\t\t\t" . TIMENOW . ",\n\t\t\t\t\t\t" . TIMENOW . ",\n\t\t\t\t\t\t6,\n\t\t\t\t\t\tFROM_UNIXTIME(" . TIMENOW . "),\n\t\t\t\t\t\t{$admin_useroption},\n\t\t\t\t\t\t2\n\t\t\t\t\t)\n\t\t\t\t"); $userid = $this->db->insert_id(); /*insert query*/ $this->db->query_write("\n\t\t\t\t\tINSERT INTO " . TABLE_PREFIX . "usertextfield\n\t\t\t\t\t\t(userid)\n\t\t\t\t\tVALUES\n\t\t\t\t\t\t({$userid})\n\t\t\t\t"); /*insert query*/ $this->db->query_write("\n\t\t\t\t\tINSERT INTO " . TABLE_PREFIX . "userfield\n\t\t\t\t\t\t(userid)\n\t\t\t\t\tVALUES\n\t\t\t\t\t\t({$userid})\n\t\t\t\t"); /*insert query*/ $this->db->query_write("INSERT INTO " . TABLE_PREFIX . "administrator\n\t\t\t\t\t(userid, adminpermissions)\n\t\t\t\tVALUES\n\t\t\t\t\t({$userid}, " . (array_sum($this->registry->bf_ugp_adminpermissions) - 3) . ")\n\t\t\t\t"); /*insert query*/ $this->db->query_write("INSERT INTO " . TABLE_PREFIX . "moderator\n\t\t\t\t\t(userid, forumid, permissions, permissions2)\n\t\t\t\tVALUES\n\t\t\t\t\t(\n\t\t\t\t\t\t{$userid},\n\t\t\t\t\t\t-1,\n\t\t\t\t\t\t" . (array_sum($this->registry->bf_misc_moderatorpermissions) - ($this->registry->bf_misc_moderatorpermissions['newthreademail'] + $this->registry->bf_misc_moderatorpermissions['newpostemail'])) . ",\n\t\t\t\t\t\t" . array_sum($this->registry->bf_misc_moderatorpermissions2) . "\n\t\t\t\t\t)\n\t\t\t\t"); build_image_cache('smilie'); build_image_cache('avatar'); build_image_cache('icon'); build_bbcode_cache(); require_once DIR . '/includes/functions_databuild.php'; build_user_statistics(); require_once DIR . '/includes/adminfunctions_forums.php'; build_forum_child_lists(); build_forum_permissions(); require_once DIR . '/includes/functions_cron.php'; build_cron_next_run(); require_once DIR . '/includes/adminfunctions_attachment.php'; build_attachment_permissions(); require_once DIR . '/includes/class_block.php'; $blockmanager = vB_BlockManager::create($this->registry); $blockmanager->reloadBlockTypes(); $this->show_message($this->phrase['install']['administrator_account_created']); return; } else { foreach ($errors as $key => $value) { $errors["{$key}"] = '<span class="usererror">' . $value . '</span>'; } } } else { $data['htmldata'] = array(); } $html = '<table cellspacing="0" cellpadding="4" border="0" align="center" width="100%" id="cpform_table" class="" style="border-collapse: separate;"> <tbody> <tr valign="top"> <td class="alt1">' . $this->phrase['install']['username'] . $errors['username'] . ' <span id="htmldata[username]_error" class="usererror hidden">' . $this->phrase['install']['field_required'] . '</span> </td> <td class="alt1"> <div id="ctrl_username"> <input type="text" tabindex="1" dir="ltr" size="35" value="' . htmlspecialchars_uni($data['htmldata']['username']) . '" id="it_username_1" name="htmldata[username]" class="bginput" vbrequire="1" /> </div> </td> </tr> <tr valign="top"> <td class="alt2">' . $this->phrase['install']['password'] . $errors['password'] . $errors['mismatch'] . $errors['samepasswordasusername'] . ' <span id="htmldata[password]_error" class="usererror hidden">' . $this->phrase['install']['field_required'] . '</span> </td> <td class="alt2"> <div id="ctrl_password"> <input type="password" tabindex="1" size="35" value="' . htmlspecialchars_uni($data['htmldata']['password']) . '" name="htmldata[password]" class="bginput" vbrequire="1" /> </div> </td> </tr> <tr valign="top"> <td class="alt1">' . $this->phrase['install']['confirm_password'] . $errors['confirmpassword'] . $errors['mismatch'] . ' <span id="htmldata[confirmpassword]_error" class="usererror hidden">' . $this->phrase['install']['field_required'] . '</span> </td> <td class="alt1"> <div id="ctrl_confirmpassword"> <input type="password" tabindex="1" size="35" value="' . htmlspecialchars_uni($data['htmldata']['confirmpassword']) . '" name="htmldata[confirmpassword]" class="bginput" vbrequire="1" /> </div> </td> </tr> <tr valign="top"> <td class="alt2">' . $this->phrase['install']['email_address'] . $errors['email'] . ' <span id="htmldata[email]_error" class="usererror hidden">' . $this->phrase['install']['field_required'] . '</span> </td> <td class="alt2"> <div id="ctrl_email"> <input type="text" tabindex="1" dir="ltr" size="35" value="' . htmlspecialchars_uni($data['htmldata']['email']) . '" id="it_email_2" name="htmldata[email]" class="bginput" vbrequire="1" /> </div> </td> </tr> </tbody></table>'; return array('html' => $html, 'width' => '640px', 'hidecancel' => true, 'title' => $this->phrase['install']['administrator_account_setup'], 'reset' => true); }