diff options
| author | George Halkiadakis <gchalkiadakis@sklavenitis.co.gr> | 2023-04-27 20:18:01 +0300 |
|---|---|---|
| committer | George Halkiadakis <gchalkiadakis@sklavenitis.co.gr> | 2023-04-27 20:18:01 +0300 |
| commit | a2e68fce808dbe6fba320a6232a15380b63157f6 (patch) | |
| tree | b6ceaf603b2237c328707c152233304b9a511b9e /public/app/models | |
| parent | 059e0d95d0c28bc5060e87e146eaf7411f51bf90 (diff) | |
| download | gyraf1gov-a2e68fce808dbe6fba320a6232a15380b63157f6.tar.gz gyraf1gov-a2e68fce808dbe6fba320a6232a15380b63157f6.tar.bz2 gyraf1gov-a2e68fce808dbe6fba320a6232a15380b63157f6.zip | |
structure simplified
Diffstat (limited to 'public/app/models')
| -rw-r--r-- | public/app/models/Access_model.php (renamed from public/app/models/admin/User_model.php) | 148 | ||||
| -rw-r--r-- | public/app/models/Cms_model.php (renamed from public/app/models/cms/Course_model.php) | 6 | ||||
| -rw-r--r-- | public/app/models/History_model.php (renamed from public/app/models/admin/History_model.php) | 2 | ||||
| -rw-r--r-- | public/app/models/admin/Privilege_model.php | 42 | ||||
| -rw-r--r-- | public/app/models/cms/Media_model.php | 36 | ||||
| -rw-r--r-- | public/app/models/cms/Page_model.php | 18 | ||||
| -rw-r--r-- | public/app/models/ideas.md | 24 | ||||
| -rw-r--r-- | public/app/models/todo.md | 50 |
8 files changed, 105 insertions, 221 deletions
diff --git a/public/app/models/admin/User_model.php b/public/app/models/Access_model.php index 2885dc1..d5ae19e 100644 --- a/public/app/models/admin/User_model.php +++ b/public/app/models/Access_model.php @@ -1,13 +1,16 @@ <?php -namespace app\models\admin; +namespace app\models; use \Registry; -use app\models\admin\History_model as History; +use app\models\History_model; -class User_model +class Access_model { + ## User methods + ## ------------------------------------------------------------------------- + /** check user (by index key) * * @param $indexKey (string) : key for user identification @@ -133,11 +136,6 @@ class User_model return [ "success" => false, 'error' => EMPTY_REQUIRED_FIELDS ]; } - - // TODO: - // check if email exists - // ... - // create an activation code $activation_code = md5($data['email'].time().rand(0, 10000)); @@ -165,7 +163,7 @@ class User_model self::set_user_role($new_user_id, 5); // update history - History::trackUserAccess($new_user_id, TRACK_ACCOUNT, 'Create User Account'); + History_model::trackUserAccess($new_user_id, TRACK_ACCOUNT, 'Create User Account'); // return success and user id return [ @@ -176,6 +174,45 @@ class User_model } + /** activate + * + * check if activation code is valid; + * if valid, set account active; + * + * @param $ticket (hex/MD5): activation code; + * + */ + public static function activate($ticket) + { + $user = Registry::use('database')->query( + "SELECT * FROM user WHERE activation = :ticket", + [ 'ticket' => $ticket ] + )->getFirst(); + + // if no user with this activation code, return false + if ($user === false) return false; + + // remove activation code from user record + Registry::use('database')->runQuery( + "UPDATE user + SET active = 1, `activation` = NULL + WHERE activation = :ticket", + [ 'ticket' => $ticket ] + ); + + // update history + History_model::trackUserAccess($user['id'], TRACK_ACCOUNT, 'User Account Activated'); + + return true; + + } + + + + ## Set permission methods + ## ------------------------------------------------------------------------- + + /** set_user_privileges * * @param $privileges (array) @@ -209,91 +246,24 @@ class User_model } - /** activate - * - * check if activation code is valid; - * if valid, set account active; - * - * @param $ticket (hex/MD5): activation code; + ## List methods + ## ------------------------------------------------------------------------- + + + /** privileges + * --- + * get all privileges (as a list) + * used by cacher; speeds up seveal things * + * @param void + * @return privileges (array) */ - public static function activate($ticket) + public static function privileges() { - $user = Registry::use('database')->query( - "SELECT * FROM user WHERE activation = :ticket", - [ 'ticket' => $ticket ] - )->getFirst(); - - // if no user with this activation code, return false - if ($user === false) return false; - - // remove activation code from user record - Registry::use('database')->runQuery( - "UPDATE user - SET active = 1, `activation` = NULL - WHERE activation = :ticket", - [ 'ticket' => $ticket ] + return Registry::use('database')->runQuery( + "SELECT * FROM privilege",[] ); - - // update history - History::trackUserAccess($user['id'], TRACK_ACCOUNT, 'User Account Activated'); - - return true; - } } - -/* example query getUser (super-array) ---- -- -- - - - - -SELECT user.*, -( -- array (json) of roles granted to user - SELECT CONCAT('[', GROUP_CONCAT(role.id), ']') - FROM `role` - WHERE role.id IN ( - SELECT user_role.role_id - FROM user_role - WHERE user_role.user_id = 1 - ) -) AS Roles_json, -( - SELECT CONCAT( - '[', - GROUP_CONCAT(privilege.id), - ']' - ) - FROM privilege - WHERE privilege.id IN ( - SELECT user_privilege.privilege_id - FROM user_privilege - WHERE user_privilege.user_id = 1 - ) -) AS RootPrivileges_json, -( - SELECT CONCAT( -- array of array of sub-privileges - '[', - GROUP_CONCAT( -- array (json) of subprivileges - ( - SELECT CONCAT( - '[', - GROUP_CONCAT(included_id), - ']' - ) - FROM privilege_includes - WHERE privilege_id = privilege.id - ) - ), - ']' - ) - FROM privilege - WHERE privilege.id IN ( - SELECT user_privilege.privilege_id - FROM user_privilege - WHERE user_id = 1 - ) -) AS SubPrivileges_json -FROM user -WHERE id = 1 ---- */
\ No newline at end of file diff --git a/public/app/models/cms/Course_model.php b/public/app/models/Cms_model.php index 6614993..fad11b8 100644 --- a/public/app/models/cms/Course_model.php +++ b/public/app/models/Cms_model.php @@ -1,10 +1,10 @@ <?php -namespace app\models\cms; +namespace app\models; use \Registry; -class Course_model { +class Cms_model { /** COURSES * ------------------------------------------------------------------------- @@ -143,7 +143,7 @@ class Course_model { * * NOTE: * --- - * Course_model::all_breadcrumbs returns an indexed super-array; + * Cms_model::all_breadcrumbs returns an indexed super-array; * each array item includes a banch of information: [ * breadcrumb, * rec: [ id , title ], diff --git a/public/app/models/admin/History_model.php b/public/app/models/History_model.php index 04ce630..f50539f 100644 --- a/public/app/models/admin/History_model.php +++ b/public/app/models/History_model.php @@ -1,5 +1,5 @@ <?php -namespace app\models\admin; +namespace app\models; use \Registry; diff --git a/public/app/models/admin/Privilege_model.php b/public/app/models/admin/Privilege_model.php deleted file mode 100644 index c385484..0000000 --- a/public/app/models/admin/Privilege_model.php +++ /dev/null @@ -1,42 +0,0 @@ -<?php - -namespace app\models\admin; - -use Registry; -use Render; - - -class Privilege_model { - - /** privileges - * --- - * get all privileges - * - * @param void - * @return privileges (array) - */ - public static function privileges() - { - return Registry::use('database')->runQuery( - "SELECT * FROM privilege",[] - ); - } - - /** edit privileges - * --- - */ - public static function edit_privileges() - { - // TODO: ... - } - - - /** update course - * --- - */ - public static function update_course() - { - // TODO: ... - } - -}
\ No newline at end of file diff --git a/public/app/models/cms/Media_model.php b/public/app/models/cms/Media_model.php deleted file mode 100644 index 6a4a681..0000000 --- a/public/app/models/cms/Media_model.php +++ /dev/null @@ -1,36 +0,0 @@ -<?php - -namespace app\models\cms; - -use \Registry; - - -class Media_model -{ - public static function serve($type, $id, $ticket) - { - - // get media data - // [ type =>, rights =>, path => ] - - // validate ticket - // ValidateAccess::for($ticket) - - // serve - // header("Content-type: type"); - // passthru('cat $media_path'); - - - return Registry::use('database')->query( - "SELECT * FROM pages - WHERE FullFriendlyUrl = :url AND IsActive = 1", - [ ':url' => $url ] - )->getFirst(); - } - -} - - - -// check: -// https://stackoverflow.com/questions/1353850/serve-image-with-php-script-vs-direct-loading-an-image
\ No newline at end of file diff --git a/public/app/models/cms/Page_model.php b/public/app/models/cms/Page_model.php deleted file mode 100644 index fda5fb1..0000000 --- a/public/app/models/cms/Page_model.php +++ /dev/null @@ -1,18 +0,0 @@ -<?php - -namespace app\models\cms; - -use \Registry; - -class Page_model -{ - public static function fromUrl($url) - { - return Registry::use('database')->query( - "SELECT * FROM pages - WHERE FullFriendlyUrl = :url AND IsActive = 1", - [ ':url' => $url ] - )->getFirst(); - } - -}
\ No newline at end of file diff --git a/public/app/models/ideas.md b/public/app/models/ideas.md new file mode 100644 index 0000000..300612d --- /dev/null +++ b/public/app/models/ideas.md @@ -0,0 +1,24 @@ +# interesting projects + +projects for brainstorming + +## php ORM projects + +* [riverside\php-orm](https://github.com/riverside/php-orm) seems the lightest and most promissing + +* https://github.com/mareimorsy/DB + +* https://propelorm.org/ + +* https://redbeanphp.com/index.php?p=/download + +* you can find more in a [related github topic](https://github.com/topics/php-orm) + + +Thoughts: +create a DatabaseModel class (??) based on the riverside\php-orm then use it in anom framerok + + +## php micro-framework + +* [riverside\php-express](https://github.com/riverside/php-express) seems quite interesting diff --git a/public/app/models/todo.md b/public/app/models/todo.md index defd21e..ec027a6 100644 --- a/public/app/models/todo.md +++ b/public/app/models/todo.md @@ -1,55 +1,41 @@ - - -Privilege ---- - -Privilege::list_of_privileges( privilege_id ) - -Privilege::privileges_tree() - - - - - -User +Rearange --- -User::get_privileges +-- #1 -- +[ok] app\controllers\cms\Course -> [*] app\controllers\Course -User::has_privilege( privilege_id ) +[ok] app\controllers\admin\Users_admin -> [delete] +[ok] app\controllers\Admin -> [delete] -User::reset_password() - -> create otp - -> send email +[ok] app\controllers\admin\Course_admin -> [*] app\controllers\Course_admin +[ok] app\models\admin\User_model -> [*] app\models\User_model -User::set_privilege( privilege_id ) +[ok] app\models\admin\Privilege_model -> [merge_to] -> [**] app\models\User_model +[ok] app\models\admin\History_model -> [*] app\models\History_model -User::track_action() - -> user_id - -> action : Contoller::method(args) - -> timestamp +[ok] app\models\cms\Page_model -> [delete] +[ok] app\models\cms\Media_model -> [delete] +[ok] app\models\cms\Course_model -> [*] app\models\Course_model -Lesson: ---- -Lesson::create_lesson( POST ) +[*] = move -Lesson::get_lesson( lesson_id ) +-- #2 -- +[ok] app\controllers\Course -> [rename] app\controllers\Cms -Course ---- +[ok] app\controllers\Course_admin -> [rename] app\controllers\CmsAdmin -Course::create_course( POST ) +[ok] app\models\Course_model -> [rename] app\models\Cms_model -Course::courses_tree() +[ok] app\extends\Send_mail -> [rename] SendMail_service |
