Skip to content

Commit 90daf97

Browse files
committed
Releasing 0.9.0
2 parents 4ccb917 + f650c93 commit 90daf97

File tree

274 files changed

+9665
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

274 files changed

+9665
-0
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,5 @@ composer.phar
44
# Commit your application's lock file https://getcomposer.org/doc/01-basic-usage.md#commit-your-composer-lock-file-to-version-control
55
# You may choose to ignore a library lock file http://getcomposer.org/doc/02-libraries.md#lock-file
66
# composer.lock
7+
/composer.lock
8+

LICENSE.md

Lines changed: 166 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,166 @@
1+
GNU LESSER GENERAL PUBLIC LICENSE
2+
Version 3, 29 June 2007
3+
4+
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
5+
Everyone is permitted to copy and distribute verbatim copies
6+
of this license document, but changing it is not allowed.
7+
8+
9+
This version of the GNU Lesser General Public License incorporates
10+
the terms and conditions of version 3 of the GNU General Public
11+
License, supplemented by the additional permissions listed below.
12+
13+
0. Additional Definitions.
14+
15+
As used herein, "this License" refers to version 3 of the GNU Lesser
16+
General Public License, and the "GNU GPL" refers to version 3 of the GNU
17+
General Public License.
18+
19+
"The Library" refers to a covered work governed by this License,
20+
other than an Application or a Combined Work as defined below.
21+
22+
An "Application" is any work that makes use of an interface provided
23+
by the Library, but which is not otherwise based on the Library.
24+
Defining a subclass of a class defined by the Library is deemed a mode
25+
of using an interface provided by the Library.
26+
27+
A "Combined Work" is a work produced by combining or linking an
28+
Application with the Library. The particular version of the Library
29+
with which the Combined Work was made is also called the "Linked
30+
Version".
31+
32+
The "Minimal Corresponding Source" for a Combined Work means the
33+
Corresponding Source for the Combined Work, excluding any source code
34+
for portions of the Combined Work that, considered in isolation, are
35+
based on the Application, and not on the Linked Version.
36+
37+
The "Corresponding Application Code" for a Combined Work means the
38+
object code and/or source code for the Application, including any data
39+
and utility programs needed for reproducing the Combined Work from the
40+
Application, but excluding the System Libraries of the Combined Work.
41+
42+
1. Exception to Section 3 of the GNU GPL.
43+
44+
You may convey a covered work under sections 3 and 4 of this License
45+
without being bound by section 3 of the GNU GPL.
46+
47+
2. Conveying Modified Versions.
48+
49+
If you modify a copy of the Library, and, in your modifications, a
50+
facility refers to a function or data to be supplied by an Application
51+
that uses the facility (other than as an argument passed when the
52+
facility is invoked), then you may convey a copy of the modified
53+
version:
54+
55+
a) under this License, provided that you make a good faith effort to
56+
ensure that, in the event an Application does not supply the
57+
function or data, the facility still operates, and performs
58+
whatever part of its purpose remains meaningful, or
59+
60+
b) under the GNU GPL, with none of the additional permissions of
61+
this License applicable to that copy.
62+
63+
3. Object Code Incorporating Material from Library Header Files.
64+
65+
The object code form of an Application may incorporate material from
66+
a header file that is part of the Library. You may convey such object
67+
code under terms of your choice, provided that, if the incorporated
68+
material is not limited to numerical parameters, data structure
69+
layouts and accessors, or small macros, inline functions and templates
70+
(ten or fewer lines in length), you do both of the following:
71+
72+
a) Give prominent notice with each copy of the object code that the
73+
Library is used in it and that the Library and its use are
74+
covered by this License.
75+
76+
b) Accompany the object code with a copy of the GNU GPL and this license
77+
document.
78+
79+
4. Combined Works.
80+
81+
You may convey a Combined Work under terms of your choice that,
82+
taken together, effectively do not restrict modification of the
83+
portions of the Library contained in the Combined Work and reverse
84+
engineering for debugging such modifications, if you also do each of
85+
the following:
86+
87+
a) Give prominent notice with each copy of the Combined Work that
88+
the Library is used in it and that the Library and its use are
89+
covered by this License.
90+
91+
b) Accompany the Combined Work with a copy of the GNU GPL and this license
92+
document.
93+
94+
c) For a Combined Work that displays copyright notices during
95+
execution, include the copyright notice for the Library among
96+
these notices, as well as a reference directing the user to the
97+
copies of the GNU GPL and this license document.
98+
99+
d) Do one of the following:
100+
101+
0) Convey the Minimal Corresponding Source under the terms of this
102+
License, and the Corresponding Application Code in a form
103+
suitable for, and under terms that permit, the user to
104+
recombine or relink the Application with a modified version of
105+
the Linked Version to produce a modified Combined Work, in the
106+
manner specified by section 6 of the GNU GPL for conveying
107+
Corresponding Source.
108+
109+
1) Use a suitable shared library mechanism for linking with the
110+
Library. A suitable mechanism is one that (a) uses at run time
111+
a copy of the Library already present on the user's computer
112+
system, and (b) will operate properly with a modified version
113+
of the Library that is interface-compatible with the Linked
114+
Version.
115+
116+
e) Provide Installation Information, but only if you would otherwise
117+
be required to provide such information under section 6 of the
118+
GNU GPL, and only to the extent that such information is
119+
necessary to install and execute a modified version of the
120+
Combined Work produced by recombining or relinking the
121+
Application with a modified version of the Linked Version. (If
122+
you use option 4d0, the Installation Information must accompany
123+
the Minimal Corresponding Source and Corresponding Application
124+
Code. If you use option 4d1, you must provide the Installation
125+
Information in the manner specified by section 6 of the GNU GPL
126+
for conveying Corresponding Source.)
127+
128+
5. Combined Libraries.
129+
130+
You may place library facilities that are a work based on the
131+
Library side by side in a single library together with other library
132+
facilities that are not Applications and are not covered by this
133+
License, and convey such a combined library under terms of your
134+
choice, if you do both of the following:
135+
136+
a) Accompany the combined library with a copy of the same work based
137+
on the Library, uncombined with any other library facilities,
138+
conveyed under the terms of this License.
139+
140+
b) Give prominent notice with the combined library that part of it
141+
is a work based on the Library, and explaining where to find the
142+
accompanying uncombined form of the same work.
143+
144+
6. Revised Versions of the GNU Lesser General Public License.
145+
146+
The Free Software Foundation may publish revised and/or new versions
147+
of the GNU Lesser General Public License from time to time. Such new
148+
versions will be similar in spirit to the present version, but may
149+
differ in detail to address new problems or concerns.
150+
151+
Each version is given a distinguishing version number. If the
152+
Library as you received it specifies that a certain numbered version
153+
of the GNU Lesser General Public License "or any later version"
154+
applies to it, you have the option of following the terms and
155+
conditions either of that published version or of any later version
156+
published by the Free Software Foundation. If the Library as you
157+
received it does not specify a version number of the GNU Lesser
158+
General Public License, you may choose any version of the GNU Lesser
159+
General Public License ever published by the Free Software Foundation.
160+
161+
If the Library as you received it specifies that a proxy can decide
162+
whether future versions of the GNU Lesser General Public License shall
163+
apply, that proxy's public statement of acceptance of any version is
164+
permanent authorization for you to choose that version for the
165+
Library.
166+

README.md

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
# technicalguru/webapp
2+
This is a PHP framework for the easy-to-start development of a website. It addresses a few basic needs that every developer
3+
faces when he wants to start a new website. This framework addresses:
4+
5+
* Authentication and Authorization
6+
* Localization
7+
* Flexible design, theme and layout of websites and individual pages
8+
* Database Access (mostly MariaDB or MySQL)
9+
* Data Model abstract layer to avoid any SQL writing
10+
* Flexible URL routing (mapping the URL path to a specific Page class)
11+
* Logging
12+
* Email Sending
13+
* Application Configuration
14+
* Session Handling and Persistence
15+
16+
Most of them are not mandatory to use. The configuration allows to switch off many of them.
17+
18+
As I currently use this framework for my private projects only, there is not much documentation available yet. Feel free to ask
19+
questions or checkout also the [php-webapp-template](https://github.com/technicalguru/php-webapp-template) repository which
20+
provides starter templates.
21+
22+
The framework is mostly based on other PHP modules that are documented quite good. So you can consult them in order
23+
to understand some of the features.
24+
25+
Remember: *technicalguru/webapp* is a framework to ease and speed up your development of a new website. It cannot solve all your problems but is a good starting point.
26+
27+
# License
28+
This project is licensed under [GNU LGPL 3.0](LICENSE.md).
29+
30+
# Installation
31+
32+
## By Composer
33+
34+
```
35+
composer install technicalguru/webapp
36+
```
37+
38+
## By Package Download
39+
You can download the source code packages from [GitHub Release Page](https://github.com/technicalguru/php-webapp/releases)
40+
41+
# Start a WebApp
42+
The best way is to use a template from [php-webapp-template](https://github.com/technicalguru/php-webapp-template) repository
43+
but you can also start from scratch. You will need the configuration from [application-example.php](application-example.php)
44+
and the main [index-example.php](index-example.php) file in the root of your web app. Notice that your web server needs to
45+
route all requests to the `index.php` file. You could achieve this with this snippet:
46+
47+
```
48+
<IfModule mod_rewrite.c>
49+
Options -MultiViews
50+
51+
RewriteEngine On
52+
RewriteCond %{REQUEST_FILENAME} !-f
53+
RewriteCond %{REQUEST_FILENAME} !-d
54+
RewriteRule ^ index.php [QSA,L]
55+
</IfModule>
56+
```
57+
58+
in your `.htaccess` file
59+
60+
# Contribution
61+
Report a bug, request an enhancement or pull request at the [GitHub Issue Tracker](https://github.com/technicalguru/php-webapp/issues).

application-example.php

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
<?php
2+
3+
/*********************************************************
4+
THIS IS A TEMPLATE! Pick what you need for your app
5+
**********************************************************/
6+
return array(
7+
'application' => 'MyWebApp\\Application',
8+
'theme' => 'WebApp\\BootstrapTheme\\BootstrapTheme',
9+
'name' => 'My Bootstrap App',
10+
//'brandLogo' => 'my-logo.png',
11+
'copyright' => '&copy; '.date('Y').' by TechnicalGuru',
12+
'debug' => true,
13+
'router' => array(
14+
'class' => 'WebApp\\Router',
15+
'config' => array(
16+
'languages' => array(
17+
'de' => 'Deutsch',
18+
'en' => 'English',
19+
),
20+
'pageMap' => array(
21+
'/' => 'MyWebApp\\Page\\',
22+
),
23+
),
24+
),
25+
'database' => array(
26+
'host' => 'my-db-host',
27+
'port' => 3306,
28+
'user' => 'my-db-user',
29+
'pass' => 'my-db-password',
30+
'dbname' => 'my-db-instance-name',
31+
'tablePrefix' => 'mywebapp_',
32+
),
33+
'dataModel' => true,
34+
'authentication' => 'WebApp\\Auth\\UserDatabaseAuthenticator',
35+
'authorization' => 'WebApp\\Auth\\UserRoleAuthorizator',
36+
'mailQueue' => array(
37+
'timezone' => 'Europe/Berlin',
38+
'mailMode' => 'reroute',
39+
'smtpConfig' => array(
40+
'host' => 'my-smtp-server',
41+
'port' => 587,
42+
'debugLevel' => 0,
43+
'auth' => true,
44+
'secureOption' => 'starttls',
45+
'charset' => 'utf8',
46+
'credentials' => array(
47+
'user' => 'my-smtp-username',
48+
'pass' => 'my-smtp-password',
49+
),
50+
),
51+
'rerouteConfig' => array(
52+
'subjectPrefix' => '[Reroute]',
53+
'recipients' => 'John Doe <[email protected]>',
54+
),
55+
'bccConfig' => array(
56+
'recipients' => 'John Doe <[email protected]>',
57+
),
58+
'debugAddress' => 'John Doe <[email protected]>',
59+
'defaultSender' => 'My WebApp <[email protected]>',
60+
'subjectPrefix' => '[My WebApp] ',
61+
),
62+
);
63+

composer.json

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
{
2+
"name": "technicalguru/webapp",
3+
"description": "A ready-to-use framework to write web applications in PHP",
4+
"type": "library",
5+
"keywords": ["framework","bootstrap"],
6+
"authors": [
7+
{
8+
"name": "TechnicalGuru",
9+
"homepage": "https://github.com/technicalguru/php-webapp"
10+
}
11+
],
12+
"require": {
13+
"php" : ">=7.0.0",
14+
"technicalguru/vault" : "^1",
15+
"technicalguru/utils" : "^1",
16+
"technicalguru/database" : "^1",
17+
"technicalguru/i18n" : "^1",
18+
"technicalguru/rest-client" : "^1",
19+
"technicalguru/email" : "^1",
20+
"technicalguru/jquery" : "^1",
21+
"technicalguru/bootstrap" : "^1",
22+
"technicalguru/font-awesome" : "^1"
23+
},
24+
"autoload": {
25+
"psr-4": {
26+
"WebApp\\": "src/WebApp/"
27+
}
28+
},
29+
"extra": {
30+
"branch-alias": {
31+
"dev-master": "main-dev"
32+
}
33+
}
34+
}

0 commit comments

Comments
 (0)