本文整理汇总了PHP中TBGSettings::saveSetting方法的典型用法代码示例。如果您正苦于以下问题:PHP TBGSettings::saveSetting方法的具体用法?PHP TBGSettings::saveSetting怎么用?PHP TBGSettings::saveSetting使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TBGSettings
的用法示例。
在下文中一共展示了TBGSettings::saveSetting方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: loadFixtures
public static function loadFixtures(TBGScope $scope)
{
$scope_id = $scope->getID();
$admin_group = new TBGGroup();
$admin_group->setName('Administrators');
$admin_group->setScope($scope);
$admin_group->save();
TBGSettings::saveSetting('admingroup', $admin_group->getID(), 'core', $scope_id);
$user_group = new TBGGroup();
$user_group->setName('Regular users');
$user_group->setScope($scope);
$user_group->save();
TBGSettings::saveSetting('defaultgroup', $user_group->getID(), 'core', $scope_id);
$guest_group = new TBGGroup();
$guest_group->setName('Guests');
$guest_group->setScope($scope);
$guest_group->save();
// Set up initial users, and their permissions
if ($scope->isDefault()) {
list($guestuser_id, $adminuser_id) = TBGUser::loadFixtures($scope, $admin_group, $user_group, $guest_group);
TBGUserScopesTable::getTable()->addUserToScope($guestuser_id, $scope->getID(), $guest_group->getID(), true);
TBGUserScopesTable::getTable()->addUserToScope($adminuser_id, $scope->getID(), $admin_group->getID(), true);
} else {
$default_scope_id = TBGSettings::getDefaultScopeID();
$default_user_id = (int) TBGSettings::get(TBGSettings::SETTING_DEFAULT_USER_ID, 'core', $default_scope_id);
TBGUserScopesTable::getTable()->addUserToScope($default_user_id, $scope->getID(), $user_group->getID(), true);
TBGUserScopesTable::getTable()->addUserToScope(1, $scope->getID(), $admin_group->getID());
TBGSettings::saveSetting(TBGSettings::SETTING_DEFAULT_USER_ID, $default_user_id, 'core', $scope->getID());
}
TBGPermissionsTable::getTable()->loadFixtures($scope, $admin_group->getID(), $guest_group->getID());
}
示例2: loadFixtures
public static function loadFixtures(TBGScope $scope)
{
$scheme = new TBGWorkflowScheme();
$scheme->setScope($scope);
$scheme->setName("Default workflow scheme");
$scheme->setDescription("This is the default workflow scheme. It is used by all projects with no specific workflow scheme selected. This scheme cannot be edited or removed.");
$scheme->save();
TBGSettings::saveSetting(TBGSettings::SETTING_DEFAULT_WORKFLOWSCHEME, $scheme->getID(), 'core', $scope->getID());
}
示例3: loadFixtures
public static function loadFixtures(TBGScope $scope)
{
$scheme = new TBGIssuetypeScheme();
$scheme->setScope($scope->getID());
$scheme->setName("Default issuetype scheme");
$scheme->setDescription("This is the default issuetype scheme. It is used by all projects with no specific issuetype scheme selected. This scheme cannot be edited or removed.");
$scheme->save();
TBGSettings::saveSetting(TBGSettings::SETTING_DEFAULT_ISSUETYPESCHEME, $scheme->getID(), 'core', $scope->getID());
foreach (TBGIssuetype::getAll() as $issuetype) {
$scheme->setIssuetypeEnabled($issuetype);
if ($issuetype->getIcon() == 'developer_report') {
$scheme->setIssuetypeRedirectedAfterReporting($issuetype, false);
}
if (in_array($issuetype->getIcon(), array('task', 'developer_report', 'idea'))) {
$scheme->setIssuetypeReportable($issuetype, false);
}
}
return $scheme;
}
示例4: do_execute
public function do_execute()
{
$this->cliEcho("\n");
$this->cliEcho("Revert authentication backend\n", 'white', 'bold');
$this->cliEcho("This command is useful if you've managed to lock yourself.\n");
$this->cliEcho("out due to an authentication backend change gone bad.\n\n");
if (TBGSettings::getAuthenticationBackend() == 'tbg' || TBGSettings::getAuthenticationBackend() == null) {
$this->cliEcho("You are currently using the default authentication backend.\n\n");
} else {
$this->cliEcho("Please type 'yes' if you want to revert to the default authentication backend: ");
$this->cliEcho("\n");
if ($this->getInput() == 'yes') {
TBGSettings::saveSetting(TBGSettings::SETTING_AUTH_BACKEND, 'tbg');
$this->cliEcho("Authentication backend reverted.\n\n");
} else {
$this->cliEcho("No changes made.\n\n");
}
}
}
示例5: loadFixtures
public static function loadFixtures(TBGScope $scope)
{
$scope_id = $scope->getID();
$bug_report = new TBGIssuetype();
$bug_report->setName('Bug report');
$bug_report->setIcon('bug_report');
$bug_report->setDescription('Have you discovered a bug in the application, or is something not working as expected?');
$bug_report->save();
TBGSettings::saveSetting('defaultissuetypefornewissues', $bug_report->getID(), 'core', $scope_id);
TBGSettings::saveSetting('issuetype_bug_report', $bug_report->getID(), 'core', $scope_id);
$feature_request = new TBGIssuetype();
$feature_request->setName('Feature request');
$feature_request->setIcon('feature_request');
$feature_request->setDescription('Are you missing some specific feature, or is your favourite part of the application a bit lacking?');
$feature_request->save();
TBGSettings::saveSetting('issuetype_feature_request', $feature_request->getID(), 'core', $scope_id);
$enhancement = new TBGIssuetype();
$enhancement->setName('Enhancement');
$enhancement->setIcon('enhancement');
$enhancement->setDescription('Have you found something that is working in a way that could be improved?');
$enhancement->save();
TBGSettings::saveSetting('issuetype_enhancement', $enhancement->getID(), 'core', $scope_id);
$task = new TBGIssuetype();
$task->setName('Task');
$task->setIcon('task');
$task->setIsTask();
$task->save();
TBGSettings::saveSetting('issuetype_task', $task->getID(), 'core', $scope_id);
$user_story = new TBGIssuetype();
$user_story->setName('User story');
$user_story->setIcon('developer_report');
$user_story->setDescription('Doing it Agile-style. Issue type perfectly suited for entering user stories');
$user_story->save();
TBGSettings::saveSetting('issuetype_user_story', $user_story->getID(), 'core', $scope_id);
$idea = new TBGIssuetype();
$idea->setName('Idea');
$idea->setIcon('idea');
$idea->setDescription('Express yourself - share your ideas with the rest of the team!');
$idea->save();
TBGSettings::saveSetting('issuetype_idea', $idea->getID(), 'core', $scope_id);
return array($bug_report->getID(), $feature_request->getID(), $enhancement->getID(), $task->getID(), $user_story->getID(), $idea->getID());
}
示例6: loadFixtures
public static function loadFixtures(TBGScope $scope)
{
$scope_id = $scope->getID();
$admin_group = new TBGGroup();
$admin_group->setName('Administrators');
$admin_group->setScope($scope);
$admin_group->save();
TBGSettings::saveSetting('admingroup', $admin_group->getID(), 'core', $scope_id);
$user_group = new TBGGroup();
$user_group->setName('Regular users');
$user_group->setScope($scope);
$user_group->save();
TBGSettings::saveSetting('defaultgroup', $user_group->getID(), 'core', $scope_id);
$guest_group = new TBGGroup();
$guest_group->setName('Guests');
$guest_group->setScope($scope);
$guest_group->save();
// Set up initial users, and their permissions
TBGUser::loadFixtures($scope, $admin_group, $user_group, $guest_group);
TBGPermissionsTable::getTable()->loadFixtures($scope, $admin_group->getID(), $guest_group->getID());
}
示例7: runSavePlanningColumnSettings
/**
* Save Planning column settings for user
*
* @param TBGRequest $request
* @return bool
*/
public function runSavePlanningColumnSettings(TBGRequest $request)
{
if ($this->getUser() instanceof TBGUser) {
try {
TBGSettings::saveSetting('planning_columns_' . $this->selected_project->getID(), join(',', $request['planning_column']), 'project', TBGContext::getScope()->getID(), $this->getUser()->getID());
} catch (Exception $e) {
}
}
$this->forward(TBGContext::getRouting()->generate('project_planning', array('project_key' => $this->selected_project->getKey())));
}
示例8: runSiteIcons
public function runSiteIcons(TBGRequest $request)
{
if ($this->getAccessLevel($request['section'], 'core') == TBGSettings::ACCESS_FULL) {
if ($request->isPost()) {
switch ($request['small_icon_action']) {
case 'upload_file':
$file = $request->handleUpload('small_icon');
TBGSettings::saveSetting(TBGSettings::SETTING_FAVICON_TYPE, TBGSettings::APPEARANCE_FAVICON_CUSTOM);
TBGSettings::saveSetting(TBGSettings::SETTING_FAVICON_ID, $file->getID());
break;
case 'clear_file':
TBGSettings::saveSetting(TBGSettings::SETTING_FAVICON_TYPE, TBGSettings::APPEARANCE_FAVICON_THEME);
break;
}
switch ($request['large_icon_action']) {
case 'upload_file':
$file = $request->handleUpload('large_icon');
TBGSettings::saveSetting(TBGSettings::SETTING_HEADER_ICON_TYPE, TBGSettings::APPEARANCE_HEADER_CUSTOM);
TBGSettings::saveSetting(TBGSettings::SETTING_HEADER_ICON_ID, $file->getID());
break;
case 'clear_file':
TBGSettings::saveSetting(TBGSettings::SETTING_HEADER_ICON_TYPE, TBGSettings::APPEARANCE_HEADER_THEME);
break;
}
}
$route = TBGContext::getRouting()->generate('configure_settings');
if ($request->isAjaxCall()) {
return $this->renderJSON(array('forward' => $route));
} else {
$this->forward($route);
}
}
return $this->forward403($this->getI18n()->__("You don't have access to perform this action"));
}
示例9: setKeyboardNavigationEnabled
public function setKeyboardNavigationEnabled($value = true)
{
if (!$value) {
TBGSettings::saveSetting(TBGSettings::SETTING_USER_KEYBOARD_NAVIGATION, false, 'core', null, $this->getID());
} else {
TBGSettings::deleteSetting(TBGSettings::SETTING_USER_KEYBOARD_NAVIGATION, 'core', null, $this->getID());
}
}
示例10: saveSetting
public function saveSetting($setting, $value, $uid = 0, $scope = null)
{
$scope = $scope === null ? TBGContext::getScope()->getID() : $scope;
return TBGSettings::saveSetting($setting, $value, $this->getName(), $scope, $uid);
}
示例11: loadFixtures
public static function loadFixtures(TBGScope $scope)
{
$available = new TBGUserstate();
$available->setIsOnline();
$available->setName('Available');
$available->save();
$offline = new TBGUserstate();
$offline->setIsUnavailable();
$offline->setName('Offline');
$offline->save();
$busy = new TBGUserstate();
$busy->setIsUnavailable();
$busy->setIsOnline();
$busy->setName('Busy');
$busy->save();
$unavailable = new TBGUserstate();
$unavailable->setIsUnavailable();
$unavailable->setIsOnline();
$unavailable->setName('Unavailable');
$unavailable->save();
$in_a_meeting = new TBGUserstate();
$in_a_meeting->setIsUnavailable();
$in_a_meeting->setIsInMeeting();
$in_a_meeting->setName('In a meeting');
$in_a_meeting->save();
$coding = new TBGUserstate();
$coding->setIsUnavailable();
$coding->setIsBusy();
$coding->setIsOnline();
$coding->setName('Coding');
$coding->save();
$coffee = new TBGUserstate();
$coffee->setIsUnavailable();
$coffee->setIsBusy();
$coffee->setIsOnline();
$coffee->setName('On coffee break');
$away = new TBGUserstate();
$away->setIsUnavailable();
$away->setIsOnline();
$away->setIsBusy();
$away->setIsAbsent();
$away->setName('Away');
$away->save();
$vacation = new TBGUserstate();
$vacation->setIsUnavailable();
$vacation->setIsBusy();
$vacation->setIsAbsent();
$vacation->setName('On vacation');
$vacation->save();
TBGSettings::saveSetting(TBGSettings::SETTING_ONLINESTATE, $available->getID(), 'core', $scope->getID());
TBGSettings::saveSetting(TBGSettings::SETTING_OFFLINESTATE, $offline->getID(), 'core', $scope->getID());
TBGSettings::saveSetting(TBGSettings::SETTING_AWAYSTATE, $away->getID(), 'core', $scope->getID());
}
示例12: do_execute
//.........这里部分代码省略.........
$this->cliEcho("The Bug Genie will not function properly until the .htaccess file is properly set up!\n");
} else {
$this->cliEcho("The .htaccess file was successfully set up...\n", 'green', 'bold');
}
}
} else {
$this->cliEcho("Skipping .htaccess auto-setup.");
}
if ($this->getProvidedArgument('setup_htaccess') != 'yes') {
$this->cliEcho("Press ENTER to continue ... ");
$this->pressEnterToContinue();
$this->cliEcho("\n");
}
$enable_modules = array();
if ($this->getProvidedArgument('enable_all_modules') != 'yes') {
$this->cliEcho("You will now get a list of available modules.\nTo enable the module after installation, just press ENTER.\nIf you don't want to enable the module, type \"no\".\nRemember that all these modules can be disabled/uninstalled after installation.\n\n");
}
$this->cliEcho("Enable incoming and outgoing email? ", 'white', 'bold') . $this->cliEcho('(yes): ');
$enable_modules['mailing'] = $this->getProvidedArgument('enable_all_modules') == 'yes' ? true : $this->askToDecline();
if ($this->getProvidedArgument('enable_all_modules') == 'yes') {
$this->cliEcho("Yes\n", 'yellow', 'bold');
}
$this->cliEcho("Enable communication with version control systems (i.e. svn)? ", 'white', 'bold') . $this->cliEcho('(yes): ');
$enable_modules['vcs_integration'] = $this->getProvidedArgument('enable_all_modules') == 'yes' ? true : $this->askToDecline();
if ($this->getProvidedArgument('enable_all_modules') == 'yes') {
$this->cliEcho("Yes\n", 'yellow', 'bold');
}
$enable_modules['publish'] = true;
$this->cliEcho("\n");
$this->cliEcho("Creating tables ...\n", 'white', 'bold');
$tables_path = THEBUGGENIE_CORE_PATH . 'classes' . DIRECTORY_SEPARATOR . 'B2DB' . DIRECTORY_SEPARATOR;
TBGContext::addClasspath($tables_path);
$tables_path_handle = opendir($tables_path);
$tables_created = array();
while ($table_class_file = readdir($tables_path_handle)) {
if (($tablename = substr($table_class_file, 0, strpos($table_class_file, '.'))) != '') {
B2DB::getTable($tablename)->create();
$this->cliEcho("Creating table {$tablename}\n", 'white', 'bold');
}
}
$this->cliEcho("\n");
$this->cliEcho("All tables successfully created...\n\n", 'green', 'bold');
$this->cliEcho("Setting up initial scope... \n", 'white', 'bold');
TBGContext::reinitializeI18n('en_US');
$scope = new TBGScope();
$scope->setName('The default scope');
$scope->addHostname('*');
$scope->setEnabled();
TBGContext::setScope($scope);
$scope->save();
TBGSettings::saveSetting('language', 'en_US');
$this->cliEcho("Initial scope setup successfully... \n\n", 'green', 'bold');
$this->cliEcho("Setting up modules... \n", 'white', 'bold');
try {
foreach ($enable_modules as $module => $install) {
if ((bool) $install && file_exists(THEBUGGENIE_MODULES_PATH . $module . DS . 'module')) {
$this->cliEcho("Installing {$module}... \n");
TBGModule::installModule($module);
$this->cliEcho("Module {$module} installed successfully...\n", 'green');
}
}
$this->cliEcho("\n");
$this->cliEcho("All modules installed successfully...\n", 'green', 'bold');
$this->cliEcho("\n");
$this->cliEcho("Finishing installation... \n", 'white', 'bold');
if (!is_writable(THEBUGGENIE_PATH . 'installed')) {
$this->cliEcho("\n");
$this->cliEcho("Could not create the 'installed' file.\n", 'red', 'bold');
$this->cliEcho("Please create the file ");
$this->cliEcho(THEBUGGENIE_PATH . "installed\n", 'white', 'bold');
$this->cliEcho("with the following line inside:\n");
$this->cliEcho('3.0, installed ' . date('d.m.Y H:i'), 'blue', 'bold');
$this->cliEcho("\n");
$this->cliEcho("This can be done by running the following command when installation has finished:\n");
$this->cliEcho('echo "3.0, installed ' . date('d.m.Y H:i') . '" > ' . THEBUGGENIE_PATH . 'installed', 'white', 'bold');
$this->cliEcho("\n");
$this->cliEcho("Press ENTER to continue ... ");
$this->pressEnterToContinue();
$this->cliEcho("\n");
$this->cliEcho("\n");
} else {
file_put_contents(THEBUGGENIE_PATH . 'installed', '3.0, installed ' . date('d.m.Y H:i'));
}
$this->cliEcho("The installation was completed successfully!\n", 'green', 'bold');
$this->cliEcho("\nTo use The Bug Genie, access http://example.com" . $url_subdir . "index.php with a web-browser.\n");
$this->cliEcho("The default username is ") . $this->cliEcho('Administrator') . $this->cliEcho(' and the password is ') . $this->cliEcho('admin');
$this->cliEcho("\n\nFor support, please visit ") . $this->cliEcho('http://www.thebuggenie.com/', 'blue', 'underline');
$this->cliEcho("\n");
} catch (Exception $e) {
throw new Exception("Could not install the {$module} module:\n" . $e->getMessage());
}
}
} catch (Exception $e) {
$this->cliEcho("\n\nThe installation was interrupted\n", 'red');
$this->cliEcho($e->getMessage() . "\n");
var_dump($e->getTraceAsString());
die;
}
$this->cliEcho("\n");
}
示例13: loadFixtures
public static function loadFixtures(TBGScope $scope)
{
$workflow = new TBGWorkflow();
$workflow->setName("Default workflow");
$workflow->setDescription("This is the default workflow. It is used by all projects with no specific workflow selected, and for issue types with no specific workflow specified. This workflow cannot be edited or removed.");
$workflow->setScope($scope->getID());
$workflow->save();
TBGSettings::saveSetting(TBGSettings::SETTING_DEFAULT_WORKFLOW, $workflow->getID(), 'core', $scope->getID());
TBGWorkflowStep::loadFixtures($scope, $workflow);
}
示例14: _postSave
/**
* Performs post-save actions on user objects
*
* This includes firing off events for modules to listen to (e.g. so
* activation emails can be sent out), and setting up a default
* dashboard for the new user.
*
* @param boolean $is_new Whether this is a new object or not (automatically passed to the function from B2DB)
*/
protected function _postSave($is_new)
{
if ($is_new) {
$event = TBGEvent::createNew('core', 'TBGUser::createNew', $this);
$event->trigger();
// If the event isn't processed we automatically enable the user
// since we can be sure no activation email has been sent out
if (!$event->isProcessed()) {
$this->setEnabled();
$this->setActivated();
$this->save();
}
// Set up a default dashboard for the user
TBGUserDashboardViewsTable::getTable()->addView($this->getID(), array('type' => TBGDashboard::DASHBOARD_VIEW_PREDEFINED_SEARCH, 'id' => TBGContext::PREDEFINED_SEARCH_MY_REPORTED_ISSUES));
TBGUserDashboardViewsTable::getTable()->addView($this->getID(), array('type' => TBGDashboard::DASHBOARD_VIEW_PREDEFINED_SEARCH, 'id' => TBGContext::PREDEFINED_SEARCH_MY_ASSIGNED_OPEN_ISSUES));
TBGUserDashboardViewsTable::getTable()->addView($this->getID(), array('type' => TBGDashboard::DASHBOARD_VIEW_LOGGED_ACTION, 'id' => 0));
}
if ($this->_timezone !== null) {
TBGSettings::saveSetting('timezone', $this->_timezone, 'core', null, $this->getID());
} else {
TBGSettings::saveSetting('timezone', 'sys', 'core', null, $this->getID());
}
if ($this->_language != null) {
TBGSettings::saveSetting('language', $this->_language, 'core', null, $this->getID());
} else {
TBGSettings::saveSetting('language', 'sys', 'core', null, $this->getID());
}
}
示例15: _upgradeFrom3dot2
protected function _upgradeFrom3dot2(TBGRequest $request)
{
set_time_limit(0);
TBGContext::addAutoloaderClassPath(THEBUGGENIE_MODULES_PATH . 'installation' . DS . 'classes' . DS . 'upgrade_3.2');
foreach (array('publish', 'mailing') as $module) {
TBGContext::addAutoloaderClassPath(THEBUGGENIE_MODULES_PATH . $module . DS . 'classes');
TBGContext::addAutoloaderClassPath(THEBUGGENIE_MODULES_PATH . $module . DS . 'classes' . DS . 'B2DB');
}
TBGMilestonesTable::getTable()->upgrade(TBGMilestonesTable3dot2::getTable());
TBGArticlesTable::getTable()->upgrade(TBGArticlesTable3dot2::getTable());
TBGProjectsTable::getTable()->upgrade(TBGProjectsTable3dot2::getTable());
TBGLogTable::getTable()->upgrade(TBGLogTable3dot2::getTable());
TBGUsersTable::getTable()->upgrade(TBGUsersTable3dot2::getTable());
TBGIssuesTable::getTable()->upgrade(TBGIssuesTable3dot2::getTable());
TBGWorkflowsTable::getTable()->upgrade(TBGWorkflowsTable3dot2::getTable());
TBGIncomingEmailAccountTable::getTable()->upgrade(TBGIncomingEmailAccountTable3dot2::getTable());
TBGIssueSpentTimesTable::getTable()->upgrade(TBGIssueSpentTimesTable3dot2::getTable());
TBGCommentsTable::getTable()->upgrade(TBGCommentsTable3dot2::getTable());
TBGSavedSearchesTable::getTable()->upgrade(TBGSavedSearchesTable3dot2::getTable());
TBGSettingsTable::getTable()->upgrade(TBGSettingsTable3dot2::getTable());
TBGNotificationsTable::getTable()->upgrade(TBGNotificationsTable3dot2::getTable());
TBGPermissionsTable::getTable()->upgrade(TBGPermissionsTable3dot2::getTable());
TBGUserArticlesTable::getTable()->create();
TBGApplicationPasswordsTable::getTable()->create();
TBGUserNotificationSettingsTable::getTable()->create();
$transaction = \b2db\Core::startTransaction();
// Upgrade user passwords
switch ($request['upgrade_passwords']) {
case 'manual':
$password = $request['manul_password'];
foreach (TBGUsersTable::getTable()->selectAll() as $user) {
$user->setPassword($password);
$user->save();
}
break;
case 'auto':
$field = $request['upgrade_passwords_pick'] == 'username' ? 'username' : 'email';
foreach (TBGUsersTable::getTable()->selectAll() as $user) {
if ($field == 'username' && trim($user->getUsername())) {
$user->setPassword(trim($user->getUsername()));
$user->save();
} elseif ($field == 'email' && trim($user->getEmail())) {
$user->setPassword(trim($user->getEmail()));
$user->save();
}
}
break;
}
$adminuser = TBGUsersTable::getTable()->selectById(1);
$adminuser->setPassword($request['admin_password']);
$adminuser->save();
// Add new settings
TBGSettings::saveSetting(TBGSettings::SETTING_SERVER_TIMEZONE, 'core', date_default_timezone_get(), 0, 1);
foreach ($request->getParameter('status') as $scope_id => $status_id) {
$scope = TBGScopesTable::getTable()->selectById((int) $scope_id);
if ($scope instanceof TBGScope) {
foreach (TBGWorkflowsTable::getTable()->getAll((int) $scope_id) as $workflow) {
$transition = new TBGWorkflowTransition();
$steps = $workflow->getSteps();
$step = array_shift($steps);
$step->setLinkedStatusID((int) $status_id);
$step->save();
$transition->setOutgoingStep($step);
$transition->setName('Issue created');
$transition->setWorkflow($workflow);
$transition->setScope($scope);
$transition->setDescription('This is the initial transition for issues using this workflow');
$transition->save();
$workflow->setInitialTransition($transition);
$workflow->save();
}
TBGActivityType::loadFixtures($scope);
}
}
$transaction->commitAndEnd();
TBGContext::finishUpgrading();
TBGContext::getModule('mailing')->upgradeFrom3dot2();
$this->upgrade_complete = true;
}