From 4e87d11769ec6c820e31f1748a7e7e3fdf2ba0da Mon Sep 17 00:00:00 2001
From: Paul Klimov
Date: Thu, 6 Jul 2023 15:51:47 +0300
Subject: [PATCH] initial commit
---
.gitattributes | 9 +++++
.github/FUNDING.yml | 4 +++
.github/ISSUE_TEMPLATE.md | 14 ++++++++
.github/PULL_REQUEST_TEMPLATE.md | 7 ++++
.github/workflows/build.yml | 31 ++++++++++++++++
.gitignore | 35 ++++++++++++++++++
CHANGELOG.md | 7 ++++
LICENSE.md | 32 +++++++++++++++++
README.md | 50 ++++++++++++++++++++++++++
composer.json | 39 ++++++++++++++++++++
phpunit.xml.dist | 15 ++++++++
src/SoftDeleteBehavior.php | 10 ++++++
tests/TestCase.php | 61 ++++++++++++++++++++++++++++++++
tests/bootstrap.php | 14 ++++++++
14 files changed, 328 insertions(+)
create mode 100644 .gitattributes
create mode 100644 .github/FUNDING.yml
create mode 100644 .github/ISSUE_TEMPLATE.md
create mode 100644 .github/PULL_REQUEST_TEMPLATE.md
create mode 100644 .github/workflows/build.yml
create mode 100644 .gitignore
create mode 100644 CHANGELOG.md
create mode 100644 LICENSE.md
create mode 100644 README.md
create mode 100644 composer.json
create mode 100644 phpunit.xml.dist
create mode 100644 src/SoftDeleteBehavior.php
create mode 100644 tests/TestCase.php
create mode 100644 tests/bootstrap.php
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..b3d9906
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,9 @@
+# Ignore all test and documentation for archive
+/.github export-ignore
+/.gitattributes export-ignore
+/.gitignore export-ignore
+/.scrutinizer.yml export-ignore
+/.travis.yml export-ignore
+/phpunit.xml.dist export-ignore
+/tests export-ignore
+/docs export-ignore
\ No newline at end of file
diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
new file mode 100644
index 0000000..99679ca
--- /dev/null
+++ b/.github/FUNDING.yml
@@ -0,0 +1,4 @@
+# These are supported funding model platforms
+
+github: [klimov-paul]
+patreon: klimov_paul
diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md
new file mode 100644
index 0000000..2cc6439
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE.md
@@ -0,0 +1,14 @@
+### What steps will reproduce the problem?
+
+### What is the expected result?
+
+### What do you get instead?
+
+### Additional info
+
+| Q | A
+|-----------------------| ---
+| This Package Version | 1.?.?
+| Yii Framework Version | 1.1.?
+| PHP version |
+| Operating system |
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 0000000..f4af2f3
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,7 @@
+| Q | A
+| ------------- | ---
+| Is bugfix? | ✔️/❌
+| New feature? | ✔️/❌
+| Breaks BC? | ✔️/❌
+| Tests pass? | ✔️/❌
+| Fixed issues | comma-separated list of tickets # fixed by the PR, if any
\ No newline at end of file
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644
index 0000000..757df1b
--- /dev/null
+++ b/.github/workflows/build.yml
@@ -0,0 +1,31 @@
+name: build
+
+on: [push, pull_request]
+
+jobs:
+ phpunit:
+ name: PHP ${{ matrix.php }} on ${{ matrix.os }}
+ runs-on: ${{ matrix.os }}
+ strategy:
+ fail-fast: false
+ matrix:
+ os: [ubuntu-latest]
+ php: ['7.1', '7.2', '7.3', '7.4', '8.0', '8.1', '8.2']
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+
+ - name: Install PHP
+ uses: shivammathur/setup-php@v2
+ with:
+ php-version: ${{ matrix.php }}
+ extensions: mbstring, pdo, sqlite, pdo_sqlite
+ tools: composer:v2
+ coverage: none
+
+ - name: Install dependencies
+ run: |
+ composer update --prefer-dist --no-interaction --no-progress --optimize-autoloader --ansi
+ - name: Run unit tests
+ run: vendor/bin/phpunit --colors=always
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..304f7c8
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,35 @@
+# phpstorm project files
+.idea
+
+# netbeans project files
+nbproject
+
+# zend studio for eclipse project files
+.buildpath
+.project
+.settings
+
+# windows thumbnail cache
+Thumbs.db
+
+# composer vendor dir
+/vendor
+
+/composer.lock
+
+# composer itself is not needed
+composer.phar
+
+# Mac DS_Store Files
+.DS_Store
+
+# phpunit itself is not needed
+phpunit.phar
+# local phpunit config
+/phpunit.xml
+# phpunit cache
+.phpunit.result.cache
+
+# test runtime files
+/.phpunit.cache
+/tests/runtime
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..8fd3103
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,7 @@
+Yii1 ActiveRecord Soft Delete extension
+=======================================
+
+1.0.0 Under Development
+-----------------------
+
+- Initial release.
diff --git a/LICENSE.md b/LICENSE.md
new file mode 100644
index 0000000..e641e6f
--- /dev/null
+++ b/LICENSE.md
@@ -0,0 +1,32 @@
+This is free software. It is released under the terms of the
+following BSD License.
+
+Copyright © 2023 by Yii1Tech (https://github.com/yii1tech)
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ * Neither the name of Yii1Tech nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..ee38667
--- /dev/null
+++ b/README.md
@@ -0,0 +1,50 @@
+
+
+
+
+
Application Runtime Configuration Extension for Yii 1
+
+
+
+This extension provides support for Yii1 ActiveRecord soft delete.
+
+For license information check the [LICENSE](LICENSE.md)-file.
+
+[![Latest Stable Version](https://img.shields.io/packagist/v/yii1tech/ar-softdelete.svg)](https://packagist.org/packages/yii1tech/ar-softdelete)
+[![Total Downloads](https://img.shields.io/packagist/dt/yii1tech/ar-softdelete.svg)](https://packagist.org/packages/yii1tech/ar-softdelete)
+[![Build Status](https://github.com/yii1tech/ar-softdelete/workflows/build/badge.svg)](https://github.com/yii1tech/ar-softdelete/actions)
+
+
+Installation
+------------
+
+The preferred way to install this extension is through [composer](http://getcomposer.org/download/).
+
+Either run
+
+```
+php composer.phar require --prefer-dist yii1tech/ar-softdelete
+```
+
+or add
+
+```json
+"yii1tech/ar-softdelete": "*"
+```
+
+to the "require" section of your composer.json.
+
+
+Usage
+-----
+
+This extension provides support for so called "soft" deletion of the ActiveRecord, which means record is not deleted
+from database, but marked with some flag or status, which indicates it is no longer active, instead.
+
+This extension provides `\yii1tech\ar\softdelete\SoftDeleteBehavior` ActiveRecord behavior for such solution support
+in Yii1. You may attach it to your model class in the following way:
+
+```php
+=7.1",
+ "yiisoft/yii": "~1.1.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.0 || ^7.0 || ^8.0 || ^9.3 || ^10.0.7"
+ },
+ "autoload": {
+ "psr-4": {
+ "yii1tech\\ar\\softdelete\\": "src"
+ }
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "yii1tech\\ar\\softdelete\\test\\": "tests"
+ }
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ }
+}
\ No newline at end of file
diff --git a/phpunit.xml.dist b/phpunit.xml.dist
new file mode 100644
index 0000000..1dc5e87
--- /dev/null
+++ b/phpunit.xml.dist
@@ -0,0 +1,15 @@
+
+
+
+
+ ./tests
+
+
+
diff --git a/src/SoftDeleteBehavior.php b/src/SoftDeleteBehavior.php
new file mode 100644
index 0000000..c720f3b
--- /dev/null
+++ b/src/SoftDeleteBehavior.php
@@ -0,0 +1,10 @@
+mockApplication();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function tearDown(): void
+ {
+ $this->destroyApplication();
+ }
+
+ /**
+ * Populates Yii::app() with a new application
+ * The application will be destroyed on tearDown() automatically.
+ * @param array $config The application configuration, if needed
+ * @param string $appClass name of the application class to create
+ */
+ protected function mockApplication($config = [], $appClass = CConsoleApplication::class)
+ {
+ Yii::setApplication(null);
+
+ new $appClass(CMap::mergeArray([
+ 'id' => 'testapp',
+ 'basePath' => __DIR__,
+ 'components' => [
+ 'db' => [
+ 'class' => \CDbConnection::class,
+ 'connectionString' => 'sqlite::memory:',
+ ],
+ 'cache' => [
+ 'class' => \CDummyCache::class,
+ ],
+ ],
+ ], $config));
+ }
+
+ /**
+ * Destroys Yii application by setting it to null.
+ */
+ protected function destroyApplication()
+ {
+ Yii::setApplication(null);
+ }
+}
\ No newline at end of file
diff --git a/tests/bootstrap.php b/tests/bootstrap.php
new file mode 100644
index 0000000..f238b2d
--- /dev/null
+++ b/tests/bootstrap.php
@@ -0,0 +1,14 @@
+