	public function admin_maintenance($mode = '')
	{
		$this->_checkReferer();
		switch($mode) {
			case 'backup':
				set_time_limit(0);
				$this->_backupDb($this->request->query['backup_encoding']);
				break;
			case 'restore':
				set_time_limit(0);
				$messages = [];
				if (!$this->request->data) {
					if ($this->Tool->isOverPostSize()) {
						$messages[] = __d('baser', '送信できるデータ量を超えています。合計で %s 以内のデータを送信してください。', ini_get('post_max_size'));
					} else {
						$this->notFound();
					}
				}
				if ($this->_restoreDb($this->request->data)) {
					$messages[] = __d('baser', 'データの復元が完了しました。');
					$error = false;
				} else {
					$messages[] = __d('baser', 'データの復元に失敗しました。ログの確認を行なって下さい。');
					$error = true;
				}
				// Pageモデルがレストア処理でAppModelで初期化されClassRegistryにセットされている為
				ClassRegistry::flush();
				BcSite::flash();
				if (!$error && !$this->Page->createAllPageTemplate()) {
					$messages[] = __d('baser', "ページテンプレートの生成に失敗しました。\n表示できないページはページ管理より更新処理を行ってください。");
				}
				if ($messages) {
					if ($error) {
						$this->BcMessage->setError(implode("\n", $messages));
					} else {
						$this->BcMessage->setInfo(implode("\n", $messages));
					}
				}
				clearAllCache();
				$this->redirect(['action' => 'maintenance']);
				break;
		}
		$this->pageTitle = __d('baser', 'データメンテナンス');
		$this->help = 'tools_maintenance';
	}
The software constructs all or part of an OS command using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the intended OS command when it is sent to a downstream component.