public function saveToDb() { $content = $this->getDocData(); $hash = md5($content); $version = $this->getVersion(); $model = JsonHistory::find()->where(['hash' => $hash, 'version' => $version])->one(); if (!$model) { $model = new JsonHistory(); $model->content = $content; $model->hash = $hash; $model->version = $version; $model->created_at = time(); $model->size = strlen($content); if (!$model->save()) { var_dump($model->errors); die(__METHOD__); } } }
public static function getCrossVersionDiffData() { $result = []; //берем две последние версии $versions = self::getLast2Versions(); if (count($versions) == 2) { $modelPrev = JsonHistory::find()->where(['version' => $versions[0]])->orderBy('id DESC')->one(); $modelCurrent = JsonHistory::find()->where(['version' => $versions[1]])->orderBy('id DESC')->one(); if ($modelPrev && $modelCurrent) { $result = JsonSchemaDiff::diff(json_decode($modelPrev->content, 1), json_decode($modelCurrent->content, 1)); } } return $result; }
public function run() { $models = JsonHistory::find()->where(['version' => \Yii::$app->docParser->getVersion()])->orderBy('created_at DESC')->all(); $crossVersionData = JsonHistory::getCrossVersionDiffData(); return $this->render('diffWidget/main', ['crossVersionData' => $crossVersionData, 'models' => $models]); }
<?php /** * @var $this \yii\web\View */ $versions = \app\models\JsonHistory::getLast2Versions(); ?> <div role="tabpanel" style="margin-top: 20px"> <!-- Nav tabs --> <ul class="nav nav-tabs" role="tablist"> <li role="presentation" class="active"> <a href="#current" aria-controls="history" role="tab" data-toggle="tab"> Changes in current version — <strong><?php echo Yii::$app->docParser->getVersion(); ?> </strong> </a> </li> <?php if (count($versions) == 2) { ?> <li role="presentation"> <a href="#prev" aria-controls="home" role="tab" data-toggle="tab"> The difference between the versions — <?php echo $versions[0]; ?> and <?php echo $versions[1]; ?>