-
Development Update, February 2007-02
(News)
-
release, and some is part of the current nightly build from SVN. The items that are part of the MS3 package are indicated with a (*).
Installer and upgrade path
The installer for .8 now also checks for a web-user writable pnTemp directory. Before, only it's subdirectories had to be writable. However, more and more modules need a (temporary) writable directory of their own (for example cache directories for image creation or rss feeds). With a writable pnTemp, these modules are now easily allowed to create that directory themselves if it does not exist. (*)
The upgrade path from the historic .7 family has been updated: Some code has been added to migrate blocks placements into the new block_placements table. (*)
Furthermore, old style (legacy) blocks can now be stored in the /config/blocks directory. The specific files do need to be copied manually from the old /includes/blocks directory to it's new location. (*)
Core (API) and environment variables
In the core pnAPI, get_magic_quotes_runtime() was called lots of times for different purposes. With an internal caching method, the result is stored in the global PNRuntime array. Big advantage is that the site's speed has been significantly improved. (*)
Robert has added an enhancement to allow the pnSessionGet/Set/DelVar functions to accept an (optional) path argument (arguments 'autocreate' and 'overwriteExistingVar'). This will allow for easy setting of complex array structures. The change only adds extra arguments to the existing functions and are backwards compatible. At this moment, no direct usage has been committed yet.
PostNuke Object library
At this stage of development, a lot of changes are (and have been) made to the object library. Most of them are 'simple' bug fixes, but some changes are worth mentioning here (additional functionality or changed methods).
In the DBUtil class, there now exists a new method to increment a field with the function incrementObjectFieldByID. This can be used by module authors for updating read counts of content items for example. (*)
Additionally, the function selectScalar has been added (which takes a SQL quesry as argument). This is mostly useful for places where you want to do a "select count(*)" or similar scalar selection.
The utf8 conversion functions (convertFromUTF8 and convertToUTF8) have moved from AjaxUtil to DataUtil when solving a bug to keep the users input in Ajax driven fields as they are intended.
While solving a Google AdSense script bug, where the script tags were automatically cleaned by the safeHTL output filter, a new feature has been added to FormUtil: Before cleaning posted input on an already installed site, the FormUtil now checks if the current user has overall admin permissions. This allows site admins to input potentially harmful tags (javascript for example), but it's their site after all!
Jörn has improved CSS style handling in pnForm plugins, as he has changed some pnForm classes to be derived from pnFormStyledPlugin, which in itself is derived from the original pnFormPlugin.
Because it's better to read the languages directory first for available languages and compare that result against the full list of languages in stead of the other way around, the LanguageUtil has a new function getInstalledLanguages. This now significantly reduces the number of directory checks.
To ensure that most commonly used plugins are found as early as possible, the order in the pnRender class, where the system is searching for plugins, has been modified. The current correct order for the 0.8 distribution is:
system/pnRender/plugins
system/Theme/plugins
config/plugins
current theme-directory/templates/modules/$module/plugins
current theme-directory/plugins
current module-directory/pntemplates/plugins
Furthermore, two new variables can be added to the rendered output page using the PageUtil class. First is 'description', which is default set to the current site slogan. Second is 'footer', with the ability to add custom content just prior to the closing body tag. The latter function is applied as an outputfilter.
Finally, an additional parameter 'display' is added to the pager plugin, which can be set to either 'page' or 'offset'. This is (why am I explaning, isn't this rather self-explanatory?) to allow paging by pages, rather than offsets. It also mirrors the 'show' parameter that exists in many templates (based on the example module) but was never actually implemented.
Last but not least, the Theme class has now added support for a filters section in a page configuration file. This allows for loading of, in the first instance, custom output filters. Note there is no user interface to the functionality the moment.And, why not, the Atom theme has been updated to Atom 1.0
Module modifications
The following modules have been updated for improved .8 compatibility, or just to make administering those modules easier.
The User module now has the long awaited alpha pager for browsing users. (*)
All occurences of the block rendering APIs (read by the Blocks module) have changed from the old style call "return themesideblock" to "return pnBlockThemeBlock". (*)
To the Settings module there has been added a configurable separator for permalinks (*)Furthermore, a switch to globally disable JS Quicktags (which adds a set of buttons for common html tags to enabled textareas) is now part of the Settings module. (*)
Both the Ratings and the Multisites module are modified to meet the new standards of coding and templating. Work still needs to be done to both modules, so testing functionality for these modules may not be that worthwhile as yet. (*)
The Theme module takes over from the Xanthia module in an upgrade. This doesn't mean that it is not Xanthia anymore: it still is actually the Xanthia 3.0 engine (*).
To the Recommend_Us module a display hook has been added. This will add a list of social bookmark links, like the Diggers plugin also does.
Language files overhaul
The language defines in some modules have been reviewed and adjusted to the naming conventions of .8 (see also Dev Update 2006-06). This means that module-specific language defines start with a module-name specific prefix. Additionally, some new general language strings (using the pnML function) have been added to the core language file. The major effect this will have is to subtantially reduce the number of strings that need translating.These changes are applied to the following system modules: Admin, Admin_Messages, AuthPN, Blocks, Mailer, legal, Settings and SysInfo. ValueAddons modules will follow later.
PostgreSQL DBMS testers wanted
The .8 DBUtil class, as mentioned many times before, makes it possible to run PostNuke on different DBMS platforms, like PostgreSQL,
Generated on February 20, 2007.
-
Development Update, December 2006-06
(News)
-
MileStone 3
The Dev Team is proud to conclude that MileStone 3 is quite near for release (check the .8 Development Cycle for details). With an enormous amount of commits from Robert, Oracle, PostGreSQL and MsSQL support are close (but not quite complete). The entire distribution should be tested for support to ensure the functionality. For this testing, there is an additional Theme plugin added for better / additional sql debug tracing output / options (function.sqldebug.php).
Patrick started finalizing the Search module, which involves every module that provides searchable data to have a pnsearchapi.php file and two templates, module_search_options.htm and module_search_results.htm. For better functionality, each searchplugin is given its own "namespace" via the array functionality of html forms. When each module is compliant to this standard, much gain can be achieved because (for example) inactive modules will not be called for a search query. Also, modules do not need to check for formdata themselves. See also Module Programming Part 4.
Drak has worked on an upgrader for 0.76x. This incomplete first version of upgrade76.php prepares the core so the usual upgrade script process can run.
Categories
The Topics module has been discussed within the theme. As most of you already know, the Categories module is much more powerfull for assigning categories (or topics) to various content on a PN site. The Topics module is an old style module, however lots of modules still rely on the presence of the module (or at least its tables), allthough the modules write directly to the code.
The Dev Team is currently looking for a way to import current Topics into the Categories so that, with an upgrade, on does not have to add these manually. It is up to module developers to support the new categories module, and not rely on the deprecated Topics module anymore. The import process of the Topics module will belong to the Categories module init.
We would like to urge all our test users (not necessarily has to be a developer) to take a look at categories, play around with it, test it, use it and come up with a list of bugs and suggestions for improvements. For feedback, one could use the 0.8-MS2 Feedback and (as always) bugs can be reported to the bug tracker.
System
Discussed in the team is the addition of config.php.dist files. In short, PostNuke is supplied with a dist file which will be read and modified by the installer, and then saved as config.php. The advantage is that config files can not be overwritten anymore when one upgrades it's PostNuke version. The disadvantage is that the webserver user (for example apache) will be the owner of the file. No decision about this issue has been taken yet, so for this time the historic way of config files is still active.
Jörg has worked on a basic check for module directory consistancy. This means, if there are duplicate module names (like system/foo and modules/foo, or even modules/FOO and modules/foo), the administrator will be noticed about this issue.
Another change is that module vars are now all serialized in the database and there is no longer any need for module developers to serialize or unserialize data before making the database calls.
The modules and system directories, and their purposes, were discussed. The system directory should only contain modules that are not allowed to be removed (the system wouldn't work without them), and the modules directory should include ValueAddons and 3rd party modules that are not a vital part to the core of the PostNuke framework. When you upgrade a module, it is left in an unactivated state, which isn't desirable to system modules. Therefore, System modules are now allowed to transition directly to active state after an upgrade.
The Error Logging functionality has been extended. If a pnRender template does not exist this will also be logged, which could be quite usefull for module developers.
The LogUtil::registerPermissionError() and LogUtil::registerAuthidError() methods are added. These method calls registerError and then logs the failed permission check and failed AuthID check respectively, so that they can be analyzed later. DB errors are now logged by DBUtil and Log Events can now be viewed in the Security Center.
Added by Frank is the option in the Users module to deactivate a user account untill the user re-accepts the terms of use. If he is logged in when deactivating the account he will be logged out during the next page load.
The returned header for a non existing user page now returns 404 in stead of 200, and the age check has been simplified and harder to get around.
Frank also enabled the addition of a generic object attribution (a very nice feature of the ObjectUtil) for the users table. Using this, one can add any datafield to the users table (as long as it is a string with max. 255 characters ;-) )
E.g. it is possible for pnForum now to store user related data this way, which makes its own user table obsolete. If you, as a module developer, need a new datafield, just add it and it is there.
Example: You have an attribute 'someattribute' with 'somevalue'. The array returned by pnUserGetVars() now contains an item '__ATTRIBUTES__' which is an associative array itself with key 'someattribute' and value 'somevalue'.
More information and code snippets can be found in the Wiki after the coding has completed.
Finally, the functions includeOnce and requireOnce were added to the Loader class, which speeds up require_once and include_once by a factor of up to 9 times.
New and updated pnRender Plugins
All pnRender plugins in the core will be renamed to lower case. The parameters used should also be lowercase. The Dev Team would recommend all module developers to do the same.
The following plugins were added or modified:
add_additional_header plugin is replaced with the pnpageaddvar plugin.
moduleadminlinks plugin is modified to add capability of separate title attribute, and allow links to be 'disabled'
pndebugenvironment and pndebug plugins are extended with more info and multilingual support
makelinks outputfilter (theme) plugin is a replacement for pn_bbclick, to create clickable links from urls
Finally, Jörn is planning to use the ExampleDB module as an example for the use of the pnForm plugins also.
ValueAddons
Some deletions have been applied to the ValueAddons directory, as follows:
TypeTool: This editor hasn't been updated since ages, the corresponding sourceforge project seems to be inactive for a while, and the html code created by typetool is not following current standards.
Replaced by Xinha (download)
Autolinks and Censor
Replaced by MultiHook (Minimum version needed is MultiHook 5.0 alpha)
Downloads: Maintained by cmods-dev.de
Weblinks: Maintained by cmods-dev.de
Messages
Replaced by pnMessages (download)
Polls
Replaced by AdvancedPolls (download)
Translations / Language defines
Another 'standard' that the Dev Team would like to recommend to module developers is the use of a naming scheme for translations, as it would help a lot to create more multilingual modules.
Each module should use module specific prefixes in their constant defines, e.g. _FOR_SOMETHINGISMISSING for Formicula or _PNMSG_INBOXFULL for pnMessages. This makes it easier for pnDefinemachine and can lead to more consistent translations.
This also enables us to implement an updated pnml plugin/function that offers the same kind of possibilities that the MultiHook has. All translated defines (or missing defines) get a little button that allows the admin to work on the translaton online while surfing his site. Changes will be stored directly in the pnDefinemachine tables to create the language files later on. Here the prefix enables us to attach the translation to the correct module.
Of course looking up translations in the database is a performance hog, but this should be used during development or if someone is not satisfied with an existing translation.
The current SVN packages can be more and more used as a basis for the .8 language packs: dutch and german translations have already been updated for use with .8, and can either be checked out through SVN or be downloaded as an alpha package.
.8 Stabilization: We need you!
To finalize and stabilize the last MileStone release (and to offer a first release candidate as soon as possible), we need you (the community) to test the current codebase. Install and uninstall all available modules, create users, play with hooks, create and use themes, develop modules, and so on.
Please download the latest Snapshot and install it on your test system (either a webserver, or your local Xampp installation). Wether you have IIS, Apache, MySQL, PostGreSQL or MSSql, it is interesting for all of us. Please also use the ValueAddons package and do the same. You may notice that no real new features are added to them, but this will come when the core is functional and as bug free as possible. If at all you find unreported bugs or errors, please report them in the bug tracker.
As already said: The Core Dev Team is at first interested in a working bug-free core framework and a functional upgrade path from historic distriutions. After that, new features can be added to several ValueAddons and other content modules. One could also use the current Theme module to generate Xanthia 3.0 themes. A useful help for this can be found on Drak's Theme Generator. Module Developers can find a Module Generator on the OpenStar site.
BTW, the .8 Developer Docs in the Wiki may already be very usefull, allthough the provided information is not as complete as one would wish for. Users may find lots of usefull information in the .8 User Docs.
Reminder: Please do not use .8 on any live production site! With MileStone releases or Release candidates, there is no guarantee whatsoever that the quality and security of your site and the product is assured!
Also (as read from the German Community Site) there are a few modules released in alpha status for users to test in a .8 environment:
Formicula 2.0 alpha: Download (Bug reports)
pnUpper 1.0 alpha: Download (Bug reports)
pnTopList 1.0 beta: Download (Bug reports)
Generated on December 18, 2006.
-
PhpNuke2PostNuke : Your bridge to the PN World
(News)
-
provided there. This script works ONLY for MySQL 3.x schema. For other dbms (PostgreSQL, MsSQL, MySQL 4.x) you need modify the script.
++ UPGRADE SUMMARY ++
PhpNuke 7.0, 7.1, 7.2, 7.3, 7.4 -> PostNuke 0.726
PhpNuke phpBB2 Forums port 2.0.5 -> PNphpBB2 1.2d
PhpNuke Encyclopedia -> pnEncyclopedia 0.2.0
PhpNuke Event Calendar -> PostCalendar 4.0.1
A new version for 0.750 is coming soon. I'm looking for make this a project at noc. Please help me on this topic.
Download link
Support forum
Generated on September 14, 2004.
-
Development Report
(News)
-
The Rogue Report
We will be releasing at least one more package under the Rogue name. I hope to release .715 (or .72) either next weekend or the weekend after (if you are a betting type person go with the latter). I imagine that there will be a few DB changes, so the version number may escalate to .72. The database changes will be for bug fixes only.
I also hope to have a couple of new modules that have been ported to the API with the next release as well. We do have the Top Lists module ready to go, and I believe that the Ephemerids are ready as well.
The delay in the release is caused from our recent move to the new CVS, as well as the passing of Greg. However, I will be pushing for a release of the maintenance branch as soon as it is ready.
The adam_baum Report
We have decided to rename the .8 series from Ragnarok to adam_baum for obvious reasons. .8 is shaping up to be a very nice and revolutionary release. Many features have already been developed and tested and are ready to go. I am shooting for an August Feature Freeze with an early September release.
We have a ton of work to do in the meantime though. We desperately need people to volunteer to help with the module conversions to the API. As always, if you want your 5 minutes to 1 year of PostNuke fame and glory, we will welcome you into the fun.
Below is a very brief overview of what is in the pan this month for .8. This is meant as a tease, but we invite you to check out the CVS and see the changes for yourself. There are some omissions from the report (namely pnComments, some hooks that have been developed, and the pnExceptions), but it should give you a very nice detail as to what is being worked on.
The following is the adam_baum .8 report from Gregor:
Performance
Mike and Marco have started work on caching PostNuke data with a new set of functions, pnVar*Cached. Mike has written an excellent performance white paper
here.
TODO: Describe it in MDG, use it throughout core, database indexes
Sessions
Mike has begun to take a hard look at the sessions code, trying to isolate workarounds, and make the code saner. Depending on the decision about PHP minimum requirements
this code might be simplified further.
TODO: Fix all session bugs :)
Block layout
The basic block layout system is nearing completion. Modules can register their own tags.
TODO: MDG section for block layout, samples, resolve ML issues
Dynamic User Data
Dynamic User Data is incomplete, however Christopher Grote agreed to take a look at it and make it feature complete.
TODO: Implement required fields, code cleanup
Users module
The users module is currently un-maintained. We are looking for interested parties to take over the module.
TODO: Integrate registration workflow from x-users, templates, dynamic user data
Multilanguage System
The API functions for the new ML systems are complete. Work continues on a translation module.
TODO: upgrade path, translation module, implement storage backend
Installer
With Block layout in place, work on the Installer can begin in earnest. Zoom and Neo are building a nice remote installer which we will try to integrate with the core installer. The
aim is to leverage as much infrastructure as early as possible in the installation. This means loading of the API etc.
TODO: Design Installer architecture.
Database abstraction
Gary is working on table creation / modification support, the remaining omission from ADODB. Jeremy has MSSQL working, and Johnny is working on Postgres support.
TODO: merge MSSQL / Postgres work with core
Generated on June 29, 2002.
-
Rogue .71 Teaser
(News)
-
for their work in making this release what it is. Sorry, for leaving out so many names, but my fingers are starting to bleed!
* What's New? *
Fully ADODB compliant -- works with PGSQL and MSSQL.
Session: Providing privacy to users is a priority, sessions provides you with a safer way of handling user logins without exposing information through the browser.
Three level security -- High, medium and low so that you can control when your users site access expires.
Improved performance -- optimization of many parts of the code, often through direct replacement, to improve performance throughout.
Improved stability - new core codebase provides far greater stability than any other Nuke variant
New default theme. -- fresh new look to your PostNuke. Voting on the default theme will take place this week.
Improved security -- new system for handling user input and automatically protecting sites against the most common PHP and cross-site attacks.
New modules system - allows for future versions of PostNuke to be backwards compatible with older modules, no more being stuck on an old version of PostNuke because you use a module which has not been upgraded.
Modules Developer Guide -- A full featured guide on how the API works.
E_ALL Errors corrected -- Errors that slowed performance, and left phantom problems in the codebase have all been corrected.
Blocks Performance Enhanced -- More optimizations to the core that fall under performance enhancements.
Configuration moved to database - site configuration now held in a database table for improved ease of use and speed of access. Also allows modules and plugins to add to the site configuration without the hacking of core scripts.
Admin control of themes -- allow users to control their theme or set a site-wide theme for all users through the use of a setting.
Dynamic User Data -- Allow you to choose what information to be collected on your site. In the beginning stages of development, but is very well integrated into the system.
Block hiding -- An admin configurable selection that gives the ability for users to hide any of the admin-defined blocks if they do not wish to see them.
XML-RPC Integration -- More on this closer to release!
Ratings Module -- By itself, does nothing, but is a tool for module developers to add ratings to content without having to develop new code.
Center Blocks (Otherwise known as Centre Blocks) -- Now the ability to add center blocks in conjunction with left and right blocks.
*End Spoiler*
More announcements to follow. .71 is feature packed, and is very close to being a complete rewrite of the core. More work has been packed into this release than any other. We have managed to close most of the loose ends with the separation of the core from the modular functionality. This release is in my opinion a giant step towards the 1.0 release and is in complete compliance with our roadmap.
Thanks for reading, and I hope that this gives you a little insight on what is to come
Generated on February 18, 2002.
-
Another CMS - but a different one!
(News)
-
Meanwhile the system is going to be "finished" in its first revision and has a lot of very special features:
- using ADODB for all db-operations (makes the system work with mysql, mssql, odbc, oracle and many more)
- using rFastTemplates to manage design without any limit! Supports multi-dynamic and nested blocks!
- optional LDAP-authorisation
- full modularized system (you can easily change the db-engine, the template-engine, blocks-engine and whatever - without changing each single block-script or other scripts)
- management for user- and admingroups, including full competence-catalogs
- usergroup-assigned content-output
- multi-languages
- administration has been fully split off and CAN be run from another sub/-domain (on same server as public site) and from a second db!
- all modules are handled as blocks
- makes use of PHP-Sessions only!!! NO MORE COOKIES!!!
- full tracking of users and admins to a log-db
and much much more...
This System is NOT A POSTNUKE-FORK and it's not compatible to Postnuke in any way!
Well, the first revision is only a base-system and a lot of enhancements will follow. I'm thinking of releasing this project under GPL/GNU... Is there any interesst for this?
Regards,
Bitarts
Generated on November 20, 2001.