} } // ###################### Start update setting ####################### if ($_POST['do'] == 'updatesetting') { if (!vB::getUserContext()->hasAdminPermission('canadminsettingsall')) { print_cp_no_permission(); } $vbulletin->input->clean_array_gpc('p', array('varname' => vB_Cleaner::TYPE_STR, 'grouptitle' => vB_Cleaner::TYPE_STR, 'optioncode' => vB_Cleaner::TYPE_STR, 'defaultvalue' => vB_Cleaner::TYPE_STR, 'displayorder' => vB_Cleaner::TYPE_UINT, 'volatile' => vB_Cleaner::TYPE_INT, 'datatype' => vB_Cleaner::TYPE_STR, 'validationcode' => vB_Cleaner::TYPE_STR, 'product' => vB_Cleaner::TYPE_STR, 'blacklist' => vB_Cleaner::TYPE_BOOL, 'ispublic' => vB_Cleaner::TYPE_BOOL, 'adminperm' => vB_Cleaner::TYPE_STR, 'title' => vB_Cleaner::TYPE_STR, 'description' => vB_Cleaner::TYPE_STR)); if (is_demo_mode()) { print_cp_message('This function is disabled within demo mode'); } $values = array('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'], 'ispublic' => $vbulletin->GPC['ispublic'], 'adminperm' => $vbulletin->GPC['adminperm']); $update = vB_Api::instance('Options')->updateSetting($values); if (defined('DEV_AUTOEXPORT') and DEV_AUTOEXPORT) { require_once DIR . '/includes/functions_filesystemxml.php'; autoexport_write_settings_and_language($vbulletin->GPC['volatile'] ? -1 : 0, array($old_setting['product'], $vbulletin->GPC['product'])); } if (isset($update['errors'])) { print_stop_message2($update['errors'][0]); } else { print_stop_message2(array('saved_setting_x_successfully', $vbulletin->GPC['title']), 'options', array('do' => 'options', 'dogroup' => $vbulletin->GPC['grouptitle'])); } } // ###################### Start edit / add setting ####################### if ($_REQUEST['do'] == 'editsetting' or $_REQUEST['do'] == 'addsetting') { if (!vB::getUserContext()->hasAdminPermission('canadminsettingsall')) { print_cp_no_permission(); } $vbulletin->input->clean_array_gpc('r', array('grouptitle' => vB_Cleaner::TYPE_STR)); if (is_demo_mode()) { print_cp_message('This function is disabled within demo mode');
/** * This function updates group settings. * @param array $group Group values * @return array, $response */ public function updateGroupSettings($group, $username, $oldproduct = '', $adminperm = false) { $this->checkHasAdminPermission('canadminsettings'); 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(); $existing = vB::getDbAssertor()->assertQuery('settinggroup', array(vB_dB_Query::TYPE_KEY => vB_dB_Query::QUERY_SELECT, 'grouptitle' => $group['grouptitle'])); if ($existing->valid()) { $existing = $existing->current(); if (!empty($existing['adminperm']) and !vB::getUserContext()->hasAdminPermission($existing['adminperm'])) { throw new vB_Exception_AccessDenied('no_permission'); } } $updates = array(vB_dB_Query::TYPE_KEY => vB_dB_Query::QUERY_UPDATE, 'displayorder' => $group['displayorder'], 'volatile' => $group['volatile'], 'product' => $group['product'], vB_dB_Query::CONDITIONS_KEY => array(array('field' => 'grouptitle', 'value' => $group['grouptitle'], 'operator' => vB_dB_Query::OPERATOR_EQ))); if ($adminperms !== false and vB::getUserContext()->hasAdminPermission('canadminsettingsall')) { $adminperm = vB::getCleaner()->clean($adminperm, vB_Cleaner::TYPE_STR); if (empty($adminperm)) { $updates['adminperm'] = ''; } else { $updates['adminperm'] = substr($adminperm, 0, 32); } } $updateSetting = vB::getDbAssertor()->assertQuery('settinggroup', $updates); if ($updateSetting['errors']) { $response['errors'] = $updateSetting['errors']; } $full_product_info = fetch_product_list(true); $product_version = $full_product_info[$group['product']]['version']; $updatePhrase = vB::getDbAssertor()->assertQuery('vBForum:phrase', array(vB_dB_Query::TYPE_KEY => vB_dB_Query::QUERY_UPDATE, 'text' => $group['title'], 'product' => $group['product'], 'username' => $username, 'dateline' => TIMENOW, 'version' => $product_version, vB_dB_Query::CONDITIONS_KEY => array(array('field' => 'varname', 'value' => "settinggroup_" . $group['grouptitle'], 'operator' => vB_dB_Query::OPERATOR_EQ)))); if ($updatePhrase['errors']) { $response['errors'] = $updatePhrase['errors']; } $settingnames = array(); $phrasenames = array(); $settings = vB::getDbAssertor()->assertQuery('setting', array(vB_dB_Query::TYPE_KEY => vB_dB_Query::QUERY_SELECT, 'grouptitle' => $group['grouptitle'], 'product' => $oldproduct)); if ($settings and $settings->valid()) { foreach ($settings as $setting) { $settingnames[] = $setting['varname']; $phrasenames[] = 'setting_' . $setting['varname'] . '_desc'; $phrasenames[] = 'setting_' . $setting['varname'] . '_title'; } $full_product_info = fetch_product_list(true); $product_version = $full_product_info[$group['product']]['version']; vB::getDbAssertor()->assertQuery('setting', array(vB_dB_Query::TYPE_KEY => vB_dB_Query::QUERY_UPDATE, 'product' => $group['product'], vB_dB_Query::CONDITIONS_KEY => array(array('field' => 'varname', 'value' => $settingnames, 'operator' => vB_dB_Query::OPERATOR_EQ)))); vB::getDbAssertor()->assertQuery('vBForum:phrase', array(vB_dB_Query::TYPE_KEY => vB_dB_Query::QUERY_UPDATE, 'product' => $group['product'], 'username' => $username, 'dateline' => TIMENOW, 'version' => $product_version, vB_dB_Query::CONDITIONS_KEY => array(array('field' => 'varname', 'value' => $phrasenames, 'operator' => vB_dB_Query::OPERATOR_EQ), array('field' => 'fieldname', 'value' => 'vbsettings', 'operator' => vB_dB_Query::OPERATOR_EQ)))); } vB::getDatastore()->build_options(); if (defined('DEV_AUTOEXPORT') and DEV_AUTOEXPORT) { require_once DIR . '/includes/functions_filesystemxml.php'; autoexport_write_settings_and_language(-1, array($oldproduct, $group['product'])); } $response['update'] = true; return $response; }