From 8bc601aa6a49fd7d9262f7a97055ae4aa59bc9cb Mon Sep 17 00:00:00 2001 From: Kavalar Date: Wed, 12 Apr 2023 13:14:37 +0300 Subject: [PATCH] requests --- backend/config/main.php | 6 + .../modules/card/models/UserCardSearch.php | 11 +- .../modules/knowledgelevel/KnowledgeLevel.php | 24 + .../controllers/DefaultController.php | 20 + .../controllers/KnowledgeLevelController.php | 127 ++ .../knowledgelevel/models/KnowledgeLevel.php | 8 + .../models/KnowledgeLevelSearch.php | 69 + .../knowledgelevel/views/default/index.php | 12 + .../views/knowledge-level/_form.php | 25 + .../views/knowledge-level/_search.php | 31 + .../views/knowledge-level/create.php | 18 + .../views/knowledge-level/index.php | 39 + .../views/knowledge-level/update.php | 19 + .../views/knowledge-level/view.php | 42 + backend/modules/request/Request.php | 24 + .../request/controllers/DefaultController.php | 20 + .../request/controllers/RequestController.php | 147 ++ backend/modules/request/models/Request.php | 8 + .../modules/request/models/RequestSearch.php | 79 + .../modules/request/views/default/index.php | 12 + .../modules/request/views/request/_form.php | 63 + .../modules/request/views/request/_search.php | 47 + .../modules/request/views/request/create.php | 18 + .../modules/request/views/request/index.php | 62 + .../modules/request/views/request/update.php | 19 + .../modules/request/views/request/view.php | 88 + backend/views/layouts/left.php | 2 + common/models/KnowledgeLevel.php | 63 + common/models/Position.php | 6 + common/models/Request.php | 159 ++ common/models/UserCard.php | 11 + common/services/RequestService.php | 336 ++++ composer.json | 5 +- composer.lock | 1655 +++++++++-------- console/controllers/SwaggerController.php | 26 + .../m230329_211037_create_request_table.php | 37 + ...29_212545_create_knowledge_level_table.php | 29 + .../modules/api/controllers/ApiController.php | 30 + .../api/controllers/RequestController.php | 226 +++ frontend/modules/api/models/Position.php | 25 + frontend/modules/api/models/Request.php | 110 ++ frontend/modules/api/models/Skill.php | 41 + frontend/web/api-doc | 1 + 43 files changed, 3005 insertions(+), 795 deletions(-) create mode 100644 backend/modules/knowledgelevel/KnowledgeLevel.php create mode 100644 backend/modules/knowledgelevel/controllers/DefaultController.php create mode 100644 backend/modules/knowledgelevel/controllers/KnowledgeLevelController.php create mode 100644 backend/modules/knowledgelevel/models/KnowledgeLevel.php create mode 100644 backend/modules/knowledgelevel/models/KnowledgeLevelSearch.php create mode 100644 backend/modules/knowledgelevel/views/default/index.php create mode 100644 backend/modules/knowledgelevel/views/knowledge-level/_form.php create mode 100644 backend/modules/knowledgelevel/views/knowledge-level/_search.php create mode 100644 backend/modules/knowledgelevel/views/knowledge-level/create.php create mode 100644 backend/modules/knowledgelevel/views/knowledge-level/index.php create mode 100644 backend/modules/knowledgelevel/views/knowledge-level/update.php create mode 100644 backend/modules/knowledgelevel/views/knowledge-level/view.php create mode 100644 backend/modules/request/Request.php create mode 100644 backend/modules/request/controllers/DefaultController.php create mode 100644 backend/modules/request/controllers/RequestController.php create mode 100644 backend/modules/request/models/Request.php create mode 100644 backend/modules/request/models/RequestSearch.php create mode 100644 backend/modules/request/views/default/index.php create mode 100644 backend/modules/request/views/request/_form.php create mode 100644 backend/modules/request/views/request/_search.php create mode 100644 backend/modules/request/views/request/create.php create mode 100644 backend/modules/request/views/request/index.php create mode 100644 backend/modules/request/views/request/update.php create mode 100644 backend/modules/request/views/request/view.php create mode 100644 common/models/KnowledgeLevel.php create mode 100644 common/models/Request.php create mode 100644 common/services/RequestService.php create mode 100644 console/controllers/SwaggerController.php create mode 100644 console/migrations/m230329_211037_create_request_table.php create mode 100644 console/migrations/m230329_212545_create_knowledge_level_table.php create mode 100644 frontend/modules/api/controllers/RequestController.php create mode 100644 frontend/modules/api/models/Position.php create mode 100644 frontend/modules/api/models/Request.php create mode 100644 frontend/modules/api/models/Skill.php create mode 160000 frontend/web/api-doc diff --git a/backend/config/main.php b/backend/config/main.php index bdd19d8..373caac 100755 --- a/backend/config/main.php +++ b/backend/config/main.php @@ -80,6 +80,12 @@ return [ 'document' => [ 'class' => 'backend\modules\document\Document', ], + 'request' => [ + 'class' => 'backend\modules\request\Request', + ], + 'knowledgelevel' => [ + 'class' => 'backend\modules\knowledgelevel\KnowledgeLevel', + ], ], 'components' => [ 'request' => [ diff --git a/backend/modules/card/models/UserCardSearch.php b/backend/modules/card/models/UserCardSearch.php index 1c9ba20..e7d26cd 100755 --- a/backend/modules/card/models/UserCardSearch.php +++ b/backend/modules/card/models/UserCardSearch.php @@ -51,10 +51,13 @@ class UserCardSearch extends UserCard ->where(['id_user' => Yii::$app->user->id]) ->one(); - $employeeIdList = ManagerEmployee::find() - ->where(['manager_id' => $userCard->manager->id]) - ->select('user_card_id') - ->column(); + $employeeIdList = false; + if (isset($userCard->manager)) { + $employeeIdList = ManagerEmployee::find() + ->where(['manager_id' => $userCard->manager->id]) + ->select('user_card_id') + ->column(); + } $query = UserCard::find()->where(['in', 'user_card.id', $employeeIdList]); } diff --git a/backend/modules/knowledgelevel/KnowledgeLevel.php b/backend/modules/knowledgelevel/KnowledgeLevel.php new file mode 100644 index 0000000..80dff42 --- /dev/null +++ b/backend/modules/knowledgelevel/KnowledgeLevel.php @@ -0,0 +1,24 @@ +render('index'); + } +} diff --git a/backend/modules/knowledgelevel/controllers/KnowledgeLevelController.php b/backend/modules/knowledgelevel/controllers/KnowledgeLevelController.php new file mode 100644 index 0000000..24bd018 --- /dev/null +++ b/backend/modules/knowledgelevel/controllers/KnowledgeLevelController.php @@ -0,0 +1,127 @@ + [ + 'class' => VerbFilter::className(), + 'actions' => [ + 'delete' => ['POST'], + ], + ], + ]; + } + + /** + * Lists all KnowledgeLevel models. + * @return mixed + */ + public function actionIndex() + { + $searchModel = new KnowledgeLevelSearch(); + $dataProvider = $searchModel->search(Yii::$app->request->queryParams); + + return $this->render('index', [ + 'searchModel' => $searchModel, + 'dataProvider' => $dataProvider, + ]); + } + + /** + * Displays a single KnowledgeLevel model. + * @param integer $id + * @return mixed + * @throws NotFoundHttpException if the model cannot be found + */ + public function actionView($id) + { + return $this->render('view', [ + 'model' => $this->findModel($id), + ]); + } + + /** + * Creates a new KnowledgeLevel model. + * If creation is successful, the browser will be redirected to the 'view' page. + * @return mixed + */ + public function actionCreate() + { + $model = new KnowledgeLevel(); + + if ($model->load(Yii::$app->request->post()) && $model->save()) { + return $this->redirect(['view', 'id' => $model->id]); + } + + return $this->render('create', [ + 'model' => $model, + ]); + } + + /** + * Updates an existing KnowledgeLevel model. + * If update is successful, the browser will be redirected to the 'view' page. + * @param integer $id + * @return mixed + * @throws NotFoundHttpException if the model cannot be found + */ + public function actionUpdate($id) + { + $model = $this->findModel($id); + + if ($model->load(Yii::$app->request->post()) && $model->save()) { + return $this->redirect(['view', 'id' => $model->id]); + } + + return $this->render('update', [ + 'model' => $model, + ]); + } + + /** + * Deletes an existing KnowledgeLevel model. + * If deletion is successful, the browser will be redirected to the 'index' page. + * @param integer $id + * @return mixed + * @throws NotFoundHttpException if the model cannot be found + */ + public function actionDelete($id) + { + $this->findModel($id)->delete(); + + return $this->redirect(['index']); + } + + /** + * Finds the KnowledgeLevel model based on its primary key value. + * If the model is not found, a 404 HTTP exception will be thrown. + * @param integer $id + * @return KnowledgeLevel the loaded model + * @throws NotFoundHttpException if the model cannot be found + */ + protected function findModel($id) + { + if (($model = KnowledgeLevel::findOne($id)) !== null) { + return $model; + } + + throw new NotFoundHttpException('The requested page does not exist.'); + } +} diff --git a/backend/modules/knowledgelevel/models/KnowledgeLevel.php b/backend/modules/knowledgelevel/models/KnowledgeLevel.php new file mode 100644 index 0000000..93798da --- /dev/null +++ b/backend/modules/knowledgelevel/models/KnowledgeLevel.php @@ -0,0 +1,8 @@ + $query, + ]); + + $this->load($params); + + if (!$this->validate()) { + // uncomment the following line if you do not want to return any records when validation fails + // $query->where('0=1'); + return $dataProvider; + } + + // grid filtering conditions + $query->andFilterWhere([ + 'id' => $this->id, + 'status' => $this->status, + ]); + + $query->andFilterWhere(['like', 'title', $this->title]); + + return $dataProvider; + } +} diff --git a/backend/modules/knowledgelevel/views/default/index.php b/backend/modules/knowledgelevel/views/default/index.php new file mode 100644 index 0000000..17c5cd7 --- /dev/null +++ b/backend/modules/knowledgelevel/views/default/index.php @@ -0,0 +1,12 @@ +
+

context->action->uniqueId ?>

+

+ This is the view content for action "context->action->id ?>". + The action belongs to the controller "context) ?>" + in the "context->module->id ?>" module. +

+

+ You may customize this page by editing the following file:
+ +

+
diff --git a/backend/modules/knowledgelevel/views/knowledge-level/_form.php b/backend/modules/knowledgelevel/views/knowledge-level/_form.php new file mode 100644 index 0000000..e9759b1 --- /dev/null +++ b/backend/modules/knowledgelevel/views/knowledge-level/_form.php @@ -0,0 +1,25 @@ + + +
+ + + + field($model, 'title')->textInput(['maxlength' => true]) ?> + + field($model, 'status')->dropDownList(\common\models\KnowledgeLevel::getStatus()) ?> + +
+ 'btn btn-success']) ?> +
+ + + +
diff --git a/backend/modules/knowledgelevel/views/knowledge-level/_search.php b/backend/modules/knowledgelevel/views/knowledge-level/_search.php new file mode 100644 index 0000000..ae3d362 --- /dev/null +++ b/backend/modules/knowledgelevel/views/knowledge-level/_search.php @@ -0,0 +1,31 @@ + + + diff --git a/backend/modules/knowledgelevel/views/knowledge-level/create.php b/backend/modules/knowledgelevel/views/knowledge-level/create.php new file mode 100644 index 0000000..989a358 --- /dev/null +++ b/backend/modules/knowledgelevel/views/knowledge-level/create.php @@ -0,0 +1,18 @@ +title = 'Добавить уровень знаний'; +$this->params['breadcrumbs'][] = ['label' => 'Уровень знаний', 'url' => ['index']]; +$this->params['breadcrumbs'][] = $this->title; +?> +
+ + render('_form', [ + 'model' => $model, + ]) ?> + +
diff --git a/backend/modules/knowledgelevel/views/knowledge-level/index.php b/backend/modules/knowledgelevel/views/knowledge-level/index.php new file mode 100644 index 0000000..8826c5f --- /dev/null +++ b/backend/modules/knowledgelevel/views/knowledge-level/index.php @@ -0,0 +1,39 @@ +title = 'Уровень знаний'; +$this->params['breadcrumbs'][] = $this->title; +?> +
+ + render('_search', ['model' => $searchModel]); ?> + +

+ 'btn btn-success']) ?> +

+ + $dataProvider, + 'filterModel' => $searchModel, + 'columns' => [ + ['class' => 'yii\grid\SerialColumn'], + + // 'id', + 'title', + [ + 'attribute' => 'status', + 'value' => function($model){ + return \common\models\KnowledgeLevel::getStatus()[$model->status]; + } + ], + + ['class' => 'yii\grid\ActionColumn'], + ], + ]); ?> +
diff --git a/backend/modules/knowledgelevel/views/knowledge-level/update.php b/backend/modules/knowledgelevel/views/knowledge-level/update.php new file mode 100644 index 0000000..ffe87c1 --- /dev/null +++ b/backend/modules/knowledgelevel/views/knowledge-level/update.php @@ -0,0 +1,19 @@ +title = 'Редактировать: ' . $model->title; +$this->params['breadcrumbs'][] = ['label' => 'Уровень знаний', 'url' => ['index']]; +$this->params['breadcrumbs'][] = ['label' => $model->title, 'url' => ['view', 'id' => $model->id]]; +$this->params['breadcrumbs'][] = 'Редактировать'; +?> +
+ + render('_form', [ + 'model' => $model, + ]) ?> + +
diff --git a/backend/modules/knowledgelevel/views/knowledge-level/view.php b/backend/modules/knowledgelevel/views/knowledge-level/view.php new file mode 100644 index 0000000..e6583e0 --- /dev/null +++ b/backend/modules/knowledgelevel/views/knowledge-level/view.php @@ -0,0 +1,42 @@ +title = $model->title; +$this->params['breadcrumbs'][] = ['label' => 'Knowledge Levels', 'url' => ['index']]; +$this->params['breadcrumbs'][] = $this->title; +\yii\web\YiiAsset::register($this); +?> +
+ +

+ $model->id], ['class' => 'btn btn-primary']) ?> + 'btn btn-primary']) ?> + $model->id], [ + 'class' => 'btn btn-danger', + 'data' => [ + 'confirm' => 'Are you sure you want to delete this item?', + 'method' => 'post', + ], + ]) ?> +

+ + $model, + 'attributes' => [ + 'id', + 'title', + [ + 'attribute' => 'status', + 'value' => function($model){ + return \common\models\KnowledgeLevel::getStatus()[$model->status]; + } + ], + ], + ]) ?> + +
diff --git a/backend/modules/request/Request.php b/backend/modules/request/Request.php new file mode 100644 index 0000000..8f82003 --- /dev/null +++ b/backend/modules/request/Request.php @@ -0,0 +1,24 @@ +render('index'); + } +} diff --git a/backend/modules/request/controllers/RequestController.php b/backend/modules/request/controllers/RequestController.php new file mode 100644 index 0000000..9443e88 --- /dev/null +++ b/backend/modules/request/controllers/RequestController.php @@ -0,0 +1,147 @@ + [ + 'class' => VerbFilter::className(), + 'actions' => [ + 'delete' => ['POST'], + ], + ], + ]; + } + + /** + * Lists all Request models. + * @return mixed + */ + public function actionIndex() + { + $searchModel = new RequestSearch(); + $dataProvider = $searchModel->search(Yii::$app->request->queryParams); + + return $this->render('index', [ + 'searchModel' => $searchModel, + 'dataProvider' => $dataProvider, + ]); + } + + /** + * Displays a single Request model. + * @param integer $id + * @return mixed + * @throws NotFoundHttpException if the model cannot be found + */ + public function actionView(int $id) + { + $res = RequestService::run($id)->getById(); + + $search = RequestService::run($id)->search(3); + + $searchDataProvider = new ArrayDataProvider([ + 'allModels' => $search, + 'pagination' => [ + 'pageSize' => 10, + ], + 'sort' => [ + 'attributes' => ['id', 'fio'], + ], + ]); + + return $this->render('view', [ + 'model' => $res, + 'searchDataProvider' => $searchDataProvider, + ]); + } + + /** + * Creates a new Request model. + * If creation is successful, the browser will be redirected to the 'view' page. + * @return mixed + */ + public function actionCreate() + { + $req = RequestService::run()->load(Yii::$app->request->post()); + + if ($req->isLoad) { + $req->save(); + return $this->redirect(['view', 'id' => $req->model->id]); + } + + return $this->render('create', [ + 'model' => $req->model, + ]); + } + + /** + * Updates an existing Request model. + * If update is successful, the browser will be redirected to the 'view' page. + * @param integer $id + * @return mixed + * @throws NotFoundHttpException if the model cannot be found + */ + public function actionUpdate($id) + { + $req = RequestService::run($id)->load(Yii::$app->request->post()); + + if ($req->isLoad) { + $req->save(); + return $this->redirect(['view', 'id' => $req->model->id]); + } + + return $this->render('update', [ + 'model' => $req->model, + ]); + } + + /** + * Deletes an existing Request model. + * If deletion is successful, the browser will be redirected to the 'index' page. + * @param integer $id + * @return mixed + * @throws NotFoundHttpException if the model cannot be found + */ + public function actionDelete($id) + { + $this->findModel($id)->delete(); + + return $this->redirect(['index']); + } + + /** + * Finds the Request model based on its primary key value. + * If the model is not found, a 404 HTTP exception will be thrown. + * @param integer $id + * @return Request the loaded model + * @throws NotFoundHttpException if the model cannot be found + */ + protected function findModel($id) + { + if (($model = Request::findOne($id)) !== null) { + return $model; + } + + throw new NotFoundHttpException('The requested page does not exist.'); + } +} diff --git a/backend/modules/request/models/Request.php b/backend/modules/request/models/Request.php new file mode 100644 index 0000000..c3fbf20 --- /dev/null +++ b/backend/modules/request/models/Request.php @@ -0,0 +1,8 @@ + $query, + ]); + + $this->load($params); + + if (!$this->validate()) { + // uncomment the following line if you do not want to return any records when validation fails + // $query->where('0=1'); + return $dataProvider; + } + + // grid filtering conditions + $query->andFilterWhere([ + 'id' => $this->id, + 'created_at' => $this->created_at, + 'updated_at' => $this->updated_at, + 'user_id' => $this->user_id, + 'position_id' => $this->position_id, + 'knowledge_level_id' => $this->knowledge_level_id, + 'specialist_count' => $this->specialist_count, + 'status' => $this->status, + ]); + + $query->andFilterWhere(['like', 'title', $this->title]) + ->andFilterWhere(['like', 'skill_ids', $this->skill_ids]) + ->andFilterWhere(['like', 'descr', $this->descr]); + + $query->orderBy('id DESC'); + + return $dataProvider; + } +} diff --git a/backend/modules/request/views/default/index.php b/backend/modules/request/views/default/index.php new file mode 100644 index 0000000..1b99a20 --- /dev/null +++ b/backend/modules/request/views/default/index.php @@ -0,0 +1,12 @@ +
+

context->action->uniqueId ?>

+

+ This is the view content for action "context->action->id ?>". + The action belongs to the controller "context) ?>" + in the "context->module->id ?>" module. +

+

+ You may customize this page by editing the following file:
+ +

+
diff --git a/backend/modules/request/views/request/_form.php b/backend/modules/request/views/request/_form.php new file mode 100644 index 0000000..b1c821a --- /dev/null +++ b/backend/modules/request/views/request/_form.php @@ -0,0 +1,63 @@ + + +
+ + + + field($model, 'title')->textInput(['maxlength' => true]) ?> + + field($model, 'user_id')->widget( + Select2::class, + [ + 'data' => \common\models\UserCard::getListUserWithUserId(), + 'options' => ['placeholder' => '...', 'class' => 'form-control'], + 'pluginOptions' => [ + 'allowClear' => true + ], + ] + ); ?> + + field($model, 'position_id')->dropDownList(\common\models\Position::getList(), [ + 'prompt' => 'Выберите' + ]) ?> + + field($model, 'skill_ids')->widget( + Select2::class, + [ + 'data' => \yii\helpers\ArrayHelper::map(\common\models\Skill::find()->all(), 'id', 'name'), + 'options' => ['placeholder' => '...', 'class' => 'form-control', 'multiple' => true], + 'pluginOptions' => [ + 'allowClear' => true + ], + ] + )->label('Навыки'); ?> + + field($model, 'knowledge_level_id')->dropDownList( + \common\models\UserCard::getLevelList(), + ['prompt' => '...'] + ) ?> + + field($model, 'descr')->textarea(['rows' => 6]) ?> + + field($model, 'specialist_count')->textInput() ?> + + field($model, 'status')->dropDownList(\common\models\Request::getStatus(), [ + 'prompt' => 'Выберите' + ]) ?> + +
+ 'btn btn-success']) ?> +
+ + + +
diff --git a/backend/modules/request/views/request/_search.php b/backend/modules/request/views/request/_search.php new file mode 100644 index 0000000..9f3e081 --- /dev/null +++ b/backend/modules/request/views/request/_search.php @@ -0,0 +1,47 @@ + + + diff --git a/backend/modules/request/views/request/create.php b/backend/modules/request/views/request/create.php new file mode 100644 index 0000000..5598dcf --- /dev/null +++ b/backend/modules/request/views/request/create.php @@ -0,0 +1,18 @@ +title = 'Добавить'; +$this->params['breadcrumbs'][] = ['label' => 'Запросы', 'url' => ['index']]; +$this->params['breadcrumbs'][] = $this->title; +?> +
+ + render('_form', [ + 'model' => $model, + ]) ?> + +
diff --git a/backend/modules/request/views/request/index.php b/backend/modules/request/views/request/index.php new file mode 100644 index 0000000..5f880db --- /dev/null +++ b/backend/modules/request/views/request/index.php @@ -0,0 +1,62 @@ +title = 'Запросы'; +$this->params['breadcrumbs'][] = $this->title; +?> +
+ + render('_search', ['model' => $searchModel]); ?> + +

+ 'btn btn-success']) ?> +

+ + $dataProvider, + 'filterModel' => $searchModel, + 'columns' => [ + ['class' => 'yii\grid\SerialColumn'], + + //'id', + 'created_at', + //'updated_at', + [ + 'attribute' => 'user_id', + 'value' => function(\common\models\Request $model){ + return $model->user->userCard->fio ?? 'Не задано'; + } + ], + 'title', + [ + 'attribute' => 'position_id', + 'value' => function(\common\models\Request $model){ + return $model->position->name ?? 'Не задано'; + } + ], + //'skill_ids', + [ + 'attribute' => 'knowledge_level_id', + 'value' => function(\common\models\Request $model){ + return \common\models\UserCard::getLevelList()[$model->knowledge_level_id]; + } + ], + //'descr:ntext', + 'specialist_count', + [ + 'attribute' => 'status', + 'value' => function(\common\models\Request $model){ + return \common\models\KnowledgeLevel::getStatus()[$model->status]; + } + ], + + ['class' => 'yii\grid\ActionColumn'], + ], + ]); ?> +
diff --git a/backend/modules/request/views/request/update.php b/backend/modules/request/views/request/update.php new file mode 100644 index 0000000..8deb311 --- /dev/null +++ b/backend/modules/request/views/request/update.php @@ -0,0 +1,19 @@ +title = 'Редактировать запрос: ' . $model->title; +$this->params['breadcrumbs'][] = ['label' => 'Запросы', 'url' => ['index']]; +$this->params['breadcrumbs'][] = ['label' => $model->title, 'url' => ['view', 'id' => $model->id]]; +$this->params['breadcrumbs'][] = 'Ред.'; +?> +
+ + render('_form', [ + 'model' => $model, + ]) ?> + +
diff --git a/backend/modules/request/views/request/view.php b/backend/modules/request/views/request/view.php new file mode 100644 index 0000000..9891d43 --- /dev/null +++ b/backend/modules/request/views/request/view.php @@ -0,0 +1,88 @@ +title = $model->title; +$this->params['breadcrumbs'][] = ['label' => 'Requests', 'url' => ['index']]; +$this->params['breadcrumbs'][] = $this->title; +\yii\web\YiiAsset::register($this); +?> +
+ +

+ $model->id], ['class' => 'btn btn-primary']) ?> + 'btn btn-primary']) ?> + $model->id], [ + 'class' => 'btn btn-danger', + 'data' => [ + 'confirm' => 'Are you sure you want to delete this item?', + 'method' => 'post', + ], + ]) ?> +

+ + $model, + 'attributes' => [ + 'id', + 'created_at', + 'updated_at', + [ + 'attribute' => 'user_id', + 'value' => function (\common\models\Request $model) { + return $model->user->userCard->fio ?? 'Не задано'; + } + ], + 'title', + [ + 'attribute' => 'position_id', + 'value' => function (\common\models\Request $model) { + return $model->position->name ?? 'Не задано'; + } + ], +// 'skill_ids', + [ + 'attribute' => 'skill_ids', + 'value' => function (\common\models\Request $model) { + $skillStr = ''; + foreach ($model->skills as $skill) { + $skillStr .= $skill['name'] . ", "; + } + return $skillStr; + } + ], + [ + 'attribute' => 'knowledge_level_id', + 'value' => function (\common\models\Request $model) { + return \common\models\UserCard::getLevelList()[$model->knowledge_level_id]; + } + ], + 'descr:ntext', + 'specialist_count', + [ + 'attribute' => 'status', + 'value' => function (\common\models\Request $model) { + return \common\models\Request::getStatus()[$model->status] ?? 'Не задано'; + } + ], + ], + ]) ?> + +

Подходящие кандидаты

+ + $searchDataProvider, + 'columns' => [['class' => 'yii\grid\SerialColumn'], + 'id', + 'fio', + ], + ]); ?> + + +
diff --git a/backend/views/layouts/left.php b/backend/views/layouts/left.php index 556f5f4..4257c3e 100755 --- a/backend/views/layouts/left.php +++ b/backend/views/layouts/left.php @@ -36,6 +36,7 @@ ['label' => 'Шаблоны резюме', 'icon' => 'address-card ', 'url' => ['/card/resume-template'], 'active' => \Yii::$app->controller->id == 'resume-template', 'visible' => Yii::$app->user->can('card')], ['label' => 'Шаблоны документов', 'icon' => 'file', 'url' => ['/document/document-template'], 'active' => \Yii::$app->controller->id == 'document-template', 'visible' => Yii::$app->user->can('document')], ['label' => 'Поля документов', 'icon' => 'file-text', 'url' => ['/document/document-field'], 'active' => \Yii::$app->controller->id == 'document-field', 'visible' => Yii::$app->user->can('document')], + ['label' => 'Уровень знаний', 'icon' => 'code', 'url' => ['/knowledgelevel/knowledge-level'], 'active' => \Yii::$app->controller->id == 'knowledge-level', 'visible' => Yii::$app->user->can('knowledgelevel/knowledge-level')], [ 'label' => 'Роли', 'icon' => 'users', 'url' => '#', 'items' => [ @@ -59,6 +60,7 @@ ], 'visible' => Yii::$app->user->can('employee') ], + ['label' => 'Запросы', 'icon' => 'eye', 'url' => ['/request/request'], 'active' => \Yii::$app->controller->id == 'request', 'visible' => Yii::$app->user->can('request/request')], ['label' => 'Документы', 'icon' => 'archive', 'url' => ['/document/document'], 'active' => \Yii::$app->controller->id == 'document', 'visible' => Yii::$app->user->can('document')], [ 'label' => 'Проекты', 'icon' => 'cubes', 'url' => ['#'], diff --git a/common/models/KnowledgeLevel.php b/common/models/KnowledgeLevel.php new file mode 100644 index 0000000..562ee40 --- /dev/null +++ b/common/models/KnowledgeLevel.php @@ -0,0 +1,63 @@ + 255], + ]; + } + + /** + * {@inheritdoc} + */ + public function attributeLabels() + { + return [ + 'id' => 'ID', + 'title' => 'Название', + 'status' => 'Статус', + ]; + } + + /** + * @return string[] + */ + public static function getStatus(): array + { + return [ + self::STATUS_ACTIVE => 'Активен', + self::STATUS_DISABLE => 'Выключен' + ]; + } + + +} diff --git a/common/models/Position.php b/common/models/Position.php index a3b4667..9244ba8 100755 --- a/common/models/Position.php +++ b/common/models/Position.php @@ -3,6 +3,7 @@ namespace common\models; use Yii; +use yii\helpers\ArrayHelper; /** * This is the model class for table "position". @@ -46,4 +47,9 @@ class Position extends \yii\db\ActiveRecord { return $this->hasMany(UserCard::class, ['position_id' => 'id']); } + + public static function getList() + { + return ArrayHelper::map(self::find()->all(), 'id', 'name'); + } } diff --git a/common/models/Request.php b/common/models/Request.php new file mode 100644 index 0000000..f314c67 --- /dev/null +++ b/common/models/Request.php @@ -0,0 +1,159 @@ + TimestampBehavior::class, + 'createdAtAttribute' => 'created_at', + 'updatedAtAttribute' => 'updated_at', + 'value' => new Expression('NOW()'), + ], + ]; + } + + /** + * {@inheritdoc} + */ + public function rules() + { + return [ + [['created_at', 'updated_at', 'skills'], 'safe'], + [['user_id', 'title', 'position_id', 'status'], 'required'], + [['user_id', 'position_id', 'knowledge_level_id', 'specialist_count', 'status'], 'integer'], + [['descr'], 'string'], + [['title'], 'string', 'max' => 255], + [['skill_ids'], 'safe'] + ]; + } + + public function fields() + { + $fields = parent::fields(); + + $additionalFields = [ + 'position', + 'skills', + 'result_count', + 'level' => function (Request $model) { + return UserCard::getLevelList()[$model->knowledge_level_id]; + }, + ]; + + return array_merge($fields, $additionalFields); + } + + /** + * {@inheritdoc} + */ + public function attributeLabels() + { + return [ + 'id' => 'ID', + 'created_at' => 'Дата создания', + 'updated_at' => 'Дата редактирования', + 'user_id' => 'Пользователь', + 'title' => 'Заголовок', + 'position_id' => 'Специализация', + 'skill_ids' => 'Навыки', + 'knowledge_level_id' => 'Уровень', + 'descr' => 'Описание', + 'specialist_count' => 'Кол-во специалистов', + 'status' => 'Статус', + ]; + } + + public function beforeSave($insert) + { + if (parent::beforeSave($insert)) { + if ($this->skill_ids && is_array($this->skill_ids)) { + $this->skill_ids = implode(",", $this->skill_ids); + } + return true; + } + return false; + } + + public function afterFind() + { + parent::afterFind(); + if ($this->skill_ids != "") { + $this->skill_ids = explode(",", $this->skill_ids); + } + else { + $this->skill_ids = []; + } + + $this->skills = Skill::find()->where(['id' => $this->skill_ids])->asArray()->all(); + } + + /** + * @return \yii\db\ActiveQuery + */ + public function getPosition(): \yii\db\ActiveQuery + { + return $this->hasOne(Position::class, ['id' => 'position_id']); + } + + /** + * @return \yii\db\ActiveQuery + */ + public function getUser(): \yii\db\ActiveQuery + { + return $this->hasOne(User::class, ['id' => 'user_id']); + } + + /** + * @return string[] + */ + public static function getStatus(): array + { + return [ + self::STATUS_ACTIVE => 'Активен', + self::STATUS_DISABLE => 'Выключен' + ]; + } + +} diff --git a/common/models/UserCard.php b/common/models/UserCard.php index 4250d56..97e790a 100755 --- a/common/models/UserCard.php +++ b/common/models/UserCard.php @@ -261,6 +261,17 @@ class UserCard extends \yii\db\ActiveRecord return ArrayHelper::map(self::find()->all(), 'id', 'fio'); } + + public static function getListUserWithUserId($statusId = null) + { + $list = self::find(); + if ($statusId){ + $list->where(['status' => $statusId]); + } + + return ArrayHelper::map($list->all(), 'id_user', 'fio'); + } + public function getManager() { return $this->hasOne(Manager::class, ['user_card_id' => 'id']); diff --git a/common/services/RequestService.php b/common/services/RequestService.php new file mode 100644 index 0000000..d97ceb0 --- /dev/null +++ b/common/services/RequestService.php @@ -0,0 +1,336 @@ +id = $id; + $this->model = Request::findOne($id); + } else { + $this->model = new Request(); + } + } + + /** + * @param array $params + * @return RequestService + */ + public function save(array $params = []): RequestService + { + //$this->model->load($params); + if ($this->model->validate()) { + $this->isSave = $this->model->save(); + $this->id = $this->model->id; + } else { + $this->errors = $this->model->errors; + } + + return $this; + } + + /** + * @param array $params + * @return RequestService + */ + public function load(array $params, $formName = "Request"): RequestService + { + if ($this->model->load($params, $formName)) { + $this->isLoad = true; + } + + return $this; + } + + /** + * @return Request|null + */ + public function getModel(): ?Request + { + return $this->model; + } + + /** + * @return bool + */ + public function isFind(): bool + { + if ($this->model->id) { + return true; + } + + return false; + } + + /** + * @param $id + * @return array|Request|null + */ + public function getById() + { + return $this->model->find()->where(['id' => $this->id])->one(); + } + + /** + * @param $user_id + * @return array|Request|\yii\db\ActiveRecord[] + */ + public function getByUserId($user_id) + { + return $this->model->find()->where(['user_id' => $user_id])->all(); + } + + /** + * @param $userId + * @return $this + */ + public function setUserId($userId): RequestService + { + $this->model->user_id = $userId; + + return $this; + } + + /** + * @return array|int + */ + public function _search() + { + $model = $this->getById($this->id); + $subQ = false; + if (!empty($model->skill_ids)) { + $subQ = CardSkill::find()->select('card_skill.card_id') + ->where(['skill_id' => $model->skill_ids]) + ->groupBy('card_id HAVING COUNT(DISTINCT skill_id) = :count') + ->addParams([':count' => count($model->skill_ids)]); + } + + + $q = UserCard::find()->select('user_card.id, fio, user_card.position_id, card_skill.skill_id') + ->leftJoin('card_skill', 'card_skill.card_id = user_card.id') + ->where(['deleted_at' => null]) + ->andWhere(['status' => [4, 12]]) + ->andWhere(['not', ['position_id' => null]]); + + if ($this->checkCardPosition) { + $q->andWhere(['position_id' => $model->position_id]); + } + + if ($this->checkCardLevel) { + $q->andWhere(['level' => $model->knowledge_level_id]); + } + + if ($this->skillsFullEntry && $subQ) { + $q->andWhere(['user_card.id' => $subQ]); + } + + if ($model->skill_ids) { + $q->andWhere(['card_skill.skill_id' => $model->skill_ids]); + } + + if ($this->useCardExcludePool) { + $q->andWhere(['not', ['user_card.id' => $this->excludePool]]); + } + + $q->groupBy('user_card.id'); + + if ($this->cardAsArray) { + $q->asArray(); + } + + if ($this->returnCount) { + return $q->count(); + } else { + $cards = $q->all(); + } + + if (is_array($cards)) { + $this->excludePool = array_merge($this->excludePool, ArrayHelper::getColumn($cards, 'id')); + } + + return $cards; + } + + /** + * @param int $searchDepth + * @return array|int + */ + public function search(int $searchDepth = 0) + { + $cards = $this->_search(); + $res = []; + + if ($searchDepth === 1) { + $res = $this->checkLevel(false)->useExcludePool()->_search(); + } + + if ($searchDepth === 2) { + $res = $this->checkLevel(false)->checkPosition(false)->useExcludePool()->_search(); + } + + if ($searchDepth === 3) { + $res = $this->checkLevel(false)->checkPosition(false)->setSkillsFullEntry(false)->useExcludePool()->_search(); + } + + if ($this->returnCount) { + if (is_array($res)) { + return $cards; + } + return $res; + } + + return array_merge($cards, $res); + } + + + /** + * @param bool $value + * @return $this + */ + public function setSkillsFullEntry(bool $value): RequestService + { + $this->skillsFullEntry = $value; + + return $this; + } + + /** + * @param bool $value + * @return $this + */ + public function asArray(bool $value = true): RequestService + { + $this->cardAsArray = $value; + + return $this; + } + + /** + * @param bool $value + * @return $this + */ + public function checkLevel(bool $value = true): RequestService + { + $this->checkCardLevel = $value; + + return $this; + } + + /** + * @param bool $value + * @return $this + */ + public function checkPosition(bool $value = true): RequestService + { + $this->checkCardPosition = $value; + + return $this; + } + + /** + * @param bool $value + * @return $this + */ + public function useExcludePool(bool $value = true): RequestService + { + $this->useCardExcludePool = $value; + + return $this; + } + + /** + * @param bool $value + * @return $this + */ + public function count(bool $value = true): RequestService + { + $this->returnCount = $value; + + return $this; + } + + public static function q() + { + + + } + + /** + * @param int|null $id + * @return RequestService + */ + public static function run(int $id = null): RequestService + { + return new self($id); + } + +} \ No newline at end of file diff --git a/composer.json b/composer.json index 6b29451..dc0f9ed 100755 --- a/composer.json +++ b/composer.json @@ -14,7 +14,7 @@ }, "minimum-stability": "stable", "require": { - "php": ">=7.1.0", + "php": ">=7.4.0", "yiisoft/yii2": "~2.0.6", "yiisoft/yii2-bootstrap": "~2.0.0", "yiisoft/yii2-swiftmailer": "~2.0.0 || ~2.1.0", @@ -36,7 +36,8 @@ "kartik-v/yii2-widget-fileinput": "@dev", "kartik-v/yii2-mpdf": "dev-master", "mihaildev/yii2-ckeditor": "*", - "developeruz/yii2-db-rbac": "*" + "developeruz/yii2-db-rbac": "*", + "zircote/swagger-php": "^4.7" }, "require-dev": { "yiisoft/yii2-debug": "~2.0.0", diff --git a/composer.lock b/composer.lock index 17d9b96..bbbea6e 100755 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "3071aa4891e948d05a279cca73e77798", + "content-hash": "7b050e44358a7b626599eb2c7a4bdc8d", "packages": [ { "name": "2amigos/yii2-file-upload-widget", @@ -360,7 +360,7 @@ "version": "v3.4.1", "source": { "type": "git", - "url": "git@github.com:twbs/bootstrap.git", + "url": "https://github.com/twbs/bootstrap.git", "reference": "68b0d231a13201eb14acd3dc84e51543d16e5f7e" }, "dist": { @@ -399,16 +399,16 @@ }, { "name": "bower-asset/jquery", - "version": "3.6.3", + "version": "3.6.4", "source": { "type": "git", - "url": "https://github.com/jquery/jquery-dist.git", - "reference": "da0f228131a578aea168b799fe4d7fe01764c98b" + "url": "git@github.com:jquery/jquery-dist.git", + "reference": "91ef2d8836342875f2519b5815197ea0f23613cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jquery/jquery-dist/zipball/da0f228131a578aea168b799fe4d7fe01764c98b", - "reference": "da0f228131a578aea168b799fe4d7fe01764c98b" + "url": "https://api.github.com/repos/jquery/jquery-dist/zipball/91ef2d8836342875f2519b5815197ea0f23613cf", + "reference": "91ef2d8836342875f2519b5815197ea0f23613cf" }, "type": "bower-asset", "license": [ @@ -693,6 +693,82 @@ }, "time": "2018-07-24T14:47:13+00:00" }, + { + "name": "doctrine/annotations", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/annotations.git", + "reference": "e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f", + "reference": "e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f", + "shasum": "" + }, + "require": { + "doctrine/lexer": "^2 || ^3", + "ext-tokenizer": "*", + "php": "^7.2 || ^8.0", + "psr/cache": "^1 || ^2 || ^3" + }, + "require-dev": { + "doctrine/cache": "^2.0", + "doctrine/coding-standard": "^10", + "phpstan/phpstan": "^1.8.0", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "symfony/cache": "^5.4 || ^6", + "vimeo/psalm": "^4.10" + }, + "suggest": { + "php": "PHP 8.0 or higher comes with attributes, a native replacement for annotations" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Docblock Annotations Parser", + "homepage": "https://www.doctrine-project.org/projects/annotations.html", + "keywords": [ + "annotations", + "docblock", + "parser" + ], + "support": { + "issues": "https://github.com/doctrine/annotations/issues", + "source": "https://github.com/doctrine/annotations/tree/2.0.1" + }, + "time": "2023-02-02T22:02:53+00:00" + }, { "name": "doctrine/deprecations", "version": "v1.0.0", @@ -1226,12 +1302,12 @@ "source": { "type": "git", "url": "https://github.com/kartik-v/yii2-grid.git", - "reference": "6e02d25feeb19d8bab82354ea25dcdb9189c37c3" + "reference": "c407f8e09732e5965278c63643f882c431daa298" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/kartik-v/yii2-grid/zipball/6e02d25feeb19d8bab82354ea25dcdb9189c37c3", - "reference": "6e02d25feeb19d8bab82354ea25dcdb9189c37c3", + "url": "https://api.github.com/repos/kartik-v/yii2-grid/zipball/c407f8e09732e5965278c63643f882c431daa298", + "reference": "c407f8e09732e5965278c63643f882c431daa298", "shasum": "" }, "require": { @@ -1284,7 +1360,7 @@ "type": "open_collective" } ], - "time": "2022-06-18T03:55:51+00:00" + "time": "2023-03-08T14:38:43+00:00" }, { "name": "kartik-v/yii2-krajee-base", @@ -1985,16 +2061,16 @@ }, { "name": "myclabs/deep-copy", - "version": "1.11.0", + "version": "1.11.1", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", - "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", "shasum": "" }, "require": { @@ -2032,7 +2108,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" }, "funding": [ { @@ -2040,7 +2116,7 @@ "type": "tidelift" } ], - "time": "2022-03-03T13:19:32+00:00" + "time": "2023-03-08T13:26:56+00:00" }, { "name": "npm-asset/fullcalendar", @@ -2077,10 +2153,10 @@ }, { "name": "npm-asset/jquery", - "version": "3.6.3", + "version": "3.6.4", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/jquery/-/jquery-3.6.3.tgz" + "url": "https://registry.npmjs.org/jquery/-/jquery-3.6.4.tgz" }, "type": "npm-asset", "license": [ @@ -2315,6 +2391,55 @@ }, "time": "2022-02-17T15:40:03+00:00" }, + { + "name": "psr/cache", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ], + "support": { + "source": "https://github.com/php-fig/cache/tree/3.0.0" + }, + "time": "2021-02-03T23:26:27+00:00" + }, { "name": "psr/http-message", "version": "1.0.1", @@ -2518,16 +2643,16 @@ }, { "name": "setasign/fpdi", - "version": "v2.3.6", + "version": "v2.3.7", "source": { "type": "git", "url": "https://github.com/Setasign/FPDI.git", - "reference": "6231e315f73e4f62d72b73f3d6d78ff0eed93c31" + "reference": "bccc892d5fa1f48c43f8ba7db5ed4ba6f30c8c05" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Setasign/FPDI/zipball/6231e315f73e4f62d72b73f3d6d78ff0eed93c31", - "reference": "6231e315f73e4f62d72b73f3d6d78ff0eed93c31", + "url": "https://api.github.com/repos/Setasign/FPDI/zipball/bccc892d5fa1f48c43f8ba7db5ed4ba6f30c8c05", + "reference": "bccc892d5fa1f48c43f8ba7db5ed4ba6f30c8c05", "shasum": "" }, "require": { @@ -2578,7 +2703,7 @@ ], "support": { "issues": "https://github.com/Setasign/FPDI/issues", - "source": "https://github.com/Setasign/FPDI/tree/v2.3.6" + "source": "https://github.com/Setasign/FPDI/tree/v2.3.7" }, "funding": [ { @@ -2586,7 +2711,7 @@ "type": "tidelift" } ], - "time": "2021-02-11T11:37:01+00:00" + "time": "2023-02-09T10:38:43+00:00" }, { "name": "studio-42/elfinder", @@ -2732,6 +2857,219 @@ "abandoned": "symfony/mailer", "time": "2021-10-18T15:26:12+00:00" }, + { + "name": "symfony/deprecation-contracts", + "version": "v3.2.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e", + "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.3-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.2.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-03-01T10:25:55+00:00" + }, + { + "name": "symfony/finder", + "version": "v6.2.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "20808dc6631aecafbe67c186af5dcb370be3a0eb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/20808dc6631aecafbe67c186af5dcb370be3a0eb", + "reference": "20808dc6631aecafbe67c186af5dcb370be3a0eb", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "symfony/filesystem": "^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Finds files and directories via an intuitive fluent interface", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/finder/tree/v6.2.7" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-02-16T09:57:23+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.27.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", + "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.27-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-03T14:55:06+00:00" + }, { "name": "symfony/polyfill-iconv", "version": "v1.27.0", @@ -3146,17 +3484,91 @@ "time": "2022-11-03T14:55:06+00:00" }, { - "name": "telegram-bot/api", - "version": "v2.3.24", + "name": "symfony/yaml", + "version": "v6.2.7", "source": { "type": "git", - "url": "https://github.com/TelegramBot/Api.git", - "reference": "579f64d0ffe7f21d1f61cb8734e297686b286bf7" + "url": "https://github.com/symfony/yaml.git", + "reference": "e8e6a1d59e050525f27a1f530aa9703423cb7f57" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TelegramBot/Api/zipball/579f64d0ffe7f21d1f61cb8734e297686b286bf7", - "reference": "579f64d0ffe7f21d1f61cb8734e297686b286bf7", + "url": "https://api.github.com/repos/symfony/yaml/zipball/e8e6a1d59e050525f27a1f530aa9703423cb7f57", + "reference": "e8e6a1d59e050525f27a1f530aa9703423cb7f57", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/console": "<5.4" + }, + "require-dev": { + "symfony/console": "^5.4|^6.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" + }, + "bin": [ + "Resources/bin/yaml-lint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Loads and dumps YAML files", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/yaml/tree/v6.2.7" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-02-16T09:57:23+00:00" + }, + { + "name": "telegram-bot/api", + "version": "v2.3.25", + "source": { + "type": "git", + "url": "https://github.com/TelegramBot/Api.git", + "reference": "7a534219842ad59835eb89909ca58f8b8e3223a0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/TelegramBot/Api/zipball/7a534219842ad59835eb89909ca58f8b8e3223a0", + "reference": "7a534219842ad59835eb89909ca58f8b8e3223a0", "shasum": "" }, "require": { @@ -3201,9 +3613,9 @@ ], "support": { "issues": "https://github.com/TelegramBot/Api/issues", - "source": "https://github.com/TelegramBot/Api/tree/v2.3.24" + "source": "https://github.com/TelegramBot/Api/tree/v2.3.25" }, - "time": "2021-12-06T13:05:34+00:00" + "time": "2023-03-06T10:06:04+00:00" }, { "name": "unclead/yii2-multiple-input", @@ -3687,6 +4099,84 @@ } ], "time": "2021-12-30T08:48:48+00:00" + }, + { + "name": "zircote/swagger-php", + "version": "4.7.8", + "source": { + "type": "git", + "url": "https://github.com/zircote/swagger-php.git", + "reference": "4a1d1272c2dd3afd8d96e92f02dc3565d5cc3c18" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zircote/swagger-php/zipball/4a1d1272c2dd3afd8d96e92f02dc3565d5cc3c18", + "reference": "4a1d1272c2dd3afd8d96e92f02dc3565d5cc3c18", + "shasum": "" + }, + "require": { + "doctrine/annotations": "^1.7 || ^2.0", + "ext-json": "*", + "php": ">=7.2", + "psr/log": "^1.1 || ^2.0 || ^3.0", + "symfony/deprecation-contracts": "^2 || ^3", + "symfony/finder": ">=2.2", + "symfony/yaml": ">=3.3" + }, + "require-dev": { + "composer/package-versions-deprecated": "^1.11", + "friendsofphp/php-cs-fixer": "^2.17 || ^3.0", + "phpstan/phpstan": "^1.6", + "phpunit/phpunit": ">=8", + "vimeo/psalm": "^4.23" + }, + "bin": [ + "bin/openapi" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.x-dev" + } + }, + "autoload": { + "psr-4": { + "OpenApi\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Robert Allen", + "email": "zircote@gmail.com" + }, + { + "name": "Bob Fanger", + "email": "bfanger@gmail.com", + "homepage": "https://bfanger.nl" + }, + { + "name": "Martin Rademacher", + "email": "mano@radebatz.net", + "homepage": "https://radebatz.net" + } + ], + "description": "swagger-php - Generate interactive documentation for your RESTful API using phpdoc annotations", + "homepage": "https://github.com/zircote/swagger-php/", + "keywords": [ + "api", + "json", + "rest", + "service discovery" + ], + "support": { + "issues": "https://github.com/zircote/swagger-php/issues", + "source": "https://github.com/zircote/swagger-php/tree/4.7.8" + }, + "time": "2023-03-19T21:25:02+00:00" } ], "packages-dev": [ @@ -3773,33 +4263,33 @@ }, { "name": "codeception/codeception", - "version": "5.0.7", + "version": "5.0.10", "source": { "type": "git", "url": "https://github.com/Codeception/Codeception.git", - "reference": "9c0bc32bd05cfa3b43dc04c6880489398b99436a" + "reference": "ed4af7fd4103cdd035916fbb8f35124edd2d018b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/Codeception/zipball/9c0bc32bd05cfa3b43dc04c6880489398b99436a", - "reference": "9c0bc32bd05cfa3b43dc04c6880489398b99436a", + "url": "https://api.github.com/repos/Codeception/Codeception/zipball/ed4af7fd4103cdd035916fbb8f35124edd2d018b", + "reference": "ed4af7fd4103cdd035916fbb8f35124edd2d018b", "shasum": "" }, "require": { "behat/gherkin": "^4.6.2", - "codeception/lib-asserts": "2.0.*@dev", + "codeception/lib-asserts": "^2.0", "codeception/stub": "^4.1", "ext-curl": "*", "ext-json": "*", "ext-mbstring": "*", "php": "^8.0", - "phpunit/php-code-coverage": "^9.2", - "phpunit/php-text-template": "^2.0", - "phpunit/php-timer": "^5.0.3", - "phpunit/phpunit": "^9.5.20", + "phpunit/php-code-coverage": "^9.2 || ^10.0", + "phpunit/php-text-template": "^2.0 || ^3.0", + "phpunit/php-timer": "^5.0.3 || ^6.0", + "phpunit/phpunit": "^9.5.20 || ^10.0", "psy/psysh": "^0.11.2", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", + "sebastian/comparator": "^4.0.5 || ^5.0", + "sebastian/diff": "^4.0.3 || ^5.0", "symfony/console": ">=4.4.24 <7.0", "symfony/css-selector": ">=4.4.24 <7.0", "symfony/event-dispatcher": ">=4.4.24 <7.0", @@ -3808,7 +4298,7 @@ "symfony/yaml": ">=4.4.24 <7.0" }, "conflict": { - "codeception/lib-innerbrowser": "<3.1", + "codeception/lib-innerbrowser": "<3.1.3", "codeception/module-filesystem": "<3.0", "codeception/module-phpbrowser": "<2.5" }, @@ -3877,7 +4367,7 @@ ], "support": { "issues": "https://github.com/Codeception/Codeception/issues", - "source": "https://github.com/Codeception/Codeception/tree/5.0.7" + "source": "https://github.com/Codeception/Codeception/tree/5.0.10" }, "funding": [ { @@ -3885,20 +4375,20 @@ "type": "open_collective" } ], - "time": "2023-01-14T20:02:13+00:00" + "time": "2023-03-14T07:21:10+00:00" }, { "name": "codeception/lib-asserts", - "version": "2.0.1", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/Codeception/lib-asserts.git", - "reference": "78c55044611437988b54e1daecf13f247a742bf8" + "reference": "b8c7dff552249e560879c682ba44a4b963af91bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/lib-asserts/zipball/78c55044611437988b54e1daecf13f247a742bf8", - "reference": "78c55044611437988b54e1daecf13f247a742bf8", + "url": "https://api.github.com/repos/Codeception/lib-asserts/zipball/b8c7dff552249e560879c682ba44a4b963af91bc", + "reference": "b8c7dff552249e560879c682ba44a4b963af91bc", "shasum": "" }, "require": { @@ -3937,37 +4427,37 @@ ], "support": { "issues": "https://github.com/Codeception/lib-asserts/issues", - "source": "https://github.com/Codeception/lib-asserts/tree/2.0.1" + "source": "https://github.com/Codeception/lib-asserts/tree/2.1.0" }, - "time": "2022-09-27T06:17:39+00:00" + "time": "2023-02-10T18:36:23+00:00" }, { "name": "codeception/lib-innerbrowser", - "version": "3.1.3", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/Codeception/lib-innerbrowser.git", - "reference": "10482f7e34c0537bf5b87bc82a3d65a1842a8b4f" + "reference": "32e9a19a39bbb5165cdb845dc3618b412a17e6da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/lib-innerbrowser/zipball/10482f7e34c0537bf5b87bc82a3d65a1842a8b4f", - "reference": "10482f7e34c0537bf5b87bc82a3d65a1842a8b4f", + "url": "https://api.github.com/repos/Codeception/lib-innerbrowser/zipball/32e9a19a39bbb5165cdb845dc3618b412a17e6da", + "reference": "32e9a19a39bbb5165cdb845dc3618b412a17e6da", "shasum": "" }, "require": { - "codeception/codeception": "^5.0", + "codeception/codeception": "^5.0.8", "codeception/lib-web": "^1.0.1", "ext-dom": "*", "ext-json": "*", "ext-mbstring": "*", - "php": "^8.0", - "phpunit/phpunit": "^9.5", + "php": "^8.1", + "phpunit/phpunit": "^10.0", "symfony/browser-kit": "^4.4.24 || ^5.4 || ^6.0", "symfony/dom-crawler": "^4.4.30 || ^5.4 || ^6.0" }, "require-dev": { - "codeception/util-universalframework": "dev-master" + "codeception/util-universalframework": "^1.0" }, "type": "library", "autoload": { @@ -3996,9 +4486,9 @@ ], "support": { "issues": "https://github.com/Codeception/lib-innerbrowser/issues", - "source": "https://github.com/Codeception/lib-innerbrowser/tree/3.1.3" + "source": "https://github.com/Codeception/lib-innerbrowser/tree/4.0.0" }, - "time": "2022-10-03T15:33:34+00:00" + "time": "2023-02-03T19:31:45+00:00" }, { "name": "codeception/lib-web", @@ -4055,27 +4545,27 @@ }, { "name": "codeception/module-yii2", - "version": "1.1.7", + "version": "1.1.8", "source": { "type": "git", "url": "https://github.com/Codeception/module-yii2.git", - "reference": "338ab4dfa04b3f7312856915f2daebad73985911" + "reference": "75f2fdf7f1912c1b95885d56a5098ed10f586411" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/module-yii2/zipball/338ab4dfa04b3f7312856915f2daebad73985911", - "reference": "338ab4dfa04b3f7312856915f2daebad73985911", + "url": "https://api.github.com/repos/Codeception/module-yii2/zipball/75f2fdf7f1912c1b95885d56a5098ed10f586411", + "reference": "75f2fdf7f1912c1b95885d56a5098ed10f586411", "shasum": "" }, "require": { - "codeception/codeception": "^5.0.0-RC6", - "codeception/lib-innerbrowser": "^3.0", + "codeception/codeception": "^5.0.8", + "codeception/lib-innerbrowser": "^3.0 | ^4.0", "php": "^8.0" }, "require-dev": { "codeception/module-asserts": "^3.0", "codeception/module-filesystem": "^3.0", - "codeception/verify": "^2.2", + "codeception/verify": "^3.0", "codemix/yii2-localeurls": "^1.7", "yiisoft/yii2": "dev-master", "yiisoft/yii2-app-advanced": "dev-master" @@ -4102,16 +4592,16 @@ } ], "description": "Codeception module for Yii2 framework", - "homepage": "http://codeception.com/", + "homepage": "https://codeception.com/", "keywords": [ "codeception", "yii2" ], "support": { "issues": "https://github.com/Codeception/module-yii2/issues", - "source": "https://github.com/Codeception/module-yii2/tree/1.1.7" + "source": "https://github.com/Codeception/module-yii2/tree/1.1.8" }, - "time": "2022-07-15T18:09:58+00:00" + "time": "2023-02-10T18:47:53+00:00" }, { "name": "codeception/stub", @@ -4194,76 +4684,6 @@ }, "time": "2017-01-09T10:58:51+00:00" }, - { - "name": "doctrine/instantiator", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", - "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", - "shasum": "" - }, - "require": { - "php": "^8.1" - }, - "require-dev": { - "doctrine/coding-standard": "^11", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^1.2", - "phpstan/phpstan": "^1.9.4", - "phpstan/phpstan-phpunit": "^1.3", - "phpunit/phpunit": "^9.5.27", - "vimeo/psalm": "^5.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/2.0.0" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2022-12-30T00:23:10+00:00" - }, { "name": "fakerphp/faker", "version": "v1.21.0", @@ -4334,16 +4754,16 @@ }, { "name": "guzzlehttp/psr7", - "version": "2.4.3", + "version": "2.4.4", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "67c26b443f348a51926030c83481b85718457d3d" + "reference": "3cf1b6d4f0c820a2cf8bcaec39fc698f3443b5cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/67c26b443f348a51926030c83481b85718457d3d", - "reference": "67c26b443f348a51926030c83481b85718457d3d", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/3cf1b6d4f0c820a2cf8bcaec39fc698f3443b5cf", + "reference": "3cf1b6d4f0c820a2cf8bcaec39fc698f3443b5cf", "shasum": "" }, "require": { @@ -4433,7 +4853,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.4.3" + "source": "https://github.com/guzzle/psr7/tree/2.4.4" }, "funding": [ { @@ -4449,7 +4869,7 @@ "type": "tidelift" } ], - "time": "2022-10-26T14:07:24+00:00" + "time": "2023-03-09T13:19:02+00:00" }, { "name": "masterminds/html5", @@ -4522,16 +4942,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.15.3", + "version": "v4.15.4", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "570e980a201d8ed0236b0a62ddf2c9cbb2034039" + "reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/570e980a201d8ed0236b0a62ddf2c9cbb2034039", - "reference": "570e980a201d8ed0236b0a62ddf2c9cbb2034039", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/6bb5176bc4af8bcb7d926f88718db9b96a2d4290", + "reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290", "shasum": "" }, "require": { @@ -4572,9 +4992,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.3" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.4" }, - "time": "2023-01-16T22:05:37+00:00" + "time": "2023-03-05T19:49:14+00:00" }, { "name": "phar-io/manifest", @@ -4730,44 +5150,44 @@ }, { "name": "phpunit/php-code-coverage", - "version": "9.2.23", + "version": "10.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "9f1f0f9a2fbb680b26d1cf9b61b6eac43a6e4e9c" + "reference": "20800e84296ea4732f9a125e08ce86b4004ae3e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/9f1f0f9a2fbb680b26d1cf9b61b6eac43a6e4e9c", - "reference": "9f1f0f9a2fbb680b26d1cf9b61b6eac43a6e4e9c", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/20800e84296ea4732f9a125e08ce86b4004ae3e4", + "reference": "20800e84296ea4732f9a125e08ce86b4004ae3e4", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.14", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", + "nikic/php-parser": "^4.15", + "php": ">=8.1", + "phpunit/php-file-iterator": "^4.0", + "phpunit/php-text-template": "^3.0", + "sebastian/code-unit-reverse-lookup": "^3.0", + "sebastian/complexity": "^3.0", + "sebastian/environment": "^6.0", + "sebastian/lines-of-code": "^2.0", + "sebastian/version": "^4.0", "theseer/tokenizer": "^1.2.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "9.2-dev" + "dev-main": "10.0-dev" } }, "autoload": { @@ -4795,7 +5215,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.23" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.0.2" }, "funding": [ { @@ -4803,32 +5223,32 @@ "type": "github" } ], - "time": "2022-12-28T12:41:10+00:00" + "time": "2023-03-06T13:00:19+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "3.0.6", + "version": "4.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" + "reference": "fd9329ab3368f59fe1fe808a189c51086bd4b6bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/fd9329ab3368f59fe1fe808a189c51086bd4b6bd", + "reference": "fd9329ab3368f59fe1fe808a189c51086bd4b6bd", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -4855,7 +5275,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.0.1" }, "funding": [ { @@ -4863,28 +5283,28 @@ "type": "github" } ], - "time": "2021-12-02T12:48:52+00:00" + "time": "2023-02-10T16:53:14+00:00" }, { "name": "phpunit/php-invoker", - "version": "3.1.1", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "suggest": { "ext-pcntl": "*" @@ -4892,7 +5312,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -4918,7 +5338,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0" }, "funding": [ { @@ -4926,32 +5346,32 @@ "type": "github" } ], - "time": "2020-09-28T05:58:55+00:00" + "time": "2023-02-03T06:56:09+00:00" }, { "name": "phpunit/php-text-template", - "version": "2.0.4", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + "reference": "9f3d3709577a527025f55bcf0f7ab8052c8bb37d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/9f3d3709577a527025f55bcf0f7ab8052c8bb37d", + "reference": "9f3d3709577a527025f55bcf0f7ab8052c8bb37d", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -4977,7 +5397,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.0" }, "funding": [ { @@ -4985,32 +5405,32 @@ "type": "github" } ], - "time": "2020-10-26T05:33:50+00:00" + "time": "2023-02-03T06:56:46+00:00" }, { "name": "phpunit/php-timer", - "version": "5.0.3", + "version": "6.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/e2a2d67966e740530f4a3343fe2e030ffdc1161d", + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -5036,7 +5456,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" + "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0" }, "funding": [ { @@ -5044,24 +5464,23 @@ "type": "github" } ], - "time": "2020-10-26T13:16:10+00:00" + "time": "2023-02-03T06:57:52+00:00" }, { "name": "phpunit/phpunit", - "version": "9.5.28", + "version": "10.0.19", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "954ca3113a03bf780d22f07bf055d883ee04b65e" + "reference": "20c23e85c86e5c06d63538ba464e8054f4744e62" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/954ca3113a03bf780d22f07bf055d883ee04b65e", - "reference": "954ca3113a03bf780d22f07bf055d883ee04b65e", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/20c23e85c86e5c06d63538ba464e8054f4744e62", + "reference": "20c23e85c86e5c06d63538ba464e8054f4744e62", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.3.1 || ^2", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", @@ -5071,27 +5490,26 @@ "myclabs/deep-copy": "^1.10.1", "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", - "php": ">=7.3", - "phpunit/php-code-coverage": "^9.2.13", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.8", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.5", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^3.2", - "sebastian/version": "^3.0.2" + "php": ">=8.1", + "phpunit/php-code-coverage": "^10.0", + "phpunit/php-file-iterator": "^4.0", + "phpunit/php-invoker": "^4.0", + "phpunit/php-text-template": "^3.0", + "phpunit/php-timer": "^6.0", + "sebastian/cli-parser": "^2.0", + "sebastian/code-unit": "^2.0", + "sebastian/comparator": "^5.0", + "sebastian/diff": "^5.0", + "sebastian/environment": "^6.0", + "sebastian/exporter": "^5.0", + "sebastian/global-state": "^6.0", + "sebastian/object-enumerator": "^5.0", + "sebastian/recursion-context": "^5.0", + "sebastian/type": "^4.0", + "sebastian/version": "^4.0" }, "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" + "ext-soap": "To be able to generate mocks based on WSDL files" }, "bin": [ "phpunit" @@ -5099,7 +5517,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.5-dev" + "dev-main": "10.0-dev" } }, "autoload": { @@ -5130,7 +5548,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.28" + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.0.19" }, "funding": [ { @@ -5146,7 +5565,7 @@ "type": "tidelift" } ], - "time": "2023-01-14T12:32:24+00:00" + "time": "2023-03-27T11:46:33+00:00" }, { "name": "psr/container", @@ -5308,16 +5727,16 @@ }, { "name": "psy/psysh", - "version": "v0.11.10", + "version": "v0.11.14", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "e9eadffbed9c9deb5426fd107faae0452bf20a36" + "reference": "8c2e264def7a8263a68ef6f0b55ce90b77d41e17" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/e9eadffbed9c9deb5426fd107faae0452bf20a36", - "reference": "e9eadffbed9c9deb5426fd107faae0452bf20a36", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/8c2e264def7a8263a68ef6f0b55ce90b77d41e17", + "reference": "8c2e264def7a8263a68ef6f0b55ce90b77d41e17", "shasum": "" }, "require": { @@ -5378,9 +5797,9 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.11.10" + "source": "https://github.com/bobthecow/psysh/tree/v0.11.14" }, - "time": "2022-12-23T17:47:18+00:00" + "time": "2023-03-28T03:41:01+00:00" }, { "name": "ralouphie/getallheaders", @@ -5428,28 +5847,28 @@ }, { "name": "sebastian/cli-parser", - "version": "1.0.1", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" + "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/efdc130dbbbb8ef0b545a994fd811725c5282cae", + "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-main": "2.0-dev" } }, "autoload": { @@ -5472,7 +5891,7 @@ "homepage": "https://github.com/sebastianbergmann/cli-parser", "support": { "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" + "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.0" }, "funding": [ { @@ -5480,32 +5899,32 @@ "type": "github" } ], - "time": "2020-09-28T06:08:49+00:00" + "time": "2023-02-03T06:58:15+00:00" }, { "name": "sebastian/code-unit", - "version": "1.0.8", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/a81fee9eef0b7a76af11d121767abc44c104e503", + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-main": "2.0-dev" } }, "autoload": { @@ -5528,7 +5947,7 @@ "homepage": "https://github.com/sebastianbergmann/code-unit", "support": { "issues": "https://github.com/sebastianbergmann/code-unit/issues", - "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" + "source": "https://github.com/sebastianbergmann/code-unit/tree/2.0.0" }, "funding": [ { @@ -5536,32 +5955,32 @@ "type": "github" } ], - "time": "2020-10-26T13:08:54+00:00" + "time": "2023-02-03T06:58:43+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -5583,7 +6002,7 @@ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", "support": { "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/3.0.0" }, "funding": [ { @@ -5591,34 +6010,36 @@ "type": "github" } ], - "time": "2020-09-28T05:30:19+00:00" + "time": "2023-02-03T06:59:15+00:00" }, { "name": "sebastian/comparator", - "version": "4.0.8", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a" + "reference": "72f01e6586e0caf6af81297897bd112eb7e9627c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/72f01e6586e0caf6af81297897bd112eb7e9627c", + "reference": "72f01e6586e0caf6af81297897bd112eb7e9627c", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" + "ext-dom": "*", + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/diff": "^5.0", + "sebastian/exporter": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -5657,7 +6078,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" + "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.0" }, "funding": [ { @@ -5665,33 +6086,33 @@ "type": "github" } ], - "time": "2022-09-14T12:41:17+00:00" + "time": "2023-02-03T07:07:16+00:00" }, { "name": "sebastian/complexity", - "version": "2.0.2", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" + "reference": "e67d240970c9dc7ea7b2123a6d520e334dd61dc6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/e67d240970c9dc7ea7b2123a6d520e334dd61dc6", + "reference": "e67d240970c9dc7ea7b2123a6d520e334dd61dc6", "shasum": "" }, "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" + "nikic/php-parser": "^4.10", + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -5714,7 +6135,7 @@ "homepage": "https://github.com/sebastianbergmann/complexity", "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + "source": "https://github.com/sebastianbergmann/complexity/tree/3.0.0" }, "funding": [ { @@ -5722,33 +6143,33 @@ "type": "github" } ], - "time": "2020-10-26T15:52:27+00:00" + "time": "2023-02-03T06:59:47+00:00" }, { "name": "sebastian/diff", - "version": "4.0.4", + "version": "5.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + "reference": "aae9a0a43bff37bd5d8d0311426c87bf36153f02" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/aae9a0a43bff37bd5d8d0311426c87bf36153f02", + "reference": "aae9a0a43bff37bd5d8d0311426c87bf36153f02", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3", + "phpunit/phpunit": "^10.0", "symfony/process": "^4.2 || ^5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -5780,7 +6201,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + "security": "https://github.com/sebastianbergmann/diff/security/policy", + "source": "https://github.com/sebastianbergmann/diff/tree/5.0.1" }, "funding": [ { @@ -5788,27 +6210,27 @@ "type": "github" } ], - "time": "2020-10-26T13:10:38+00:00" + "time": "2023-03-23T05:12:41+00:00" }, { "name": "sebastian/environment", - "version": "5.1.4", + "version": "6.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7" + "reference": "b6f3694c6386c7959915a0037652e0c40f6f69cc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1b5dff7bb151a4db11d49d90e5408e4e938270f7", - "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/b6f3694c6386c7959915a0037652e0c40f6f69cc", + "reference": "b6f3694c6386c7959915a0037652e0c40f6f69cc", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "suggest": { "ext-posix": "*" @@ -5816,7 +6238,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.1-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -5835,7 +6257,7 @@ } ], "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", + "homepage": "https://github.com/sebastianbergmann/environment", "keywords": [ "Xdebug", "environment", @@ -5843,7 +6265,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.4" + "source": "https://github.com/sebastianbergmann/environment/tree/6.0.0" }, "funding": [ { @@ -5851,34 +6273,34 @@ "type": "github" } ], - "time": "2022-04-03T09:37:03+00:00" + "time": "2023-02-03T07:03:04+00:00" }, { "name": "sebastian/exporter", - "version": "4.0.5", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d" + "reference": "f3ec4bf931c0b31e5b413f5b4fc970a7d03338c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", - "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/f3ec4bf931c0b31e5b413f5b4fc970a7d03338c0", + "reference": "f3ec4bf931c0b31e5b413f5b4fc970a7d03338c0", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/recursion-context": "^5.0" }, "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -5920,7 +6342,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5" + "source": "https://github.com/sebastianbergmann/exporter/tree/5.0.0" }, "funding": [ { @@ -5928,38 +6350,35 @@ "type": "github" } ], - "time": "2022-09-14T06:03:37+00:00" + "time": "2023-02-03T07:06:49+00:00" }, { "name": "sebastian/global-state", - "version": "5.0.5", + "version": "6.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" + "reference": "aab257c712de87b90194febd52e4d184551c2d44" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", - "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/aab257c712de87b90194febd52e4d184551c2d44", + "reference": "aab257c712de87b90194febd52e4d184551c2d44", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" + "php": ">=8.1", + "sebastian/object-reflector": "^3.0", + "sebastian/recursion-context": "^5.0" }, "require-dev": { "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -5984,7 +6403,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" + "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.0" }, "funding": [ { @@ -5992,33 +6411,33 @@ "type": "github" } ], - "time": "2022-02-14T08:28:10+00:00" + "time": "2023-02-03T07:07:38+00:00" }, { "name": "sebastian/lines-of-code", - "version": "1.0.3", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" + "reference": "17c4d940ecafb3d15d2cf916f4108f664e28b130" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/17c4d940ecafb3d15d2cf916f4108f664e28b130", + "reference": "17c4d940ecafb3d15d2cf916f4108f664e28b130", "shasum": "" }, "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" + "nikic/php-parser": "^4.10", + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-main": "2.0-dev" } }, "autoload": { @@ -6041,7 +6460,7 @@ "homepage": "https://github.com/sebastianbergmann/lines-of-code", "support": { "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.0" }, "funding": [ { @@ -6049,34 +6468,34 @@ "type": "github" } ], - "time": "2020-11-28T06:42:11+00:00" + "time": "2023-02-03T07:08:02+00:00" }, { "name": "sebastian/object-enumerator", - "version": "4.0.4", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/202d0e344a580d7f7d04b3fafce6933e59dae906", + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" + "php": ">=8.1", + "sebastian/object-reflector": "^3.0", + "sebastian/recursion-context": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -6098,7 +6517,7 @@ "homepage": "https://github.com/sebastianbergmann/object-enumerator/", "support": { "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/5.0.0" }, "funding": [ { @@ -6106,32 +6525,32 @@ "type": "github" } ], - "time": "2020-10-26T13:12:34+00:00" + "time": "2023-02-03T07:08:32+00:00" }, { "name": "sebastian/object-reflector", - "version": "2.0.4", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/24ed13d98130f0e7122df55d06c5c4942a577957", + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -6153,7 +6572,7 @@ "homepage": "https://github.com/sebastianbergmann/object-reflector/", "support": { "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" + "source": "https://github.com/sebastianbergmann/object-reflector/tree/3.0.0" }, "funding": [ { @@ -6161,32 +6580,32 @@ "type": "github" } ], - "time": "2020-10-26T13:14:26+00:00" + "time": "2023-02-03T07:06:18+00:00" }, { "name": "sebastian/recursion-context", - "version": "4.0.4", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" + "reference": "05909fb5bc7df4c52992396d0116aed689f93712" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/05909fb5bc7df4c52992396d0116aed689f93712", + "reference": "05909fb5bc7df4c52992396d0116aed689f93712", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -6213,10 +6632,10 @@ } ], "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "homepage": "https://github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.0" }, "funding": [ { @@ -6224,87 +6643,32 @@ "type": "github" } ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" + "time": "2023-02-03T07:05:40+00:00" }, { "name": "sebastian/type", - "version": "3.2.0", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e" + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e", - "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf", + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.5" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.2-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -6327,7 +6691,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/3.2.0" + "source": "https://github.com/sebastianbergmann/type/tree/4.0.0" }, "funding": [ { @@ -6335,29 +6699,29 @@ "type": "github" } ], - "time": "2022-09-12T14:47:03+00:00" + "time": "2023-02-03T07:10:45+00:00" }, { "name": "sebastian/version", - "version": "3.0.2", + "version": "4.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17", + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -6380,7 +6744,7 @@ "homepage": "https://github.com/sebastianbergmann/version", "support": { "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" + "source": "https://github.com/sebastianbergmann/version/tree/4.0.1" }, "funding": [ { @@ -6388,20 +6752,20 @@ "type": "github" } ], - "time": "2020-09-28T06:39:44+00:00" + "time": "2023-02-07T11:34:05+00:00" }, { "name": "symfony/browser-kit", - "version": "v6.2.0", + "version": "v6.2.7", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "5602fcc9a2a696f1743050ffcafa30741da94227" + "reference": "87bd43240e6cc855f70ea1c7a448ab3bd442633c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/5602fcc9a2a696f1743050ffcafa30741da94227", - "reference": "5602fcc9a2a696f1743050ffcafa30741da94227", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/87bd43240e6cc855f70ea1c7a448ab3bd442633c", + "reference": "87bd43240e6cc855f70ea1c7a448ab3bd442633c", "shasum": "" }, "require": { @@ -6443,7 +6807,7 @@ "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/browser-kit/tree/v6.2.0" + "source": "https://github.com/symfony/browser-kit/tree/v6.2.7" }, "funding": [ { @@ -6459,20 +6823,20 @@ "type": "tidelift" } ], - "time": "2022-11-02T09:08:04+00:00" + "time": "2023-02-14T08:44:56+00:00" }, { "name": "symfony/console", - "version": "v6.2.3", + "version": "v6.2.7", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "0f579613e771dba2dbb8211c382342a641f5da06" + "reference": "cbad09eb8925b6ad4fb721c7a179344dc4a19d45" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/0f579613e771dba2dbb8211c382342a641f5da06", - "reference": "0f579613e771dba2dbb8211c382342a641f5da06", + "url": "https://api.github.com/repos/symfony/console/zipball/cbad09eb8925b6ad4fb721c7a179344dc4a19d45", + "reference": "cbad09eb8925b6ad4fb721c7a179344dc4a19d45", "shasum": "" }, "require": { @@ -6539,7 +6903,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.2.3" + "source": "https://github.com/symfony/console/tree/v6.2.7" }, "funding": [ { @@ -6555,20 +6919,20 @@ "type": "tidelift" } ], - "time": "2022-12-28T14:26:22+00:00" + "time": "2023-02-25T17:00:03+00:00" }, { "name": "symfony/css-selector", - "version": "v6.2.3", + "version": "v6.2.7", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "ab1df4ba3ded7b724766ba3a6e0eca0418e74f80" + "reference": "aedf3cb0f5b929ec255d96bbb4909e9932c769e0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/ab1df4ba3ded7b724766ba3a6e0eca0418e74f80", - "reference": "ab1df4ba3ded7b724766ba3a6e0eca0418e74f80", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/aedf3cb0f5b929ec255d96bbb4909e9932c769e0", + "reference": "aedf3cb0f5b929ec255d96bbb4909e9932c769e0", "shasum": "" }, "require": { @@ -6604,7 +6968,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v6.2.3" + "source": "https://github.com/symfony/css-selector/tree/v6.2.7" }, "funding": [ { @@ -6620,87 +6984,20 @@ "type": "tidelift" } ], - "time": "2022-12-28T14:26:22+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.2.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "1ee04c65529dea5d8744774d474e7cbd2f1206d3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/1ee04c65529dea5d8744774d474e7cbd2f1206d3", - "reference": "1ee04c65529dea5d8744774d474e7cbd2f1206d3", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.3-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "files": [ - "function.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "A generic function and convention to trigger deprecation notices", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.2.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-11-25T10:21:52+00:00" + "time": "2023-02-14T08:44:56+00:00" }, { "name": "symfony/dom-crawler", - "version": "v6.2.3", + "version": "v6.2.7", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "f2743e033dd05a62978ced0ad368022e82c9fab2" + "reference": "65a906f5141ff2d3aef1b01c128fba78f5e9f921" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/f2743e033dd05a62978ced0ad368022e82c9fab2", - "reference": "f2743e033dd05a62978ced0ad368022e82c9fab2", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/65a906f5141ff2d3aef1b01c128fba78f5e9f921", + "reference": "65a906f5141ff2d3aef1b01c128fba78f5e9f921", "shasum": "" }, "require": { @@ -6741,7 +7038,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v6.2.3" + "source": "https://github.com/symfony/dom-crawler/tree/v6.2.7" }, "funding": [ { @@ -6757,20 +7054,20 @@ "type": "tidelift" } ], - "time": "2022-12-22T17:55:15+00:00" + "time": "2023-02-14T08:44:56+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v6.2.2", + "version": "v6.2.7", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "3ffeb31139b49bf6ef0bc09d1db95eac053388d1" + "reference": "404b307de426c1c488e5afad64403e5f145e82a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/3ffeb31139b49bf6ef0bc09d1db95eac053388d1", - "reference": "3ffeb31139b49bf6ef0bc09d1db95eac053388d1", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/404b307de426c1c488e5afad64403e5f145e82a5", + "reference": "404b307de426c1c488e5afad64403e5f145e82a5", "shasum": "" }, "require": { @@ -6824,7 +7121,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.2.2" + "source": "https://github.com/symfony/event-dispatcher/tree/v6.2.7" }, "funding": [ { @@ -6840,20 +7137,20 @@ "type": "tidelift" } ], - "time": "2022-12-14T16:11:27+00:00" + "time": "2023-02-14T08:44:56+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.2.0", + "version": "v3.2.1", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "0782b0b52a737a05b4383d0df35a474303cabdae" + "reference": "0ad3b6f1e4e2da5690fefe075cd53a238646d8dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/0782b0b52a737a05b4383d0df35a474303cabdae", - "reference": "0782b0b52a737a05b4383d0df35a474303cabdae", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/0ad3b6f1e4e2da5690fefe075cd53a238646d8dd", + "reference": "0ad3b6f1e4e2da5690fefe075cd53a238646d8dd", "shasum": "" }, "require": { @@ -6903,7 +7200,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.2.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.2.1" }, "funding": [ { @@ -6919,153 +7216,7 @@ "type": "tidelift" } ], - "time": "2022-11-25T10:21:52+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.2.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "81eefbddfde282ee33b437ba5e13d7753211ae8e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/81eefbddfde282ee33b437ba5e13d7753211ae8e", - "reference": "81eefbddfde282ee33b437ba5e13d7753211ae8e", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "symfony/filesystem": "^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Finder\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Finds files and directories via an intuitive fluent interface", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/finder/tree/v6.2.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-12-22T17:55:15+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.27.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" - ], - "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-03-01T10:32:47+00:00" }, { "name": "symfony/polyfill-intl-grapheme", @@ -7150,16 +7301,16 @@ }, { "name": "symfony/service-contracts", - "version": "v3.2.0", + "version": "v3.2.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "aac98028c69df04ee77eb69b96b86ee51fbf4b75" + "reference": "a8c9cedf55f314f3a186041d19537303766df09a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/aac98028c69df04ee77eb69b96b86ee51fbf4b75", - "reference": "aac98028c69df04ee77eb69b96b86ee51fbf4b75", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/a8c9cedf55f314f3a186041d19537303766df09a", + "reference": "a8c9cedf55f314f3a186041d19537303766df09a", "shasum": "" }, "require": { @@ -7215,7 +7366,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.2.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.2.1" }, "funding": [ { @@ -7231,20 +7382,20 @@ "type": "tidelift" } ], - "time": "2022-11-25T10:21:52+00:00" + "time": "2023-03-01T10:32:47+00:00" }, { "name": "symfony/string", - "version": "v6.2.2", + "version": "v6.2.7", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "863219fd713fa41cbcd285a79723f94672faff4d" + "reference": "67b8c1eec78296b85dc1c7d9743830160218993d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/863219fd713fa41cbcd285a79723f94672faff4d", - "reference": "863219fd713fa41cbcd285a79723f94672faff4d", + "url": "https://api.github.com/repos/symfony/string/zipball/67b8c1eec78296b85dc1c7d9743830160218993d", + "reference": "67b8c1eec78296b85dc1c7d9743830160218993d", "shasum": "" }, "require": { @@ -7301,7 +7452,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.2.2" + "source": "https://github.com/symfony/string/tree/v6.2.7" }, "funding": [ { @@ -7317,20 +7468,20 @@ "type": "tidelift" } ], - "time": "2022-12-14T16:11:27+00:00" + "time": "2023-02-24T10:42:00+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.2.3", + "version": "v6.2.7", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "fdbadd4803bc3c96ef89238c9c9e2ebe424ec2e0" + "reference": "cf8d4ca1ddc1e3cc242375deb8fc23e54f5e2a1e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/fdbadd4803bc3c96ef89238c9c9e2ebe424ec2e0", - "reference": "fdbadd4803bc3c96ef89238c9c9e2ebe424ec2e0", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/cf8d4ca1ddc1e3cc242375deb8fc23e54f5e2a1e", + "reference": "cf8d4ca1ddc1e3cc242375deb8fc23e54f5e2a1e", "shasum": "" }, "require": { @@ -7389,7 +7540,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.2.3" + "source": "https://github.com/symfony/var-dumper/tree/v6.2.7" }, "funding": [ { @@ -7405,81 +7556,7 @@ "type": "tidelift" } ], - "time": "2022-12-22T17:55:15+00:00" - }, - { - "name": "symfony/yaml", - "version": "v6.2.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "6ed8243aa5f2cb5a57009f826b5e7fb3c4200cf3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/6ed8243aa5f2cb5a57009f826b5e7fb3c4200cf3", - "reference": "6ed8243aa5f2cb5a57009f826b5e7fb3c4200cf3", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/console": "<5.4" - }, - "require-dev": { - "symfony/console": "^5.4|^6.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" - }, - "bin": [ - "Resources/bin/yaml-lint" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Loads and dumps YAML files", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/yaml/tree/v6.2.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-12-14T16:11:27+00:00" + "time": "2023-02-24T10:42:00+00:00" }, { "name": "theseer/tokenizer", @@ -7737,7 +7814,7 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": ">=7.1.0", + "php": ">=7.4.0", "ext-json": "*" }, "platform-dev": [], diff --git a/console/controllers/SwaggerController.php b/console/controllers/SwaggerController.php new file mode 100644 index 0000000..36a34db --- /dev/null +++ b/console/controllers/SwaggerController.php @@ -0,0 +1,26 @@ +toYaml()); + fclose($handle); + echo $this->ansiFormat('Created \n", Console::FG_BLUE'); + return ExitCode::OK; + } + +} \ No newline at end of file diff --git a/console/migrations/m230329_211037_create_request_table.php b/console/migrations/m230329_211037_create_request_table.php new file mode 100644 index 0000000..9df9b55 --- /dev/null +++ b/console/migrations/m230329_211037_create_request_table.php @@ -0,0 +1,37 @@ +createTable('{{%request}}', [ + 'id' => $this->primaryKey(), + 'created_at' => $this->dateTime(), + 'updated_at' => $this->dateTime(), + 'user_id' => $this->integer(11)->notNull(), + 'title' => $this->string(255)->notNull(), + 'position_id' => $this->integer(11), + 'skill_ids' => $this->string(255), + 'knowledge_level_id' => $this->integer(11), + 'descr' => $this->text(), + 'specialist_count' => $this->integer(2), + 'status' => $this->integer(1)->defaultValue(0) + ]); + } + + /** + * {@inheritdoc} + */ + public function safeDown() + { + $this->dropTable('{{%request}}'); + } +} diff --git a/console/migrations/m230329_212545_create_knowledge_level_table.php b/console/migrations/m230329_212545_create_knowledge_level_table.php new file mode 100644 index 0000000..1347a44 --- /dev/null +++ b/console/migrations/m230329_212545_create_knowledge_level_table.php @@ -0,0 +1,29 @@ +createTable('{{%knowledge_level}}', [ + 'id' => $this->primaryKey(), + 'title' => $this->string(255)->notNull(), + 'status' => $this->integer(1) + ]); + } + + /** + * {@inheritdoc} + */ + public function safeDown() + { + $this->dropTable('{{%knowledge_level}}'); + } +} diff --git a/frontend/modules/api/controllers/ApiController.php b/frontend/modules/api/controllers/ApiController.php index eec0b03..76aaed5 100644 --- a/frontend/modules/api/controllers/ApiController.php +++ b/frontend/modules/api/controllers/ApiController.php @@ -9,6 +9,36 @@ use yii\filters\ContentNegotiator; use yii\rest\Controller; use yii\web\Response; + +/** + * @OA\Info( + * version="1.0.0", + * title="Документация Гильдия", + * description="Документация для работы с API", + * + * ), + * @OA\PathItem( + * path="/api" + * ), + * @OA\Server( + * url="https://itguild.info/api", + * description="Основной сервер", + * ), + * + * @OA\Server( + * url="https://guild.loc/api", + * description="Локальный сервер", + * ), + * + * @OA\SecurityScheme( + * securityScheme="bearerAuth", + * in="header", + * name="Authorization", + * type="http", + * scheme="bearer", + * bearerFormat="JWT", + * ), + */ class ApiController extends Controller { diff --git a/frontend/modules/api/controllers/RequestController.php b/frontend/modules/api/controllers/RequestController.php new file mode 100644 index 0000000..93a2ac6 --- /dev/null +++ b/frontend/modules/api/controllers/RequestController.php @@ -0,0 +1,226 @@ + ['get'], + 'get-request-list' => ['get'], + 'create-request' => ['post'], +// 'update-task' => ['put', 'patch'], + ]; + } + + /** + * @OA\Get(path="/request/get-request", + * summary="Получить запрос", + * description="Получения запроса по идентификатору", + * security={ + * {"bearerAuth": {}} + * }, + * tags={"Requests"}, + * @OA\Parameter( + * name="request_id", + * in="query", + * required=true, + * @OA\Schema( + * type="integer", + * ) + * ), + * @OA\Parameter( + * name="search_depth", + * in="query", + * required=false, + * @OA\Schema( + * type="integer", + * default=3 + * ) + * ), + * @OA\Response( + * response=200, + * description="Возвращает объект Запроса", + * @OA\MediaType( + * mediaType="application/json", + * @OA\Schema(ref="#/components/schemas/Request"), + * ), + * + * ), + * ) + */ + public function actionGetRequest(int $request_id, int $search_depth = 3): Request + { + if (empty($request_id) or !is_numeric($request_id)) { + throw new NotFoundHttpException('Incorrect request ID'); + } + + $request = RequestService::run($request_id)->getById(); + + if (empty($request)) { + throw new NotFoundHttpException('The request does not exist'); + } + + $request->result_count = RequestService::run($request_id)->count()->search($search_depth); + + return $request; + } + + /** + * + * @OA\Get(path="/request/get-request-list", + * summary="Создать запрос", + * description="Метод для создания запроса, если параметр user_id не передан, то запрос создается от имени текущего пользователя.", + * security={ + * {"bearerAuth": {}} + * }, + * tags={"Requests"}, + * @OA\Parameter( + * name="user_id", + * in="query", + * required=false, + * @OA\Schema( + * type="integer", + * default=null + * ) + * ), + * @OA\Parameter( + * name="search_depth", + * in="query", + * required=false, + * @OA\Schema( + * type="integer", + * default=3 + * ) + * ), + * @OA\Response( + * response=200, + * description="Возвращает объект Запроса", + * @OA\MediaType( + * mediaType="application/json", + * @OA\Schema(ref="#/components/schemas/RequestsExample"), + * ), + * ), + * ) + * + * @param int|null $user_id + * @return array|\yii\db\ActiveRecord[] + */ + public function actionGetList(int $user_id = null, int $search_depth = 3): array + { + if (!$user_id) { + $user_id = \Yii::$app->user->id; + } + + $requests = RequestService::run()->getByUserId($user_id); + + foreach ($requests as $request) { + $request->result_count = RequestService::run($request->id)->count()->search($search_depth); + } + + return $requests; + } + + /** + * + * @OA\Post(path="/request/create-request", + * summary="Получить список запросов", + * description="Метод для оздания запроса, если не передан параметр user_id, то будет получен список текущего пользователя", + * security={ + * {"bearerAuth": {}} + * }, + * tags={"Requests"}, + * + * @OA\RequestBody( + * @OA\MediaType( + * mediaType="multipart/form-data", + * @OA\Schema( + * required={"position_id", "title", "status"}, + * @OA\Property( + * property="user_id", + * type="integer", + * description="Идентификатор пользователя", + * ), + * @OA\Property( + * property="title", + * type="string", + * description="Заголовок запроса", + * ), + * @OA\Property( + * property="position_id", + * type="integer", + * description="Позиция", + * ), + * @OA\Property( + * property="knowledge_level_id", + * type="integer", + * description="Уровень", + * ), + * @OA\Property( + * property="specialist_count", + * type="integer", + * description="Количество специалистов", + * ), + * @OA\Property( + * property="status", + * type="integer", + * description="Статус запроса", + * ), + * @OA\Property( + * property="descr", + * type=" string", + * description="Описание запроса", + * ), + * @OA\Property( + * property="skill_ids", + * type="array", + * description="Навыки", + * @OA\Items( + * type="integer", + * ), + * ), + * ), + * ), + * ), + * @OA\Response( + * response=200, + * description="Возвращает объект Запроса", + * @OA\MediaType( + * mediaType="application/json", + * @OA\Schema(ref="#/components/schemas/Request"), + * ), + * ), + * ) + * + * @return Request + * @throws BadRequestHttpException + */ + public function actionCreateRequest() + { + $user_id = \Yii::$app->user->id; + if (!$user_id){ + throw new BadRequestHttpException(json_encode(['Пользователь не найден'])); + } + + $requestService = RequestService::run() + ->setUserId($user_id) + ->load(\Yii::$app->request->post(), '') + ->save(); + + if (!$requestService->isSave){ + throw new BadRequestHttpException(json_encode($requestService->errors)); + } + + return $requestService->getModel(); + } + +} \ No newline at end of file diff --git a/frontend/modules/api/models/Position.php b/frontend/modules/api/models/Position.php new file mode 100644 index 0000000..5c8ddbb --- /dev/null +++ b/frontend/modules/api/models/Position.php @@ -0,0 +1,25 @@ +