progress
This commit is contained in:
parent
1f9209e215
commit
a3aa69b5a5
|
@ -36,6 +36,13 @@
|
|||
<excludeFolder url="file://$MODULE_DIR$/vendor/friendsofphp/proxy-manager-lts" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfonycasts/verify-email-bundle" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/nelmio/cors-bundle" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/annotations" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/serializer" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/phpstan/phpdoc-parser" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/phpdocumentor/type-resolver" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/phpdocumentor/reflection-docblock" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/phpdocumentor/reflection-common" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/webmozart/assert" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
|
|
|
@ -63,6 +63,13 @@
|
|||
<path value="$PROJECT_DIR$/vendor/friendsofphp/proxy-manager-lts" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfonycasts/verify-email-bundle" />
|
||||
<path value="$PROJECT_DIR$/vendor/nelmio/cors-bundle" />
|
||||
<path value="$PROJECT_DIR$/vendor/doctrine/annotations" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/serializer" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpstan/phpdoc-parser" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpdocumentor/type-resolver" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpdocumentor/reflection-docblock" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpdocumentor/reflection-common" />
|
||||
<path value="$PROJECT_DIR$/vendor/webmozart/assert" />
|
||||
</include_path>
|
||||
</component>
|
||||
<component name="PhpProjectSharedConfiguration" php_language_level="8.1">
|
||||
|
|
|
@ -2,5 +2,6 @@
|
|||
<project version="4">
|
||||
<component name="Symfony2PluginSettings">
|
||||
<option name="pluginEnabled" value="true" />
|
||||
<option name="lastServiceGeneratorLanguage" value="yaml" />
|
||||
</component>
|
||||
</project>
|
|
@ -7,16 +7,22 @@
|
|||
"php": ">=8.1",
|
||||
"ext-ctype": "*",
|
||||
"ext-iconv": "*",
|
||||
"doctrine/annotations": "^1.0",
|
||||
"doctrine/doctrine-bundle": "^2.8",
|
||||
"doctrine/doctrine-migrations-bundle": "^3.2",
|
||||
"doctrine/orm": "^2.14",
|
||||
"nelmio/cors-bundle": "^2.2",
|
||||
"phpdocumentor/reflection-docblock": "^5.3",
|
||||
"phpstan/phpdoc-parser": "^1.16",
|
||||
"symfony/console": "6.2.*",
|
||||
"symfony/dotenv": "6.2.*",
|
||||
"symfony/flex": "^2",
|
||||
"symfony/framework-bundle": "6.2.*",
|
||||
"symfony/property-access": "6.2.*",
|
||||
"symfony/property-info": "6.2.*",
|
||||
"symfony/runtime": "6.2.*",
|
||||
"symfony/security-bundle": "6.2.*",
|
||||
"symfony/serializer": "6.2.*",
|
||||
"symfony/yaml": "6.2.*",
|
||||
"symfonycasts/verify-email-bundle": "^1.13"
|
||||
},
|
||||
|
|
447
composer.lock
generated
447
composer.lock
generated
|
@ -4,8 +4,84 @@
|
|||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "b769efde9eff86f833f47b14e5c80c52",
|
||||
"content-hash": "8d4b2d3b5f2fa1e504ae31e3e56e7920",
|
||||
"packages": [
|
||||
{
|
||||
"name": "doctrine/annotations",
|
||||
"version": "1.14.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/doctrine/annotations.git",
|
||||
"reference": "fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/doctrine/annotations/zipball/fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af",
|
||||
"reference": "fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"doctrine/lexer": "^1 || ^2",
|
||||
"ext-tokenizer": "*",
|
||||
"php": "^7.1 || ^8.0",
|
||||
"psr/cache": "^1 || ^2 || ^3"
|
||||
},
|
||||
"require-dev": {
|
||||
"doctrine/cache": "^1.11 || ^2.0",
|
||||
"doctrine/coding-standard": "^9 || ^10",
|
||||
"phpstan/phpstan": "~1.4.10 || ^1.8.0",
|
||||
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
|
||||
"symfony/cache": "^4.4 || ^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/1.14.3"
|
||||
},
|
||||
"time": "2023-02-01T09:20:38+00:00"
|
||||
},
|
||||
{
|
||||
"name": "doctrine/cache",
|
||||
"version": "2.2.0",
|
||||
|
@ -1519,6 +1595,216 @@
|
|||
},
|
||||
"time": "2021-12-01T09:34:27+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phpdocumentor/reflection-common",
|
||||
"version": "2.2.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/phpDocumentor/ReflectionCommon.git",
|
||||
"reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
|
||||
"reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.2 || ^8.0"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-2.x": "2.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"phpDocumentor\\Reflection\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Jaap van Otterdijk",
|
||||
"email": "opensource@ijaap.nl"
|
||||
}
|
||||
],
|
||||
"description": "Common reflection classes used by phpdocumentor to reflect the code structure",
|
||||
"homepage": "http://www.phpdoc.org",
|
||||
"keywords": [
|
||||
"FQSEN",
|
||||
"phpDocumentor",
|
||||
"phpdoc",
|
||||
"reflection",
|
||||
"static analysis"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
|
||||
"source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x"
|
||||
},
|
||||
"time": "2020-06-27T09:03:43+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phpdocumentor/reflection-docblock",
|
||||
"version": "5.3.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
|
||||
"reference": "622548b623e81ca6d78b721c5e029f4ce664f170"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170",
|
||||
"reference": "622548b623e81ca6d78b721c5e029f4ce664f170",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-filter": "*",
|
||||
"php": "^7.2 || ^8.0",
|
||||
"phpdocumentor/reflection-common": "^2.2",
|
||||
"phpdocumentor/type-resolver": "^1.3",
|
||||
"webmozart/assert": "^1.9.1"
|
||||
},
|
||||
"require-dev": {
|
||||
"mockery/mockery": "~1.3.2",
|
||||
"psalm/phar": "^4.8"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "5.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"phpDocumentor\\Reflection\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Mike van Riel",
|
||||
"email": "me@mikevanriel.com"
|
||||
},
|
||||
{
|
||||
"name": "Jaap van Otterdijk",
|
||||
"email": "account@ijaap.nl"
|
||||
}
|
||||
],
|
||||
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
|
||||
"support": {
|
||||
"issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
|
||||
"source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0"
|
||||
},
|
||||
"time": "2021-10-19T17:43:47+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phpdocumentor/type-resolver",
|
||||
"version": "1.6.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/phpDocumentor/TypeResolver.git",
|
||||
"reference": "48f445a408c131e38cab1c235aa6d2bb7a0bb20d"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/48f445a408c131e38cab1c235aa6d2bb7a0bb20d",
|
||||
"reference": "48f445a408c131e38cab1c235aa6d2bb7a0bb20d",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.4 || ^8.0",
|
||||
"phpdocumentor/reflection-common": "^2.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"ext-tokenizer": "*",
|
||||
"phpstan/extension-installer": "^1.1",
|
||||
"phpstan/phpstan": "^1.8",
|
||||
"phpstan/phpstan-phpunit": "^1.1",
|
||||
"phpunit/phpunit": "^9.5",
|
||||
"rector/rector": "^0.13.9",
|
||||
"vimeo/psalm": "^4.25"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-1.x": "1.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"phpDocumentor\\Reflection\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Mike van Riel",
|
||||
"email": "me@mikevanriel.com"
|
||||
}
|
||||
],
|
||||
"description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
|
||||
"support": {
|
||||
"issues": "https://github.com/phpDocumentor/TypeResolver/issues",
|
||||
"source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.2"
|
||||
},
|
||||
"time": "2022-10-14T12:47:21+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phpstan/phpdoc-parser",
|
||||
"version": "1.16.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/phpstan/phpdoc-parser.git",
|
||||
"reference": "57090cfccbfaa639e703c007486d605a6e80f56d"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/57090cfccbfaa639e703c007486d605a6e80f56d",
|
||||
"reference": "57090cfccbfaa639e703c007486d605a6e80f56d",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.2 || ^8.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"php-parallel-lint/php-parallel-lint": "^1.2",
|
||||
"phpstan/extension-installer": "^1.0",
|
||||
"phpstan/phpstan": "^1.5",
|
||||
"phpstan/phpstan-phpunit": "^1.1",
|
||||
"phpstan/phpstan-strict-rules": "^1.0",
|
||||
"phpunit/phpunit": "^9.5",
|
||||
"symfony/process": "^5.2"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"PHPStan\\PhpDocParser\\": [
|
||||
"src/"
|
||||
]
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"description": "PHPDoc parser with support for nullable, intersection and generic types",
|
||||
"support": {
|
||||
"issues": "https://github.com/phpstan/phpdoc-parser/issues",
|
||||
"source": "https://github.com/phpstan/phpdoc-parser/tree/1.16.0"
|
||||
},
|
||||
"time": "2023-01-29T14:41:23+00:00"
|
||||
},
|
||||
{
|
||||
"name": "psr/cache",
|
||||
"version": "3.0.0",
|
||||
|
@ -4177,6 +4463,107 @@
|
|||
],
|
||||
"time": "2022-12-13T14:55:03+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/serializer",
|
||||
"version": "v6.2.5",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/serializer.git",
|
||||
"reference": "dec3263bd7399f85cc54ea51a019e60b085759f0"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/serializer/zipball/dec3263bd7399f85cc54ea51a019e60b085759f0",
|
||||
"reference": "dec3263bd7399f85cc54ea51a019e60b085759f0",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=8.1",
|
||||
"symfony/polyfill-ctype": "~1.8"
|
||||
},
|
||||
"conflict": {
|
||||
"doctrine/annotations": "<1.12",
|
||||
"phpdocumentor/reflection-docblock": "<3.2.2",
|
||||
"phpdocumentor/type-resolver": "<1.4.0|>=1.7.0",
|
||||
"symfony/dependency-injection": "<5.4",
|
||||
"symfony/property-access": "<5.4",
|
||||
"symfony/property-info": "<5.4",
|
||||
"symfony/uid": "<5.4",
|
||||
"symfony/yaml": "<5.4"
|
||||
},
|
||||
"require-dev": {
|
||||
"doctrine/annotations": "^1.12|^2",
|
||||
"phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0",
|
||||
"symfony/cache": "^5.4|^6.0",
|
||||
"symfony/config": "^5.4|^6.0",
|
||||
"symfony/dependency-injection": "^5.4|^6.0",
|
||||
"symfony/error-handler": "^5.4|^6.0",
|
||||
"symfony/filesystem": "^5.4|^6.0",
|
||||
"symfony/form": "^5.4|^6.0",
|
||||
"symfony/http-foundation": "^5.4|^6.0",
|
||||
"symfony/http-kernel": "^5.4|^6.0",
|
||||
"symfony/mime": "^5.4|^6.0",
|
||||
"symfony/property-access": "^5.4|^6.0",
|
||||
"symfony/property-info": "^5.4|^6.0",
|
||||
"symfony/uid": "^5.4|^6.0",
|
||||
"symfony/validator": "^5.4|^6.0",
|
||||
"symfony/var-dumper": "^5.4|^6.0",
|
||||
"symfony/var-exporter": "^5.4|^6.0",
|
||||
"symfony/yaml": "^5.4|^6.0"
|
||||
},
|
||||
"suggest": {
|
||||
"psr/cache-implementation": "For using the metadata cache.",
|
||||
"symfony/config": "For using the XML mapping loader.",
|
||||
"symfony/mime": "For using a MIME type guesser within the DataUriNormalizer.",
|
||||
"symfony/property-access": "For using the ObjectNormalizer.",
|
||||
"symfony/property-info": "To deserialize relations.",
|
||||
"symfony/var-exporter": "For using the metadata compiler.",
|
||||
"symfony/yaml": "For using the default YAML mapping loader."
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Symfony\\Component\\Serializer\\": ""
|
||||
},
|
||||
"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": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/serializer/tree/v6.2.5"
|
||||
},
|
||||
"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-01-20T17:45:48+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/service-contracts",
|
||||
"version": "v3.2.0",
|
||||
|
@ -4692,6 +5079,64 @@
|
|||
"source": "https://github.com/SymfonyCasts/verify-email-bundle/tree/v1.13.0"
|
||||
},
|
||||
"time": "2023-01-04T12:46:15+00:00"
|
||||
},
|
||||
{
|
||||
"name": "webmozart/assert",
|
||||
"version": "1.11.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/webmozarts/assert.git",
|
||||
"reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991",
|
||||
"reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-ctype": "*",
|
||||
"php": "^7.2 || ^8.0"
|
||||
},
|
||||
"conflict": {
|
||||
"phpstan/phpstan": "<0.12.20",
|
||||
"vimeo/psalm": "<4.6.1 || 4.6.2"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^8.5.13"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.10-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Webmozart\\Assert\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Bernhard Schussek",
|
||||
"email": "bschussek@gmail.com"
|
||||
}
|
||||
],
|
||||
"description": "Assertions to validate method input/output with nice error messages.",
|
||||
"keywords": [
|
||||
"assert",
|
||||
"check",
|
||||
"validate"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/webmozarts/assert/issues",
|
||||
"source": "https://github.com/webmozarts/assert/tree/1.11.0"
|
||||
},
|
||||
"time": "2022-06-03T18:03:27+00:00"
|
||||
}
|
||||
],
|
||||
"packages-dev": [
|
||||
|
|
|
@ -35,7 +35,7 @@ security:
|
|||
access_control:
|
||||
# - { path: ^/admin, roles: ROLE_ADMIN }
|
||||
- { path: ^/api/acc/*, roles: ROLE_USER }
|
||||
|
||||
- { path: ^/api/app/*, roles: ROLE_USER }
|
||||
when@test:
|
||||
security:
|
||||
password_hashers:
|
||||
|
|
22
src/Controller/BlogController.php
Normal file
22
src/Controller/BlogController.php
Normal file
|
@ -0,0 +1,22 @@
|
|||
<?php
|
||||
|
||||
namespace App\Controller;
|
||||
|
||||
use App\Entity\BlogCat;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
use Symfony\Component\Routing\Annotation\Route;
|
||||
use Symfony\Component\Serializer\SerializerInterface;
|
||||
|
||||
class BlogController extends AbstractController
|
||||
{
|
||||
#[Route('/api/blog/get_cats', name: 'app_blog_get_cats')]
|
||||
public function app_blog_get_cats(SerializerInterface $serializer, EntityManagerInterface $entityManager): JsonResponse
|
||||
{
|
||||
return $this->json([
|
||||
'error' => 0,
|
||||
'data' => $serializer->serialize($entityManager->getRepository(BlogCat::class)->findAll(),'json'),
|
||||
]);
|
||||
}
|
||||
}
|
124
src/Controller/GuideController.php
Normal file
124
src/Controller/GuideController.php
Normal file
|
@ -0,0 +1,124 @@
|
|||
<?php
|
||||
|
||||
namespace App\Controller;
|
||||
|
||||
use App\Entity\GuideContent;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\Routing\Annotation\Route;
|
||||
|
||||
class GuideController extends AbstractController
|
||||
{
|
||||
#[Route('/api/guide/get/list/{id}', name: 'app_guide_get_list')]
|
||||
public function app_guide_get_list($id,EntityManagerInterface $entityManager): JsonResponse
|
||||
{
|
||||
$lists = $entityManager->getRepository(GuideContent::class)->findBy(['cat'=>$id]);
|
||||
$res=[];
|
||||
foreach($lists as $list){
|
||||
$tmp = [];
|
||||
$tmp['title'] = $list->getTitle();
|
||||
$tmp['url'] = $list->getUrl();
|
||||
$res[] = $tmp;
|
||||
}
|
||||
return $this->json($res);
|
||||
}
|
||||
#[Route('/api/guide/get/content/{id}', name: 'app_guide_get_content')]
|
||||
public function app_guide_get_content($id,EntityManagerInterface $entityManager): JsonResponse
|
||||
{
|
||||
$content = $entityManager->getRepository(GuideContent::class)->findOneBy(['url'=>$id]);
|
||||
return $this->json([
|
||||
'title'=> $content->getTitle(),
|
||||
'body'=> $content->getBody(),
|
||||
'url'=>$content->getUrl(),
|
||||
'cat'=>$content->getCat()
|
||||
]);
|
||||
}
|
||||
|
||||
#[Route('/api/guide/update/content/{id}', name: 'app_guide_update_content')]
|
||||
public function app_guide_update_content($id,Request $request, EntityManagerInterface $entityManager): JsonResponse
|
||||
{
|
||||
$guide = $entityManager->getRepository(GuideContent::class)->findOneBy(['url'=>$id]);
|
||||
if(is_null($guide))
|
||||
throw $this->createNotFoundException();
|
||||
|
||||
$params = [];
|
||||
if ($content = $request->getContent()) {
|
||||
$params = json_decode($content, true);
|
||||
}
|
||||
if(array_key_exists('title',$params) && array_key_exists('cat',$params) && array_key_exists('body',$params )){
|
||||
if($entityManager->getRepository(GuideContent::class)->findOneBy(['url'=>$params['url']]) && $params['url'] != $id){
|
||||
return $this->json([
|
||||
'error'=> 1,
|
||||
'message'=> 'این پیوند قبلا ثبت شده است.'
|
||||
]);
|
||||
}
|
||||
|
||||
$guide->setBody($params['body']);
|
||||
$guide->setCat($params['cat']);
|
||||
$guide->setTitle($params['title']);
|
||||
$guide->setDateSubmit(time());
|
||||
$guide->setSubmiter($this->getUser());
|
||||
if($id != 'home')
|
||||
$guide->setUrl(str_replace(' ','_',$params['url']));
|
||||
$entityManager->persist($guide);
|
||||
$entityManager->flush();
|
||||
return $this->json([
|
||||
'error'=> 0,
|
||||
'message'=> 'ok',
|
||||
'url'=>$guide->getUrl()
|
||||
]);
|
||||
}
|
||||
return $this->json([
|
||||
'error'=> 999,
|
||||
'message'=> 'تمام موارد لازم را وارد کنید.'
|
||||
]);
|
||||
}
|
||||
|
||||
#[Route('/api/guide/insert', name: 'app_guide_insert')]
|
||||
public function app_guide_insert(Request $request,EntityManagerInterface $entityManager): JsonResponse
|
||||
{
|
||||
$params = [];
|
||||
if ($content = $request->getContent()) {
|
||||
$params = json_decode($content, true);
|
||||
}
|
||||
if(array_key_exists('title',$params) && array_key_exists('cat',$params) && array_key_exists('body',$params )){
|
||||
if($entityManager->getRepository(GuideContent::class)->findOneBy(['url'=>$params['url']])){
|
||||
return $this->json([
|
||||
'error'=> 1,
|
||||
'message'=> 'این پیوند قبلا ثبت شده است.'
|
||||
]);
|
||||
}
|
||||
$guide = new GuideContent();
|
||||
$guide->setBody($params['body']);
|
||||
$guide->setCat($params['cat']);
|
||||
$guide->setTitle($params['title']);
|
||||
$guide->setDateSubmit(time());
|
||||
$guide->setSubmiter($this->getUser());
|
||||
$guide->setUrl(str_replace(' ','_',$params['url']));
|
||||
$entityManager->persist($guide);
|
||||
$entityManager->flush();
|
||||
return $this->json([
|
||||
'error'=> 0,
|
||||
'message'=> 'ok',
|
||||
'url'=>$guide->getUrl()
|
||||
]);
|
||||
}
|
||||
return $this->json([
|
||||
'error'=> 999,
|
||||
'message'=> 'تمام موارد لازم را وارد کنید.'
|
||||
]);
|
||||
}
|
||||
#[Route('/api/guide/delete/{id}', name: 'app_guide_delete')]
|
||||
public function app_guide_delete($id,Request $request,EntityManagerInterface $entityManager): JsonResponse
|
||||
{
|
||||
$content = $entityManager->getRepository(GuideContent::class)->findOneBy(['url'=>$id]);
|
||||
if($content && $content->getUrl() != 'home')
|
||||
$entityManager->getRepository(GuideContent::class)->remove($content,true);
|
||||
return $this->json([
|
||||
'error'=> 0,
|
||||
'message'=> 'ok',
|
||||
]);
|
||||
}
|
||||
}
|
309
src/Controller/StackController.php
Normal file
309
src/Controller/StackController.php
Normal file
|
@ -0,0 +1,309 @@
|
|||
<?php
|
||||
|
||||
namespace App\Controller;
|
||||
|
||||
use App\Entity\StackCat;
|
||||
use App\Entity\StackContent;
|
||||
use App\Service\Jdate;
|
||||
use App\Service\Provider;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\Routing\Annotation\Route;
|
||||
use Symfony\Component\Serializer\Encoder\JsonEncoder;
|
||||
use Symfony\Component\Serializer\SerializerInterface;
|
||||
|
||||
class StackController extends AbstractController
|
||||
{
|
||||
#[Route('/api/stack/cats/get', name: 'app_stack_get_cats')]
|
||||
public function app_stack_get_cats(SerializerInterface $serializer, EntityManagerInterface $entityManager): JsonResponse
|
||||
{
|
||||
$result = [];
|
||||
$cats = $entityManager->getRepository(StackCat::class)->findAll();
|
||||
foreach ($cats as $cat){
|
||||
$temp = [];
|
||||
$temp['id'] = $cat->getId();
|
||||
$temp['name'] = $cat->getName();
|
||||
$temp['code'] = $cat->getCode();
|
||||
$result[] = $temp;
|
||||
}
|
||||
return $this->json($result);
|
||||
}
|
||||
#[Route('/api/stack/insert', name: 'app_stack_content_insert')]
|
||||
public function app_stack_content_insert(Request $request,SerializerInterface $serializer, EntityManagerInterface $entityManager): JsonResponse
|
||||
{
|
||||
$params = [];
|
||||
if ($content = $request->getContent()) {
|
||||
$params = json_decode($content, true);
|
||||
}
|
||||
if(array_key_exists('title',$params) && array_key_exists('cat',$params) && array_key_exists('body',$params )){
|
||||
$cat = $entityManager->getRepository(StackCat::class)->find($params['cat']);
|
||||
$stack = new StackContent();
|
||||
$stack->setBody($params['body']);
|
||||
$stack->setCat($cat);
|
||||
$stack->setTitle($params['title']);
|
||||
$stack->setDateSubmit(time());
|
||||
$stack->setViews(0);
|
||||
$stack->setSubmitter($this->getUser());
|
||||
$stack->setUrl(str_replace(' ','_',$params['title']));
|
||||
$entityManager->persist($stack);
|
||||
$entityManager->flush();
|
||||
return $this->json([
|
||||
'error'=> 0,
|
||||
'message'=> 'ok',
|
||||
'url'=>$stack->getUrl()
|
||||
]);
|
||||
}
|
||||
return $this->json([
|
||||
'error'=> 999,
|
||||
'message'=> 'تمام موارد لازم را وارد کنید.'
|
||||
]);
|
||||
}
|
||||
|
||||
#[Route('/api/stack/replay/insert', name: 'app_stack_replay_insert')]
|
||||
public function app_stack_replay_insert(Jdate $jdate,Provider $provider,Request $request,SerializerInterface $serializer, EntityManagerInterface $entityManager): JsonResponse
|
||||
{
|
||||
$params = [];
|
||||
if ($content = $request->getContent()) {
|
||||
$params = json_decode($content, true);
|
||||
}
|
||||
if( array_key_exists('upper',$params) && array_key_exists('body',$params )){
|
||||
$upper = $entityManager->getRepository(StackContent::class)->findOneBy(['url'=>$params['upper']]);
|
||||
if(!$upper)
|
||||
throw $this->createNotFoundException();
|
||||
$stack = new StackContent();
|
||||
$stack->setUpper($upper);
|
||||
$stack->setBody($params['body']);
|
||||
$stack->setCat($upper->getCat());
|
||||
$stack->setTitle('پاسخ به: ' . $upper->getTitle());
|
||||
$stack->setDateSubmit(time());
|
||||
$stack->setViews(0);
|
||||
$stack->setSubmitter($this->getUser());
|
||||
$stack->setUrl('0');
|
||||
$entityManager->persist($stack);
|
||||
$entityManager->flush();
|
||||
return $this->json([
|
||||
'error'=> 0,
|
||||
'message'=> 'ok',
|
||||
'url'=>$stack->getUrl(),
|
||||
'data'=>[
|
||||
'id'=> $stack->getId(),
|
||||
'title' => $stack->getTitle(),
|
||||
'body' => $stack->getBody(),
|
||||
'submitter' => $stack->getSubmitter()->getFullName(),
|
||||
'dateSubmit' => $jdate->pastTime($stack->getDateSubmit()),
|
||||
'cat' => $stack->getCat()->getName(),
|
||||
'views' => $stack->getViews(),
|
||||
'url' => $stack->getUrl(),
|
||||
'submitter_gravatar_hash' => $provider->gravatarHash($stack->getSubmitter()->getEmail())
|
||||
]
|
||||
]);
|
||||
}
|
||||
return $this->json([
|
||||
'error'=> 999,
|
||||
'message'=> 'تمام موارد لازم را وارد کنید.',
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws \Doctrine\ORM\NonUniqueResultException
|
||||
* @throws \Doctrine\ORM\NoResultException
|
||||
*/
|
||||
#[Route('/api/stack/contents/search', name: 'app_stack_contents_get')]
|
||||
public function app_stack_contents_get(Jdate $jdate, Provider $provider,Request $request,SerializerInterface $serializer, EntityManagerInterface $entityManager): JsonResponse
|
||||
{
|
||||
$params = [];
|
||||
if ($content = $request->getContent()) {
|
||||
$params = json_decode($content, true);
|
||||
}
|
||||
$params = $provider->createSearchParams($request);
|
||||
$items = $entityManager->getRepository(StackContent::class)->search($params);
|
||||
$response = [];
|
||||
foreach ($items as $item){
|
||||
$temp = [];
|
||||
$temp['id'] = $item->getId();
|
||||
$temp['title'] = $item->getTitle();
|
||||
$temp['body'] = $item->getBody();
|
||||
$temp['submitter'] = $item->getSubmitter()->getFullName();
|
||||
$temp['dateSubmit'] = $jdate->pastTime($item->getDateSubmit());
|
||||
$temp['cat'] = $item->getCat()->getName();
|
||||
$temp['views'] = $item->getViews();
|
||||
$temp['url'] = $item->getUrl();
|
||||
$temp['replaysCount'] = $entityManager->getRepository(StackContent::class)->getCountReplaysOfQuestion($item);
|
||||
$replays = $entityManager->getRepository(StackContent::class)->getReplaysOfQuestion($item);
|
||||
$temp['lastReplayPerson'] = '';
|
||||
$temp['lastReplayDate'] = '';
|
||||
if(count($replays) != 0){
|
||||
$temp['lastReplayPerson'] = $replays[0]->getSubmitter()->getFullName();
|
||||
$temp['lastReplayDate'] = $jdate->pastTime($replays[0]->getDateSubmit());
|
||||
}
|
||||
$response[] = $temp;
|
||||
}
|
||||
return $this->json($response);
|
||||
}
|
||||
|
||||
#[Route('/api/stack/replays/search/{url}', name: 'app_stack_replays_get')]
|
||||
public function app_stack_replays_get($url,Jdate $jdate, Provider $provider,Request $request,SerializerInterface $serializer, EntityManagerInterface $entityManager): JsonResponse
|
||||
{
|
||||
$upper = $entityManager->getRepository(StackContent::class)->findOneBy(['url'=>$url]);
|
||||
if(!$upper)
|
||||
throw $this->createNotFoundException();
|
||||
$items = $entityManager->getRepository(StackContent::class)->findBy(
|
||||
[
|
||||
'upper'=>$upper,
|
||||
]
|
||||
);
|
||||
$response = [];
|
||||
foreach ($items as $item){
|
||||
$temp = [];
|
||||
$temp['id'] = $item->getId();
|
||||
$temp['title'] = $item->getTitle();
|
||||
$temp['body'] = $item->getBody();
|
||||
$temp['submitter'] = $item->getSubmitter()->getFullName();
|
||||
$temp['dateSubmit'] = $jdate->pastTime($item->getDateSubmit());
|
||||
$temp['cat'] = $item->getCat()->getName();
|
||||
$temp['views'] = $item->getViews();
|
||||
$temp['url'] = $item->getUrl();
|
||||
$temp['submitter_gravatar_hash'] = $provider->gravatarHash($item->getSubmitter()->getEmail());
|
||||
$response[] = $temp;
|
||||
}
|
||||
return $this->json($response);
|
||||
}
|
||||
|
||||
#[Route('/api/stack/content/get/{url}', name: 'app_stack_content_get')]
|
||||
public function app_stack_content_get($url,Jdate $jdate, Provider $provider,Request $request,SerializerInterface $serializer, EntityManagerInterface $entityManager): JsonResponse
|
||||
{
|
||||
$item = $entityManager->getRepository(StackContent::class)->findOneBy(['url'=>$url]);
|
||||
if(!$item)
|
||||
throw $this->createNotFoundException();
|
||||
$response = [];
|
||||
$response['id'] = $item->getId();
|
||||
$response['title'] = $item->getTitle();
|
||||
$response['body'] = $item->getBody();
|
||||
$response['submitter'] = $item->getSubmitter()->getFullName();
|
||||
$response['dateSubmit'] = $jdate->pastTime($item->getDateSubmit());
|
||||
$response['cat'] = $item->getCat()->getName();
|
||||
$response['views'] = $item->getViews();
|
||||
$response['url'] = $url;
|
||||
$response['submitter_gravatar_hash'] = $provider->gravatarHash($item->getSubmitter()->getEmail());
|
||||
return $this->json($response);
|
||||
}
|
||||
#[Route('/api/stack/content/getbyid/{id}', name: 'app_stack_content_get_by_id')]
|
||||
public function app_stack_content_get_by_id($id,Jdate $jdate, Provider $provider,Request $request,SerializerInterface $serializer, EntityManagerInterface $entityManager): JsonResponse
|
||||
{
|
||||
$item = $entityManager->getRepository(StackContent::class)->find($id);
|
||||
if(!$item)
|
||||
throw $this->createNotFoundException();
|
||||
$response = [];
|
||||
$response['id'] = $item->getId();
|
||||
$response['title'] = $item->getTitle();
|
||||
$response['body'] = $item->getBody();
|
||||
$response['submitter'] = $item->getSubmitter()->getFullName();
|
||||
$response['dateSubmit'] = $jdate->pastTime($item->getDateSubmit());
|
||||
$response['cat'] = $item->getCat()->getName();
|
||||
$response['views'] = $item->getViews();
|
||||
$response['url'] = $item->getUrl();
|
||||
$response['submitter_gravatar_hash'] = $provider->gravatarHash($item->getSubmitter()->getEmail());
|
||||
return $this->json($response);
|
||||
}
|
||||
#[Route('/api/stack/content/increase/view/{url}', name: 'app_stack_content_increase_view')]
|
||||
public function app_stack_content_increase_view($url,Jdate $jdate, Provider $provider,Request $request,SerializerInterface $serializer, EntityManagerInterface $entityManager): JsonResponse
|
||||
{
|
||||
$item = $entityManager->getRepository(StackContent::class)->findOneBy(['url'=>$url]);
|
||||
$item->setViews($item->getViews() + 1);
|
||||
$entityManager->persist($item);
|
||||
$entityManager->flush();
|
||||
return $this->json([
|
||||
'error' => 0,
|
||||
'result' => 'ok'
|
||||
]);
|
||||
}
|
||||
|
||||
#[Route('/api/stack/stat/get', name: 'app_stack_stat_get')]
|
||||
public function app_stack_stat_get(Jdate $jdate, Provider $provider,Request $request,SerializerInterface $serializer, EntityManagerInterface $entityManager): JsonResponse
|
||||
{
|
||||
|
||||
$response = [];
|
||||
$response['replayCount'] = $entityManager->getRepository(StackContent::class)->getAllReplayCount();
|
||||
$response['questionCount'] = $entityManager->getRepository(StackContent::class)->getStackCount();;
|
||||
return $this->json($response);
|
||||
}
|
||||
|
||||
#[Route('/api/stack/content/delete/{url}', name: 'app_stack_content_delete')]
|
||||
public function app_stack_content_delete($url,Jdate $jdate, Provider $provider,Request $request,SerializerInterface $serializer, EntityManagerInterface $entityManager): JsonResponse
|
||||
{
|
||||
$content = $entityManager->getRepository(StackContent::class)->findOneBy(['url'=>$url]);
|
||||
if(!$content)
|
||||
throw $this->createNotFoundException();
|
||||
if($content->getSubmitter() === $this->getUser()){
|
||||
if(! $content->getUpper()){
|
||||
$items = $entityManager->getRepository(StackContent::class)->findBy([
|
||||
'upper'=>$content,
|
||||
]);
|
||||
foreach ($items as $item){
|
||||
$entityManager->getRepository(StackContent::class)->remove($item,true);
|
||||
}
|
||||
}
|
||||
$entityManager->getRepository(StackContent::class)->remove($content,true);
|
||||
return $this->json([
|
||||
'error' => 0,
|
||||
'result' => 'ok'
|
||||
]);
|
||||
}
|
||||
throw $this->createAccessDeniedException();
|
||||
}
|
||||
|
||||
#[Route('/api/stack/content/deletebyid/{id}', name: 'app_stack_content_delete_by_id')]
|
||||
public function app_stack_content_delete_by_id($id,Jdate $jdate, Provider $provider,Request $request,SerializerInterface $serializer, EntityManagerInterface $entityManager): JsonResponse
|
||||
{
|
||||
$content = $entityManager->getRepository(StackContent::class)->find($id);
|
||||
if(!$content)
|
||||
throw $this->createNotFoundException();
|
||||
if($content->getSubmitter() === $this->getUser()){
|
||||
if(! $content->getUpper()){
|
||||
$items = $entityManager->getRepository(StackContent::class)->findBy([
|
||||
'upper'=>$content,
|
||||
]);
|
||||
foreach ($items as $item){
|
||||
$entityManager->getRepository(StackContent::class)->remove($item,true);
|
||||
}
|
||||
}
|
||||
$entityManager->getRepository(StackContent::class)->remove($content,true);
|
||||
return $this->json([
|
||||
'error' => 0,
|
||||
'result' => 'ok'
|
||||
]);
|
||||
}
|
||||
throw $this->createAccessDeniedException();
|
||||
}
|
||||
|
||||
#[Route('/api/stack/edit/{id}', name: 'app_stack_content_edit')]
|
||||
public function app_stack_content_edit($id,Request $request,SerializerInterface $serializer, EntityManagerInterface $entityManager): JsonResponse
|
||||
{
|
||||
$params = [];
|
||||
if ($content = $request->getContent()) {
|
||||
$params = json_decode($content, true);
|
||||
}
|
||||
if(array_key_exists('title',$params) && array_key_exists('cat',$params) && array_key_exists('body',$params )){
|
||||
$stack = $entityManager->getRepository(StackContent::class)->find($id);
|
||||
if(! $stack)
|
||||
throw $this->createNotFoundException();
|
||||
$cat = $entityManager->getRepository(StackCat::class)->find($params['cat']);
|
||||
$stack->setBody($params['body']);
|
||||
$stack->setCat($cat);
|
||||
$stack->setTitle($params['title']);
|
||||
$entityManager->persist($stack);
|
||||
$entityManager->flush();
|
||||
return $this->json([
|
||||
'error'=> 0,
|
||||
'message'=> 'ok',
|
||||
'url'=>$stack->getUrl()
|
||||
]);
|
||||
}
|
||||
return $this->json([
|
||||
'error'=> 999,
|
||||
'message'=> 'تمام موارد لازم را وارد کنید.'
|
||||
]);
|
||||
}
|
||||
}
|
|
@ -1,6 +1,7 @@
|
|||
<?php
|
||||
|
||||
namespace App\Controller;
|
||||
use App\Service\Provider;
|
||||
use Symfony\Component\Routing\Annotation\Route;
|
||||
use App\Entity\UserToken;
|
||||
use Exception;
|
||||
|
@ -69,13 +70,27 @@ class UserController extends AbstractController
|
|||
);
|
||||
}
|
||||
|
||||
#[Route('/api/user/get/permissions', name: 'api_user_get_permissions')]
|
||||
public function api_user_get_permissions(#[CurrentUser] ?User $user,EntityManagerInterface $entityManager): Response
|
||||
{
|
||||
if (null === $user) {
|
||||
return $this->json([
|
||||
'message' => 'missing credentials',
|
||||
], Response::HTTP_UNAUTHORIZED);
|
||||
}
|
||||
return $this->json(
|
||||
['is_login'=>true]
|
||||
);
|
||||
}
|
||||
|
||||
#[Route('/api/user/current/info', name: 'api_user_current_info')]
|
||||
public function api_user_current_info(#[CurrentUser] ?User $user,EntityManagerInterface $entityManager): Response
|
||||
public function api_user_current_info(#[CurrentUser] ?User $user,Provider $provider,EntityManagerInterface $entityManager): Response
|
||||
{
|
||||
return $this->json([
|
||||
'email'=>$user->getEmail(),
|
||||
'fullname'=>$user->getFullName(),
|
||||
'businessCount'=>count($user->getBusinesses())
|
||||
'businessCount'=>count($user->getBusinesses()),
|
||||
'hash_email'=> $provider->gravatarHash($user->getEmail())
|
||||
]);
|
||||
}
|
||||
|
||||
|
@ -114,13 +129,42 @@ class UserController extends AbstractController
|
|||
return $this->json(['result'=>true]);
|
||||
}
|
||||
|
||||
#[Route('/api/user/is_superadmin', name: 'api_user_is_super_admin')]
|
||||
public function api_user_is_super_admin(#[CurrentUser] ?User $user,EntityManagerInterface $entityManager,Request $request): Response
|
||||
{
|
||||
$this->denyAccessUnlessGranted('ROLE_ADMIN');
|
||||
return $this->json(['result'=>1]);
|
||||
}
|
||||
|
||||
#[Route('/api/user/change/password', name: 'api_user_change_password')]
|
||||
public function api_user_change_password(#[CurrentUser] ?User $user,UserPasswordHasherInterface $userPasswordHasher, EntityManagerInterface $entityManager,Request $request): Response
|
||||
{
|
||||
$params = [];
|
||||
if ($content = $request->getContent()) {
|
||||
$params = json_decode($content, true);
|
||||
}
|
||||
if($params['pass'] == $params['repass']){
|
||||
$user->setPassword(
|
||||
$userPasswordHasher->hashPassword(
|
||||
$user,
|
||||
$params['pass']
|
||||
)
|
||||
);
|
||||
$entityManager->persist($user);
|
||||
$entityManager->flush();
|
||||
return $this->json(['result'=>true]);
|
||||
}
|
||||
return $this->json(['result'=>false]);
|
||||
}
|
||||
|
||||
#[Route('/api/user/register', name: 'api_user_register')]
|
||||
public function api_user_register(Request $request, UserPasswordHasherInterface $userPasswordHasher, EntityManagerInterface $entityManager): Response
|
||||
{
|
||||
$user = new User();
|
||||
$user->setEmail('alizadeh.babak@gmail.com');
|
||||
$user->setRoles([]);
|
||||
$user->setEmail('alizadeh.babak@gmail.com1');
|
||||
$user->setRoles(['ROLE_ADMIN']);
|
||||
$user->setFullName('babak');
|
||||
$user->setDateRegister(time());
|
||||
$user->setPassword(
|
||||
$userPasswordHasher->hashPassword(
|
||||
$user,
|
||||
|
|
50
src/Entity/BlogCat.php
Normal file
50
src/Entity/BlogCat.php
Normal file
|
@ -0,0 +1,50 @@
|
|||
<?php
|
||||
|
||||
namespace App\Entity;
|
||||
|
||||
use App\Repository\BlogCatRepository;
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
|
||||
#[ORM\Entity(repositoryClass: BlogCatRepository::class)]
|
||||
class BlogCat
|
||||
{
|
||||
#[ORM\Id]
|
||||
#[ORM\GeneratedValue]
|
||||
#[ORM\Column]
|
||||
private ?int $id = null;
|
||||
|
||||
#[ORM\Column(length: 255)]
|
||||
private ?string $label = null;
|
||||
|
||||
#[ORM\Column(length: 255)]
|
||||
private ?string $code = null;
|
||||
|
||||
public function getId(): ?int
|
||||
{
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
public function getLabel(): ?string
|
||||
{
|
||||
return $this->label;
|
||||
}
|
||||
|
||||
public function setLabel(string $label): self
|
||||
{
|
||||
$this->label = $label;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getCode(): ?string
|
||||
{
|
||||
return $this->code;
|
||||
}
|
||||
|
||||
public function setCode(string $code): self
|
||||
{
|
||||
$this->code = $code;
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
112
src/Entity/GuideContent.php
Normal file
112
src/Entity/GuideContent.php
Normal file
|
@ -0,0 +1,112 @@
|
|||
<?php
|
||||
|
||||
namespace App\Entity;
|
||||
|
||||
use App\Repository\GuideContentRepository;
|
||||
use Doctrine\DBAL\Types\Types;
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
|
||||
#[ORM\Entity(repositoryClass: GuideContentRepository::class)]
|
||||
class GuideContent
|
||||
{
|
||||
#[ORM\Id]
|
||||
#[ORM\GeneratedValue]
|
||||
#[ORM\Column]
|
||||
private ?int $id = null;
|
||||
|
||||
#[ORM\Column(length: 255)]
|
||||
private ?string $cat = null;
|
||||
|
||||
#[ORM\Column(length: 255)]
|
||||
private ?string $title = null;
|
||||
|
||||
#[ORM\Column(type: Types::TEXT, nullable: true)]
|
||||
private ?string $body = null;
|
||||
|
||||
#[ORM\ManyToOne(inversedBy: 'guideContents')]
|
||||
#[ORM\JoinColumn(nullable: false)]
|
||||
private ?User $submiter = null;
|
||||
|
||||
#[ORM\Column(length: 25)]
|
||||
private ?string $dateSubmit = null;
|
||||
|
||||
#[ORM\Column(length: 255)]
|
||||
private ?string $url = null;
|
||||
|
||||
public function getId(): ?int
|
||||
{
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
public function getCat(): ?string
|
||||
{
|
||||
return $this->cat;
|
||||
}
|
||||
|
||||
public function setCat(string $cat): self
|
||||
{
|
||||
$this->cat = $cat;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getTitle(): ?string
|
||||
{
|
||||
return $this->title;
|
||||
}
|
||||
|
||||
public function setTitle(string $title): self
|
||||
{
|
||||
$this->title = $title;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getBody(): ?string
|
||||
{
|
||||
return $this->body;
|
||||
}
|
||||
|
||||
public function setBody(?string $body): self
|
||||
{
|
||||
$this->body = $body;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getSubmiter(): ?User
|
||||
{
|
||||
return $this->submiter;
|
||||
}
|
||||
|
||||
public function setSubmiter(?User $submiter): self
|
||||
{
|
||||
$this->submiter = $submiter;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getDateSubmit(): ?string
|
||||
{
|
||||
return $this->dateSubmit;
|
||||
}
|
||||
|
||||
public function setDateSubmit(string $dateSubmit): self
|
||||
{
|
||||
$this->dateSubmit = $dateSubmit;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getUrl(): ?string
|
||||
{
|
||||
return $this->url;
|
||||
}
|
||||
|
||||
public function setUrl(string $url): self
|
||||
{
|
||||
$this->url = $url;
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
90
src/Entity/StackCat.php
Normal file
90
src/Entity/StackCat.php
Normal file
|
@ -0,0 +1,90 @@
|
|||
<?php
|
||||
|
||||
namespace App\Entity;
|
||||
|
||||
use App\Repository\StackCatRepository;
|
||||
use Doctrine\Common\Collections\ArrayCollection;
|
||||
use Doctrine\Common\Collections\Collection;
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
|
||||
#[ORM\Entity(repositoryClass: StackCatRepository::class)]
|
||||
class StackCat
|
||||
{
|
||||
#[ORM\Id]
|
||||
#[ORM\GeneratedValue]
|
||||
#[ORM\Column]
|
||||
private ?int $id = null;
|
||||
|
||||
#[ORM\Column(length: 255)]
|
||||
private ?string $name = null;
|
||||
|
||||
#[ORM\Column(length: 255)]
|
||||
private ?string $code = null;
|
||||
|
||||
#[ORM\OneToMany(mappedBy: 'cat', targetEntity: StackContent::class, orphanRemoval: true)]
|
||||
private Collection $stackContents;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->stackContents = new ArrayCollection();
|
||||
}
|
||||
|
||||
public function getId(): ?int
|
||||
{
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
public function getName(): ?string
|
||||
{
|
||||
return $this->name;
|
||||
}
|
||||
|
||||
public function setName(string $name): self
|
||||
{
|
||||
$this->name = $name;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getCode(): ?string
|
||||
{
|
||||
return $this->code;
|
||||
}
|
||||
|
||||
public function setCode(string $code): self
|
||||
{
|
||||
$this->code = $code;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Collection<int, StackContent>
|
||||
*/
|
||||
public function getStackContents(): Collection
|
||||
{
|
||||
return $this->stackContents;
|
||||
}
|
||||
|
||||
public function addStackContent(StackContent $stackContent): self
|
||||
{
|
||||
if (!$this->stackContents->contains($stackContent)) {
|
||||
$this->stackContents->add($stackContent);
|
||||
$stackContent->setCat($this);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function removeStackContent(StackContent $stackContent): self
|
||||
{
|
||||
if ($this->stackContents->removeElement($stackContent)) {
|
||||
// set the owning side to null (unless already changed)
|
||||
if ($stackContent->getCat() === $this) {
|
||||
$stackContent->setCat(null);
|
||||
}
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
143
src/Entity/StackContent.php
Normal file
143
src/Entity/StackContent.php
Normal file
|
@ -0,0 +1,143 @@
|
|||
<?php
|
||||
|
||||
namespace App\Entity;
|
||||
|
||||
use App\Repository\StackContentRepository;
|
||||
use Doctrine\DBAL\Types\Types;
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
|
||||
#[ORM\Entity(repositoryClass: StackContentRepository::class)]
|
||||
class StackContent
|
||||
{
|
||||
#[ORM\Id]
|
||||
#[ORM\GeneratedValue]
|
||||
#[ORM\Column]
|
||||
private ?int $id = null;
|
||||
|
||||
#[ORM\ManyToOne(inversedBy: 'stackContents')]
|
||||
#[ORM\JoinColumn(nullable: false)]
|
||||
private ?User $submitter = null;
|
||||
|
||||
#[ORM\Column(length: 50)]
|
||||
private ?string $dateSubmit = null;
|
||||
|
||||
#[ORM\ManyToOne(inversedBy: 'stackContents')]
|
||||
#[ORM\JoinColumn(nullable: false)]
|
||||
private ?StackCat $cat = null;
|
||||
|
||||
#[ORM\Column(length: 255)]
|
||||
private ?string $title = null;
|
||||
|
||||
#[ORM\Column(type: Types::TEXT)]
|
||||
private ?string $body = null;
|
||||
|
||||
#[ORM\Column(type: Types::BIGINT)]
|
||||
private ?string $views = null;
|
||||
|
||||
#[ORM\Column(length: 255)]
|
||||
private ?string $url = null;
|
||||
|
||||
#[ORM\ManyToOne(targetEntity: self::class)]
|
||||
private ?self $upper = null;
|
||||
|
||||
public function getId(): ?int
|
||||
{
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
public function getSubmitter(): ?User
|
||||
{
|
||||
return $this->submitter;
|
||||
}
|
||||
|
||||
public function setSubmitter(?User $submitter): self
|
||||
{
|
||||
$this->submitter = $submitter;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getDateSubmit(): ?string
|
||||
{
|
||||
return $this->dateSubmit;
|
||||
}
|
||||
|
||||
public function setDateSubmit(string $dateSubmit): self
|
||||
{
|
||||
$this->dateSubmit = $dateSubmit;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getCat(): ?StackCat
|
||||
{
|
||||
return $this->cat;
|
||||
}
|
||||
|
||||
public function setCat(?StackCat $cat): self
|
||||
{
|
||||
$this->cat = $cat;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getTitle(): ?string
|
||||
{
|
||||
return $this->title;
|
||||
}
|
||||
|
||||
public function setTitle(string $title): self
|
||||
{
|
||||
$this->title = $title;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getBody(): ?string
|
||||
{
|
||||
return $this->body;
|
||||
}
|
||||
|
||||
public function setBody(string $body): self
|
||||
{
|
||||
$this->body = $body;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getViews(): ?string
|
||||
{
|
||||
return $this->views;
|
||||
}
|
||||
|
||||
public function setViews(string $views): self
|
||||
{
|
||||
$this->views = $views;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getUrl(): ?string
|
||||
{
|
||||
return $this->url;
|
||||
}
|
||||
|
||||
public function setUrl(string $url): self
|
||||
{
|
||||
$this->url = $url;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getUpper(): ?self
|
||||
{
|
||||
return $this->upper;
|
||||
}
|
||||
|
||||
public function setUpper(?self $upper): self
|
||||
{
|
||||
$this->upper = $upper;
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
|
@ -21,7 +21,7 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface
|
|||
private ?string $email = null;
|
||||
|
||||
#[ORM\Column]
|
||||
private array $roles = [];
|
||||
private array $roles = ['ROLE_ADMIN'];
|
||||
|
||||
/**
|
||||
* @var string The hashed password
|
||||
|
@ -41,10 +41,18 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface
|
|||
#[ORM\OneToMany(mappedBy: 'owner', targetEntity: Business::class, orphanRemoval: true)]
|
||||
private Collection $businesses;
|
||||
|
||||
#[ORM\OneToMany(mappedBy: 'submiter', targetEntity: GuideContent::class, orphanRemoval: true)]
|
||||
private Collection $guideContents;
|
||||
|
||||
#[ORM\OneToMany(mappedBy: 'submitter', targetEntity: StackContent::class, orphanRemoval: true)]
|
||||
private Collection $stackContents;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->userTokens = new ArrayCollection();
|
||||
$this->businesses = new ArrayCollection();
|
||||
$this->guideContents = new ArrayCollection();
|
||||
$this->stackContents = new ArrayCollection();
|
||||
}
|
||||
|
||||
public function getId(): ?int
|
||||
|
@ -200,4 +208,64 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface
|
|||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Collection<int, GuideContent>
|
||||
*/
|
||||
public function getGuideContents(): Collection
|
||||
{
|
||||
return $this->guideContents;
|
||||
}
|
||||
|
||||
public function addGuideContent(GuideContent $guideContent): self
|
||||
{
|
||||
if (!$this->guideContents->contains($guideContent)) {
|
||||
$this->guideContents->add($guideContent);
|
||||
$guideContent->setSubmiter($this);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function removeGuideContent(GuideContent $guideContent): self
|
||||
{
|
||||
if ($this->guideContents->removeElement($guideContent)) {
|
||||
// set the owning side to null (unless already changed)
|
||||
if ($guideContent->getSubmiter() === $this) {
|
||||
$guideContent->setSubmiter(null);
|
||||
}
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Collection<int, StackContent>
|
||||
*/
|
||||
public function getStackContents(): Collection
|
||||
{
|
||||
return $this->stackContents;
|
||||
}
|
||||
|
||||
public function addStackContent(StackContent $stackContent): self
|
||||
{
|
||||
if (!$this->stackContents->contains($stackContent)) {
|
||||
$this->stackContents->add($stackContent);
|
||||
$stackContent->setSubmitter($this);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function removeStackContent(StackContent $stackContent): self
|
||||
{
|
||||
if ($this->stackContents->removeElement($stackContent)) {
|
||||
// set the owning side to null (unless already changed)
|
||||
if ($stackContent->getSubmitter() === $this) {
|
||||
$stackContent->setSubmitter(null);
|
||||
}
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
|
|
66
src/Repository/BlogCatRepository.php
Normal file
66
src/Repository/BlogCatRepository.php
Normal file
|
@ -0,0 +1,66 @@
|
|||
<?php
|
||||
|
||||
namespace App\Repository;
|
||||
|
||||
use App\Entity\BlogCat;
|
||||
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
||||
use Doctrine\Persistence\ManagerRegistry;
|
||||
|
||||
/**
|
||||
* @extends ServiceEntityRepository<BlogCat>
|
||||
*
|
||||
* @method BlogCat|null find($id, $lockMode = null, $lockVersion = null)
|
||||
* @method BlogCat|null findOneBy(array $criteria, array $orderBy = null)
|
||||
* @method BlogCat[] findAll()
|
||||
* @method BlogCat[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
|
||||
*/
|
||||
class BlogCatRepository extends ServiceEntityRepository
|
||||
{
|
||||
public function __construct(ManagerRegistry $registry)
|
||||
{
|
||||
parent::__construct($registry, BlogCat::class);
|
||||
}
|
||||
|
||||
public function save(BlogCat $entity, bool $flush = false): void
|
||||
{
|
||||
$this->getEntityManager()->persist($entity);
|
||||
|
||||
if ($flush) {
|
||||
$this->getEntityManager()->flush();
|
||||
}
|
||||
}
|
||||
|
||||
public function remove(BlogCat $entity, bool $flush = false): void
|
||||
{
|
||||
$this->getEntityManager()->remove($entity);
|
||||
|
||||
if ($flush) {
|
||||
$this->getEntityManager()->flush();
|
||||
}
|
||||
}
|
||||
|
||||
// /**
|
||||
// * @return BlogCat[] Returns an array of BlogCat objects
|
||||
// */
|
||||
// public function findByExampleField($value): array
|
||||
// {
|
||||
// return $this->createQueryBuilder('b')
|
||||
// ->andWhere('b.exampleField = :val')
|
||||
// ->setParameter('val', $value)
|
||||
// ->orderBy('b.id', 'ASC')
|
||||
// ->setMaxResults(10)
|
||||
// ->getQuery()
|
||||
// ->getResult()
|
||||
// ;
|
||||
// }
|
||||
|
||||
// public function findOneBySomeField($value): ?BlogCat
|
||||
// {
|
||||
// return $this->createQueryBuilder('b')
|
||||
// ->andWhere('b.exampleField = :val')
|
||||
// ->setParameter('val', $value)
|
||||
// ->getQuery()
|
||||
// ->getOneOrNullResult()
|
||||
// ;
|
||||
// }
|
||||
}
|
66
src/Repository/GuideContentRepository.php
Normal file
66
src/Repository/GuideContentRepository.php
Normal file
|
@ -0,0 +1,66 @@
|
|||
<?php
|
||||
|
||||
namespace App\Repository;
|
||||
|
||||
use App\Entity\GuideContent;
|
||||
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
||||
use Doctrine\Persistence\ManagerRegistry;
|
||||
|
||||
/**
|
||||
* @extends ServiceEntityRepository<GuideContent>
|
||||
*
|
||||
* @method GuideContent|null find($id, $lockMode = null, $lockVersion = null)
|
||||
* @method GuideContent|null findOneBy(array $criteria, array $orderBy = null)
|
||||
* @method GuideContent[] findAll()
|
||||
* @method GuideContent[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
|
||||
*/
|
||||
class GuideContentRepository extends ServiceEntityRepository
|
||||
{
|
||||
public function __construct(ManagerRegistry $registry)
|
||||
{
|
||||
parent::__construct($registry, GuideContent::class);
|
||||
}
|
||||
|
||||
public function save(GuideContent $entity, bool $flush = false): void
|
||||
{
|
||||
$this->getEntityManager()->persist($entity);
|
||||
|
||||
if ($flush) {
|
||||
$this->getEntityManager()->flush();
|
||||
}
|
||||
}
|
||||
|
||||
public function remove(GuideContent $entity, bool $flush = false): void
|
||||
{
|
||||
$this->getEntityManager()->remove($entity);
|
||||
|
||||
if ($flush) {
|
||||
$this->getEntityManager()->flush();
|
||||
}
|
||||
}
|
||||
|
||||
// /**
|
||||
// * @return GuideContent[] Returns an array of GuideContent objects
|
||||
// */
|
||||
// public function findByExampleField($value): array
|
||||
// {
|
||||
// return $this->createQueryBuilder('g')
|
||||
// ->andWhere('g.exampleField = :val')
|
||||
// ->setParameter('val', $value)
|
||||
// ->orderBy('g.id', 'ASC')
|
||||
// ->setMaxResults(10)
|
||||
// ->getQuery()
|
||||
// ->getResult()
|
||||
// ;
|
||||
// }
|
||||
|
||||
// public function findOneBySomeField($value): ?GuideContent
|
||||
// {
|
||||
// return $this->createQueryBuilder('g')
|
||||
// ->andWhere('g.exampleField = :val')
|
||||
// ->setParameter('val', $value)
|
||||
// ->getQuery()
|
||||
// ->getOneOrNullResult()
|
||||
// ;
|
||||
// }
|
||||
}
|
66
src/Repository/StackCatRepository.php
Normal file
66
src/Repository/StackCatRepository.php
Normal file
|
@ -0,0 +1,66 @@
|
|||
<?php
|
||||
|
||||
namespace App\Repository;
|
||||
|
||||
use App\Entity\StackCat;
|
||||
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
||||
use Doctrine\Persistence\ManagerRegistry;
|
||||
|
||||
/**
|
||||
* @extends ServiceEntityRepository<StackCat>
|
||||
*
|
||||
* @method StackCat|null find($id, $lockMode = null, $lockVersion = null)
|
||||
* @method StackCat|null findOneBy(array $criteria, array $orderBy = null)
|
||||
* @method StackCat[] findAll()
|
||||
* @method StackCat[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
|
||||
*/
|
||||
class StackCatRepository extends ServiceEntityRepository
|
||||
{
|
||||
public function __construct(ManagerRegistry $registry)
|
||||
{
|
||||
parent::__construct($registry, StackCat::class);
|
||||
}
|
||||
|
||||
public function save(StackCat $entity, bool $flush = false): void
|
||||
{
|
||||
$this->getEntityManager()->persist($entity);
|
||||
|
||||
if ($flush) {
|
||||
$this->getEntityManager()->flush();
|
||||
}
|
||||
}
|
||||
|
||||
public function remove(StackCat $entity, bool $flush = false): void
|
||||
{
|
||||
$this->getEntityManager()->remove($entity);
|
||||
|
||||
if ($flush) {
|
||||
$this->getEntityManager()->flush();
|
||||
}
|
||||
}
|
||||
|
||||
// /**
|
||||
// * @return StackCat[] Returns an array of StackCat objects
|
||||
// */
|
||||
// public function findByExampleField($value): array
|
||||
// {
|
||||
// return $this->createQueryBuilder('s')
|
||||
// ->andWhere('s.exampleField = :val')
|
||||
// ->setParameter('val', $value)
|
||||
// ->orderBy('s.id', 'ASC')
|
||||
// ->setMaxResults(10)
|
||||
// ->getQuery()
|
||||
// ->getResult()
|
||||
// ;
|
||||
// }
|
||||
|
||||
// public function findOneBySomeField($value): ?StackCat
|
||||
// {
|
||||
// return $this->createQueryBuilder('s')
|
||||
// ->andWhere('s.exampleField = :val')
|
||||
// ->setParameter('val', $value)
|
||||
// ->getQuery()
|
||||
// ->getOneOrNullResult()
|
||||
// ;
|
||||
// }
|
||||
}
|
112
src/Repository/StackContentRepository.php
Normal file
112
src/Repository/StackContentRepository.php
Normal file
|
@ -0,0 +1,112 @@
|
|||
<?php
|
||||
|
||||
namespace App\Repository;
|
||||
|
||||
use App\Entity\StackContent;
|
||||
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
||||
use Doctrine\Persistence\ManagerRegistry;
|
||||
|
||||
/**
|
||||
* @extends ServiceEntityRepository<StackContent>
|
||||
*
|
||||
* @method StackContent|null find($id, $lockMode = null, $lockVersion = null)
|
||||
* @method StackContent|null findOneBy(array $criteria, array $orderBy = null)
|
||||
* @method StackContent[] findAll()
|
||||
* @method StackContent[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
|
||||
*/
|
||||
class StackContentRepository extends ServiceEntityRepository
|
||||
{
|
||||
public function __construct(ManagerRegistry $registry)
|
||||
{
|
||||
parent::__construct($registry, StackContent::class);
|
||||
}
|
||||
|
||||
public function save(StackContent $entity, bool $flush = false): void
|
||||
{
|
||||
$this->getEntityManager()->persist($entity);
|
||||
|
||||
if ($flush) {
|
||||
$this->getEntityManager()->flush();
|
||||
}
|
||||
}
|
||||
|
||||
public function remove(StackContent $entity, bool $flush = false): void
|
||||
{
|
||||
$this->getEntityManager()->remove($entity);
|
||||
|
||||
if ($flush) {
|
||||
$this->getEntityManager()->flush();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* @return StackContent[]
|
||||
*/
|
||||
public function search($params): array
|
||||
{
|
||||
return $this->createQueryBuilder('s')
|
||||
->setMaxResults($params['count'])
|
||||
->setFirstResult(($params['page'] -1) * $params['count'])
|
||||
->orWhere('s.body LIKE :key')
|
||||
->andWhere('s.upper is NULL')
|
||||
->orderBy('s.id', 'DESC')
|
||||
->setParameter('key','%' . $params['key'] . '%')
|
||||
->getQuery()
|
||||
->getResult()
|
||||
;
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws \Doctrine\ORM\NonUniqueResultException
|
||||
* @throws \Doctrine\ORM\NoResultException
|
||||
*/
|
||||
public function getStackCount(): int{
|
||||
return $this->createQueryBuilder('s')
|
||||
->select('count(s.id)')
|
||||
->andWhere('s.upper is NULL')
|
||||
->getQuery()
|
||||
->getSingleScalarResult()
|
||||
;
|
||||
}
|
||||
/**
|
||||
* @throws \Doctrine\ORM\NonUniqueResultException
|
||||
* @throws \Doctrine\ORM\NoResultException
|
||||
*/
|
||||
public function getAllReplayCount(): int{
|
||||
return $this->createQueryBuilder('s')
|
||||
->select('count(s.id)')
|
||||
->andWhere('s.upper IS NOT NULL')
|
||||
->getQuery()
|
||||
->getSingleScalarResult()
|
||||
;
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws \Doctrine\ORM\NonUniqueResultException
|
||||
* @throws \Doctrine\ORM\NoResultException
|
||||
*/
|
||||
public function getCountReplaysOfQuestion(StackContent $upper): int{
|
||||
return $this->createQueryBuilder('s')
|
||||
->select('count(s.id)')
|
||||
->andWhere('s.upper = :upper')
|
||||
->setParameter('upper' , $upper)
|
||||
->getQuery()
|
||||
->getSingleScalarResult()
|
||||
;
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws \Doctrine\ORM\NonUniqueResultException
|
||||
* @throws \Doctrine\ORM\NoResultException
|
||||
*/
|
||||
public function getReplaysOfQuestion(StackContent $upper): array{
|
||||
return $this->createQueryBuilder('s')
|
||||
->select('s')
|
||||
->andWhere('s.upper = :upper')
|
||||
->setParameter('upper' , $upper)
|
||||
->getQuery()
|
||||
->getResult()
|
||||
;
|
||||
}
|
||||
|
||||
}
|
595
src/Service/Jdate.php
Normal file
595
src/Service/Jdate.php
Normal file
|
@ -0,0 +1,595 @@
|
|||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: babak
|
||||
* Date: 05/06/2018
|
||||
* Time: 08:26 AM
|
||||
*/
|
||||
namespace App\Service;
|
||||
|
||||
class Jdate
|
||||
{
|
||||
public function shamsiDate($nyear,$nmoon,$nday)
|
||||
{
|
||||
$reg_day = jdate("d","now");
|
||||
$reg_moon = jdate("m","now");
|
||||
$reg_year = jdate("y","now");
|
||||
|
||||
$end_year = jdate("y",jmaketime(0,0,0,$reg_moon+$nmoon,$reg_day+$nday,$reg_year+1300+$nyear));
|
||||
$end_moon = jdate("m",jmaketime(0,0,0,$reg_moon+$nmoon,$reg_day+$nday,$reg_year+1300+$nyear));
|
||||
$end_day = jdate("d",jmaketime(0,0,0,$reg_moon+$nmoon,$reg_day+$nday,$reg_year+1300+$nyear));
|
||||
|
||||
if ($end_year < 10) $end_year = '0'.$end_year;
|
||||
if ($end_moon < 10) $end_moon = '0'.$end_moon;
|
||||
if ($end_day < 10) $end_day = '0'.$end_day;
|
||||
|
||||
$new_date = $end_year."/". $end_moon ."/".$end_day;
|
||||
|
||||
return $new_date;
|
||||
}
|
||||
|
||||
public function GetTodayDate()
|
||||
{
|
||||
return $this->jdate('Y/m/d',time());
|
||||
}
|
||||
public function time(){
|
||||
return time();
|
||||
}
|
||||
public function fa2en($string) {
|
||||
return strtr($string, array('۰'=>'0', '۱'=>'1', '۲'=>'2', '۳'=>'3', '۴'=>'4', '۵'=>'5', '۶'=>'6', '۷'=>'7', '۸'=>'8', '۹'=>'9', '٠'=>'0', '١'=>'1', '٢'=>'2', '٣'=>'3', '٤'=>'4', '٥'=>'5', '٦'=>'6', '٧'=>'7', '٨'=>'8', '٩'=>'9'));
|
||||
}
|
||||
public function jallaliToUnixTime($stringTime,$persianNum=true)
|
||||
{
|
||||
if($persianNum)
|
||||
$stringTime = $this->fa2en($stringTime);
|
||||
$ymd = explode('/',$stringTime);
|
||||
$greDate = $this->jalali_to_gregorian($ymd[0],$ymd[1],$ymd[2]);
|
||||
return strtotime($greDate[0].'/'.$greDate[1] . '/' .$greDate[2]);
|
||||
}
|
||||
/* F */
|
||||
public function jdate($format,$timestamp='',$none='',$time_zone='Asia/Tehran',$tr_num='en'){
|
||||
$T_sec=0;/* <= رفع خطاي زمان سرور ، با اعداد '+' و '-' بر حسب ثانيه */
|
||||
if($time_zone!='local')date_default_timezone_set(($time_zone==='')?'Asia/Tehran':$time_zone);
|
||||
$ts=$T_sec+(($timestamp==='')?time():$this->tr_num($timestamp));
|
||||
$date=explode('_',date('H_i_j_n_O_P_s_w_Y',$ts));
|
||||
list($j_y,$j_m,$j_d)=$this->gregorian_to_jalali($date[8],$date[3],$date[2]);
|
||||
$doy=($j_m<7)?(($j_m-1)*31)+$j_d-1:(($j_m-7)*30)+$j_d+185;
|
||||
$kab=(((($j_y%33)%4)-1)==((int)(($j_y%33)*0.05)))?1:0;
|
||||
$sl=strlen($format);
|
||||
$out='';
|
||||
for($i=0; $i<$sl; $i++){
|
||||
$sub=substr($format,$i,1);
|
||||
if($sub=='\\'){
|
||||
$out.=substr($format,++$i,1);
|
||||
continue;
|
||||
}
|
||||
switch($sub){
|
||||
case'E':case'R':case'x':case'X':
|
||||
$out.='http://jdf.scr.ir';
|
||||
break;
|
||||
case'B':case'e':case'g':
|
||||
case'G':case'h':case'I':
|
||||
case'T':case'u':case'Z':
|
||||
$out.=date($sub,$ts);
|
||||
break;
|
||||
case'a':
|
||||
$out.=($date[0]<12)?'ق.ظ':'ب.ظ';
|
||||
break;
|
||||
case'A':
|
||||
$out.=($date[0]<12)?'قبل از ظهر':'بعد از ظهر';
|
||||
break;
|
||||
case'b':
|
||||
$out.=(int)($j_m/3.1)+1;
|
||||
break;
|
||||
case'c':
|
||||
$out.=$j_y.'/'.$j_m.'/'.$j_d.' ،'.$date[0].':'.$date[1].':'.$date[6].' '.$date[5];
|
||||
break;
|
||||
case'C':
|
||||
$out.=(int)(($j_y+99)/100);
|
||||
break;
|
||||
case'd':
|
||||
$out.=($j_d<10)?'0'.$j_d:$j_d;
|
||||
break;
|
||||
case'D':
|
||||
$out.=$this->jdate_words(array('kh'=>$date[7]),' ');
|
||||
break;
|
||||
case'f':
|
||||
$out.=$this->jdate_words(array('ff'=>$j_m),' ');
|
||||
break;
|
||||
case'F':
|
||||
$out.=$this->jdate_words(array('mm'=>$j_m),' ');
|
||||
break;
|
||||
case'H':
|
||||
$out.=$date[0];
|
||||
break;
|
||||
case'i':
|
||||
$out.=$date[1];
|
||||
break;
|
||||
case'j':
|
||||
$out.=$j_d;
|
||||
break;
|
||||
case'J':
|
||||
$out.=$this->jdate_words(array('rr'=>$j_d),' ');
|
||||
break;
|
||||
case'k';
|
||||
$out.=$this->tr_num(100-(int)($doy/($kab+365)*1000)/10,$$this->tr_num);
|
||||
break;
|
||||
case'K':
|
||||
$out.=$this->tr_num((int)($doy/($kab+365)*1000)/10,$tr_num);
|
||||
break;
|
||||
case'l':
|
||||
$out.=$this->jdate_words(array('rh'=>$date[7]),' ');
|
||||
break;
|
||||
case'L':
|
||||
$out.=$kab;
|
||||
break;
|
||||
case'm':
|
||||
$out.=$this->tr_num(($j_m>9)?$j_m:'0'.$j_m,$tr_num);
|
||||
break;
|
||||
case'M':
|
||||
$out.=$this->jdate_words(array('km'=>$j_m),' ');
|
||||
break;
|
||||
case'n':
|
||||
$out.=$j_m;
|
||||
break;
|
||||
case'N':
|
||||
$out.=$date[7]+1;
|
||||
break;
|
||||
case'o':
|
||||
$jdw=($date[7]==6)?0:$date[7]+1;
|
||||
$dny=364+$kab-$doy;
|
||||
$out.=($jdw>($doy+3) and $doy<3)?$j_y-1:(((3-$dny)>$jdw and $dny<3)?$j_y+1:$j_y);
|
||||
break;
|
||||
case'O':
|
||||
$out.=$date[4];
|
||||
break;
|
||||
case'p':
|
||||
$out.=$this->jdate_words(array('mb'=>$j_m),' ');
|
||||
break;
|
||||
case'P':
|
||||
$out.=$date[5];
|
||||
break;
|
||||
case'q':
|
||||
$out.=$this->jdate_words(array('sh'=>$j_y),' ');
|
||||
break;
|
||||
case'Q':
|
||||
$out.=$kab+364-$doy;
|
||||
break;
|
||||
case'r':
|
||||
$key=$this->jdate_words(array('rh'=>$date[7],'mm'=>$j_m));
|
||||
$out.=$date[0].':'.$date[1].':'.$date[6].' '.$date[4].' '.$key['rh'].'، '.$j_d.' '.$key['mm'].' '.$j_y;
|
||||
break;
|
||||
case's':
|
||||
$out.=$date[6];
|
||||
break;
|
||||
case'S':
|
||||
$out.='ام';
|
||||
break;
|
||||
case't':
|
||||
$out.=($j_m!=12)?(31-(int)($j_m/6.5)):($kab+29);
|
||||
break;
|
||||
case'U':
|
||||
$out.=$ts;
|
||||
break;
|
||||
case'v':
|
||||
$out.=$this->jdate_words(array('ss'=>($j_y%100)),' ');
|
||||
break;
|
||||
case'V':
|
||||
$out.=$this->jdate_words(array('ss'=>$j_y),' ');
|
||||
break;
|
||||
case'w':
|
||||
$out.=($date[7]==6)?0:$date[7]+1;
|
||||
break;
|
||||
case'W':
|
||||
$avs=(($date[7]==6)?0:$date[7]+1)-($doy%7);
|
||||
if($avs<0)$avs+=7;
|
||||
$num=(int)(($doy+$avs)/7);
|
||||
if($avs<4){
|
||||
$num++;
|
||||
}elseif($num<1){
|
||||
$num=($avs==4 or $avs==((((($j_y%33)%4)-2)==((int)(($j_y%33)*0.05)))?5:4))?53:52;
|
||||
}
|
||||
$aks=$avs+$kab;
|
||||
if($aks==7)$aks=0;
|
||||
$out.=(($kab+363-$doy)<$aks and $aks<3)?'01':(($num<10)?'0'.$num:$num);
|
||||
break;
|
||||
case'y':
|
||||
$out.=substr($j_y,2,2);
|
||||
break;
|
||||
case'Y':
|
||||
$out.=$j_y;
|
||||
break;
|
||||
case'z':
|
||||
$out.=$doy;
|
||||
break;
|
||||
default:$out.=$sub;
|
||||
}
|
||||
}
|
||||
return($tr_num!='en')?$this->tr_num($out,'fa','.'):$out;
|
||||
}
|
||||
/* F */
|
||||
public function jstrftime($format,$timestamp='',$none='',$time_zone='Asia/Tehran',$tr_num='fa'){
|
||||
$T_sec=0;/* <= رفع خطاي زمان سرور ، با اعداد '+' و '-' بر حسب ثانيه */
|
||||
if($time_zone!='local')date_default_timezone_set(($time_zone==='')?'Asia/Tehran':$time_zone);
|
||||
$ts=$T_sec+(($timestamp==='')?time():tr_num($timestamp));
|
||||
$date=explode('_',date('h_H_i_j_n_s_w_Y',$ts));
|
||||
list($j_y,$j_m,$j_d)=$this->gregorian_to_jalali($date[7],$date[4],$date[3]);
|
||||
$doy=($j_m<7)?(($j_m-1)*31)+$j_d-1:(($j_m-7)*30)+$j_d+185;
|
||||
$kab=(((($j_y%33)%4)-1)==((int)(($j_y%33)*0.05)))?1:0;
|
||||
$sl=strlen($format);
|
||||
$out='';
|
||||
for($i=0; $i<$sl; $i++){
|
||||
$sub=substr($format,$i,1);
|
||||
if($sub=='%'){
|
||||
$sub=substr($format,++$i,1);
|
||||
}else{
|
||||
$out.=$sub;
|
||||
continue;
|
||||
}
|
||||
switch($sub){
|
||||
/* Day */
|
||||
case'a':
|
||||
$out.=$this->jdate_words(array('kh'=>$date[6]),' ');
|
||||
break;
|
||||
case'A':
|
||||
$out.=$this->jdate_words(array('rh'=>$date[6]),' ');
|
||||
break;
|
||||
case'd':
|
||||
$out.=($j_d<10)?'0'.$j_d:$j_d;
|
||||
break;
|
||||
case'e':
|
||||
$out.=($j_d<10)?' '.$j_d:$j_d;
|
||||
break;
|
||||
case'j':
|
||||
$out.=str_pad($doy+1,3,0,STR_PAD_LEFT);
|
||||
break;
|
||||
case'u':
|
||||
$out.=$date[6]+1;
|
||||
break;
|
||||
case'w':
|
||||
$out.=($date[6]==6)?0:$date[6]+1;
|
||||
break;
|
||||
/* Week */
|
||||
case'U':
|
||||
$avs=(($date[6]<5)?$date[6]+2:$date[6]-5)-($doy%7);
|
||||
if($avs<0)$avs+=7;
|
||||
$num=(int)(($doy+$avs)/7)+1;
|
||||
if($avs>3 or $avs==1)$num--;
|
||||
$out.=($num<10)?'0'.$num:$num;
|
||||
break;
|
||||
case'V':
|
||||
$avs=(($date[6]==6)?0:$date[6]+1)-($doy%7);
|
||||
if($avs<0)$avs+=7;
|
||||
$num=(int)(($doy+$avs)/7);
|
||||
if($avs<4){
|
||||
$num++;
|
||||
}elseif($num<1){
|
||||
$num=($avs==4 or $avs==((((($j_y%33)%4)-2)==((int)(($j_y%33)*0.05)))?5:4))?53:52;
|
||||
}
|
||||
$aks=$avs+$kab;
|
||||
if($aks==7)$aks=0;
|
||||
$out.=(($kab+363-$doy)<$aks and $aks<3)?'01':(($num<10)?'0'.$num:$num);
|
||||
break;
|
||||
case'W':
|
||||
$avs=(($date[6]==6)?0:$date[6]+1)-($doy%7);
|
||||
if($avs<0)$avs+=7;
|
||||
$num=(int)(($doy+$avs)/7)+1;
|
||||
if($avs>3)$num--;
|
||||
$out.=($num<10)?'0'.$num:$num;
|
||||
break;
|
||||
/* Month */
|
||||
case'b':
|
||||
case'h':
|
||||
$out.=$this->jdate_words(array('km'=>$j_m),' ');
|
||||
break;
|
||||
case'B':
|
||||
$out.=$this->jdate_words(array('mm'=>$j_m),' ');
|
||||
break;
|
||||
case'm':
|
||||
$out.=($j_m>9)?$j_m:'0'.$j_m;
|
||||
break;
|
||||
/* Year */
|
||||
case'C':
|
||||
$tmp=(int)($j_y/100);
|
||||
$out.=($tmp>9)?$tmp:'0'.$tmp;
|
||||
break;
|
||||
case'g':
|
||||
$jdw=($date[6]==6)?0:$date[6]+1;
|
||||
$dny=364+$kab-$doy;
|
||||
$out.=substr(($jdw>($doy+3) and $doy<3)?$j_y-1:(((3-$dny)>$jdw and $dny<3)?$j_y+1:$j_y),2,2);
|
||||
break;
|
||||
case'G':
|
||||
$jdw=($date[6]==6)?0:$date[6]+1;
|
||||
$dny=364+$kab-$doy;
|
||||
$out.=($jdw>($doy+3) and $doy<3)?$j_y-1:(((3-$dny)>$jdw and $dny<3)?$j_y+1:$j_y);
|
||||
break;
|
||||
case'y':
|
||||
$out.=substr($j_y,2,2);
|
||||
break;
|
||||
case'Y':
|
||||
$out.=$j_y;
|
||||
break;
|
||||
/* Time */
|
||||
case'H':
|
||||
$out.=$date[1];
|
||||
break;
|
||||
case'I':
|
||||
$out.=$date[0];
|
||||
break;
|
||||
case'l':
|
||||
$out.=($date[0]>9)?$date[0]:' '.(int)$date[0];
|
||||
break;
|
||||
case'M':
|
||||
$out.=$date[2];
|
||||
break;
|
||||
case'p':
|
||||
$out.=($date[1]<12)?'قبل از ظهر':'بعد از ظهر';
|
||||
break;
|
||||
case'P':
|
||||
$out.=($date[1]<12)?'ق.ظ':'ب.ظ';
|
||||
break;
|
||||
case'r':
|
||||
$out.=$date[0].':'.$date[2].':'.$date[5].' '.(($date[1]<12)?'قبل از ظهر':'بعد از ظهر');
|
||||
break;
|
||||
case'R':
|
||||
$out.=$date[1].':'.$date[2];
|
||||
break;
|
||||
case'S':
|
||||
$out.=$date[5];
|
||||
break;
|
||||
case'T':
|
||||
$out.=$date[1].':'.$date[2].':'.$date[5];
|
||||
break;
|
||||
case'X':
|
||||
$out.=$date[0].':'.$date[2].':'.$date[5];
|
||||
break;
|
||||
case'z':
|
||||
$out.=date('O',$ts);
|
||||
break;
|
||||
case'Z':
|
||||
$out.=date('T',$ts);
|
||||
break;
|
||||
/* Time and Date Stamps */
|
||||
case'c':
|
||||
$key=$this->jdate_words(array('rh'=>$date[6],'mm'=>$j_m));
|
||||
$out.=$date[1].':'.$date[2].':'.$date[5].' '.date('P',$ts).' '.$key['rh'].'، '.$j_d.' '.$key['mm'].' '.$j_y;
|
||||
break;
|
||||
case'D':
|
||||
$out.=substr($j_y,2,2).'/'.(($j_m>9)?$j_m:'0'.$j_m).'/'.(($j_d<10)?'0'.$j_d:$j_d);
|
||||
break;
|
||||
case'F':
|
||||
$out.=$j_y.'-'.(($j_m>9)?$j_m:'0'.$j_m).'-'.(($j_d<10)?'0'.$j_d:$j_d);
|
||||
break;
|
||||
case's':
|
||||
$out.=$ts;
|
||||
break;
|
||||
case'x':
|
||||
$out.=substr($j_y,2,2).'/'.(($j_m>9)?$j_m:'0'.$j_m).'/'.(($j_d<10)?'0'.$j_d:$j_d);
|
||||
break;
|
||||
/* Miscellaneous */
|
||||
case'n':
|
||||
$out.="\n";
|
||||
break;
|
||||
case't':
|
||||
$out.="\t";
|
||||
break;
|
||||
case'%':
|
||||
$out.='%';
|
||||
break;
|
||||
default:$out.=$sub;
|
||||
}
|
||||
}
|
||||
return($tr_num!='en')?tr_num($out,'fa','.'):$out;
|
||||
}
|
||||
/* F */
|
||||
public function jmktime($h='',$m='',$s='',$jm='',$jd='',$jy='',$none='',$timezone='Asia/Tehran'){
|
||||
if($timezone!='local')date_default_timezone_set($timezone);
|
||||
if($h===''){
|
||||
return time();
|
||||
}else{
|
||||
list($h,$m,$s,$jm,$jd,$jy)=explode('_',$this->tr_num($h.'_'.$m.'_'.$s.'_'.$jm.'_'.$jd.'_'.$jy));
|
||||
if($m===''){
|
||||
return mktime($h);
|
||||
}else{
|
||||
if($s===''){
|
||||
return mktime($h,$m);
|
||||
}else{
|
||||
if($jm===''){
|
||||
return mktime($h,$m,$s);
|
||||
}else{
|
||||
$jdate=explode('_',$this->jdate('Y_j','','',$timezone,'en'));
|
||||
if($jd===''){
|
||||
list($gy,$gm,$gd)=$this->jalali_to_gregorian($jdate[0],$jm,$jdate[1]);
|
||||
return mktime($h,$m,$s,$gm);
|
||||
}else{
|
||||
if($jy===''){
|
||||
list($gy,$gm,$gd)=$this->jalali_to_gregorian($jdate[0],$jm,$jd);
|
||||
return mktime($h,$m,$s,$gm,$gd);
|
||||
}else{
|
||||
list($gy,$gm,$gd)=$this->jalali_to_gregorian($jy,$jm,$jd);
|
||||
return mktime($h,$m,$s,$gm,$gd,$gy);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/* F */
|
||||
public function jgetdate($timestamp='',$none='',$timezone='Asia/Tehran',$tn='en'){
|
||||
$ts=($timestamp==='')?time():$this->tr_num($timestamp);
|
||||
$jdate=explode('_',jdate('F_G_i_j_l_n_s_w_Y_z',$ts,'',$timezone,$tn));
|
||||
return array(
|
||||
'seconds'=>$this->tr_num((int)$this->tr_num($jdate[6]),$tn),
|
||||
'minutes'=>$this->tr_num((int)$this->tr_num($jdate[2]),$tn),
|
||||
'hours'=>$jdate[1],
|
||||
'mday'=>$jdate[3],
|
||||
'wday'=>$jdate[7],
|
||||
'mon'=>$jdate[5],
|
||||
'year'=>$jdate[8],
|
||||
'yday'=>$jdate[9],
|
||||
'weekday'=>$jdate[4],
|
||||
'month'=>$jdate[0],
|
||||
0=>$this->tr_num($ts,$tn)
|
||||
);
|
||||
}
|
||||
/* F */
|
||||
public function jcheckdate($jm,$jd,$jy){
|
||||
list($jm,$jd,$jy)=explode('_',$this->tr_num($jm.'_'.$jd.'_'.$jy));
|
||||
$l_d=($jm==12)?((((($jy%33)%4)-1)==((int)(($jy%33)*0.05)))?30:29):31-(int)($jm/6.5);
|
||||
return($jm>12 or $jd>$l_d or $jm<1 or $jd<1 or $jy<1)?false:true;
|
||||
}
|
||||
/* F */
|
||||
public function tr_num($str,$mod='en',$mf='٫'){
|
||||
$num_a=array('0','1','2','3','4','5','6','7','8','9','.');
|
||||
$key_a=array('۰','۱','۲','۳','۴','۵','۶','۷','۸','۹',$mf);
|
||||
return($mod=='fa')?str_replace($num_a,$key_a,$str):str_replace($key_a,$num_a,$str);
|
||||
}
|
||||
/* F */
|
||||
public function jdate_words($array,$mod=''){
|
||||
foreach($array as $type=>$num){
|
||||
$num=(int)$this->tr_num($num);
|
||||
switch($type){
|
||||
case'ss':
|
||||
$sl=strlen($num);
|
||||
$xy3=substr($num,2-$sl,1);
|
||||
$h3=$h34=$h4='';
|
||||
if($xy3==1){
|
||||
$p34='';
|
||||
$k34=array('ده','یازده','دوازده','سیزده','چهارده','پانزده','شانزده','هفده','هجده','نوزده');
|
||||
$h34=$k34[substr($num,2-$sl,2)-10];
|
||||
}else{
|
||||
$xy4=substr($num,3-$sl,1);
|
||||
$p34=($xy3==0 or $xy4==0)?'':' و ';
|
||||
$k3=array('','','بیست','سی','چهل','پنجاه','شصت','هفتاد','هشتاد','نود');
|
||||
$h3=$k3[$xy3];
|
||||
$k4=array('','یک','دو','سه','چهار','پنج','شش','هفت','هشت','نه');
|
||||
$h4=$k4[$xy4];
|
||||
}
|
||||
$array[$type]=(($num>99)?str_replace(array('12','13','14','19','20')
|
||||
,array('هزار و دویست','هزار و سیصد','هزار و چهارصد','هزار و نهصد','دوهزار')
|
||||
,substr($num,0,2)).((substr($num,2,2)=='00')?'':' و '):'').$h3.$p34.$h34.$h4;
|
||||
break;
|
||||
case'mm':
|
||||
$key=array('فروردین','اردیبهشت','خرداد','تیر','مرداد','شهریور','مهر','آبان','آذر','دی','بهمن','اسفند');
|
||||
$array[$type]=$key[$num-1];
|
||||
break;
|
||||
case'rr':
|
||||
$key=array('یک','دو','سه','چهار','پنج','شش','هفت','هشت','نه','ده','یازده','دوازده','سیزده'
|
||||
,'چهارده','پانزده','شانزده','هفده','هجده','نوزده','بیست','بیست و یک','بیست و دو','بیست و سه'
|
||||
,'بیست و چهار','بیست و پنج','بیست و شش','بیست و هفت','بیست و هشت','بیست و نه','سی','سی و یک');
|
||||
$array[$type]=$key[$num-1];
|
||||
break;
|
||||
case'rh':
|
||||
$key=array('یکشنبه','دوشنبه','سه شنبه','چهارشنبه','پنجشنبه','جمعه','شنبه');
|
||||
$array[$type]=$key[$num];
|
||||
break;
|
||||
case'sh':
|
||||
$key=array('مار','اسب','گوسفند','میمون','مرغ','سگ','خوک','موش','گاو','پلنگ','خرگوش','نهنگ');
|
||||
$array[$type]=$key[$num%12];
|
||||
break;
|
||||
case'mb':
|
||||
$key=array('حمل','ثور','جوزا','سرطان','اسد','سنبله','میزان','عقرب','قوس','جدی','دلو','حوت');
|
||||
$array[$type]=$key[$num-1];
|
||||
break;
|
||||
case'ff':
|
||||
$key=array('بهار','تابستان','پاییز','زمستان');
|
||||
$array[$type]=$key[(int)($num/3.1)];
|
||||
break;
|
||||
case'km':
|
||||
$key=array('فر','ار','خر','تی','مر','شه','مه','آب','آذ','دی','به','اس');
|
||||
$array[$type]=$key[$num-1];
|
||||
break;
|
||||
case'kh':
|
||||
$key=array('ی','د','س','چ','پ','ج','ش');
|
||||
$array[$type]=$key[$num];
|
||||
break;
|
||||
default:$array[$type]=$num;
|
||||
}
|
||||
}
|
||||
return($mod==='')?$array:implode($mod,$array);
|
||||
}
|
||||
/** Gregorian & Jalali (Hijri_Shamsi,Solar) date converter Functions
|
||||
Author: JDF.SCR.IR =>> Download Full Version : http://jdf.scr.ir/jdf
|
||||
License: GNU/LGPL _ Open Source & Free _ Version: 2.70 : [2017=1395]
|
||||
--------------------------------------------------------------------
|
||||
1461 = 365*4 + 4/4 & 146097 = 365*400 + 400/4 - 400/100 + 400/400
|
||||
12053 = 365*33 + 32/4 & 36524 = 365*100 + 100/4 - 100/100 */
|
||||
/* F */
|
||||
public function gregorian_to_jalali($gy,$gm,$gd,$mod=''){
|
||||
list($gy,$gm,$gd)=explode('_',$this->tr_num($gy.'_'.$gm.'_'.$gd));/* <= Extra :اين سطر ، جزء تابع اصلي نيست */
|
||||
$g_d_m=array(0,31,59,90,120,151,181,212,243,273,304,334);
|
||||
if($gy > 1600){
|
||||
$jy=979;
|
||||
$gy-=1600;
|
||||
}else{
|
||||
$jy=0;
|
||||
$gy-=621;
|
||||
}
|
||||
$gy2=($gm > 2)?($gy+1):$gy;
|
||||
$days=(365*$gy) +((int)(($gy2+3)/4)) -((int)(($gy2+99)/100)) +((int)(($gy2+399)/400)) -80 +$gd +$g_d_m[$gm-1];
|
||||
$jy+=33*((int)($days/12053));
|
||||
$days%=12053;
|
||||
$jy+=4*((int)($days/1461));
|
||||
$days%=1461;
|
||||
$jy+=(int)(($days-1)/365);
|
||||
if($days > 365)$days=($days-1)%365;
|
||||
if($days < 186){
|
||||
$jm=1+(int)($days/31);
|
||||
$jd=1+($days%31);
|
||||
}else{
|
||||
$jm=7+(int)(($days-186)/30);
|
||||
$jd=1+(($days-186)%30);
|
||||
}
|
||||
return($mod==='')?array($jy,$jm,$jd):$jy .$mod .$jm .$mod .$jd;
|
||||
}
|
||||
/* F */
|
||||
public function jalali_to_gregorian($jy,$jm,$jd,$mod=''){
|
||||
list($jy,$jm,$jd)=explode('_',$this->tr_num($jy.'_'.$jm.'_'.$jd));/* <= Extra :اين سطر ، جزء تابع اصلي نيست */
|
||||
if($jy > 979){
|
||||
$gy=1600;
|
||||
$jy-=979;
|
||||
}else{
|
||||
$gy=621;
|
||||
}
|
||||
$days=(365*$jy) +(((int)($jy/33))*8) +((int)((($jy%33)+3)/4)) +78 +$jd +(($jm<7)?($jm-1)*31:(($jm-7)*30)+186);
|
||||
$gy+=400*((int)($days/146097));
|
||||
$days%=146097;
|
||||
if($days > 36524){
|
||||
$gy+=100*((int)(--$days/36524));
|
||||
$days%=36524;
|
||||
if($days >= 365)$days++;
|
||||
}
|
||||
$gy+=4*((int)(($days)/1461));
|
||||
$days%=1461;
|
||||
$gy+=(int)(($days-1)/365);
|
||||
if($days > 365)$days=($days-1)%365;
|
||||
$gd=$days+1;
|
||||
foreach(array(0,31,((($gy%4==0) and ($gy%100!=0)) or ($gy%400==0))?29:28 ,31,30,31,30,31,31,30,31,30,31) as $gm=>$v){
|
||||
if($gd <= $v)break;
|
||||
$gd-=$v;
|
||||
}
|
||||
return($mod==='')?array($gy,$gm,$gd):$gy .$mod .$gm .$mod .$gd;
|
||||
}
|
||||
|
||||
public function pastTime($time): string
|
||||
{
|
||||
|
||||
$time = time() - $time; // to get the time since that moment
|
||||
$tokens = array (
|
||||
31536000 => 'سال',
|
||||
2592000 => 'ماه',
|
||||
604800 => 'هفته',
|
||||
86400 => 'روز',
|
||||
3600 => 'ساعت',
|
||||
60 => 'دقیقه',
|
||||
1 => 'ثانیه'
|
||||
);
|
||||
foreach ($tokens as $unit => $text) {
|
||||
if ($time < $unit) continue;
|
||||
$numberOfUnits = floor($time / $unit);
|
||||
return $numberOfUnits.' '.$text . ' قبل ';
|
||||
}
|
||||
return 'چند ثانیه قبل';
|
||||
}
|
||||
}
|
39
src/Service/Provider.php
Normal file
39
src/Service/Provider.php
Normal file
|
@ -0,0 +1,39 @@
|
|||
<?php
|
||||
|
||||
namespace App\Service;
|
||||
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
|
||||
class Provider
|
||||
{
|
||||
public function createSearchParams(Request $request){
|
||||
$response = [];
|
||||
$params = [];
|
||||
if ($content = $request->getContent()) {
|
||||
$params = json_decode($content, true);
|
||||
}
|
||||
|
||||
//set page of content want to search
|
||||
$page = 1;
|
||||
if(array_key_exists('page',$params))
|
||||
$page = $params['page'];
|
||||
$response['page'] = $page;
|
||||
|
||||
//set max Count of content want to search
|
||||
$count = 30;
|
||||
if(array_key_exists('count',$params))
|
||||
$count = $params['count'];
|
||||
$response['count'] = $count;
|
||||
|
||||
//set search keyword of content
|
||||
$search = '';
|
||||
if(array_key_exists('key',$params))
|
||||
$search = $params['key'];
|
||||
$response['key'] = $search;
|
||||
|
||||
return $response;
|
||||
}
|
||||
public function gravatarHash($email){
|
||||
return md5( strtolower( trim( $email) ) );
|
||||
}
|
||||
}
|
|
@ -1,4 +1,13 @@
|
|||
{
|
||||
"doctrine/annotations": {
|
||||
"version": "1.14",
|
||||
"recipe": {
|
||||
"repo": "github.com/symfony/recipes",
|
||||
"branch": "main",
|
||||
"version": "1.10",
|
||||
"ref": "64d8583af5ea57b7afa4aba4b159907f3a148b05"
|
||||
}
|
||||
},
|
||||
"doctrine/doctrine-bundle": {
|
||||
"version": "2.8",
|
||||
"recipe": {
|
||||
|
|
Loading…
Reference in a new issue