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