public function beforeDelete() { if (parent::beforeDelete()) { return true; } else { return false; } }
/** * @param \albertborsos\yii2lib\db\ActiveRecord $model */ public static function createArchive($model) { if (!$model->getIsNewRecord()) { $class = get_class($model); /** @var \albertborsos\yii2lib\db\ActiveRecord $class */ $oldModel = $class::findOne(['id' => $model->getPrimaryKey()]); if (!self::attributesAreSame($model, $oldModel)) { $archive = new Historizer(); $archive->model_class = $class; $archive->model_id = $model->getPrimaryKey(); $archive->model_attributes = Json::encode($oldModel->attributes); if (!$archive->save()) { $archive->throwNewException('Archiválás nem sikerült!'); } } else { return false; } } else { return false; } }
public static function saveTo(ActiveRecord $model, $tagsInString, $separator = ',') { if (!is_null($model->getPrimaryKey())) { if ($tagsInString !== '' && !is_null($tagsInString)) { // lekérdezem a korábbi tag-eket (a törölteket is) $assignedTags = self::getAssignedTags($model, false); // felbontom az új tag-eket egy tömbre $tags = explode(',', $tagsInString); // az elküldött cimkékhez legyűjtöm az id_kat $tagsWithIDs = self::matchLabelWithID($tags); // most már megvan az összes cimkéhez az id-nk // összehasonlítom, hogy mit kell törölni és mit kell hozzáadni foreach ($assignedTags as $assignedTag) { /* @var Assigns $assignedTag */ $savedToTags = false; foreach ($tagsWithIDs as $tagID => $tagLabel) { if ($assignedTag->tag_id == $tagID) { $savedToTags = true; } } if ($savedToTags) { // ha szerepel, akkor le kell ellenőriznem a státuszt db-ben if ($assignedTag->status == 'd') { $assignedTag->status = 'a'; $assignedTag->save(); } } else { //ha nem szerepel az új cimkék közt, akkor törölni kell db-ből $assignedTag->status = 'd'; $assignedTag->save(); } } foreach ($tagsWithIDs as $tagID => $tagLabel) { $isAssignedToPost = false; foreach ($assignedTags as $assignedTag) { /* @var Assigns $assignedTag */ if ($assignedTag->tag_id == $tagID) { $isAssignedToPost = true; } } if (!$isAssignedToPost) { // ha nincs hozzárendelve akkor menteni kell $assign = new Assigns(); $assign->tag_id = $tagID; $assign->model_class = get_class($model); $assign->model_id = $model->getPrimaryKey(); $assign->status = 'a'; if (!$assign->save()) { $assign->throwNewException('Cimke hozzárendelési hiba!'); } } } } else { // minden modelhez tartozó aktív cimkét törölni kell $assignedTags = self::getAssignedTags($model); foreach ($assignedTags as $assignedTag) { /* @var Assigns $assignedTag */ $assignedTag->status = 'd'; $assignedTag->save(); } } return true; } else { $model->throwNewException('Előbb menteni kell a modelt, hogy hozzá lehessen fűzni a cimkéket!'); } }
<?php use albertborsos\yii2lib\db\ActiveRecord; use yii\helpers\Html; use kartik\grid\GridView; use albertborsos\yii2tagger\components\DataProvider; /* @var $this yii\web\View */ /* @var $searchModel albertborsos\yii2tagger\models\TagSearch */ /* @var $dataProvider yii\data\ActiveDataProvider */ ?> <div class="tags-index"> <?php // echo $this->render('_search', ['model' => $searchModel]); ?> <?php echo GridView::widget(['dataProvider' => $dataProvider, 'panel' => ['heading' => '<h3 class="panel-title"><i class="glyphicon glyphicon-globe"></i> Cimkék</h3>', 'type' => 'default', 'showFooter' => false], 'floatHeader' => true, 'export' => false, 'exportConfig' => [GridView::CSV => ['label' => 'CSV', 'icon' => 'floppy-open', 'showHeader' => true, 'showPageSummary' => true, 'showFooter' => true, 'showCaption' => true, 'colDelimiter' => ",", 'rowDelimiter' => "\r\n", 'filename' => 'grid-export', 'alertMsg' => 'The CSV export file will be generated for download.', 'options' => ['title' => 'Mentés CSV-ként']], GridView::EXCEL => ['label' => 'Excel', 'icon' => 'floppy-remove', 'showHeader' => true, 'showPageSummary' => true, 'showFooter' => true, 'showCaption' => true, 'worksheet' => 'ExportWorksheet', 'filename' => 'grid-export', 'alertMsg' => 'The EXCEL export file will be generated for download.', 'cssFile' => '', 'options' => ['title' => 'Mentés XLS-ként']]], 'filterModel' => $searchModel, 'columns' => [['attribute' => 'sort_order', 'hAlign' => 'center', 'vAlign' => 'middle', 'headerOptions' => ['class' => 'text-center'], 'format' => 'raw', 'value' => function ($model, $index, $widget) { return $model->editable(ActiveRecord::EDITABLE_TYPE_DROPDOWN, 'sort_order', DataProvider::items('sortorder')); }, 'filter' => false], ['attribute' => 'label', 'hAlign' => 'center', 'vAlign' => 'middle', 'headerOptions' => ['class' => 'text-center'], 'format' => 'raw', 'value' => function ($model, $index, $widget) { return $model->editable(ActiveRecord::EDITABLE_TYPE_TEXTINPUT, 'label'); }], ['attribute' => 'updated_at', 'hAlign' => 'center', 'vAlign' => 'middle', 'format' => 'raw', 'headerOptions' => ['class' => 'text-center'], 'value' => function ($model, $index, $widget) { return \albertborsos\yii2lib\db\ActiveRecord::showLastModifiedInfo($model); }]]]); ?> </div>