Fork me on GitHub



Make donations with PayPal!
Goal: $100.00
Due Date: Nov 30
Gross Amount: $0.00
Net Balance: $0.00
Left to go: $100.00

Learn XOOPS Core

Local Support


XOOPS Code hosted on SourceForge

Cumulus Tag Cloud

- 2 2.5 2.6 4 6 admin Android AntiHarvesting AntiSpam API Apple Battlefield Blocks Bootstrap Captcha cell chronolabs Clicks Cloud content CĂN demo download Dresses facebook Fat floor for free Gateway giải Google Guide herre Home Honeypot html5 Human HỘ IP iPhone jQuery Language Law Legal List log Loss module modules Monster new newbb news nhiệt NHÀ online PARK Payment phone PHP Prevention profile project Protector publisher RESIDENCE responsive review Rights rmcommon Room security Sentry Signed site Smartphone Smarty Smoking Solution Spam stem Studio support tag tdmcreate The Theme themes User userlog web weight xoops Xortify XPayment ZendFramework

New Users

Registering user

# 138593


Welcome to XOOPS!


News archives

RSS feed

eEmbed now included in XOOPS 2.6.0

Posted by Mamba on 2015/11/12 23:20:00 (576 reads) | Posted on XOOPS
Including and presenting Media has just become so much easier in the next version of XOOPS!

Richard just added the "oEmbed" capability to XOOPS 2.6.0

So what is oEmbed?

oEmbed is a format for allowing an embedded representation of a URL on third party sites. The simple API allows a website to display embedded content (such as photos or videos) when a user posts a link to that resource, without having to parse the resource directly, in other words, it allows embedding content from a website into another page.

An oEmbed exchange occurs between a consumer and a provider. A consumer wishes to show an embedded representation of a third-party resource on their own website, such as a photo or an embedded video. A provider implements the oEmbed API to allow consumers to fetch that representation.

In XOOPS, similar to 'Clickable' filter, Embed will process a URL alone on a line using the embed/embed package. For URLs supporting oEmbed, such as YouTube, the oembed result will be shown. For other URLs, a default media box, built from the page content, will be displayed. See example below of the code, and then representation provided thanks to oEmbed:

Resized Image

How cool is that?

You can test this version by forking or downloading it from our GitHub account


Shortcodes are coming to XOOPS 2.6.0 :D

Posted by Mamba on 2015/11/1 5:50:00 (1031 reads) | Posted on XOOPS
Richard continues to doing amazing changes to XOOPS 2.6.0. The latest addition are "Shortcodes", which are probably best known from WordPress. I was actually hoping for it for a long, long time, and I was very happy to see that Richard has added it to XOOPS! YES!!!

It was possible thanks to refactoring of our old TextSanitizer. You can read more details from Richard's info on GitHub

MyTextSanitizer has become Xoops\Core\Text\Sanitizer.


- Single unified configuration file


- Extensions (i.e. YouTube) are now a SanitizerComponent, a base class that also includes Filters (i.e. Xss)

- Each SanitizerComponent auto-configures, and configuration is automatically updated with new additions

- Custom components can be added via response to core.sanitizer.configuration.defaults event

- ShortCodes (WordPress style) are now the basis of XoopsCode and extensions

- Custom ShortCodes can be added via response to

event, or by directly accessing the ShortCodes engine with


- All built-in components and shortcodes can be overridden with same named custom replacements

- Some extensions have updated syntax. For example:


can now be:

[youtube url="JxS5E-kZc2s" width="640" height="385" /]

(It also can use virtually any known YouTube URL as the url attribute.)

- Another example is SoundCloud, which now can directly support the "Wordpress code" option offered in the Share/Embed dialog on

The old styles are still accepted for compatibility with existing content, and not all extensions have conversions to new styles, yet. There is more work to be done, but the backing code is now in place.

What does it mean for XOOPS developers? We'll be able now to simplify a lot of activities around designing the best looking Websites for our users and customers!
Also our users will be able to add tons of cool features without any programming!

For those of you who never worked with ShortCodes, let's provide a short overview and a little tutorial. The basic classes that we'll be using, are the TextSanitizer classes refactored by Richard:

Resized Image

Currently we have following classes derived from FilterAbstract :

- Censor
- Clickable
- Quote
- SyntaxHighlight
- TextFilter
- Xss

and following classes derived from ExtensionAbstract:

- Flash
- Iframe
- Image
- Mms
- Mp3
- Rtsp
- SoundCloud
- UnorderedList
- Wiki
- Wmp
- XoopsCode
- YouTube

For our purposes we'll be using mainly the ExtensionAbstract class. Let's see now how can we use it to create ShortCodes for Google Charts and Google Maps (Read more-->)

Read more... | 26474 bytes more | 4 comments

XOOPS 2.6.0 Goes PSR-4 plus Other Core Enhancements

Posted by Mamba on 2015/10/24 4:10:00 (1117 reads) | Posted on XOOPS
1) Richard is powering forward with some very cool enhancements for the Core of XOOPS 2.6.0. Recently he committed these enhancements:

First stage of localization refresh #261, and other misc cleanup

- Implements localized date and time handling. PHP DateTime objects used extensively in all date processing. Localization is provided by [Punic](

- Add `Request::getDateTime()` Returns a `\DateTime` object from `Form\DateSelect` and `Form\DateTime` input. The form classes can also receive DateTime objects as values. Form dates are now local to the user, or system default if no user.

- Timezones are now PHP `DateTimeZone` names, not float offsets. PHP DateTime and DateTimeZone objects are used to implement all calculations. This makes handling of things like daylight savings or summer time automatic.

- Add `Dtype::TYPE_TIMEZONE` to store and restore \DateTimeZone objects

- Add Smarty `datetime` modifier, allowing both unix timestamps and DateTime objects to be processed by XoopsLocale::formatTimestamp(), allowing date and time formatting to be controlled in the presentation layer with tags like `<{$datevariable|datetime:'short'}>`

- XoopsList class broken into individual classes in `Core\Lists`. These class are expected to implement `Core\Lists\AbstractList`. These can interact directly with form fields, reducing code complexity and duplication.

- Add select_editor 'formtype' for $modversion['config']. This removes the need for active code to load editors in a module's xoops_version.php. All editor lists now originate from one point, Core\Lists\Editor

- New subclass of Form\Element, OptionsElement which provides the standard option methods. List classes can interact with any extender of OptionsElement, see Core\Lists\AbstractList::setOptionsArray()

- `Xoops_*` classes moved to actual `Xoops` namespace. These *PSR-0*, pseudo namespaces are obsolete. Their removal allows us to move to PSR-4 based loading for the Xoops namespace.

- CountryFlag service no longer delivers bare URL to resource, only HTML to display flag. This allows more flexibility on how the flag is presented.

- Accept `Trowable` in `Core\Logger::handleExeception()` (PHP7)

He also posted a RFC (Request for Comments) on three issues:

- Namespaces
- Moduels vs. Extensions
- Add a modinfo column to system_module

I've given a lot of consideration to modules, and have a few ideas I want to present. If you have comments, alternatives, objections or other feedback, please respond. Baring objections, I would like to move on this quickly.


Add a namespace column to system_module table. This would be the PHP namespace for the module's code. It would map to the module's class directory in PSR-4 fashion. This would be implemented automatically for all active modules with a namespace specified.

Note, this will be separate from the composer maintained loader, since composer has no way of knowing if a module is "active" in XOOPS. Autoloading components from modules which are not installed or inactive could create lots of issues.

With the namespace enabled, most of the old directory positional naming constructs can be replaced with objects. For example, instead of using the $modversion['onInstall'] entry to locate a file to include, then building function names based on the module name, the code would look more like this:

if (class_exists($moduleNamespace 'SystemInstall')) {
$install = new $moduleNamespace 'SystemInstall;
    $success = $install->postInstall($module);

Our current preloads directory, with possibly multiple files, would disappear, and everything would reside in the$moduleNamespace . 'System\Events' class instead.

In this scheme, the class/System directory would be reserved for the system specified classes. Each would have a specific interface defined.

There are more details, but this should illustrate the concept.

Modules vs. Extensions

Based on some thoughts from @bitcero and some more consideration, I propose eliminating the extension concept as is, and moving to a module category system to make management cleaner.

Categories would be something like this:

Category: Usage
Content: articles, blogs, calendars, forums, etc.
Developer: module builders, schema tools
Extension: service providers, system enhancement
Locale: i18n resources, language packs
Theme: for the new module based themes

This is not carved in stone, but the idea is to create a limited, high level taxonomy to categorize modules. The defined categories would be enforced, as we don't need a free for all. The module listing functions would be adapted to deliver lists of individual categories.

A category column on the system_module table would hold this item. To support subtle differences, each category would be backed by a sub class of the system module class, but all would offer the same functionalities.

Add a modinfo column to system_module

Caching of the $modversion array has been suggested many times. Adding a single column set on install and update can accomplish this, and the existing getInfo() and related methods will be able to use the column data as the source, eliminating the need to hit the filesystem.

With this information in the database, all the module object access can be fully cached, which should speed thing up a bit.

Please respond directly on GitHub

Resized Image

It is also worth to mention that Eduardo is making some major progress on creating a new "Presentation Layer" in XOOPS 2.6.0 based on his excellent "Common Utilities"

Slowly but surely, the pieces of the puzzle called XOOPS 2.6.0 are starting to fall in place!

Read more... | 1 comment

New Tutorials added to XOOPS Documentation

Posted by Mamba on 2015/9/27 5:40:00 (1279 reads) | Posted on XOOPS
Last year we've started to standardize on GitBook as our delivery mechanism for XOOPS Documentation (see here)

Resized Image

Today I've added couple of new Tutorials: xLanguage and NewBB. They are not yet finalized and are still "work in progress", but because of this it gives the XOOPS Community the opportunity to get involved and help with improving our documentation, which we know is badly needed!

Please note that ALL of the XOOPS books are hosted on GitHub in the XOOPS Documentation repository, and therefore they all can be "forked", improved by you, and your modifications can be then submitted back to the original for inclusion. This is exactly the same process as with using GitHub as a Version Control for source code

The beauty of it is that you can learn and practice how to use GitHub, and at the same time help XOOPS to improve its documentation, especially since for writing documentation there is no programming expertise needed, but only the familiarity with the module. You can also start using the particular module and write the documentation as you learn how to use it.

The advantage of this approach is very clear: the XOOPS developers have limited amount of time, and they can:

1) spend it on debugging and improving existing modules, and developing new ones,
2) or they can spend it on writing tutorials.

It would be truly fantastic if those XOOPS users who don't have programming skills, could help us with documentation!

Read more... | 3 comments

Work on XOOPS 2.6.0 Presentation Layer has started

Posted by Mamba on 2015/5/18 16:30:00 (5685 reads) | Posted on XOOPS
We are very happy to let you know that Eduardo has started to work on the "Presentation Layer" in XOOPS 2.6.0, using his fantastic Common Utilities as basis to merge them into the Core

Resized Image

We all know and love the work done by Eduardo over the years, and therefore we know that XOOPS 2.6.0 will have an awesome Admin GUI for the Core and for the modules!

More info and screenshots are on GitHub XOOPS, as well as the follow-up discussion.

Read more... | 9 comments

Goffy joins the German-speaking XOOPS Team

Posted by Mamba on 2015/5/1 13:20:00 (4382 reads) | Posted on XOOPS
It's nice to see a new energy in the German-speaking XOOPS community, which recently added a new team member, Goffy, to its Admin team:

Resized Image

Goffy has been using XOOPS since 2004, and got into more serious development since 2010. He is author and contributor to several modules, incl. the excellent xNewsletter.

Bleekk, another member of the team, who we all know from his cool theme designs for XOOPS, is working on a new theme for the XOOPS German-speaking community, and the preview looks excellent (I've seen it and I loved it!!!! )

We are very happy to see the re-energized team, and wish Goffy and the whole German-speaking community much success and fun with XOOPS!


Read more... | 5 comments

XOOPS standardizes its Documentation on GitBook Platform

Posted by Mamba on 2014/12/2 17:00:00 (5729 reads) | Posted on XOOPS
Resized Image

We are happy to announce that going forward XOOPS is standardizing its all Documentation on the GitBook Platform

As you can see above, we have already converted several of our documents to GitBook, and there will be more coming

In the meantime please go to our GitBook Repository, check it out, and let us know what you think.

Why GitBook?

GitBook is a tool for building beautiful books using Markdown syntax. It can generate your book in multiple formats: PDF, ePub, mobi or as a Website. By leveraging GitHub, it provides the best collaboration tool for developers and documentation writers to work together, and with an excellent Versioning system as a foundation.

The biggest advantage for Open Source projects such as XOOPS, is that everybody can contribute to the documentation by simply forking the document and submitting changes back to the team.

Another advantage of GitBook is the option to have multi-lingual versions in one single repository, with users being able to select their own language. Since XOOPS is a very international project, this is very important to us.

Some of the key features:

Version Control, GitBook is based on GIT scm. A simple "git push" is enough to publish a new version.

Markdown, books are written using the markdown syntax. Asciidoc and TeX support is planned.

Simple to update, publish and update your books easily using Git or the editor.

Responsive, books can be read on all devices, laptops, tablets, phones, kindles, etc.

E-book readers, books are readable on the Amazon Kindle, Nook and other readers (PDF, ePub, Mobi).

GitHub, write your book on GitHub and publish it in seconds through GitBook.

Choose your price, or accept donations, from $0 (or free) to $100.

Communicate, update and engage your readers with the progress of your work.

This is a very exciting for us, because we know that while XOOPS was always known for a very good code and great modular architecture, we were never able to create good documentation.

We believe that thanks to GitBook we have now found a tool that will help us to:

a) streamline the documentation process and make it more efficient

b) engage the community by leveraging the same "forking and submitting pull requests" process as they are already using at their normal coding activities.

For the people who would like to help us:

1) We have documented the XOOPS Documentation Process, so please review it and let us know if it works for you

2) We have created a "XOOPS Docs Starter Kit" with a predefined folder and file structure, that you can use to jump-start your project

We hope that once you realize how easy it is to contribute, you'll help us to make XOOPS Documentation really shine!!!


Read more... | 4 comments

XOOPS Security Patch Released

Posted by Mamba on 2014/11/25 0:20:00 (13943 reads) | Posted on XOOPS
The XOOPS Development Team is pleased to announce the release of a security patch for XOOPS 2.5.7 Final.

This patch for XOOPS 2.5.7 corrects the following issues:

- CSRF and XSS issues reported by Dingjie 'Daniel' Yang of Web Security Lens
- XSS and best practice issues reported by Narendra Bhati

We would like to specifically thank our friends Dingjie 'Daniel' Yang of Web Security Lens and Narendra Bhati, who notified us about these issues, and to Richard (aka Geekwright), our Core Team Leader, who provided the fixes.

All XOOPS 2.5.7 users are advised to apply this patch as soon as possible.

Download: You can download the patch from XOOPS File Repository on SourceForge

Any users that are running an older XOOPS version are advised to update to XOOPS now, which includes the patch.

Resized Image

You can find more information about the original XOOPS 2.5.7 release in this article

Read more... | 3 comments

Visualization of XOOPS 2.6.0 development on GitHub: One year in 45 seconds

Posted by Mamba on 2014/11/12 6:11:34 (3612 reads) | Posted on XOOPS
Gource is a software version control visualization tool, and it can create very cool videos showing the development over time.

Software projects are displayed by Gource as an animated tree with the root directory of the project at its centre. Directories appear as branches with files as leaves. Developers can be seen working on the tree at the times they contributed to the project.

Below you can see the XOOPS 2.6.0 development on GitHub: one year in 45 seconds


XOOPS supports "Hour of Code" (Dec. 8 - 14, 2014)

Posted by Mamba on 2014/11/4 8:46:46 (4518 reads) | Posted on XOOPS
Join the Hour of Code December 8 - 14, 2014

The Hour of Code is a global movement reaching tens of millions of students in 180+ countries. Anyone, anywhere can organize an Hour of Code event. One-hour tutorials are available in over 30 languages. No experience needed. Ages 4 to 104.
Last year hundreds of organizations joined together to create fun introductions to programming for all to learn. This year the goal is to get 100 million participants from all across the globe.

Let's make sure that ALL schools where you live are represented, and all children have the opportunity to have their "Hour of Code"

If you organize an "Hour of Code" event, or volunteer for one, please share it here with us!

1 2 3 4 ... 70 »