Resources for esoProjects

development, esoprojects, meta, resources 
Members allowed to view this conversation


Last year Administrator

esoProjects is the open-source derivative of esoForum (appended to the modified version of esoTalk). While that's complicated, here's what isn't: the project itself is entirely open-source, and continuing it (adding new features and refining the code) is supported by our community. Here, you'll find a detailed list of resources (and other information) concerning the project. It's a documentation page, if you will, and it's been stickied so developers can quickly locate this source. ;)

View esoProjects:
This copy of esoProjects will not run! It is currently missing core files. Once a complete release is finished, it will be listed as a beta version.
Pre-beta release a510756 (v2): https://git.io/fhxUw
Pre-beta release 2f66ae8 (v1): https://git.io/fhxUi

Help improve this post:
You can help improve the developer documentation in this post by sending an edited (better) copy via private message to the forum owner. :D

Copyright information

The forked project is licensed under GNU-GPL 2.0 (proof of this can be found here); this means that it's legal to modify, distribute, and commercially use the esoTalk software. Legally, esoProjects also falls under this license (being a derivative thereof) and thus allows you to do the same with it. esoTalk itself is the sole property of Toby and Simon Zerner; the modified works of it (esoProjects) are both of that aforementioned property, and of esoForum as a non-profit organisation. Here's what that means, in layman's terms:

  1. Don't remove copyright notices on the esoProjects readme, and subsequent contents, belonging to Toby or Simon Zerner.
  2. Maintain copyright of respective properties to esoForum; and to Toby and Simon Zerner.
  3. Abide by the GNU-GPL 2.0 license. You can view it here.

Since this is a relatively small fork, copyright is laxed. Simply, don't steal people's work, and there's no problem. It takes after the majority of open-source projects, but what's key to remember is that esoTalk, esoForum, and esoProjects do not mean the same thing altogether.

Hooks on esoProjects

Hooks are strings which you can hook onto with your own code, as an esoProjects plugin. The syntax to hook your own code onto one of the following hooks is $controller->addHook("hookName", "yourFunction"); – for example, too hook the function addSignatureToPostArray onto the getPost hook in the conversation controller, the following would be used:

if ($this->esoTalk->action == "conversation") { 
    $this->esoTalk->controller->addHook("getPost", "addSignatureToPostArray"); 

Some hooks allow a value to be returned, which will halt any further processing (in the context of the hook) from occurring. One such example is the validateAddReply hook in the conversation controller, which will display a message identified by the return value of a hooked function (if applicable).

esoTalk controller:
(Where $this is an instance of the esoTalk controller.)

  • init( &$this ) - initialisation of the esoTalk controller.
  • beforeDatabaseQuery( &$this, &$query ) - before a database query is executed.
  • afterDatabaseQuery( &$this, $query, &$result ) - after a database query is (successfully) executed.
  • beforeLogin( &$this, &$components ) - before the login query (to fetch user data) is constructed and executed.
  • afterLogin( &$this, &$data ) - after the user $data is successfully fetched from the database.
  • logout( &$this ) - when the user is logged out.
  • getStatistics( &$this, &$result ) - when forum statistics are fetched in an array of keystatistic_text.
  • ajax( &$this ) - when an AJAX request to this controller is made; can return something.
  • star( &$this, $conversationId ) - when a conversation is starred or unstarred.
  • changeMemberGroup( &$this, &$group ) - when changing a member's group.
  • ajaxFinish( &$this, &$result ) - before the $result array is outputted as a JSON string.
  • pageStart( &$this ) - situated directly after the <body> tag.
  • pageEnd( &$this ) - situated directly before the </body> tag.
  • head( &$this, &$html ) - when the $html to go inside the <head> tag is generated.
  • message( &$this, &$key, &$disappear, &$arguments ) - when a message is collected to be displayed on the page.
  • fatalError( &$this, &$message ) - when a fatal error occurs.
  • getAvatar( &$this, $memberId, $avatarFormat, $type ) - when the path to a user's avatar is gotten; can return an avatar path.
  • updateLastAction( &$this, &$action ) - when updating a user's last action in the database.

esoTalk source code

A preserved, untouched copy of esoTalk lime (the earliest copy found on GitHub) is available here. esoProjects does not use this. Instead, the fork utilises a later version (published in roughly December of 2009) which no longer exists in any complete, unmodified form.

[to be added]

Hey! You need to log in or create an account to do anything on this forum.