Fork me on GitHub

ETrashBinBehavior

Добавляет возможность удалять модели в корзину и восстанавливать их.

Установка и настройка

Подготовка модели

В модели должен быть выделен атрибут для статуса удаления. Например: "is_removed"

Подключить поведение к модели

<?php
function behaviors()
{
    return array(
        'trash'=>array(
            'class'=>'ext.yiiext.behaviors.model.trashBin.ETrashBinBehavior',
            // Имя столбца где хранится статус удаления (обязательное свойство)
            'trashFlagField'=>'is_removed',
            // Значение которое устанавливается при удалении в поле $trashFlagField
            // По умолчанию 1
            'removedFlag'=>1,
            // Значение которое устанавливается при восстановлении в поле $trashFlagField
            // По умолчанию 0
            'restoredFlag'=>0,
        ),
    );
}

Минимальные требования

Yii Framework 1.1.4

API

remove()

Удаляем модель в корзину.

<?php
$user=User::model()->findByPk(1);
$user->remove();

restore()

Восстанавливаем модель из корзины.

<?php
// Так как при включенном поведении удаленные модели игнорируются,
// нужно включить поиск удаленных моделей
User::model()->withRemoved();
// или на время поиска выключить поведение
User::model()->disableBehavior('trash');
 
$user=User::model()->findByPk(1);
 
// Включаем снова поведение если выключали.
User::model()->enableBehavior('trash');
 
$user->restore();

getIsRemoved()

Проверяем удалена ли модель в корзину.

<?php
$user1=User::model()->withRemoved()->findByPk(1);
echo $user1->getIsRemoved() ? 'status=removed' : 'status=normal';
$user2=User::model()->withRemoved()->findByPk(2);
echo $user2->isRemoved ? 'status=removed' : 'status=normal';
}

withRemoved()

Включаем поиск удаленных записей только при следующем запросе.

<?php
$users=User::model()->withRemoved()->findAll();

Changelog

0.3

  • Doc corrections and English docs (Sam Dark)

0.2

[] Change method isRemoved() to getIsRemoved() [+] Add method filterRemoved() for except finding removed models. [+] Add property $findRemoved to enable or disable find removed models. [+] Unit tests. [+] Add method withRemoved() for find removed models. [] Changed translation category to 'yiiext'. [*] New naming conventions.

0.1

[+] Initial public release.

AR models behavior that allows to mark models as deleted and then restore them.

Documentation

Downloads (Tags)

Resources