Notes and documentation for me specifically for writing code on XOOPS. This is NOT an exhaustive list, rather for those things I've done and want to reference. If it's of interest to everyone, then I'll contribute it to the XOOPS site.
These notes are pertinent to most versions of XOOPs, but as of last writing we were at 2.3.3+ (and 2.4.1 has just been released).
XOOPS APIs (by XooFoo)
Common XOOPS Functions
Modules
- $modnameHandler = &xoops_getmodulehandler($name = null, $module_dir = null, $optional = false)
- $gperm_handler = &xoops_gethandler('groupperm');
- $view_globalscope = $gperm_handler->checkRight("perm_title", $id_form, $groups, $mid); ($mid is moduleID)
- $config_handler =& xoops_gethandler('config');
- $formulizeConfig =& $config_handler->getConfigsByCat(0, $mid);
Note: common question is about difference between = &function and =& function.
User
- $xoopsUser->getGroups()
- $xoopsUser->isAdmin() = $isadmin
Using Group Permissions
PHP Code Needed, e.g.:
$groups = is_object($xoopsUser) ? $xoopsUser->getGroups() : XOOPS_GROUP_ANONYMOUS;
$gperm_handler =& xoops_gethandler('groupperm');
$perm = ($gperm_handler->checkRight('news_submit', 0, $groups, $xoopsModule->getVar('mid'))) ? true : false ;
$xoopsTpl->assign('perm', $perm);
Smarty Template:
<{if !$perm}>
If you were <a href="<{$xoops_url}>/user.php">logged in</a> (or a <a href="<{$xoops_url}>/register.php">registered user</a>) you could submit a news article.
<{else}>
<FORM METHOD='LINK' ACTION='<{$xoops_url}>/modules/news/submit.php'>
<INPUT TYPE='submit' VALUE='Add Your News'></FORM>
<{/if}>
XOOPS Forms
There is more to this of course, but here's a short example:
include_once XOOPS_ROOT_PATH . "/class/xoopsformloader.php";
$form = new XoopsThemeForm('Form Displayed Title', 'formidname', 'path/file.php');
$form->addElement(new XoopsFormText(_US_EMAIL, 'email', 25, 255));
$form->addElement(new XoopsFormButton('', 'submit', _SUBMIT, 'submit'));
$form->display();
XOOPSForms (/class/xoopsform/form.php)
ValidationJS doesn't "validate" dropdown type selections that start with "--NONE--" as being null. Or maybe it does. Should I test that further?
Criteria
note, never use CriteriaElement directly (don't remember the citation, but I remember the warning).
Using criteria, e.g.:
$criteria =& new CriteriaCompo();
$criteria->add(new Criteria('categoryid',$categoryid));
$criteria->setSort('weight');
printR($smartsection_item_handler->getObjects($criteria,'categoryid'),"Objects");
Conventions
- Class - CamelCase
- Hidden Variables - $_initialLowerCaseWithUnderscore
Notable Variables/Methods
- $xoopsTpl - class XoopsTpl - used by Smarty Templates. It's what is passed to the template for display. Variables:
- $xoopsObject - the basic object used
- initVar (initialize a named variable of the objects variable array)
- $xoopsDB - for working through the database
- $xoopsUser - class XoopsUser extends XoopsObject
XOOPS Security/Token Class
In short, create a token either using a form item or HTML:
- Form: $form->AddElement(new XoopsFormHiddenToken());
- HTML: $html = $GLOBALS['xoopsSecurity']->getTokenHTML(); (produces, e.g.: <input type='hidden' name='XOOPS_TOKEN_REQUEST' id='XOOPS_TOKEN_REQUEST' value='328ae5a791d23ef46f8d10e11a337ad8' />)
Check in code:
if ($GLOBALS['xoopsSecurity']->check()) {
// success path
} else {
// fails path
}