/me looks down
OH MY GOD... I'M MELLLLTTIIINNGG NOOOOOOO.... AAARGHHHHHH.
Oh well, don't the people inside the asylum say the outside world is insane, too?
- When user #1 creates an account (we can assume this happens only once), system.module's schema version is set to the latest availiable.
- system_get_files_database() now includes a 'schema_version' child of each file object.
- That new information is re-saved when Drupal re-populates the system table.
- An array of newly-enabled modules is built, module_list() is reloaded, and the schema versions of each newly-enabled module are set to the most recent availiable. If the schema version is already set (presumably from a previous installation) it is not changed.
Moves callbacks and arguments to a separate data structure from the visible menu tree. As mentioned on drupal-devel, this change has little impact except to slightly improve code legibility and prepare the code base for future separation of these tasks, with an eye toward performance improvements of the menu system. Also changes array_key_exists() to isset() in several places, which is reported to perform better.
1. hook_form_validate_alter and hook_form_execute_alter have been eliminated. there usage was limiting and a bit confusing. now, only hook_form_alter remains
2. replacing those hooks are the #validate and #execute attributes. these can be used either when building the form in a module, or via hook_form_alter. these attributes are built in array form, to allow for flexibility in how they are called. for example, a module could simply add an element to the #validate array via hook_form_alter if it wished to perform additional validation, or it could redeclare the entire #validate array if it wanted to override any existing validation
3. attributes #validation_arguments and #execution_arguments have been added to allow args to be used w/ custom validation and execution functions. this are also declared in array format
4. renamed #valid attribute to #validation. this doesn't cause any conflicts, and makes the naming convention more consistent
5. renamed the existing #execute attribute associated w/ submit buttons to #submit
If your module uses variable_get('file_directory_temp', ...) or
variable_get('file_directory_path', ...) please update it to use the new
API.
A list of affected modules is available at http://drupal.org/node/26249#comment-54194.
Deprecates the primary_links module.
This patch was much needed. Thanks Richards!
NOTE: if some themers could investigate if there is room for improvement
with regard to theming, that would be awesome.
* xmlrpc_value_calculate_type() fails for empty arrays
* PHPDoc for xmlrpc_value_calculate_type()
* use is_*() instead of gettype() as advised in the PHP manual (and document this)
* coding style
* Default form value
* Leftover debug function in form.inc
* PHP5 issue with comment date (I got this patch from another issue)
* Validation error fix (was calling legacy form validate)
* Lots o' warnings on comment preview
* Filter tips plus argument (gremlins. I swear this was not there.)
* Message to clear what's going on with system settings
* Non-freetagging taxonomies fixed
TODO:
+ The contact.module was broken; a new patch for contact.module is needed.
+ Documentation is needed.
+ The most important modules need to be updated ASAP.
to validate other form submissions, not just comments. Two new functions
are introduced, form_token() and form_validate(). The first function uses
a private key and a public key to set a token in a hidden field. The second
function validates the token. The comment and contect module are updated to
use these functions.
Comment from Steven: It does this by redirecting the submission of the form to a hidden <iframe> when you click "Attach" (we cannot submit data through Ajax directly because you cannot read file contents from JS for security reasons). Once the file is submitted, the upload-section of the form is updated. Things to note:
* The feature degrades back to the current behaviour without JS.
* If there are errors with the uploaded file (disallowed type, too big, ...), they are displayed at the top of the file attachments fieldset.
* Though the hidden-iframe method sounds dirty, it's quite compact and is 100% implemented in .js files. The drupal.js api makes it a snap to use.
* I included some minor improvements to the Drupal JS API and code.
* I added an API drupal_call_js() to bridge the PHP/JS gap: it takes a function name and arguments, and outputs a <script> tag. The kicker is that it preserves the structure and type of arguments, so e.g. PHP associative arrays end up as objects in JS.
* I also included a progressbar widget that I wrote for drumm's ongoing update.php work. It includes Ajax status updating/monitoring, but it is only used as a pure throbber in this patch. But as the code was already written and is going to be used in the near future, I left that part in. It's pretty small ;). If PHP supports ad-hoc upload info in the future like Ruby on Rails, we can implement that in 5 minutes.
part of the node system! If you have a module that implements node
types, you'll have to udpate its CVS HEAD version.
We replaced _node_name() and _node_types() by _node(). The new _node()
hook let's you define one or more node types, including their names.
The implementation of the _node() hook needs to:
return array($type1 => array('name' => $name1, 'base' => $base1),
$type2 => array('name' => $name2, 'base' => $base2));
where $type is the node type, $name is the human readable name of the type
and $base is used instead of <hook> for <hook>_load, <hook>_view, etc.
For example, the story module's node hook looks like this:
function story_node() {
return array('story' => array('name' => t('story'), 'base' => 'story'));
}
The page module's node hook module like:
function page_node() {
return array('page' => array('name' => t('page'), 'base' => 'page'));
}
However, more complex node modules like the project module and the
flexinode module can use the 'base' parameter to specify a different base.
The project module implements two node types, proejcts and issues, so it
can do:
function project_node() {
return array(
array('project_project' => array('name' => t('project'), 'base' => 'project'),
array('project_issue' => array('name' => t('issue'), 'base' => 'project_issue'));
}
In the flexinode module's case there can only one base ...
This hook will simplify the CCK, and will make it easy (or easier) to merge
the story and page module.
In addition, node_list() became node_get_types(). In addition, we created
the following functions: node_get_name($type) and node_get_base($type).
list_themes() sorts the results by name. This uses filesort in MySQL since there aren't any indexes. Sorting is not used except in system_user(). This one use can be handled with ksort since it is not often executed (only on the user edit screen when multiple themes are enabled).
And a one line fix to remove a variable in system_user() is in here too.
Note: I also (mostly) unified the tags to use the "// ID" form instead of "/* ID */", but that's more of a cosmetic issue. I'm not sure whether *.txt files and the stuff in themes/ need tags(?).