H2Admin - The standalone Housekeeping solution (PHP7, CakePHP)

Status
Not open for further replies.
Joined
Sep 2, 2011
Messages
2,371
Reaction score
1,361
NoBrain - H2Admin - The standalone Housekeeping solution (PHP7, CakePHP) - RaGEZONE Forums

Hey,

Before I get into the intricate details surrounding the development of H2Admin, I just want to say this development will progress slowly due to my working hours. The development progress will also depend on how tired I am after work, large amounts of work on H2Admin will be done on Saturday and Sunday. So, let's begin with the details.

What is H2Admin?
H2Admin is a standalone Housekeeping solution, completely separate from the actual site. This means the Housekeeping accounts are also separate from the standard user accounts, which is completely intentional. It is an easy-to-use and extensive Habbo private server administration panel which allows absolute control, with no compromises. Even down to per-page permissions. Built on CakePHP, it provides a solid, stable and secure platform to allow all kinds of administrative tasks you can think of. Manage your permissions in a per-page environment, post news articles, create new ranks, manage your CloudFlare account directly from the Admin Panel, and so much more.

Features
H2Admin's features are always growing, the list below shows all the current navigation options available. More are to be added in the future.

Green = Completed
Orange = In Progress
Red = Planned


  • Login
  • Log out
  • Manage group permissions
  • Dashboard
    • Widget: Staff Online Now
    • Widget: Staff Notices
    • Widget: Users Online
    • Widget: Rooms Loaded
    • Widget: User Peak
  • Users
    • View all Users
    • Ban a User
  • Word Filter
    • Filtering List
    • Filter a Word
  • Tickets
  • Logs
    • ​Commands
    • Trades
    • Name Changes
  • Housekeeping
    • Accounts
    • Groups
    • Staff Notices
    • System Logs
  • Ranks
    • View Ranks
    • Create a Rank
  • Alerts
    • Hotel Alert
    • Room Alert
  • News
    • Manage News
    • Create an Article
  • Extensions
    • CloudFlare
  • System
    • Configuration
    • Server Information
    • About


Frequently Asked Questions

Q: When will H2Admin be released?
A: When it's ready.

Q: What version of CakePHP does H2Admin use? And why?
A: Currently it's using CakePHP 2.8.5 since I am used to it and the significant changes in CakePHP 3 are something I am not yet comfortable with.

Q: Is it secure?
A: Thanks to CakePHP's built-in security features, yes it is - very. On top of that every action that is done by Housekeeping accounts are logged, along with anyone that visits the Login page.

Q: Will there be any Alpha or Beta releases?
A: More than likely, just to gather data on what users want the most out of H2Admin and where things can be improved.

Q: What version of PHP does H2Admin support?
A: PHP 5.4 and above, it is recommend to run either PHP 5.6 or PHP 7.

Q: How can I request a feature?
A: Just post in this thread and I'll note it down.

Q: Are you going to make the repository public?
A: Once the first Alpha and/or Beta release comes out, yes.


​
Development Team

  • nobrain
Screenshots

NoBrain - H2Admin - The standalone Housekeeping solution (PHP7, CakePHP) - RaGEZONE Forums


NoBrain - H2Admin - The standalone Housekeeping solution (PHP7, CakePHP) - RaGEZONE Forums


NoBrain - H2Admin - The standalone Housekeeping solution (PHP7, CakePHP) - RaGEZONE Forums


NoBrain - H2Admin - The standalone Housekeeping solution (PHP7, CakePHP) - RaGEZONE Forums


NoBrain - H2Admin - The standalone Housekeeping solution (PHP7, CakePHP) - RaGEZONE Forums





NoBrain - H2Admin - The standalone Housekeeping solution (PHP7, CakePHP) - RaGEZONE Forums
 
Last edited:
This project seem to have so many features & professional and clean design :):

Looking forward to this one! Good luck dev team.

Plenty more stuff on the way!

---

Just a quick update:

-Fixed a typo in the code to one of the Widgets.
-Begun work on News Management and Creating Articles.
-Displaying of all news articles complete, need to work on pagination.
-Re-organised Navigation options, still continuing this.
-Added Authake menu item on Navigation for easier access.
-Fixed an issue concerning Authake.
-Prepared Configuration, Chat Logs and Tickets pages for more work tomorrow.

Found a rather serious issue with the Pagination in the CakePHP framework, seems to be only my version / files. Need to test this on other CakePHP 2.x version(s) tomorrow.

More updates tomorrow, then again I should really say today considering it's 1:17am.
 
Last edited:
Updates:

-Viewing the list of available ranks in complete.
-Viewing the list of news is complete. Also displays which ones are published and which ones aren't.
-Managed to fix that Pagination error. Turns out it was a typo.
-You're able to specify the badges URL in the configuration table.
-Added a search box to navigation bar for quick searching of users.

Images:

The "Options" table column will also be the same width as the one shown in the "Ranks" image.

NoBrain - H2Admin - The standalone Housekeeping solution (PHP7, CakePHP) - RaGEZONE Forums


NoBrain - H2Admin - The standalone Housekeeping solution (PHP7, CakePHP) - RaGEZONE Forums




Access Denied page, for those of you who are wondering:

NoBrain - H2Admin - The standalone Housekeeping solution (PHP7, CakePHP) - RaGEZONE Forums




Updates:

-Added 'Client' menu item.
-Added Navigator management menu items.
-Added Catalogue management menu items.
-Added Bots management menu items.
-Create a Rank page completed.
-Still doing work on the System Configuration page.

Images:

NoBrain - H2Admin - The standalone Housekeeping solution (PHP7, CakePHP) - RaGEZONE Forums


NoBrain - H2Admin - The standalone Housekeeping solution (PHP7, CakePHP) - RaGEZONE Forums
 
This looks very promising and a good feature would be a layout changer or a color changer for the page if someone does not like the current blue and black colors but keep up the good work on it
 
Design looks awesome so far! Good work.

With what database does this work? Are you using PlusEmu database as base, example; for chatlogs, users permissions?
 
Design looks awesome so far! Good work.

With what database does this work? Are you using PlusEmu database as base, example; for chatlogs, users permissions?

As of currently, Phoenix. I was unsure which database / emulator is used the most so I thought **** it and went with Phoenix. Down the road I'll more than likely implement multi-database types along with easy switching between formats.



Updates:

-Navigation search box works, things you can search through:
-ID
-Username
-Email
-Rank
-Last IP
-Register IP​
-Viewing all users works, complete with pagination and allowing you to order ascendingly or descendingly. Limited to 10 per page.
-Begun work on User editing page.
-Begun work on User deletion.

Images:

First image is Ascending, second image is Descending. By default when searching it's ascending.


NoBrain - H2Admin - The standalone Housekeeping solution (PHP7, CakePHP) - RaGEZONE Forums


NoBrain - H2Admin - The standalone Housekeeping solution (PHP7, CakePHP) - RaGEZONE Forums


NoBrain - H2Admin - The standalone Housekeeping solution (PHP7, CakePHP) - RaGEZONE Forums


NoBrain - H2Admin - The standalone Housekeeping solution (PHP7, CakePHP) - RaGEZONE Forums
 
Last edited:
Why no code snippets??? I'm also interested in hearing what you put into a "secure platform". Also by seeing on the URLs in your so called "screenshots", does those imply you would run the hk panel on a separate domain, or is it possible to run it as a subdir? Also, -looks at calendar- I thought we were way past 2006, why are we still using PhP? i r8 2/11, almost as usless as ur my plastic bag xoxo (but in all fairness it looks like a pretty promising project, except that its a PhP panel which doesn't really make it much innovative imo)
 
Why no code snippets??? I'm also interested in hearing what you put into a "secure platform". Also by seeing on the URLs in your so called "screenshots", does those imply you would run the hk panel on a separate domain, or is it possible to run it as a subdir? Also, -looks at calendar- I thought we were way past 2006, why are we still using PhP? i r8 2/11, almost as usless as ur my plastic bag xoxo (but in all fairness it looks like a pretty promising project, except that its a PhP panel which doesn't really make it much innovative imo)

There will be snippets soon, chill. You can run it on either a separate domain or a sub directory - it only needs to be connected to the same database that your CMS is on, completely up to you. PhP is best language just ask the god ovflowd kek. Thanks Mr Marit, xoxoxo <3
 
Nobrain, this is the best Housekeeping development that i ever seen. I really wish good luck. The screen shots and the features sounds promising! Can you add some snippets later?

Good luck.

Aye, there's literally not much to show considering Cake's built in stuff handles most of it but I'll throw up a public repository in the near future. Extremely busy with work at the moment.
 
Last edited:
Hi,

I've been extremely busy with work at the moment so here have a snippet. It might be a bit buggered because I copied it from my Bitbucket. More on the way later this week. This code WILL be changed in the future, there's no doubting that.

Code:
[COLOR=#999999]<?php[/COLOR]

class [COLOR=#445588]MembersController[/COLOR] extends AppController
{
    public [COLOR=teal]$uses[/COLOR] = array([COLOR=#BB8844]'users'[/COLOR], [COLOR=#BB8844]'Member'[/COLOR]);

    public [COLOR=teal]$components[/COLOR] = array([COLOR=#BB8844]'Paginator'[/COLOR]);

    public [COLOR=teal]$helpers[/COLOR] = array([COLOR=#BB8844]'Paginator'[/COLOR]);

    public function [COLOR=#990000]index[/COLOR]()
    {
        [COLOR=#BB8844]/**[/COLOR]
[COLOR=#BB8844]         * Set page title[/COLOR]
[COLOR=#BB8844]         */[/COLOR]
        [COLOR=teal]$this[/COLOR]->[COLOR=teal]set[/COLOR]([COLOR=#BB8844]'title_for_layout'[/COLOR], [COLOR=#BB8844]'Members'[/COLOR]);

        [COLOR=#BB8844]/**[/COLOR]
[COLOR=#BB8844]         * Set logged in template.[/COLOR]
[COLOR=#BB8844]         */[/COLOR]
        [COLOR=teal]$this[/COLOR]->[COLOR=teal]layout[/COLOR] = [COLOR=#BB8844]'default-in'[/COLOR];

        [COLOR=#BB8844]/**[/COLOR]
[COLOR=#BB8844]         * Paginate whole table.[/COLOR]
[COLOR=#BB8844]         */[/COLOR]
        [COLOR=teal]$this[/COLOR]->[COLOR=teal]Paginator[/COLOR]->[COLOR=teal]settings[/COLOR] = array([COLOR=#BB8844]'order'[/COLOR] => [COLOR=#BB8844]'username'[/COLOR], [COLOR=#BB8844]'limit'[/COLOR] => [COLOR=#009999]10[/COLOR]);
        [COLOR=teal]$members[/COLOR] = [COLOR=teal]$this[/COLOR]->[COLOR=teal]Paginator[/COLOR]->[COLOR=teal]Paginate[/COLOR]([COLOR=#BB8844]'Member'[/COLOR]);

        [COLOR=#BB8844]/**[/COLOR]
[COLOR=#BB8844]         * Search functionality.[/COLOR]
[COLOR=#BB8844]         */[/COLOR]
        if ([COLOR=#999999]isset[/COLOR]([COLOR=teal]$this[/COLOR]->[COLOR=teal]request[/COLOR]->[COLOR=teal]query[/COLOR][[COLOR=#BB8844]'membersearch'[/COLOR]]) && [COLOR=teal]$this[/COLOR]->[COLOR=teal]request[/COLOR]->[COLOR=teal]query[/COLOR][[COLOR=#BB8844]'membersearch'[/COLOR]] != [COLOR=#BB8844]''[/COLOR])
        {
            if ([COLOR=#999999]strpbrk[/COLOR]([COLOR=teal]$this[/COLOR]->[COLOR=teal]request[/COLOR]->[COLOR=teal]query[/COLOR][[COLOR=#BB8844]'membersearch'[/COLOR]], [COLOR=#BB8844]'+-<>~'[/COLOR]) !== false)
            {
                [COLOR=teal]$mode[/COLOR] = [COLOR=#BB8844]' IN BOOLEAN MODE'[/COLOR];
            }
            else {
                [COLOR=teal]$mode[/COLOR] = [COLOR=#BB8844]' '[/COLOR];
            }

            [COLOR=#BB8844]/**[/COLOR]
[COLOR=#BB8844]             * Search conditions[/COLOR]
[COLOR=#BB8844]             */[/COLOR]
            [COLOR=teal]$conditions[/COLOR] = array(
                array(
                    [COLOR=#BB8844]'or'[/COLOR] => array(
                        array([COLOR=#BB8844]'Member.id ='[/COLOR] => [COLOR=teal]$this[/COLOR]->[COLOR=teal]request[/COLOR]->[COLOR=teal]query[/COLOR][[COLOR=#BB8844]'membersearch'[/COLOR]]), [COLOR=#999988][I]// ID[/I][/COLOR]
                        array([COLOR=#BB8844]'Member.username LIKE'[/COLOR] => [COLOR=#BB8844]'%'[/COLOR] . [COLOR=teal]$this[/COLOR]->[COLOR=teal]request[/COLOR]->[COLOR=teal]query[/COLOR][[COLOR=#BB8844]'membersearch'[/COLOR]] . [COLOR=#BB8844]'%'[/COLOR]), [COLOR=#999988][I]// Username[/I][/COLOR]
                        array([COLOR=#BB8844]'Member.mail LIKE'[/COLOR] => [COLOR=#BB8844]'%'[/COLOR] . [COLOR=teal]$this[/COLOR]->[COLOR=teal]request[/COLOR]->[COLOR=teal]query[/COLOR][[COLOR=#BB8844]'membersearch'[/COLOR]] . [COLOR=#BB8844]'%'[/COLOR]), [COLOR=#999988][I]// Email[/I][/COLOR]
                        array([COLOR=#BB8844]'Member.rank ='[/COLOR] => [COLOR=teal]$this[/COLOR]->[COLOR=teal]request[/COLOR]->[COLOR=teal]query[/COLOR][[COLOR=#BB8844]'membersearch'[/COLOR]]), [COLOR=#999988][I]// Rank[/I][/COLOR]
                        array([COLOR=#BB8844]'Member.ip_last LIKE'[/COLOR] => [COLOR=#BB8844]'%'[/COLOR] . [COLOR=teal]$this[/COLOR]->[COLOR=teal]request[/COLOR]->[COLOR=teal]query[/COLOR][[COLOR=#BB8844]'membersearch'[/COLOR]] . [COLOR=#BB8844]'%'[/COLOR]), [COLOR=#999988][I]// Latest IP[/I][/COLOR]
                        array([COLOR=#BB8844]'Member.ip_reg LIKE'[/COLOR] => [COLOR=#BB8844]'%'[/COLOR] . [COLOR=teal]$this[/COLOR]->[COLOR=teal]request[/COLOR]->[COLOR=teal]query[/COLOR][[COLOR=#BB8844]'membersearch'[/COLOR]] . [COLOR=#BB8844]'%'[/COLOR]), [COLOR=#999988][I]// IP Registered[/I][/COLOR]
                    )
                )
            );

            [COLOR=teal]$this[/COLOR]->[COLOR=teal]Paginator[/COLOR]->[COLOR=teal]settings[/COLOR] = array(
                [COLOR=#BB8844]'fields'[/COLOR] => array([COLOR=#BB8844]'Member.*'[/COLOR]),
                [COLOR=#BB8844]'conditions'[/COLOR] => [COLOR=teal]$conditions[/COLOR],
                [COLOR=#BB8844]'order'[/COLOR] => array([COLOR=#BB8844]'Member.id'[/COLOR] => [COLOR=#BB8844]'ASC'[/COLOR]),
                [COLOR=#BB8844]'limit'[/COLOR] => [COLOR=#009999]20[/COLOR]
            );

            [COLOR=teal]$members[/COLOR] = [COLOR=teal]$this[/COLOR]->[COLOR=teal]Paginator[/COLOR]->[COLOR=teal]paginate[/COLOR]([COLOR=#BB8844]'Member'[/COLOR]);
        }

        [COLOR=teal]$this[/COLOR]->[COLOR=teal]set[/COLOR]([COLOR=#999999]compact[/COLOR]([COLOR=#BB8844]'members'[/COLOR]));
    }
[COLOR=#333333]}[/COLOR]
 
Since you're all about PHP7 you do know that you can now use short syntax for arrays in php
Code:
$a = [1, 2, 3, 4];
$b = ['one' => 1, 'two' => 2, 'three' => 3, 'four' => 4];

Code:
$a
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
)
Code:
$b
Array
(
    [one] => 1
    [two] => 2
    [three] => 3
    [four] => 4
)
 
I liked the snippet. But this method "index()" breaches the OO manifest.

But good luck.

I'm writing it as per CakePHP's 2.x documentation.

Since you're all about PHP7 you do know that you can now use short syntax for arrays in php
Code:
$a = [1, 2, 3, 4];
$b = ['one' => 1, 'two' => 2, 'three' => 3, 'four' => 4];

Code:
$a
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
)
Code:
$b
Array
(
    [one] => 1
    [two] => 2
    [three] => 3
    [four] => 4
)

I'm aware, I'm just used to using the previous method. It produces the same output and I'm also not all about PHP7 I'm just saying it's supported. Thanks for the information though.
 
Status
Not open for further replies.
Back