Skip to content

Commit

Permalink
Release 3.0.0
Browse files Browse the repository at this point in the history
  • Loading branch information
lcharette authored May 14, 2020
2 parents 6bc397f + 6a8b6b6 commit dfb3a6f
Show file tree
Hide file tree
Showing 43 changed files with 1,498 additions and 270 deletions.
File renamed without changes
File renamed without changes
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
.DS_Store
.phpunit.result.cache
.vscode
.php_cs.cache
_meta
113 changes: 113 additions & 0 deletions .php_cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
<?php

$header = 'UF Custom User Profile Field Sprinkle
@link https://github.com/lcharette/UF_UserProfile
@copyright Copyright (c) 2020 Louis Charette
@license https://github.com/lcharette/UF_UserProfile/blob/master/LICENSE (MIT License)';

$rules = [
'@PSR2' => true,
'array_indentation' => true,
'array_syntax' => ['syntax' => 'short'],
'binary_operator_spaces' => ['align_double_arrow' => true, 'align_equals' => false],
'blank_line_after_namespace' => true,
'blank_line_after_opening_tag' => true,
'blank_line_before_return' => true,
'braces' => true,
'cast_spaces' => true,
'class_definition' => true,
'concat_space' => ['spacing' => 'one'],
'declare_equal_normalize' => true,
'elseif' => true,
'encoding' => true,
'full_opening_tag' => true,
'function_declaration' => true,
'function_typehint_space' => true,
'hash_to_slash_comment' => true,
'heredoc_to_nowdoc' => true,
'include' => true,
'indentation_type' => true,
'line_ending' => true,
'lowercase_cast' => true,
'lowercase_constants' => true,
'lowercase_keywords' => true,
'method_argument_space' => true,
'method_separation' => true,
'multiline_whitespace_before_semicolons' => true,
'native_function_casing' => true,
'new_with_braces' => true,
'no_blank_lines_after_class_opening' => true,
'no_blank_lines_after_phpdoc' => true,
'no_break_comment' => true,
'no_closing_tag' => true,
'no_empty_phpdoc' => true,
'no_empty_statement' => true,
'no_extra_blank_lines' => true,
'no_leading_import_slash' => true,
'no_leading_namespace_whitespace' => true,
'no_mixed_echo_print' => ['use' => 'echo'],
'no_multiline_whitespace_around_double_arrow' => true,
'no_short_bool_cast' => true,
'no_singleline_whitespace_before_semicolons' => true,
'no_spaces_after_function_name' => true,
'no_spaces_around_offset' => true,
'no_spaces_inside_parenthesis' => true,
'no_trailing_comma_in_list_call' => true,
'no_trailing_comma_in_singleline_array' => true,
'no_trailing_whitespace' => true,
'no_trailing_whitespace_in_comment' => true,
'no_unneeded_control_parentheses' => true,
'no_unreachable_default_argument_value' => true,
'no_unused_imports' => true,
'no_useless_return' => true,
'no_whitespace_before_comma_in_array' => true,
'no_whitespace_in_blank_line' => true,
'normalize_index_brace' => true,
'object_operator_without_whitespace' => true,
'phpdoc_align' => true,
'phpdoc_indent' => true,
'phpdoc_inline_tag' => true,
'phpdoc_no_empty_return' => true,
'phpdoc_no_access' => true,
'phpdoc_no_alias_tag' => ['type' => 'var'],
'phpdoc_no_package' => true,
'phpdoc_order' => true,
'phpdoc_scalar' => true,
'phpdoc_single_line_var_spacing' => true,
'phpdoc_trim' => true,
'phpdoc_types' => true,
'psr4' => true,
'short_scalar_cast' => true,
'simplified_null_return' => true,
'single_blank_line_at_eof' => true,
'single_blank_line_before_namespace' => true,
'single_class_element_per_statement' => true,
'single_import_per_statement' => true,
'single_line_after_imports' => true,
'single_quote' => true,
'space_after_semicolon' => true,
'standardize_not_equals' => true,
'switch_case_semicolon_to_colon' => true,
'switch_case_space' => true,
'ternary_operator_spaces' => true,
'trailing_comma_in_multiline_array' => true,
'trim_array_spaces' => true,
'unary_operator_spaces' => true,
'visibility_required' => true,
'whitespace_after_comma_in_array' => true,

'header_comment' => [
'header' => $header
]
];

$finder = PhpCsFixer\Finder::create()
->in([__DIR__ . '/src', __DIR__ . '/tests']);

return PhpCsFixer\Config::create()
->setRules($rules)
->setFinder($finder)
->setUsingCache(true)
->setCacheFile(__DIR__.'/.php_cs.cache')
->setRiskyAllowed(true);
13 changes: 13 additions & 0 deletions .styleci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
finder:
exclude:
- "tests"
name: "*.php"
not-name:
- "*Stub.php"
- "*Test.php"

enabled:
- concat_with_spaces

disabled:
- concat_without_spaces
68 changes: 68 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
dist: xenial
language: php

services:
- mysql
- postgresql

php:
- 7.1
- 7.2
- 7.3
- 7.4

env:
jobs:
- UF_BRANCH=4.3.* TESTSUITE=Unit
- UF_BRANCH=4.4.* TESTSUITE=Unit
- UF_BRANCH=dev-develop TESTSUITE=Unit
- UF_BRANCH=4.3.* DB=mysql TESTSUITE=Integration
- UF_BRANCH=4.4.* DB=mysql TESTSUITE=Integration
- UF_BRANCH=dev-develop DB=mysql TESTSUITE=Integration
- UF_BRANCH=4.3.* DB=sqlite TESTSUITE=Integration
- UF_BRANCH=4.4.* DB=sqlite TESTSUITE=Integration
- UF_BRANCH=dev-develop DB=sqlite TESTSUITE=Integration
- UF_BRANCH=4.3.* DB=pgsql TESTSUITE=Integration
- UF_BRANCH=4.4.* DB=pgsql TESTSUITE=Integration
- UF_BRANCH=dev-develop DB=pgsql TESTSUITE=Integration

jobs:
fast_finish: true
allow_failures:
- env: UF_BRANCH=dev-develop TESTSUITE=Unit
- env: UF_BRANCH=dev-develop DB=mysql TESTSUITE=Integration
- env: UF_BRANCH=dev-develop DB=pgsql TESTSUITE=Integration
- env: UF_BRANCH=dev-develop DB=sqlite TESTSUITE=Integration

cache:
directories:
- $HOME/.composer/cache

before_install:
# clone UserFrosting
- cd ../
- composer create-project userfrosting/userfrosting UserFrosting $UF_BRANCH --no-install
- cd UserFrosting
# move and add sprinkle
- mv ../UF_UserProfile app/sprinkles/UserProfile/
- echo "{\"base\":[\"core\",\"account\",\"admin\",\"FormGenerator\",\"UserProfile\"]}" > app/sprinkles.json
# set up db
- bash build/before_install.sh $DB
# update node
- nvm install 10.12.0

before_script:
# install deps and UF
- composer install
- php bakery build-assets

script:
# run unit tests
- app/vendor/bin/phpunit -c app/sprinkles/UserProfile/phpunit.xml --coverage-clover=app/sprinkles/UserProfile/coverage.xml --testsuite $TESTSUITE

after_failure:
- cat app/log/userfrosting.log

after_success:
- cd app/sprinkles/UserProfile/
- bash <(curl -s https://codecov.io/bash)
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
# Change Log

## [3.0.0]
- Added support for FormGenerator 4.0.
- Added automated testing.
- Updated GroupController and UserController to match latest UF version.
- GroupProfileHelper & UserProfileHelper constructor now only requires the necessary services.
- Updated migration support.

## [2.1.1]
- Fix modals on admin panel ([#5]; Thanks @Jamezsss)

Expand Down Expand Up @@ -41,6 +48,7 @@
## 0.0.1
- Initial beta release

[3.0.0]: https://github.com/lcharette/UF_UserProfile/compare/2.1.1...3.0.0
[2.1.1]: https://github.com/lcharette/UF_UserProfile/compare/2.1.0...2.1.1
[2.1.0]: https://github.com/lcharette/UF_UserProfile/compare/2.0.9...2.1.0
[2.0.9]: https://github.com/lcharette/UF_UserProfile/compare/2.0.8...2.0.9
Expand Down
37 changes: 26 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,25 @@
# Custom User Profile Field Sprinkle for [UserFrosting 4](https://www.userfrosting.com)

[![Latest Version](https://img.shields.io/github/release/lcharette/UF_UserProfile.svg)](https://github.com/lcharette/UF_UserProfile/releases)
[![Donate][kofi-badge]][kofi]
[![Latest Version][releases-badge]][releases]
[![UserFrosting Version][uf-version]][uf]
[![Software License](https://img.shields.io/badge/license-MIT-brightgreen.svg)](LICENSE)
[![UserFrosting Version](https://img.shields.io/badge/UserFrosting->=%204.1-brightgreen.svg)](https://github.com/userfrosting/UserFrosting)
[![StyleCI](https://github.styleci.io/repos/83981830/shield?branch=master&style=flat)](https://github.styleci.io/repos/83981830)
[![Donate](https://img.shields.io/badge/Donate-Buy%20Me%20a%20Coffee-blue.svg)](https://ko-fi.com/A7052ICP)
[![Travis][travis-badge]][travis]
[![Codecov][codecov-badge]][codecov]
[![StyleCI][styleci-badge]][styleci]

[kofi]: https://ko-fi.com/A7052ICP
[kofi-badge]: https://img.shields.io/badge/Donate-Buy%20Me%20a%20Coffee-blue.svg
[releases]: https://github.com/lcharette/UF_UserProfile/releases
[releases-badge]: https://img.shields.io/github/release/lcharette/UF_UserProfile.svg
[uf-version]: https://img.shields.io/badge/UserFrosting->=%204.3-brightgreen.svg
[uf]: https://github.com/userfrosting/UserFrosting
[travis]: https://travis-ci.org/lcharette/UF_UserProfile
[travis-badge]: https://travis-ci.org/lcharette/UF_UserProfile.svg?branch=master
[codecov]: https://codecov.io/gh/lcharette/UF_UserProfile
[codecov-badge]: https://codecov.io/gh/lcharette/UF_UserProfile/branch/master/graph/badge.svg
[styleci]: https://styleci.io/repos/83981830
[styleci-badge]: https://styleci.io/repos/83981830/shield?branch=master&style=flat

This Sprinkle makes it easy to add any custom fields to the user or group model. Simply create a new schema in you own sprinkle and you're done. Your new profile fields will be automatically integrated in the default UserFrosting interface.

Expand All @@ -14,12 +29,12 @@ If you need help using this sprinkle or found any bug, feels free to open an iss

# Installation

Edit UserFrosting `app/sprinkles.json` file and add the following to the `require` list : `"lcharette/uf_userprofile": "^2.0.0"`. Also add `FormGenerator` and `UserProfile` to the `base` list. For example:
Edit UserFrosting `app/sprinkles.json` file and add the following to the `require` list : `"lcharette/uf_userprofile": "^3.0.0"`. Also add `FormGenerator` and `UserProfile` to the `base` list. For example:

```
```json
{
"require": {
"lcharette/uf_userprofile": "^2.0.0"
"lcharette/uf_userprofile": "^3.0.0"
},
"base": [
"core",
Expand All @@ -38,7 +53,7 @@ Run `composer update` then `php bakery bake` to install the sprinkle.
To add a custom profile fields to any user, you simply add a [FormGenerator](https://github.com/lcharette/UF_FormGenerator) compliant schema containing the `form` key as well as the traditional [validation schema](https://learn.userfrosting.com/routes-and-controllers/client-input/validation). The rest is generated by this Sprinkle.

For example, you can add the following to a `schema/userProfile/myFields.json` file inside your sprinkle to add a `location`, `occupation` and `gender` user field. With the associated locale keys, that's all you have to do to add a new user field to your UserFrosting setup.
```
```json
{
"location" : {
"validators" : {
Expand Down Expand Up @@ -92,8 +107,8 @@ You can also specify **groups** custom fields by saving any schema in the the `s

## Screenshots

![Screenshot 1](/screenshots/UF_UserProfile1.png?raw=true)
![Screenshot 1](/screenshots/UF_UserProfile2.png?raw=true)
![Screenshot 1](/.github/screenshots/UF_UserProfile1.png?raw=true)
![Screenshot 1](/.github/screenshots/UF_UserProfile2.png?raw=true)

# License
By [Louis Charette](https://github.com/lcharette). Copyright (c) 2017, free to use in personal and commercial software as per the MIT license.
By [Louis Charette](https://github.com/lcharette). Copyright (c) 2020, free to use in personal and commercial software as per the MIT license.
2 changes: 2 additions & 0 deletions codecov.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
fixes:
- "app/sprinkles/UserProfile/::"
11 changes: 8 additions & 3 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,23 @@
"authors" : [
{
"name": "Louis Charette",
"homepage": "https://github.com/lcharette"
"homepage": "https://bbqsoftwares.com"
}
],
"require": {
"php": ">=5.6",
"lcharette/uf_formgenerator": "^2.1.0 || ^3.0.0"
"php": ">=7.1",
"lcharette/uf_formgenerator": "^2.1.0 || ^3.0.0 || ^4.0.0"
},
"autoload": {
"psr-4": {
"UserFrosting\\Sprinkle\\UserProfile\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"UserFrosting\\Sprinkle\\UserProfile\\Tests\\": "tests/"
}
},
"extra": {
"installer-name": "UserProfile"
}
Expand Down
6 changes: 3 additions & 3 deletions config/default.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
/*
* UF Custom User Profile Field Sprinkle
*
* @link https://github.com/lcharette/UF_UserProfile
* @copyright Copyright (c) 2017 Louis Charette
* @license https://github.com/lcharette/UF_UserProfile/blob/master/LICENSE (MIT License)
* @link https://github.com/lcharette/UF_UserProfile
* @copyright Copyright (c) 2020 Louis Charette
* @license https://github.com/lcharette/UF_UserProfile/blob/master/LICENSE (MIT License)
*/

return [
Expand Down
6 changes: 3 additions & 3 deletions config/production.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
/*
* UF Custom User Profile Field Sprinkle
*
* @link https://github.com/lcharette/UF_UserProfile
* @copyright Copyright (c) 2017 Louis Charette
* @license https://github.com/lcharette/UF_UserProfile/blob/master/LICENSE (MIT License)
* @link https://github.com/lcharette/UF_UserProfile
* @copyright Copyright (c) 2020 Louis Charette
* @license https://github.com/lcharette/UF_UserProfile/blob/master/LICENSE (MIT License)
*/

return [
Expand Down
10 changes: 10 additions & 0 deletions phpstan.neon
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
parameters:
autoload_files:
- ../../vendor/autoload.php
level: max
treatPhpDocTypesAsCertain: false
ignoreErrors:
# Ignore false positive PHPStan can't understand, until we can fix it
- '#Call to an undefined method Psr\\Container\\ContainerInterface::extend().#'
- '#Access to an undefined property Psr\\Container\\ContainerInterface::\$[a-zA-Z0-9\\_]+.#' # Ignore our CI container
- '#Call to an undefined static method UserFrosting\\Sprinkle\\[a-zA-Z0-9\\_]+\\Facades\\[a-zA-Z0-9\\_\(\):]+.#' # Ignore Facades
25 changes: 25 additions & 0 deletions phpunit.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
backupStaticAttributes="false"
bootstrap="../../vendor/autoload.php"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false"
stderr="true"
stopOnFailure="true">
<testsuites>
<testsuite name="Unit">
<directory suffix="Test.php">tests/Unit</directory>
</testsuite>
<testsuite name="Integration">
<directory suffix=".php">tests/Integration</directory>
</testsuite>
</testsuites>
<filter>
<whitelist addUncoveredFilesFromWhitelist="true" processUncoveredFilesFromWhitelist="false">
<directory suffix=".php">src/</directory>
</whitelist>
</filter>
</phpunit>
6 changes: 3 additions & 3 deletions routes/GroupProfile.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
/*
* UF Custom User Profile Field Sprinkle
*
* @link https://github.com/lcharette/UF_UserProfile
* @copyright Copyright (c) 2017 Louis Charette
* @license https://github.com/lcharette/UF_UserProfile/blob/master/LICENSE (MIT License)
* @link https://github.com/lcharette/UF_UserProfile
* @copyright Copyright (c) 2020 Louis Charette
* @license https://github.com/lcharette/UF_UserProfile/blob/master/LICENSE (MIT License)
*/

/**
Expand Down
Loading

0 comments on commit dfb3a6f

Please sign in to comment.