	public function admin_add()
	{
		$this->pageTitle = __d('baser', 'テーマアップロード');
		$this->subMenuElements = ['themes'];
		if (!$this->request->is(['post', 'put'])) {
			return;
		}

		if ($this->Theme->isOverPostSize()) {
			$this->BcMessage->setError(
				__d(
					'baser',
					'送信できるデータ量を超えています。合計で %s 以内のデータを送信してください。',
					ini_get('post_max_size')
				)
			);
		}
		if (empty($this->request->data['Theme']['file']['tmp_name'])) {
			$message = __d('baser', 'ファイルのアップロードに失敗しました。');
			if (!empty($this->request->data['Theme']['file']['error']) && $this->request->data['Theme']['file']['error'] == 1) {
				$message .= __d('baser', 'サーバに設定されているサイズ制限を超えています。');
			}
			$this->BcMessage->setError($message);
			return;
		}

		$name = $this->request->data['Theme']['file']['name'];
		move_uploaded_file($this->request->data['Theme']['file']['tmp_name'], TMP . $name);
		App::uses('BcZip', 'Lib');
		$BcZip = new BcZip();
		if (!$BcZip->extract(TMP . $name, BASER_THEMES)) {
			$msg = __d('baser', 'アップロードしたZIPファイルの展開に失敗しました。');
			$msg .= "\n" . $BcZip->error;
			$this->BcMessage->setError($msg);
			return;
		}
		unlink(TMP . $name);
		$this->BcMessage->setInfo('テーマファイル「' . $name . '」を追加しました。');
		$this->redirect(['action' => 'index']);
	}
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.