#497118 by chx, catch, pwolanin, JoshuaRogers, and Jacob Singh: Remove the function registry. While the hope was that this would result in improved performance for low-end hosts, it comes at the expense of critical development experience problems and less benefit than something like APC. Class registry remains intact to facilitate autoloading.
parent
00280ca988
commit
2c55219315
modules
block
blog
blogapi
book
comment
contact
field
forum
locale
menu
node
openid
path
poll
profile
search
statistics
tracker
translation
trigger
update
upload
|
@ -95,8 +95,7 @@ Drupal 7.0, xxxx-xx-xx (development version)
|
|||
contributed modules.
|
||||
- Added code registry:
|
||||
* Using the registry, modules declare their includable files via their .info file,
|
||||
allowing Drupal to lazy-load code as needed, resulting in significant performance
|
||||
and memory improvements.
|
||||
allowing Drupal to lazy-load classes and interfaces as needed.
|
||||
- Theme system:
|
||||
* Removed the Bluemarine, Chameleon and Pushbutton themes. These themes live
|
||||
on as contributed themes (http://drupal.org/project/bluemarine,
|
||||
|
|
|
@ -211,7 +211,7 @@ function ajax_form_callback() {
|
|||
// Get the callback function from the clicked button.
|
||||
$ajax = $form_state['clicked_button']['#ajax'];
|
||||
$callback = $ajax['callback'];
|
||||
if (drupal_function_exists($callback)) {
|
||||
if (function_exists($callback)) {
|
||||
$html = $callback($form, $form_state);
|
||||
|
||||
// If the returned value is a string, assume it is HTML and create
|
||||
|
|
|
@ -654,7 +654,7 @@ function drupal_get_filename($type, $name, $filename = NULL) {
|
|||
$mask = "/$name\.$type$/";
|
||||
}
|
||||
|
||||
if (drupal_function_exists('drupal_system_listing')) {
|
||||
if (function_exists('drupal_system_listing')) {
|
||||
$matches = drupal_system_listing($mask, $dir, 'name', 0);
|
||||
if (!empty($matches[$name]->uri)) {
|
||||
$files[$type][$name] = $matches[$name]->uri;
|
||||
|
@ -787,6 +787,19 @@ function drupal_page_is_cacheable($allow_caching = NULL) {
|
|||
&& $_SERVER['SERVER_SOFTWARE'] !== 'PHP CLI';
|
||||
}
|
||||
|
||||
/**
|
||||
* Call all init or exit hooks without including all modules.
|
||||
*
|
||||
* @param $hook
|
||||
* The name of the bootstrap hook we wish to invoke.
|
||||
*/
|
||||
function bootstrap_invoke_all($hook) {
|
||||
foreach (module_list(TRUE, TRUE) as $module) {
|
||||
drupal_load('module', $module);
|
||||
module_invoke($module, $hook);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Includes a file with the provided type and name. This prevents
|
||||
* including a theme, engine, module, etc., more than once.
|
||||
|
@ -1078,6 +1091,13 @@ function drupal_serve_page_from_cache(stdClass $cache) {
|
|||
print $cache->data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Define the critical hooks that force modules to always be loaded.
|
||||
*/
|
||||
function bootstrap_hooks() {
|
||||
return array('boot', 'exit', 'watchdog');
|
||||
}
|
||||
|
||||
/**
|
||||
* Unserializes and appends elements from a serialized string.
|
||||
*
|
||||
|
@ -1469,15 +1489,14 @@ function _drupal_bootstrap($phase) {
|
|||
// If the skipping of the bootstrap hooks is not enforced, call
|
||||
// hook_boot.
|
||||
if (variable_get('page_cache_invoke_hooks', TRUE)) {
|
||||
require_once DRUPAL_ROOT . '/includes/module.inc';
|
||||
module_invoke_all('boot');
|
||||
bootstrap_invoke_all('boot');
|
||||
}
|
||||
header('X-Drupal-Cache: HIT');
|
||||
drupal_serve_page_from_cache($cache);
|
||||
// If the skipping of the bootstrap hooks is not enforced, call
|
||||
// hook_exit.
|
||||
if (variable_get('page_cache_invoke_hooks', TRUE)) {
|
||||
module_invoke_all('exit');
|
||||
bootstrap_invoke_all('exit');
|
||||
}
|
||||
// We are done.
|
||||
exit;
|
||||
|
@ -1504,6 +1523,9 @@ function _drupal_bootstrap($phase) {
|
|||
case DRUPAL_BOOTSTRAP_VARIABLES:
|
||||
// Load variables from the database, but do not overwrite variables set in settings.php.
|
||||
$conf = variable_initialize(isset($conf) ? $conf : array());
|
||||
// Load bootstrap modules.
|
||||
require_once DRUPAL_ROOT . '/includes/module.inc';
|
||||
module_load_all(TRUE);
|
||||
break;
|
||||
|
||||
case DRUPAL_BOOTSTRAP_SESSION:
|
||||
|
@ -1512,8 +1534,7 @@ function _drupal_bootstrap($phase) {
|
|||
break;
|
||||
|
||||
case DRUPAL_BOOTSTRAP_PAGE_HEADER:
|
||||
require_once DRUPAL_ROOT . '/includes/module.inc';
|
||||
module_invoke_all('boot');
|
||||
bootstrap_invoke_all('boot');
|
||||
if (!$cache && drupal_page_is_cacheable()) {
|
||||
header('X-Drupal-Cache: MISS');
|
||||
}
|
||||
|
@ -1751,7 +1772,7 @@ function drupal_get_schema($table = NULL, $rebuild = FALSE) {
|
|||
// Load the .install files to get hook_schema.
|
||||
// On some databases this function may be called before bootstrap has
|
||||
// been completed, so we force the functions we need to load just in case.
|
||||
if (drupal_function_exists('module_load_all_includes')) {
|
||||
if (function_exists('module_load_all_includes')) {
|
||||
|
||||
// There is currently a bug in module_list() where it caches what it
|
||||
// was last called with, which is not always what you want.
|
||||
|
@ -1761,7 +1782,7 @@ function drupal_get_schema($table = NULL, $rebuild = FALSE) {
|
|||
// "prime" module_list() here to to values we want, specifically
|
||||
// "yes rebuild the list and don't limit to bootstrap".
|
||||
// TODO: Remove this call after http://drupal.org/node/222109 is fixed.
|
||||
module_list(TRUE);
|
||||
module_list(TRUE, FALSE);
|
||||
module_load_all_includes('install');
|
||||
}
|
||||
|
||||
|
@ -1769,17 +1790,11 @@ function drupal_get_schema($table = NULL, $rebuild = FALSE) {
|
|||
// Invoke hook_schema for all modules.
|
||||
foreach (module_implements('schema') as $module) {
|
||||
$current = module_invoke($module, 'schema');
|
||||
if (drupal_function_exists('_drupal_schema_initialize')) {
|
||||
_drupal_schema_initialize($module, $current);
|
||||
}
|
||||
|
||||
_drupal_schema_initialize($module, $current);
|
||||
$schema = array_merge($schema, $current);
|
||||
}
|
||||
|
||||
if (drupal_function_exists('drupal_alter')) {
|
||||
drupal_alter('schema', $schema);
|
||||
}
|
||||
|
||||
drupal_alter('schema', $schema);
|
||||
// If the schema is empty, avoid saving it: some database engines require
|
||||
// the schema to perform queries, and this could lead to infinite loops.
|
||||
if (!empty($schema) && (drupal_get_bootstrap_phase() == DRUPAL_BOOTSTRAP_FULL)) {
|
||||
|
@ -1809,52 +1824,11 @@ function drupal_get_schema($table = NULL, $rebuild = FALSE) {
|
|||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* Confirm that a function is available.
|
||||
*
|
||||
* If the function is already available, this function does nothing.
|
||||
* If the function is not available, it tries to load the file where the
|
||||
* function lives. If the file is not available, it returns false, so that it
|
||||
* can be used as a drop-in replacement for function_exists().
|
||||
*
|
||||
* @param $function
|
||||
* The name of the function to check or load.
|
||||
* @return
|
||||
* TRUE if the function is now available, FALSE otherwise.
|
||||
*/
|
||||
function drupal_function_exists($function) {
|
||||
static $checked = array();
|
||||
static $maintenance;
|
||||
|
||||
if (!isset($maintenance)) {
|
||||
$maintenance = defined('MAINTENANCE_MODE');
|
||||
}
|
||||
|
||||
if ($maintenance) {
|
||||
return function_exists($function);
|
||||
}
|
||||
|
||||
if (isset($checked[$function])) {
|
||||
return $checked[$function];
|
||||
}
|
||||
$checked[$function] = FALSE;
|
||||
|
||||
if (function_exists($function)) {
|
||||
$checked[$function] = TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
$checked[$function] = _registry_check_code('function', $function);
|
||||
|
||||
return $checked[$function];
|
||||
}
|
||||
|
||||
/**
|
||||
* Confirm that an interface is available.
|
||||
*
|
||||
* This function parallels drupal_function_exists(), but is rarely
|
||||
* called directly. Instead, it is registered as an spl_autoload()
|
||||
* handler, and PHP calls it for us when necessary.
|
||||
* This function is rarely called directly. Instead, it is registered as an
|
||||
* spl_autoload() handler, and PHP calls it for us when necessary.
|
||||
*
|
||||
* @param $interface
|
||||
* The name of the interface to check or load.
|
||||
|
@ -1868,9 +1842,8 @@ function drupal_autoload_interface($interface) {
|
|||
/**
|
||||
* Confirm that a class is available.
|
||||
*
|
||||
* This function parallels drupal_function_exists(), but is rarely
|
||||
* called directly. Instead, it is registered as an spl_autoload()
|
||||
* handler, and PHP calls it for us when necessary.
|
||||
* This function is rarely called directly. Instead, it is registered as an
|
||||
* spl_autoload() handler, and PHP calls it for us when necessary.
|
||||
*
|
||||
* @param $class
|
||||
* The name of the class to check or load.
|
||||
|
@ -1960,8 +1933,8 @@ function _registry_check_code($type, $name = NULL) {
|
|||
/**
|
||||
* Rescan all enabled modules and rebuild the registry.
|
||||
*
|
||||
* Rescans all code in modules or includes directory, storing a mapping of
|
||||
* each function, file, and hook implementation in the database.
|
||||
* Rescans all code in modules or includes directories, storing the location of
|
||||
* each interface or class in the database.
|
||||
*/
|
||||
function registry_rebuild() {
|
||||
require_once DRUPAL_ROOT . '/includes/registry.inc';
|
||||
|
|
|
@ -1219,7 +1219,7 @@ function t($string, array $args = array(), array $options = array()) {
|
|||
$string = $custom_strings[$options['langcode']][$options['context']][$string];
|
||||
}
|
||||
// Translate with locale module if enabled.
|
||||
// We don't use drupal_function_exists() here, because it breaks the testing
|
||||
// We don't use function_exists() here, because it breaks the testing
|
||||
// framework if the locale module is enabled in the parent site (we cannot
|
||||
// unload functions in PHP).
|
||||
elseif (function_exists('locale') && $options['langcode'] != 'en') {
|
||||
|
@ -2319,7 +2319,6 @@ function drupal_page_footer() {
|
|||
ob_flush();
|
||||
}
|
||||
|
||||
module_implements(MODULE_IMPLEMENTS_WRITE_CACHE);
|
||||
_registry_check_code(REGISTRY_WRITE_LOOKUP_CACHE);
|
||||
drupal_cache_system_paths();
|
||||
}
|
||||
|
@ -2868,7 +2867,7 @@ function drupal_clear_css_cache() {
|
|||
* - 'file': Path to the file relative to base_path().
|
||||
* - 'inline': The JavaScript code that should be placed in the given scope.
|
||||
* - 'external': The absolute path to an external JavaScript file that is not
|
||||
* hosted on the local server. These files will not be aggregated if
|
||||
* hosted on the local server. These files will not be aggregated if
|
||||
* JavaScript aggregation is enabled.
|
||||
* - 'setting': An array with configuration options as associative array. The
|
||||
* array is directly placed in Drupal.settings. All modules should wrap
|
||||
|
@ -3575,14 +3574,6 @@ function _drupal_bootstrap_full() {
|
|||
set_error_handler('_drupal_error_handler');
|
||||
set_exception_handler('_drupal_exception_handler');
|
||||
|
||||
if (isset($_SERVER['HTTP_USER_AGENT']) && strpos($_SERVER['HTTP_USER_AGENT'], 'simpletest') !== FALSE) {
|
||||
// Valid SimpleTest user-agent, log fatal errors to test specific file
|
||||
// directory. The user-agent is validated in DRUPAL_BOOTSTRAP_DATABASE
|
||||
// phase so as long as it is a SimpleTest user-agent it is valid.
|
||||
ini_set('log_errors', 1);
|
||||
ini_set('error_log', file_directory_path() . '/error.log');
|
||||
}
|
||||
|
||||
// Emit the correct charset HTTP header.
|
||||
drupal_set_header('Content-Type', 'text/html; charset=utf-8');
|
||||
// Detect string handling method
|
||||
|
@ -3593,6 +3584,14 @@ function _drupal_bootstrap_full() {
|
|||
module_load_all();
|
||||
// Make sure all stream wrappers are registered.
|
||||
file_get_stream_wrappers();
|
||||
if (isset($_SERVER['HTTP_USER_AGENT']) && strpos($_SERVER['HTTP_USER_AGENT'], 'simpletest') !== FALSE) {
|
||||
// Valid SimpleTest user-agent, log fatal errors to test specific file
|
||||
// directory. The user-agent is validated in DRUPAL_BOOTSTRAP_DATABASE
|
||||
// phase so as long as it is a SimpleTest user-agent it is valid.
|
||||
ini_set('log_errors', 1);
|
||||
ini_set('error_log', file_directory_path() . '/error.log');
|
||||
}
|
||||
|
||||
// Let all modules take action before menu system handles the request
|
||||
// We do not want this while running update.php.
|
||||
if (!defined('MAINTENANCE_MODE') || MAINTENANCE_MODE != 'update') {
|
||||
|
@ -3767,7 +3766,7 @@ function drupal_system_listing($mask, $directory, $key = 'name', $min_depth = 1)
|
|||
$searchdir[] = "$config/$directory";
|
||||
}
|
||||
|
||||
// If the database is not available, we can't use drupal_function_exists(), so
|
||||
// If the database is not available, we can't use function_exists(), so
|
||||
// we load the file_scan_directory function definition manually.
|
||||
if (!function_exists('file_scan_directory')) {
|
||||
require_once DRUPAL_ROOT . '/includes/file.inc';
|
||||
|
@ -3957,7 +3956,7 @@ function drupal_render(&$elements) {
|
|||
// element is rendered into the final text.
|
||||
if (isset($elements['#pre_render'])) {
|
||||
foreach ($elements['#pre_render'] as $function) {
|
||||
if (drupal_function_exists($function)) {
|
||||
if (function_exists($function)) {
|
||||
$elements = $function($elements);
|
||||
}
|
||||
}
|
||||
|
@ -3991,7 +3990,7 @@ function drupal_render(&$elements) {
|
|||
// which allows the output'ed text to be filtered.
|
||||
if (isset($elements['#post_render'])) {
|
||||
foreach ($elements['#post_render'] as $function) {
|
||||
if (drupal_function_exists($function)) {
|
||||
if (function_exists($function)) {
|
||||
$elements['#children'] = $function($elements['#children'], $elements);
|
||||
}
|
||||
}
|
||||
|
@ -4120,6 +4119,7 @@ function element_info($type) {
|
|||
if (!isset($cache)) {
|
||||
$basic_defaults = element_basic_defaults();
|
||||
$cache = array();
|
||||
|
||||
foreach (module_implements('elements') as $module) {
|
||||
$elements = module_invoke($module, 'elements');
|
||||
if (isset($elements) && is_array($elements)) {
|
||||
|
@ -5055,3 +5055,32 @@ function drupal_check_incompatibility($v, $current_version) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Performs one or more XML-RPC request(s).
|
||||
*
|
||||
* @param $url
|
||||
* An absolute URL of the XML-RPC endpoint.
|
||||
* Example:
|
||||
* http://www.example.com/xmlrpc.php
|
||||
* @param ...
|
||||
* For one request:
|
||||
* The method name followed by a variable number of arguments to the method.
|
||||
* For multiple requests (system.multicall):
|
||||
* An array of call arrays. Each call array follows the pattern of the single
|
||||
* request: method name followed by the arguments to the method.
|
||||
* @return
|
||||
* For one request:
|
||||
* Either the return value of the method on success, or FALSE.
|
||||
* If FALSE is returned, see xmlrpc_errno() and xmlrpc_error_msg().
|
||||
* For multiple requests:
|
||||
* An array of results. Each result will either be the result
|
||||
* returned by the method called, or an xmlrpc_error object if the call
|
||||
* failed. See xmlrpc_error().
|
||||
*/
|
||||
function xmlrpc($url) {
|
||||
require_once DRUPAL_ROOT . '/includes/xmlrpc.inc';
|
||||
$args = func_get_args();
|
||||
return call_user_func_array('_xmlrpc', $args);
|
||||
}
|
||||
|
||||
|
|
|
@ -320,7 +320,7 @@ function file_create_url($uri) {
|
|||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// @todo Implement CDN integration hook stuff in this function.
|
||||
// @see http://drupal.org/node/499156
|
||||
}
|
||||
|
@ -1250,7 +1250,7 @@ function file_validate(&$file, $validators = array()) {
|
|||
// Call the validation functions specified by this function's caller.
|
||||
$errors = array();
|
||||
foreach ($validators as $function => $args) {
|
||||
if (drupal_function_exists($function)) {
|
||||
if (function_exists($function)) {
|
||||
array_unshift($args, $file);
|
||||
$errors = array_merge($errors, call_user_func_array($function, $args));
|
||||
}
|
||||
|
|
|
@ -418,7 +418,7 @@ function drupal_retrieve_form($form_id, &$form_state) {
|
|||
|
||||
// We first check to see if there's a function named after the $form_id.
|
||||
// If there is, we simply pass the arguments on to it to get the form.
|
||||
if (!drupal_function_exists($form_id)) {
|
||||
if (!function_exists($form_id)) {
|
||||
// In cases where many form_ids need to share a central constructor function,
|
||||
// such as the node editing form, modules can implement hook_forms(). It
|
||||
// maps one or more form_ids to the correct constructor functions.
|
||||
|
@ -439,7 +439,6 @@ function drupal_retrieve_form($form_id, &$form_state) {
|
|||
}
|
||||
if (isset($form_definition['callback'])) {
|
||||
$callback = $form_definition['callback'];
|
||||
drupal_function_exists($callback);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -613,13 +612,13 @@ function drupal_prepare_form($form_id, &$form, &$form_state) {
|
|||
$form += array('#tree' => FALSE, '#parents' => array());
|
||||
|
||||
if (!isset($form['#validate'])) {
|
||||
if (drupal_function_exists($form_id . '_validate')) {
|
||||
if (function_exists($form_id . '_validate')) {
|
||||
$form['#validate'] = array($form_id . '_validate');
|
||||
}
|
||||
}
|
||||
|
||||
if (!isset($form['#submit'])) {
|
||||
if (drupal_function_exists($form_id . '_submit')) {
|
||||
if (function_exists($form_id . '_submit')) {
|
||||
// We set submit here so that it can be altered.
|
||||
$form['#submit'] = array($form_id . '_submit');
|
||||
}
|
||||
|
@ -794,7 +793,7 @@ function _form_validate($elements, &$form_state, $form_id = NULL) {
|
|||
// #value data.
|
||||
elseif (isset($elements['#element_validate'])) {
|
||||
foreach ($elements['#element_validate'] as $function) {
|
||||
if (drupal_function_exists($function)) {
|
||||
if (function_exists($function)) {
|
||||
$function($elements, $form_state, $form_state['complete form']);
|
||||
}
|
||||
}
|
||||
|
@ -831,7 +830,7 @@ function form_execute_handlers($type, &$form, &$form_state) {
|
|||
}
|
||||
|
||||
foreach ($handlers as $function) {
|
||||
if (drupal_function_exists($function)) {
|
||||
if (function_exists($function)) {
|
||||
// Check to see if a previous _submit handler has set a batch, but
|
||||
// make sure we do not react to a batch that is already being processed
|
||||
// (for instance if a batch operation performs a drupal_form_submit()).
|
||||
|
@ -970,7 +969,7 @@ function form_builder($form_id, $element, &$form_state) {
|
|||
// checkboxes and files.
|
||||
if (isset($element['#process']) && !$element['#processed']) {
|
||||
foreach ($element['#process'] as $process) {
|
||||
if (drupal_function_exists($process)) {
|
||||
if (function_exists($process)) {
|
||||
$element = $process($element, $form_state, $form_state['complete form']);
|
||||
}
|
||||
}
|
||||
|
@ -1097,7 +1096,7 @@ function _form_builder_handle_input_element($form_id, &$element, &$form_state) {
|
|||
// If we have input for the current element, assign it to the #value property.
|
||||
if (!$form_state['programmed'] || isset($input)) {
|
||||
// Call #type_value to set the form value;
|
||||
if (drupal_function_exists($value_callback)) {
|
||||
if (function_exists($value_callback)) {
|
||||
$element['#value'] = $value_callback($element, $input, $form_state);
|
||||
}
|
||||
if (!isset($element['#value']) && isset($input)) {
|
||||
|
@ -1112,7 +1111,7 @@ function _form_builder_handle_input_element($form_id, &$element, &$form_state) {
|
|||
// Load defaults.
|
||||
if (!isset($element['#value'])) {
|
||||
// Call #type_value without a second argument to request default_value handling.
|
||||
if (drupal_function_exists($value_callback)) {
|
||||
if (function_exists($value_callback)) {
|
||||
$element['#value'] = $value_callback($element, FALSE, $form_state);
|
||||
}
|
||||
// Final catch. If we haven't set a value yet, use the explicit default value.
|
||||
|
|
|
@ -65,7 +65,7 @@ function image_get_toolkit() {
|
|||
if (!isset($toolkit)) {
|
||||
$toolkits = image_get_available_toolkits();
|
||||
$toolkit = variable_get('image_toolkit', 'gd');
|
||||
if (!isset($toolkits[$toolkit]) || !drupal_function_exists('image_' . $toolkit . '_load')) {
|
||||
if (!isset($toolkits[$toolkit]) || !function_exists('image_' . $toolkit . '_load')) {
|
||||
// The selected toolkit isn't available so return the first one found. If
|
||||
// none are available this will return FALSE.
|
||||
reset($toolkits);
|
||||
|
@ -90,7 +90,7 @@ function image_get_toolkit() {
|
|||
*/
|
||||
function image_toolkit_invoke($method, stdClass $image, array $params = array()) {
|
||||
$function = 'image_' . $image->toolkit . '_' . $method;
|
||||
if (drupal_function_exists($function)) {
|
||||
if (function_exists($function)) {
|
||||
array_unshift($params, $image);
|
||||
return call_user_func_array($function, $params);
|
||||
}
|
||||
|
|
|
@ -632,15 +632,16 @@ function drupal_install_system() {
|
|||
$system_versions = drupal_get_schema_versions('system');
|
||||
$system_version = $system_versions ? max($system_versions) : SCHEMA_INSTALLED;
|
||||
db_insert('system')
|
||||
->fields(array('filename', 'name', 'type', 'owner', 'status', 'schema_version'))
|
||||
->fields(array('filename', 'name', 'type', 'owner', 'status', 'schema_version', 'bootstrap'))
|
||||
->values(array(
|
||||
'filename' => $system_path . '/system.module',
|
||||
'name' => 'system',
|
||||
'type' => 'module',
|
||||
'owner' => '',
|
||||
'status' => 1,
|
||||
'schema_version' => $system_version
|
||||
))
|
||||
'schema_version' => $system_version,
|
||||
'bootstrap' => 0,
|
||||
))
|
||||
->execute();
|
||||
// Now that we've installed things properly, bootstrap the full Drupal environment
|
||||
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
|
||||
|
|
|
@ -115,7 +115,7 @@ function drupal_mail($module, $key, $to, $language, $params = array(), $from = N
|
|||
// Build the e-mail (get subject and body, allow additional headers) by
|
||||
// invoking hook_mail() on this module. We cannot use module_invoke() as
|
||||
// we need to have $message by reference in hook_mail().
|
||||
if (drupal_function_exists($function = $module . '_mail')) {
|
||||
if (function_exists($function = $module . '_mail')) {
|
||||
$function($key, $message, $params);
|
||||
}
|
||||
|
||||
|
|
|
@ -411,9 +411,10 @@ function menu_execute_active_handler($path = NULL) {
|
|||
}
|
||||
if ($router_item = menu_get_item($path)) {
|
||||
if ($router_item['access']) {
|
||||
if (drupal_function_exists($router_item['page_callback'])) {
|
||||
return call_user_func_array($router_item['page_callback'], $router_item['page_arguments']);
|
||||
if ($router_item['file']) {
|
||||
require_once($router_item['file']);
|
||||
}
|
||||
return call_user_func_array($router_item['page_callback'], $router_item['page_arguments']);
|
||||
}
|
||||
else {
|
||||
return MENU_ACCESS_DENIED;
|
||||
|
@ -516,7 +517,7 @@ function _menu_check_access(&$item, $map) {
|
|||
if ($callback == 'user_access') {
|
||||
$item['access'] = (count($arguments) == 1) ? user_access($arguments[0]) : user_access($arguments[0], $arguments[1]);
|
||||
}
|
||||
elseif (drupal_function_exists($callback)) {
|
||||
elseif (function_exists($callback)) {
|
||||
$item['access'] = call_user_func_array($callback, $arguments);
|
||||
}
|
||||
}
|
||||
|
@ -567,7 +568,7 @@ function _menu_item_localize(&$item, $map, $link_translate = FALSE) {
|
|||
$item['title'] = t($item['title'], menu_unserialize($item['title_arguments'], $map));
|
||||
}
|
||||
}
|
||||
elseif ($callback && drupal_function_exists($callback)) {
|
||||
elseif ($callback && function_exists($callback)) {
|
||||
if (empty($item['title_arguments'])) {
|
||||
$item['title'] = $callback($item['title']);
|
||||
}
|
||||
|
@ -1905,7 +1906,7 @@ function menu_cache_clear_all() {
|
|||
function menu_rebuild() {
|
||||
if (!lock_acquire('menu_rebuild')) {
|
||||
// Wait for another request that is already doing this work.
|
||||
// We choose to block here since otherwise the router item may not
|
||||
// We choose to block here since otherwise the router item may not
|
||||
// be available in menu_execute_active_handler() resulting in a 404.
|
||||
lock_wait('menu_rebuild');
|
||||
return FALSE;
|
||||
|
@ -2606,12 +2607,12 @@ function _menu_router_build($callbacks) {
|
|||
$load_functions[$k] = NULL;
|
||||
}
|
||||
else {
|
||||
if (drupal_function_exists($matches[1] . '_to_arg')) {
|
||||
if (function_exists($matches[1] . '_to_arg')) {
|
||||
$to_arg_functions[$k] = $matches[1] . '_to_arg';
|
||||
$load_functions[$k] = NULL;
|
||||
$match = TRUE;
|
||||
}
|
||||
if (drupal_function_exists($matches[1] . '_load')) {
|
||||
if (function_exists($matches[1] . '_load')) {
|
||||
$function = $matches[1] . '_load';
|
||||
// Create an array of arguments that will be passed to the _load
|
||||
// function when this menu path is checked, if 'load arguments'
|
||||
|
@ -2697,6 +2698,12 @@ function _menu_router_build($callbacks) {
|
|||
if (!isset($item['page arguments']) && isset($parent['page arguments'])) {
|
||||
$item['page arguments'] = $parent['page arguments'];
|
||||
}
|
||||
if (!isset($item['file']) && isset($parent['file'])) {
|
||||
$item['file'] = $parent['file'];
|
||||
}
|
||||
if (!isset($item['file path']) && isset($parent['file path'])) {
|
||||
$item['file path'] = $parent['file path'];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2724,7 +2731,17 @@ function _menu_router_build($callbacks) {
|
|||
'tab_parent' => '',
|
||||
'tab_root' => $path,
|
||||
'path' => $path,
|
||||
'file' => '',
|
||||
'file path' => '',
|
||||
'include file' => '',
|
||||
'module' => '',
|
||||
);
|
||||
|
||||
// Calculate out the file to be included for each callback, if any.
|
||||
if ($item['file']) {
|
||||
$file_path = $item['file path'] ? $item['file path'] : drupal_get_path('module', $item['module']);
|
||||
$item['include file'] = $file_path . '/' . $item['file'];
|
||||
}
|
||||
}
|
||||
|
||||
// Sort the masks so they are in order of descending fit.
|
||||
|
@ -2763,6 +2780,7 @@ function _menu_router_save($menu, $masks) {
|
|||
'description',
|
||||
'position',
|
||||
'weight',
|
||||
'file',
|
||||
));
|
||||
|
||||
foreach ($menu as $path => $item) {
|
||||
|
@ -2787,6 +2805,7 @@ function _menu_router_save($menu, $masks) {
|
|||
'description' => $item['description'],
|
||||
'position' => $item['position'],
|
||||
'weight' => $item['weight'],
|
||||
'file' => $item['include file'],
|
||||
));
|
||||
}
|
||||
// Execute insert object.
|
||||
|
|
|
@ -6,24 +6,15 @@
|
|||
* API for loading and interacting with Drupal modules.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Pass this to module_implements when its cache needs to be written.
|
||||
*/
|
||||
define('MODULE_IMPLEMENTS_WRITE_CACHE', -1);
|
||||
|
||||
/**
|
||||
* Pass this to module_implements when its cache needs to be cleared.
|
||||
*/
|
||||
define('MODULE_IMPLEMENTS_CLEAR_CACHE', -2);
|
||||
|
||||
|
||||
/**
|
||||
* Load all the modules that have been enabled in the system table.
|
||||
*/
|
||||
function module_load_all() {
|
||||
foreach (module_list(TRUE) as $module) {
|
||||
function module_load_all($bootstrap = FALSE) {
|
||||
foreach (module_list(TRUE, $bootstrap) as $module) {
|
||||
drupal_load('module', $module);
|
||||
}
|
||||
module_implements('', FALSE, TRUE);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -33,6 +24,9 @@ function module_load_all() {
|
|||
* @param $refresh
|
||||
* Whether to force the module list to be regenerated (such as after the
|
||||
* administrator has changed the system settings).
|
||||
* @param $bootstrap
|
||||
* Whether to return the reduced set of modules loaded in "bootstrap mode"
|
||||
* for cached pages. See bootstrap.inc.
|
||||
* @param $sort
|
||||
* By default, modules are ordered by weight and module name. Set this option
|
||||
* to TRUE to return a module list ordered only by module name.
|
||||
|
@ -43,7 +37,7 @@ function module_load_all() {
|
|||
* An associative array whose keys and values are the names of all loaded
|
||||
* modules.
|
||||
*/
|
||||
function module_list($refresh = FALSE, $sort = FALSE, $fixed_list = NULL) {
|
||||
function module_list($refresh = FALSE, $bootstrap = FALSE, $sort = FALSE, $fixed_list = NULL) {
|
||||
static $list = array(), $sorted_list;
|
||||
|
||||
if (empty($list) || $refresh || $fixed_list) {
|
||||
|
@ -61,7 +55,12 @@ function module_list($refresh = FALSE, $sort = FALSE, $fixed_list = NULL) {
|
|||
// Drupal installations, which might have modules installed in different
|
||||
// locations in the file system. The ordering here must also be
|
||||
// consistent with the one used in module_implements().
|
||||
$result = db_query("SELECT name, filename FROM {system} WHERE type = 'module' AND status = 1 ORDER BY weight ASC, name ASC");
|
||||
if ($bootstrap) {
|
||||
$result = db_query("SELECT name, filename FROM {system} WHERE type = 'module' AND status = 1 AND bootstrap = 1 ORDER BY weight ASC, name ASC");
|
||||
}
|
||||
else {
|
||||
$result = db_query("SELECT name, filename FROM {system} WHERE type = 'module' AND status = 1 ORDER BY weight ASC, name ASC");
|
||||
}
|
||||
foreach ($result as $module) {
|
||||
if (file_exists($module->filename)) {
|
||||
drupal_get_filename('module', $module->name, $module->filename);
|
||||
|
@ -164,7 +163,7 @@ function module_load_include($type, $module, $name = NULL) {
|
|||
$name = $module;
|
||||
}
|
||||
|
||||
if (drupal_function_exists('drupal_get_path')) {
|
||||
if (function_exists('drupal_get_path')) {
|
||||
$file = DRUPAL_ROOT . '/' . drupal_get_path('module', $module) . "/$name.$type";
|
||||
if (is_file($file)) {
|
||||
require_once $file;
|
||||
|
@ -218,8 +217,9 @@ function module_enable($module_list, $disable_modules_installed_hook = FALSE) {
|
|||
}
|
||||
|
||||
if (!empty($invoke_modules)) {
|
||||
// Refresh the module list to include the new enabled module.
|
||||
// Refresh the module list to exclude the disabled modules.
|
||||
module_list(TRUE);
|
||||
module_implements('', FALSE, TRUE);
|
||||
// Force to regenerate the stored list of hook implementations.
|
||||
registry_rebuild();
|
||||
|
||||
|
@ -235,7 +235,7 @@ function module_enable($module_list, $disable_modules_installed_hook = FALSE) {
|
|||
// We check for the existence of node_access_needs_rebuild() since
|
||||
// at install time, module_enable() could be called while node.module
|
||||
// is not enabled yet.
|
||||
if (drupal_function_exists('node_access_needs_rebuild') && !node_access_needs_rebuild() && module_hook($module, 'node_grants')) {
|
||||
if (function_exists('node_access_needs_rebuild') && !node_access_needs_rebuild() && module_hook($module, 'node_grants')) {
|
||||
node_access_needs_rebuild(TRUE);
|
||||
}
|
||||
}
|
||||
|
@ -275,11 +275,12 @@ function module_disable($module_list) {
|
|||
}
|
||||
|
||||
if (!empty($invoke_modules)) {
|
||||
// Refresh the module list to exclude the disabled modules.
|
||||
module_list(TRUE);
|
||||
module_implements('', FALSE, TRUE);
|
||||
// Invoke hook_module_disable before disabling modules,
|
||||
// so we can still call module hooks to get information.
|
||||
module_invoke_all('modules_disabled', $invoke_modules);
|
||||
// Refresh the module list to exclude the disabled modules.
|
||||
module_list(TRUE);
|
||||
// Force to regenerate the stored list of hook implementations.
|
||||
registry_rebuild();
|
||||
}
|
||||
|
@ -324,119 +325,49 @@ function module_disable($module_list) {
|
|||
* implemented in that module.
|
||||
*/
|
||||
function module_hook($module, $hook) {
|
||||
$function = $module . '_' . $hook;
|
||||
return function_exists($function) || drupal_function_exists($function);
|
||||
return function_exists($module . '_' . $hook);
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine which modules are implementing a hook.
|
||||
*
|
||||
* @param $hook
|
||||
* The name of the hook (e.g. "help" or "menu"). Special cases:
|
||||
* MODULE_IMPLEMENTS_CLEAR_CACHE: Force the stored list of hook
|
||||
* implementations to be regenerated (such as after enabling a new module,
|
||||
* before processing hook_enable).
|
||||
* MODULE_IMPLEMENTS_WRITE_CACHE: Write the stored list of hook
|
||||
* implementations into the cache_registry table.
|
||||
* @param $sort
|
||||
* By default, modules are ordered by weight and module name. By setting this
|
||||
* option to TRUE, modules will be ordered by module name.
|
||||
* @return
|
||||
* An array with the names of the modules which are implementing this hook.
|
||||
* All enabled modules are taken into consideration and the files containing
|
||||
* the implementations are loaded as necessary.
|
||||
*/
|
||||
function module_implements($hook, $sort = FALSE) {
|
||||
static $implementations = array(), $sorted_implementations = array(), $loaded = array(), $cached_hooks = 0, $maintenance;
|
||||
|
||||
// Use a static variable for maintenance mode to avoid the overhead of
|
||||
// calling defined() each time the function is called.
|
||||
if (!isset($maintenance)) {
|
||||
$maintenance = defined('MAINTENANCE_MODE');
|
||||
}
|
||||
|
||||
if ($maintenance) {
|
||||
return _module_implements_maintenance($hook, $sort);
|
||||
}
|
||||
if ($hook === MODULE_IMPLEMENTS_CLEAR_CACHE) {
|
||||
$implementations = array();
|
||||
$sorted_implementations = array();
|
||||
$loaded = array();
|
||||
$cached_hooks = 0;
|
||||
cache_clear_all('hooks', 'cache_registry');
|
||||
return;
|
||||
}
|
||||
if ($hook === MODULE_IMPLEMENTS_WRITE_CACHE) {
|
||||
// Only write this to cache if we loaded new implementations.
|
||||
if (count($implementations) > $cached_hooks) {
|
||||
cache_set('hooks', $implementations, 'cache_registry');
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (!isset($loaded[$hook])) {
|
||||
if (empty($implementations) && ($cache = cache_get('hooks', 'cache_registry'))) {
|
||||
$implementations = $cache->data;
|
||||
$cached_hooks = count($implementations);
|
||||
}
|
||||
if (!isset($implementations[$hook])) {
|
||||
// The module name (rather than the filename) is used as the fallback
|
||||
// weighting in order to guarantee consistent behavior across different
|
||||
// Drupal installations, which might have modules installed in different
|
||||
// locations in the file system. The ordering here must also be
|
||||
// consistent with the one used in module_list().
|
||||
$implementations[$hook] = db_query("SELECT module FROM {registry} WHERE type = 'function' AND suffix = :hook ORDER BY weight, module", array(':hook' => $hook))->fetchCol();
|
||||
}
|
||||
foreach ($implementations[$hook] as $module) {
|
||||
$function = $module . '_' . $hook;
|
||||
if (!function_exists($function)) {
|
||||
drupal_function_exists($function);
|
||||
}
|
||||
}
|
||||
$loaded[$hook] = TRUE;
|
||||
}
|
||||
|
||||
if ($sort) {
|
||||
if (!isset($sorted_implementations[$hook])) {
|
||||
$sorted_implementations[$hook] = $implementations[$hook];
|
||||
sort($sorted_implementations[$hook]);
|
||||
}
|
||||
return $sorted_implementations[$hook];
|
||||
}
|
||||
else {
|
||||
return $implementations[$hook];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This is the maintenance version of module_implements for internal use only.
|
||||
*
|
||||
* This function is called whenever MAINTENANCE_MODE is defined and is a
|
||||
* safe code path for Drupal installation or upgrade because it does not use
|
||||
* the database, instead it uses module_list. @see module_list $fixed_list on
|
||||
* how to make module_list also DB independent.
|
||||
*
|
||||
* @param $hook
|
||||
* The name of the hook (e.g. "help" or "menu").
|
||||
* @param $sort
|
||||
* By default, modules are ordered by weight and filename, settings this
|
||||
* option to TRUE, module list will be ordered by module name.
|
||||
* By default, modules are ordered by weight and filename, settings this option
|
||||
* to TRUE, module list will be ordered by module name.
|
||||
* @param $refresh
|
||||
* For internal use only: Whether to force the stored list of hook
|
||||
* implementations to be regenerated (such as after enabling a new module,
|
||||
* before processing hook_enable).
|
||||
* @return
|
||||
* An array with the names of the modules which are implementing this hook.
|
||||
* Only enabled and already loaded modules are taken into consideration.
|
||||
*/
|
||||
function _module_implements_maintenance($hook, $sort = FALSE) {
|
||||
$implementations = array();
|
||||
foreach (module_list() as $module) {
|
||||
$function = $module . '_' . $hook;
|
||||
if (function_exists($function)) {
|
||||
$implementations[] = $module;
|
||||
}
|
||||
if ($sort) {
|
||||
sort($implementations);
|
||||
function module_implements($hook, $sort = FALSE, $refresh = FALSE) {
|
||||
static $implementations;
|
||||
|
||||
if ($refresh) {
|
||||
$implementations = array();
|
||||
return;
|
||||
}
|
||||
|
||||
if (!isset($implementations[$hook])) {
|
||||
$implementations[$hook] = array();
|
||||
$list = module_list(FALSE, FALSE, $sort);
|
||||
foreach ($list as $module) {
|
||||
if (module_hook($module, $hook)) {
|
||||
$implementations[$hook][] = $module;
|
||||
}
|
||||
}
|
||||
}
|
||||
return $implementations;
|
||||
|
||||
// The explicit cast forces a copy to be made. This is needed because
|
||||
// $implementations[$hook] is only a reference to an element of
|
||||
// $implementations and if there are nested foreaches (due to nested node
|
||||
// API calls, for example), they would both manipulate the same array's
|
||||
// references, which causes some modules' hooks not to be called.
|
||||
// See also http://www.zend.com/zend/art/ref-count.php.
|
||||
return (array)$implementations[$hook];
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -478,7 +409,7 @@ function module_invoke_all() {
|
|||
$return = array();
|
||||
foreach (module_implements($hook) as $module) {
|
||||
$function = $module . '_' . $hook;
|
||||
if (drupal_function_exists($function)) {
|
||||
if (function_exists($function)) {
|
||||
$result = call_user_func_array($function, $args);
|
||||
if (isset($result) && is_array($result)) {
|
||||
$return = array_merge_recursive($return, $result);
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
*
|
||||
* Drupal maintains an internal registry of all functions or classes in the
|
||||
* system, allowing it to lazy-load code files as needed (reducing the amount
|
||||
* of code that must be parsed on each request).
|
||||
* of code that must be parsed on each request).
|
||||
*/
|
||||
|
||||
/**
|
||||
|
@ -34,9 +34,6 @@ function _registry_rebuild() {
|
|||
require_once DRUPAL_ROOT . '/includes/database/select.inc';
|
||||
require_once DRUPAL_ROOT . '/includes/database/' . $driver . '/query.inc';
|
||||
|
||||
// Reset the resources cache.
|
||||
_registry_get_resource_name();
|
||||
|
||||
// Get current list of modules and their files.
|
||||
$modules = system_get_module_data();
|
||||
// Get the list of files we are going to parse.
|
||||
|
@ -96,9 +93,9 @@ function _registry_rebuild() {
|
|||
$unchanged_resources[$key] = $file;
|
||||
}
|
||||
}
|
||||
module_implements('', FALSE, TRUE);
|
||||
_registry_check_code(REGISTRY_RESET_LOOKUP_CACHE);
|
||||
|
||||
module_implements(MODULE_IMPLEMENTS_CLEAR_CACHE);
|
||||
cache_clear_all('*', 'cache_registry', TRUE);
|
||||
|
||||
// We have some unchanged resources, warm up the cache - no need to pay
|
||||
|
@ -163,123 +160,23 @@ function _registry_parse_files($files) {
|
|||
* (optional) Weight of the module.
|
||||
*/
|
||||
function _registry_parse_file($filename, $contents, $module = '', $weight = 0) {
|
||||
$map = &drupal_static(__FUNCTION__, array(T_FUNCTION => 'function', T_CLASS => 'class', T_INTERFACE => 'interface'));
|
||||
static $map = array(T_CLASS => 'class', T_INTERFACE => 'interface');
|
||||
// Delete registry entries for this file, so we can insert the new resources.
|
||||
db_delete('registry')
|
||||
->condition('filename', $filename)
|
||||
->execute();
|
||||
$tokens = token_get_all($contents);
|
||||
while ($token = next($tokens)) {
|
||||
// Ignore all tokens except for those we are specifically saving.
|
||||
if (is_array($token) && isset($map[$token[0]])) {
|
||||
$type = $map[$token[0]];
|
||||
if ($resource_name = _registry_get_resource_name($tokens, $type)) {
|
||||
$suffix = '';
|
||||
// Collect the part of the function name after the module name,
|
||||
// so that we can query the registry for possible hook implementations.
|
||||
if ($type == 'function' && !empty($module)) {
|
||||
$n = strlen($module);
|
||||
if (substr($resource_name, 0, $n) == $module) {
|
||||
$suffix = substr($resource_name, $n + 1);
|
||||
}
|
||||
}
|
||||
$fields = array(
|
||||
'filename' => $filename,
|
||||
'module' => $module,
|
||||
'suffix' => $suffix,
|
||||
'weight' => $weight,
|
||||
);
|
||||
// Because some systems, such as cache, currently use duplicate function
|
||||
// names in separate files an insert query cannot be used here as it
|
||||
// would cause a key constraint violation. Instead we use a merge query.
|
||||
// In practice this should not be an issue as those systems all initialize
|
||||
// pre-registry and therefore are never loaded by the registry so it
|
||||
// doesn't matter if those records in the registry table point to one
|
||||
// filename instead of another.
|
||||
// TODO: Convert this back to an insert query after all duplicate
|
||||
// function names have been purged from Drupal.
|
||||
db_merge('registry')
|
||||
->key(array('name' => $resource_name, 'type' => $type))
|
||||
->fields($fields)
|
||||
->execute();
|
||||
|
||||
// We skip the body because classes may contain functions.
|
||||
_registry_skip_body($tokens);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Derive the name of the next resource in the token stream.
|
||||
*
|
||||
* When called without arguments, it resets its static cache.
|
||||
*
|
||||
* @param $tokens
|
||||
* The collection of tokens for the current file being parsed.
|
||||
* @param $type
|
||||
* The human-readable token name, either: "function", "class", or "interface".
|
||||
* @return
|
||||
* The name of the resource, or FALSE if the resource has already been processed.
|
||||
*/
|
||||
function _registry_get_resource_name(&$tokens = NULL, $type = NULL) {
|
||||
// Keep a running list of all resources we've saved so far, so that we never
|
||||
// save one more than once.
|
||||
$resources = &drupal_static(__FUNCTION__);
|
||||
|
||||
if (!isset($tokens)) {
|
||||
$resources = array();
|
||||
return;
|
||||
}
|
||||
// Determine the name of the resource.
|
||||
next($tokens); // Eat a space.
|
||||
$token = next($tokens);
|
||||
if ($token == '&') {
|
||||
$token = next($tokens);
|
||||
}
|
||||
$resource_name = $token[1];
|
||||
|
||||
// Ensure that we never save it more than once.
|
||||
if (isset($resources[$type][$resource_name])) {
|
||||
return FALSE;
|
||||
}
|
||||
$resources[$type][$resource_name] = TRUE;
|
||||
|
||||
return $resource_name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Skip the body of a code block, as defined by { and }.
|
||||
*
|
||||
* This function assumes that the body starts at the next instance
|
||||
* of { from the current position.
|
||||
*
|
||||
* @param $tokens
|
||||
*/
|
||||
function _registry_skip_body(&$tokens) {
|
||||
$num_braces = 1;
|
||||
|
||||
$token = '';
|
||||
// Get to the first open brace.
|
||||
while ($token != '{' && ($token = next($tokens)));
|
||||
|
||||
// Scan through the rest of the tokens until we reach the matching
|
||||
// end brace.
|
||||
while ($num_braces && ($token = next($tokens))) {
|
||||
// PHP is really logical to have three different tokens for { with
|
||||
// inconsistent names and only one for a closing brace.
|
||||
if ($token == '{' || (is_array($token) && ($token[0] == T_DOLLAR_OPEN_CURLY_BRACES || $token[0] == T_CURLY_OPEN))) {
|
||||
++$num_braces;
|
||||
}
|
||||
elseif ($token == '}') {
|
||||
--$num_braces;
|
||||
}
|
||||
// Consume strings manually as workaround for a bug in PHP < 5.2.3 (see
|
||||
// http://drupal.org/node/368116).
|
||||
elseif ($token == '"' || $token == '`' || (is_array($token) && $token[0] == T_START_HEREDOC)) {
|
||||
$stop = is_array($token) ? T_END_HEREDOC : $token;
|
||||
while (($token = next($tokens)) && (is_array($token) ? $token[0] : $token) != $stop);
|
||||
if (preg_match_all('/^\s*(?:abstract)?\s*(class|interface)\s+([a-zA-Z0-9_]+)/m', $contents, $matches)) {
|
||||
$query = db_insert('registry')->fields(array('name', 'type', 'filename', 'module', 'weight'));
|
||||
foreach ($matches[2] as $key => $name) {
|
||||
$query->values(array(
|
||||
'name' => $name,
|
||||
'type' => $matches[1][$key],
|
||||
'filename' => $filename,
|
||||
'module' => $module,
|
||||
'weight' => $weight,
|
||||
));
|
||||
}
|
||||
$query->execute();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -194,7 +194,8 @@ abstract class DrupalLocalStreamWrapper implements DrupalStreamWrapperInterface
|
|||
static function getMimeType($uri, $mapping = NULL) {
|
||||
if (!isset($mapping)) {
|
||||
$mapping = variable_get('mime_extension_mapping', NULL);
|
||||
if (!isset($mapping) && drupal_function_exists('file_default_mimetype_mapping')) {
|
||||
if (!isset($mapping)) {
|
||||
include_once DRUPAL_ROOT . '/includes/file.mimetypes.inc';
|
||||
// The default file map, defined in file.mimetypes.inc is quite big.
|
||||
// We only load it when necessary.
|
||||
$mapping = file_default_mimetype_mapping();
|
||||
|
|
|
@ -189,7 +189,7 @@ function _drupal_theme_initialize($theme, $base_theme = array(), $registry_callb
|
|||
}
|
||||
}
|
||||
|
||||
if (drupal_function_exists($registry_callback)) {
|
||||
if (function_exists($registry_callback)) {
|
||||
$registry_callback($theme, $base_theme, $theme_engine);
|
||||
}
|
||||
}
|
||||
|
@ -322,7 +322,6 @@ function _theme_process_registry(&$cache, $name, $type, $theme, $path) {
|
|||
|
||||
if (function_exists($function)) {
|
||||
$result = $function($cache, $type, $theme, $path);
|
||||
|
||||
foreach ($result as $hook => $info) {
|
||||
$result[$hook]['type'] = $type;
|
||||
$result[$hook]['theme path'] = $path;
|
||||
|
@ -336,12 +335,14 @@ function _theme_process_registry(&$cache, $name, $type, $theme, $path) {
|
|||
// functions on behalf of core .include files.
|
||||
// All files are included to be safe. Conditionally included
|
||||
// files can prevent them from getting registered.
|
||||
if (isset($info['file']) && !isset($info['path'])) {
|
||||
$result[$hook]['file'] = $path . '/' . $info['file'];
|
||||
include_once DRUPAL_ROOT . '/' . $result[$hook]['file'];
|
||||
if (isset($cache[$hook]['includes'])) {
|
||||
$result[$hook]['includes'] = $cache[$hook]['includes'];
|
||||
}
|
||||
elseif (isset($info['file']) && isset($info['path'])) {
|
||||
include_once DRUPAL_ROOT . '/' . $info['path'] . '/' . $info['file'];
|
||||
if (isset($info['file'])) {
|
||||
$include_file = isset($info['path']) ? $info['path'] : $path;
|
||||
$include_file .= '/' . $info['file'];
|
||||
include_once DRUPAL_ROOT . '/' . $include_file;
|
||||
$result[$hook]['includes'][] = $include_file;
|
||||
}
|
||||
|
||||
// If 'arguments' have been defined previously, carry them forward.
|
||||
|
@ -760,12 +761,10 @@ function theme() {
|
|||
$theme_path = $info['theme path'];
|
||||
|
||||
// Include a file if the theme function or variable processor is held elsewhere.
|
||||
if (!empty($info['file'])) {
|
||||
$include_file = $info['file'];
|
||||
if (isset($info['path'])) {
|
||||
$include_file = $info['path'] . '/' . $include_file;
|
||||
if (!empty($info['includes'])) {
|
||||
foreach ($info['includes'] as $include_file) {
|
||||
include_once DRUPAL_ROOT . '/' . $include_file;
|
||||
}
|
||||
include_once DRUPAL_ROOT . '/' . $include_file;
|
||||
}
|
||||
if (isset($info['function'])) {
|
||||
// The theme call is a function.
|
||||
|
@ -804,7 +803,7 @@ function theme() {
|
|||
foreach (array('preprocess functions', 'process functions') as $phase) {
|
||||
if (!empty($info[$phase])) {
|
||||
foreach ($info[$phase] as $processor_function) {
|
||||
if (drupal_function_exists($processor_function)) {
|
||||
if (function_exists($processor_function)) {
|
||||
$processor_function($variables, $hook_clone);
|
||||
}
|
||||
}
|
||||
|
@ -830,7 +829,7 @@ function theme() {
|
|||
$suggestions[] = $variables['theme_function'];
|
||||
}
|
||||
foreach (array_reverse($suggestions) as $suggestion) {
|
||||
if (drupal_function_exists($suggestion)) {
|
||||
if (function_exists($suggestion)) {
|
||||
$info['function'] = $suggestion;
|
||||
break;
|
||||
}
|
||||
|
@ -842,7 +841,7 @@ function theme() {
|
|||
}
|
||||
|
||||
// Call the function.
|
||||
if (drupal_function_exists($info['function'])) {
|
||||
if (function_exists($info['function'])) {
|
||||
$output = call_user_func_array($info['function'], $args);
|
||||
}
|
||||
}
|
||||
|
@ -885,7 +884,7 @@ function theme() {
|
|||
foreach (array('preprocess functions', 'process functions') as $phase) {
|
||||
if (!empty($info[$phase])) {
|
||||
foreach ($info[$phase] as $processor_function) {
|
||||
if (drupal_function_exists($processor_function)) {
|
||||
if (function_exists($processor_function)) {
|
||||
call_user_func_array($processor_function, $args);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -41,7 +41,7 @@ function _drupal_maintenance_theme() {
|
|||
// bootstrap just enough to allow hook invocations to work.
|
||||
$module_list['system']['filename'] = 'modules/system/system.module';
|
||||
$module_list['filter']['filename'] = 'modules/filter/filter.module';
|
||||
module_list(TRUE, FALSE, $module_list);
|
||||
module_list(TRUE, FALSE, FALSE, $module_list);
|
||||
drupal_load('module', 'system');
|
||||
drupal_load('module', 'filter');
|
||||
}
|
||||
|
|
|
@ -81,14 +81,14 @@ function token_replace($text, array $data = array(), array $options = array()) {
|
|||
}
|
||||
|
||||
// Optionally alter the list of replacement values.
|
||||
if (!empty($options['callback']) && drupal_function_exists($options['callback'])) {
|
||||
if (!empty($options['callback']) && function_exists($options['callback'])) {
|
||||
$function = $options['callback'];
|
||||
$function($replacements, $data, $options);
|
||||
}
|
||||
|
||||
$tokens = array_keys($replacements);
|
||||
$values = array_values($replacements);
|
||||
|
||||
|
||||
return str_replace($tokens, $values, $text);
|
||||
}
|
||||
|
||||
|
@ -153,15 +153,11 @@ function token_scan($text) {
|
|||
function token_generate($type, array $tokens, array $data = array(), array $options = array()) {
|
||||
$results = array();
|
||||
$options += array('sanitize' => TRUE);
|
||||
_token_initialize();
|
||||
|
||||
foreach (module_implements('tokens') as $module) {
|
||||
$function = $module . '_tokens';
|
||||
if (drupal_function_exists($function)) {
|
||||
$result = $function($type, $tokens, $data, $options);
|
||||
foreach ($result as $original => $replacement) {
|
||||
$results[$original] = $replacement;
|
||||
}
|
||||
}
|
||||
$result = module_invoke_all('tokens', $type, $tokens, $data, $options);
|
||||
foreach ($result as $original => $replacement) {
|
||||
$results[$original] = $replacement;
|
||||
}
|
||||
|
||||
return $results;
|
||||
|
@ -231,8 +227,25 @@ function token_find_with_prefix(array $tokens, $prefix, $delimiter = ':') {
|
|||
function token_info() {
|
||||
$data = &drupal_static(__FUNCTION__);
|
||||
if (!isset($data)) {
|
||||
_token_initialize();
|
||||
$data = module_invoke_all('token_info');
|
||||
drupal_alter('token_info', $data);
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Load modulename.tokens.inc for all enabled modules.
|
||||
*/
|
||||
function _token_initialize() {
|
||||
$initialized = drupal_static(__FUNCTION__);
|
||||
if (!$initialized) {
|
||||
foreach (module_list() as $module) {
|
||||
$filename = DRUPAL_ROOT . '/' . drupal_get_path('module', $module) . "/$module.tokens.inc";
|
||||
if (file_exists($filename)) {
|
||||
include_once $filename;
|
||||
}
|
||||
}
|
||||
$initialized = TRUE;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -438,7 +438,7 @@ function xmlrpc_base64_get_xml($xmlrpc_base64) {
|
|||
* returned by the method called, or an xmlrpc_error object if the call
|
||||
* failed. See xmlrpc_error().
|
||||
*/
|
||||
function xmlrpc() {
|
||||
function _xmlrpc() {
|
||||
$args = func_get_args();
|
||||
$url = array_shift($args);
|
||||
if (is_array($args[0])) {
|
||||
|
|
|
@ -200,7 +200,7 @@ function xmlrpc_server_call($xmlrpc_server, $methodname, $args) {
|
|||
}
|
||||
}
|
||||
|
||||
if (!drupal_function_exists($method)) {
|
||||
if (!function_exists($method)) {
|
||||
return xmlrpc_error(-32601, t('Server error. Requested function @method does not exist.', array("@method" => $method)));
|
||||
}
|
||||
// Call the mapped function
|
||||
|
|
|
@ -250,7 +250,7 @@ function install_begin_request(&$install_state) {
|
|||
include_once DRUPAL_ROOT . '/includes/session.inc';
|
||||
$module_list['system']['filename'] = 'modules/system/system.module';
|
||||
$module_list['filter']['filename'] = 'modules/filter/filter.module';
|
||||
module_list(TRUE, FALSE, $module_list);
|
||||
module_list(TRUE, FALSE, FALSE, $module_list);
|
||||
drupal_load('module', 'system');
|
||||
drupal_load('module', 'filter');
|
||||
|
||||
|
|
|
@ -391,7 +391,6 @@ function aggregator_admin_refresh_feed($feed) {
|
|||
* @ingroup forms
|
||||
*/
|
||||
function aggregator_admin_form($form_state) {
|
||||
|
||||
// Make sure configuration is sane.
|
||||
aggregator_sanitize_configuration();
|
||||
|
||||
|
|
|
@ -34,7 +34,6 @@ function aggregator_aggregator_fetch($feed) {
|
|||
// Request feed.
|
||||
$result = drupal_http_request($feed->url, array('headers' => $headers));
|
||||
|
||||
|
||||
// Process HTTP response code.
|
||||
switch ($result->code) {
|
||||
case 304:
|
||||
|
|
|
@ -91,6 +91,7 @@ function aggregator_menu() {
|
|||
'description' => "Configure which content your site aggregates from other sites, how often it polls them, and how they're categorized.",
|
||||
'page callback' => 'aggregator_admin_overview',
|
||||
'access arguments' => array('administer news feeds'),
|
||||
'file' => 'aggregator.admin.inc',
|
||||
);
|
||||
$items['admin/settings/aggregator/add/feed'] = array(
|
||||
'title' => 'Add feed',
|
||||
|
@ -99,6 +100,7 @@ function aggregator_menu() {
|
|||
'access arguments' => array('administer news feeds'),
|
||||
'type' => MENU_LOCAL_ACTION,
|
||||
'parent' => 'admin/settings/aggregator',
|
||||
'file' => 'aggregator.admin.inc',
|
||||
);
|
||||
$items['admin/settings/aggregator/add/category'] = array(
|
||||
'title' => 'Add category',
|
||||
|
@ -107,6 +109,7 @@ function aggregator_menu() {
|
|||
'access arguments' => array('administer news feeds'),
|
||||
'type' => MENU_LOCAL_ACTION,
|
||||
'parent' => 'admin/settings/aggregator',
|
||||
'file' => 'aggregator.admin.inc',
|
||||
);
|
||||
$items['admin/settings/aggregator/add/opml'] = array(
|
||||
'title' => 'Import OPML',
|
||||
|
@ -115,6 +118,7 @@ function aggregator_menu() {
|
|||
'access arguments' => array('administer news feeds'),
|
||||
'type' => MENU_LOCAL_ACTION,
|
||||
'parent' => 'admin/settings/aggregator',
|
||||
'file' => 'aggregator.admin.inc',
|
||||
);
|
||||
$items['admin/settings/aggregator/remove/%aggregator_feed'] = array(
|
||||
'title' => 'Remove items',
|
||||
|
@ -122,6 +126,7 @@ function aggregator_menu() {
|
|||
'page arguments' => array('aggregator_admin_remove_feed', 4),
|
||||
'access arguments' => array('administer news feeds'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'aggregator.admin.inc',
|
||||
);
|
||||
$items['admin/settings/aggregator/update/%aggregator_feed'] = array(
|
||||
'title' => 'Update items',
|
||||
|
@ -129,6 +134,7 @@ function aggregator_menu() {
|
|||
'page arguments' => array(4),
|
||||
'access arguments' => array('administer news feeds'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'aggregator.admin.inc',
|
||||
);
|
||||
$items['admin/settings/aggregator/list'] = array(
|
||||
'title' => 'List',
|
||||
|
@ -141,34 +147,40 @@ function aggregator_menu() {
|
|||
'page callback' => 'drupal_get_form',
|
||||
'page arguments' => array('aggregator_admin_form'),
|
||||
'access arguments' => array('administer news feeds'),
|
||||
'file' => 'aggregator.admin.inc',
|
||||
);
|
||||
$items['aggregator'] = array(
|
||||
'title' => 'Feed aggregator',
|
||||
'page callback' => 'aggregator_page_last',
|
||||
'access arguments' => array('access news feeds'),
|
||||
'weight' => 5,
|
||||
'file' => 'aggregator.pages.inc',
|
||||
);
|
||||
$items['aggregator/sources'] = array(
|
||||
'title' => 'Sources',
|
||||
'page callback' => 'aggregator_page_sources',
|
||||
'access arguments' => array('access news feeds'),
|
||||
'file' => 'aggregator.pages.inc',
|
||||
);
|
||||
$items['aggregator/categories'] = array(
|
||||
'title' => 'Categories',
|
||||
'page callback' => 'aggregator_page_categories',
|
||||
'access callback' => '_aggregator_has_categories',
|
||||
'file' => 'aggregator.pages.inc',
|
||||
);
|
||||
$items['aggregator/rss'] = array(
|
||||
'title' => 'RSS feed',
|
||||
'page callback' => 'aggregator_page_rss',
|
||||
'access arguments' => array('access news feeds'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'aggregator.pages.inc',
|
||||
);
|
||||
$items['aggregator/opml'] = array(
|
||||
'title' => 'OPML feed',
|
||||
'page callback' => 'aggregator_page_opml',
|
||||
'access arguments' => array('access news feeds'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'aggregator.pages.inc',
|
||||
);
|
||||
$items['aggregator/categories/%aggregator_category'] = array(
|
||||
'title callback' => '_aggregator_category_title',
|
||||
|
@ -177,6 +189,7 @@ function aggregator_menu() {
|
|||
'page arguments' => array(2),
|
||||
'access callback' => 'user_access',
|
||||
'access arguments' => array('access news feeds'),
|
||||
'file' => 'aggregator.pages.inc',
|
||||
);
|
||||
$items['aggregator/categories/%aggregator_category/view'] = array(
|
||||
'title' => 'View',
|
||||
|
@ -189,6 +202,7 @@ function aggregator_menu() {
|
|||
'page arguments' => array('aggregator_page_category', 2),
|
||||
'access arguments' => array('administer news feeds'),
|
||||
'type' => MENU_LOCAL_TASK,
|
||||
'file' => 'aggregator.pages.inc',
|
||||
);
|
||||
$items['aggregator/categories/%aggregator_category/configure'] = array(
|
||||
'title' => 'Configure',
|
||||
|
@ -197,12 +211,14 @@ function aggregator_menu() {
|
|||
'access arguments' => array('administer news feeds'),
|
||||
'type' => MENU_LOCAL_TASK,
|
||||
'weight' => 1,
|
||||
'file' => 'aggregator.admin.inc',
|
||||
);
|
||||
$items['aggregator/sources/%aggregator_feed'] = array(
|
||||
'page callback' => 'aggregator_page_source',
|
||||
'page arguments' => array(2),
|
||||
'access arguments' => array('access news feeds'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'aggregator.pages.inc',
|
||||
);
|
||||
$items['aggregator/sources/%aggregator_feed/view'] = array(
|
||||
'title' => 'View',
|
||||
|
@ -215,6 +231,7 @@ function aggregator_menu() {
|
|||
'page arguments' => array('aggregator_page_source', 2),
|
||||
'access arguments' => array('administer news feeds'),
|
||||
'type' => MENU_LOCAL_TASK,
|
||||
'file' => 'aggregator.pages.inc',
|
||||
);
|
||||
$items['aggregator/sources/%aggregator_feed/configure'] = array(
|
||||
'title' => 'Configure',
|
||||
|
@ -223,6 +240,7 @@ function aggregator_menu() {
|
|||
'access arguments' => array('administer news feeds'),
|
||||
'type' => MENU_LOCAL_TASK,
|
||||
'weight' => 1,
|
||||
'file' => 'aggregator.admin.inc',
|
||||
);
|
||||
$items['admin/settings/aggregator/edit/feed/%aggregator_feed'] = array(
|
||||
'title' => 'Edit feed',
|
||||
|
@ -230,6 +248,7 @@ function aggregator_menu() {
|
|||
'page arguments' => array('aggregator_form_feed', 5),
|
||||
'access arguments' => array('administer news feeds'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'aggregator.admin.inc',
|
||||
);
|
||||
$items['admin/settings/aggregator/edit/category/%aggregator_category'] = array(
|
||||
'title' => 'Edit category',
|
||||
|
@ -237,6 +256,7 @@ function aggregator_menu() {
|
|||
'page arguments' => array('aggregator_form_category', 5),
|
||||
'access arguments' => array('administer news feeds'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'aggregator.admin.inc',
|
||||
);
|
||||
|
||||
return $items;
|
||||
|
@ -514,6 +534,7 @@ function aggregator_save_feed($edit) {
|
|||
* An object describing the feed to be cleared.
|
||||
*/
|
||||
function aggregator_remove($feed) {
|
||||
_aggregator_get_variables();
|
||||
// Call hook_aggregator_remove() on all modules.
|
||||
module_invoke_all('aggregator_remove', $feed);
|
||||
// Reset feed.
|
||||
|
@ -530,6 +551,23 @@ function aggregator_remove($feed) {
|
|||
->execute();
|
||||
}
|
||||
|
||||
function _aggregator_get_variables() {
|
||||
// Fetch the feed.
|
||||
$fetcher = variable_get('aggregator_fetcher', 'aggregator');
|
||||
if ($fetcher == 'aggregator') {
|
||||
include_once DRUPAL_ROOT . '/' . drupal_get_path('module', 'aggregator') . '/aggregator.fetcher.inc';
|
||||
}
|
||||
$parser = variable_get('aggregator_parser', 'aggregator');
|
||||
if ($parser == 'aggregator') {
|
||||
include_once DRUPAL_ROOT . '/' . drupal_get_path('module', 'aggregator') . '/aggregator.parser.inc';
|
||||
}
|
||||
$processors = variable_get('aggregator_processors', array('aggregator'));
|
||||
if (in_array('aggregator', $processors)) {
|
||||
include_once DRUPAL_ROOT . '/' . drupal_get_path('module', 'aggregator') . '/aggregator.processor.inc';
|
||||
}
|
||||
return array($fetcher, $parser, $processors);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks a news feed for new items.
|
||||
*
|
||||
|
@ -537,25 +575,22 @@ function aggregator_remove($feed) {
|
|||
* An object describing the feed to be refreshed.
|
||||
*/
|
||||
function aggregator_refresh($feed) {
|
||||
// Fetch the feed.
|
||||
$fetcher = variable_get('aggregator_fetcher', 'aggregator');
|
||||
list($fetcher, $parser, $processors) = _aggregator_get_variables();
|
||||
module_invoke($fetcher, 'aggregator_fetch', $feed);
|
||||
|
||||
if ($feed->source_string !== FALSE) {
|
||||
// Parse the feed.
|
||||
$parser = variable_get('aggregator_parser', 'aggregator');
|
||||
module_invoke($parser, 'aggregator_parse', $feed);
|
||||
|
||||
// If there are items on the feed, let all enabled processors do their work on it.
|
||||
if (@count($feed->items)) {
|
||||
$processors = variable_get('aggregator_processors', array('aggregator'));
|
||||
foreach ($processors as $processor) {
|
||||
module_invoke($processor, 'aggregator_process', $feed);
|
||||
}
|
||||
}
|
||||
}
|
||||
// Expire old feed items.
|
||||
if (drupal_function_exists('aggregator_expire')) {
|
||||
if (function_exists('aggregator_expire')) {
|
||||
aggregator_expire($feed);
|
||||
}
|
||||
}
|
||||
|
@ -635,15 +670,13 @@ function aggregator_filter_xss($value) {
|
|||
*/
|
||||
function aggregator_sanitize_configuration() {
|
||||
$reset = FALSE;
|
||||
$fetcher = variable_get('aggregator_fetcher', 'aggregator');
|
||||
list($fetcher, $parser, $processors) = _aggregator_get_variables();
|
||||
if (!module_exists($fetcher)) {
|
||||
$reset = TRUE;
|
||||
}
|
||||
$parser = variable_get('aggregator_parser', 'aggregator');
|
||||
if (!module_exists($parser)) {
|
||||
$reset = TRUE;
|
||||
}
|
||||
$processors = variable_get('aggregator_processors', array('aggregator'));
|
||||
foreach ($processors as $processor) {
|
||||
if (!module_exists($processor)) {
|
||||
$reset = TRUE;
|
||||
|
|
|
@ -125,6 +125,7 @@ function block_menu() {
|
|||
'description' => 'Configure what block content appears in your site\'s sidebars and other regions.',
|
||||
'page callback' => 'block_admin_display',
|
||||
'access arguments' => array('administer blocks'),
|
||||
'file' => 'block.admin.inc',
|
||||
);
|
||||
$items['admin/structure/block/list'] = array(
|
||||
'title' => 'List',
|
||||
|
@ -136,6 +137,7 @@ function block_menu() {
|
|||
'page callback' => 'block_admin_display_js',
|
||||
'access arguments' => array('administer blocks'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'block.admin.inc',
|
||||
);
|
||||
$items['admin/structure/block/configure'] = array(
|
||||
'title' => 'Configure block',
|
||||
|
@ -143,6 +145,7 @@ function block_menu() {
|
|||
'page arguments' => array('block_admin_configure'),
|
||||
'access arguments' => array('administer blocks'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'block.admin.inc',
|
||||
);
|
||||
$items['admin/structure/block/delete'] = array(
|
||||
'title' => 'Delete block',
|
||||
|
@ -150,6 +153,7 @@ function block_menu() {
|
|||
'page arguments' => array('block_box_delete'),
|
||||
'access arguments' => array('administer blocks'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'block.admin.inc',
|
||||
);
|
||||
$items['admin/structure/block/add'] = array(
|
||||
'title' => 'Add block',
|
||||
|
@ -157,6 +161,7 @@ function block_menu() {
|
|||
'page arguments' => array('block_add_block_form'),
|
||||
'access arguments' => array('administer blocks'),
|
||||
'type' => MENU_LOCAL_ACTION,
|
||||
'file' => 'block.admin.inc',
|
||||
);
|
||||
$default = variable_get('theme_default', 'garland');
|
||||
foreach (list_themes() as $key => $theme) {
|
||||
|
@ -167,6 +172,7 @@ function block_menu() {
|
|||
'weight' => $key == $default ? -10 : 0,
|
||||
'access callback' => '_block_themes_access',
|
||||
'access arguments' => array($theme),
|
||||
'file' => 'block.admin.inc',
|
||||
);
|
||||
}
|
||||
return $items;
|
||||
|
|
|
@ -94,6 +94,7 @@ function blog_menu() {
|
|||
'page callback' => 'blog_page_last',
|
||||
'access arguments' => array('access content'),
|
||||
'type' => MENU_SUGGESTED_ITEM,
|
||||
'file' => 'blog.pages.inc',
|
||||
);
|
||||
$items['blog/%user_uid_optional'] = array(
|
||||
'title' => 'My blog',
|
||||
|
@ -101,6 +102,7 @@ function blog_menu() {
|
|||
'page arguments' => array(1),
|
||||
'access callback' => 'blog_page_user_access',
|
||||
'access arguments' => array(1),
|
||||
'file' => 'blog.pages.inc',
|
||||
);
|
||||
$items['blog/%user/feed'] = array(
|
||||
'title' => 'Blogs',
|
||||
|
@ -109,12 +111,14 @@ function blog_menu() {
|
|||
'access callback' => 'blog_page_user_access',
|
||||
'access arguments' => array(1),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'blog.pages.inc',
|
||||
);
|
||||
$items['blog/feed'] = array(
|
||||
'title' => 'Blogs',
|
||||
'page callback' => 'blog_feed_last',
|
||||
'access arguments' => array('access content'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'blog.pages.inc',
|
||||
);
|
||||
|
||||
return $items;
|
||||
|
|
|
@ -12,9 +12,6 @@ class BlogAPITestCase extends DrupalWebTestCase {
|
|||
|
||||
function setUp() {
|
||||
parent::setUp('blog', 'blogapi', 'taxonomy');
|
||||
|
||||
// Force loading the xmlrpc.inc to have the xmlrpc() function.
|
||||
drupal_function_exists('xmlrpc');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -105,6 +105,7 @@ function book_menu() {
|
|||
'page callback' => 'book_admin_overview',
|
||||
'access arguments' => array('administer book outlines'),
|
||||
'type' => MENU_LOCAL_TASK,
|
||||
'file' => 'book.admin.inc',
|
||||
);
|
||||
$items['admin/content/book/list'] = array(
|
||||
'title' => 'List',
|
||||
|
@ -117,6 +118,7 @@ function book_menu() {
|
|||
'access arguments' => array('administer site configuration'),
|
||||
'type' => MENU_LOCAL_TASK,
|
||||
'weight' => 8,
|
||||
'file' => 'book.admin.inc',
|
||||
);
|
||||
$items['admin/content/book/%node'] = array(
|
||||
'title' => 'Re-order book pages and change titles',
|
||||
|
@ -125,18 +127,21 @@ function book_menu() {
|
|||
'access callback' => '_book_outline_access',
|
||||
'access arguments' => array(3),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'book.admin.inc',
|
||||
);
|
||||
$items['book'] = array(
|
||||
'title' => 'Books',
|
||||
'page callback' => 'book_render',
|
||||
'access arguments' => array('access content'),
|
||||
'type' => MENU_SUGGESTED_ITEM,
|
||||
'file' => 'book.pages.inc',
|
||||
);
|
||||
$items['book/export/%/%'] = array(
|
||||
'page callback' => 'book_export',
|
||||
'page arguments' => array(2, 3),
|
||||
'access arguments' => array('access printer-friendly version'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'book.pages.inc',
|
||||
);
|
||||
$items['node/%node/outline'] = array(
|
||||
'title' => 'Outline',
|
||||
|
@ -146,6 +151,7 @@ function book_menu() {
|
|||
'access arguments' => array(1),
|
||||
'type' => MENU_LOCAL_TASK,
|
||||
'weight' => 2,
|
||||
'file' => 'book.pages.inc',
|
||||
);
|
||||
$items['node/%node/outline/remove'] = array(
|
||||
'title' => 'Remove from outline',
|
||||
|
@ -154,11 +160,13 @@ function book_menu() {
|
|||
'access callback' => '_book_outline_remove_access',
|
||||
'access arguments' => array(1),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'book.pages.inc',
|
||||
);
|
||||
$items['book/js/form'] = array(
|
||||
'page callback' => 'book_form_update',
|
||||
'access arguments' => array('access content'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'book.pages.inc',
|
||||
);
|
||||
|
||||
return $items;
|
||||
|
|
|
@ -133,6 +133,7 @@ function comment_menu() {
|
|||
'page callback' => 'comment_admin',
|
||||
'access arguments' => array('administer comments'),
|
||||
'type' => MENU_LOCAL_TASK,
|
||||
'file' => 'comment.admin.inc',
|
||||
);
|
||||
// Tabs begin here.
|
||||
$items['admin/content/comment/new'] = array(
|
||||
|
@ -151,6 +152,7 @@ function comment_menu() {
|
|||
'page callback' => 'comment_delete_page',
|
||||
'access arguments' => array('administer comments'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'comment.admin.inc',
|
||||
);
|
||||
$items['comment/edit/%comment'] = array(
|
||||
'title' => 'Edit comment',
|
||||
|
@ -167,6 +169,7 @@ function comment_menu() {
|
|||
'access callback' => 'node_access',
|
||||
'access arguments' => array('view', 2),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'comment.pages.inc',
|
||||
);
|
||||
$items['comment/approve'] = array(
|
||||
'title' => 'Approve a comment',
|
||||
|
@ -174,6 +177,7 @@ function comment_menu() {
|
|||
'page arguments' => array(2),
|
||||
'access arguments' => array('administer comments'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'comment.pages.inc',
|
||||
);
|
||||
$items['comment/%comment'] = array(
|
||||
'title' => 'Comment permalink',
|
||||
|
|
|
@ -57,11 +57,13 @@ function contact_menu() {
|
|||
'description' => 'Create a system contact form and set up categories for the form to use.',
|
||||
'page callback' => 'contact_admin_categories',
|
||||
'access arguments' => array('administer site-wide contact form'),
|
||||
'file' => 'contact.admin.inc',
|
||||
);
|
||||
$items['admin/structure/contact/list'] = array(
|
||||
'title' => 'List',
|
||||
'page callback' => 'contact_admin_categories',
|
||||
'type' => MENU_DEFAULT_LOCAL_TASK,
|
||||
'file' => 'contact.admin.inc',
|
||||
);
|
||||
$items['admin/structure/contact/add'] = array(
|
||||
'title' => 'Add category',
|
||||
|
@ -70,6 +72,7 @@ function contact_menu() {
|
|||
'access arguments' => array('administer site-wide contact form'),
|
||||
'type' => MENU_LOCAL_ACTION,
|
||||
'weight' => 1,
|
||||
'file' => 'contact.admin.inc',
|
||||
);
|
||||
$items['admin/structure/contact/edit/%contact'] = array(
|
||||
'title' => 'Edit contact category',
|
||||
|
@ -77,6 +80,7 @@ function contact_menu() {
|
|||
'page arguments' => array('contact_admin_edit', 3, 4),
|
||||
'access arguments' => array('administer site-wide contact form'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'contact.admin.inc',
|
||||
);
|
||||
$items['admin/structure/contact/delete/%contact'] = array(
|
||||
'title' => 'Delete contact',
|
||||
|
@ -84,6 +88,7 @@ function contact_menu() {
|
|||
'page arguments' => array('contact_admin_delete', 4),
|
||||
'access arguments' => array('administer site-wide contact form'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'contact.admin.inc',
|
||||
);
|
||||
$items['admin/settings/contact'] = array(
|
||||
'title' => 'Contact form',
|
||||
|
@ -91,12 +96,14 @@ function contact_menu() {
|
|||
'page callback' => 'drupal_get_form',
|
||||
'page arguments' => array('contact_admin_settings'),
|
||||
'access arguments' => array('administer site-wide contact form'),
|
||||
'file' => 'contact.admin.inc',
|
||||
);
|
||||
$items['contact'] = array(
|
||||
'title' => 'Contact',
|
||||
'page callback' => 'contact_site_page',
|
||||
'access arguments' => array('access site-wide contact form'),
|
||||
'type' => MENU_SUGGESTED_ITEM,
|
||||
'file' => 'contact.pages.inc',
|
||||
);
|
||||
$items['user/%user/contact'] = array(
|
||||
'title' => 'Contact',
|
||||
|
@ -106,6 +113,7 @@ function contact_menu() {
|
|||
'access callback' => '_contact_personal_tab_access',
|
||||
'access arguments' => array(1),
|
||||
'weight' => 2,
|
||||
'file' => 'contact.pages.inc',
|
||||
);
|
||||
return $items;
|
||||
}
|
||||
|
|
|
@ -6,20 +6,6 @@
|
|||
* Administrative page callbacks for the dblog module.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Implement hook_form_FORM_ID_alter().
|
||||
*/
|
||||
function dblog_form_system_logging_settings_alter(&$form, $form_state) {
|
||||
$form['dblog_row_limit'] = array(
|
||||
'#type' => 'select',
|
||||
'#title' => t('Database log entries to keep'),
|
||||
'#default_value' => variable_get('dblog_row_limit', 1000),
|
||||
'#options' => drupal_map_assoc(array(100, 1000, 10000, 100000, 1000000)),
|
||||
'#description' => t('The maximum number of entries to keep in the database log. Requires a <a href="@cron">cron maintenance task</a>.', array('@cron' => url('admin/reports/status')))
|
||||
);
|
||||
$form['buttons']['#weight'] = 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Menu callback; displays a listing of log messages.
|
||||
*/
|
||||
|
@ -93,9 +79,9 @@ function dblog_overview() {
|
|||
}
|
||||
|
||||
$build['dblog_table'] = array(
|
||||
'#theme' => 'table',
|
||||
'#header' => $header,
|
||||
'#rows' => $rows,
|
||||
'#theme' => 'table',
|
||||
'#header' => $header,
|
||||
'#rows' => $rows,
|
||||
'#attributes' => array('id' => 'admin-dblog'),
|
||||
);
|
||||
$build['dblog_pager'] = array('#theme' => 'pager');
|
||||
|
@ -139,8 +125,8 @@ function dblog_top($type) {
|
|||
}
|
||||
|
||||
$build['dblog_top_table'] = array(
|
||||
'#theme' => 'table',
|
||||
'#header' => $header,
|
||||
'#theme' => 'table',
|
||||
'#header' => $header,
|
||||
'#rows' => $rows,
|
||||
);
|
||||
$build['dblog_top_pager'] = array('#theme' => 'pager');
|
||||
|
@ -194,8 +180,8 @@ function dblog_event($id) {
|
|||
),
|
||||
);
|
||||
$build['dblog_table'] = array(
|
||||
'#theme' => 'table',
|
||||
'#rows' => $rows,
|
||||
'#theme' => 'table',
|
||||
'#rows' => $rows,
|
||||
'#attributes' => array('class' => array('dblog-event')),
|
||||
);
|
||||
return $build;
|
||||
|
|
|
@ -48,6 +48,7 @@ function dblog_menu() {
|
|||
'page callback' => 'dblog_overview',
|
||||
'access arguments' => array('access site reports'),
|
||||
'weight' => -1,
|
||||
'file' => 'dblog.admin.inc',
|
||||
);
|
||||
$items['admin/reports/page-not-found'] = array(
|
||||
'title' => "Top 'page not found' errors",
|
||||
|
@ -55,6 +56,7 @@ function dblog_menu() {
|
|||
'page callback' => 'dblog_top',
|
||||
'page arguments' => array('page not found'),
|
||||
'access arguments' => array('access site reports'),
|
||||
'file' => 'dblog.admin.inc',
|
||||
);
|
||||
$items['admin/reports/access-denied'] = array(
|
||||
'title' => "Top 'access denied' errors",
|
||||
|
@ -62,6 +64,7 @@ function dblog_menu() {
|
|||
'page callback' => 'dblog_top',
|
||||
'page arguments' => array('access denied'),
|
||||
'access arguments' => array('access site reports'),
|
||||
'file' => 'dblog.admin.inc',
|
||||
);
|
||||
$items['admin/reports/event/%'] = array(
|
||||
'title' => 'Details',
|
||||
|
@ -69,6 +72,7 @@ function dblog_menu() {
|
|||
'page arguments' => array(3),
|
||||
'access arguments' => array('access site reports'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'dblog.admin.inc',
|
||||
);
|
||||
return $items;
|
||||
}
|
||||
|
@ -148,6 +152,20 @@ function dblog_watchdog(array $log_entry) {
|
|||
->execute();
|
||||
}
|
||||
|
||||
/**
|
||||
* Implement hook_form_FORM_ID_alter().
|
||||
*/
|
||||
function dblog_form_system_logging_settings_alter(&$form, $form_state) {
|
||||
$form['dblog_row_limit'] = array(
|
||||
'#type' => 'select',
|
||||
'#title' => t('Database log entries to keep'),
|
||||
'#default_value' => variable_get('dblog_row_limit', 1000),
|
||||
'#options' => drupal_map_assoc(array(100, 1000, 10000, 100000, 1000000)),
|
||||
'#description' => t('The maximum number of entries to keep in the database log. Requires a <a href="@cron">cron maintenance task</a>.', array('@cron' => url('admin/reports/status')))
|
||||
);
|
||||
$form['buttons']['#weight'] = 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Theme dblog administration filter selector.
|
||||
*
|
||||
|
|
|
@ -207,7 +207,7 @@ function _field_invoke($op, $obj_type, $object, &$a = NULL, &$b = NULL, $options
|
|||
|
||||
// Invoke the field hook and collect results.
|
||||
$function = $options['default'] ? 'field_default_' . $op : $field['module'] . '_field_' . $op;
|
||||
if (drupal_function_exists($function)) {
|
||||
if (function_exists($function)) {
|
||||
// Iterate over all the field translations.
|
||||
foreach ($field_translations as $langcode => $items) {
|
||||
$result = $function($obj_type, $object, $field, $instance, $langcode, $items, $a, $b);
|
||||
|
@ -336,7 +336,7 @@ function _field_invoke_multiple($op, $obj_type, $objects, &$a = NULL, &$b = NULL
|
|||
foreach ($fields as $field_id => $field) {
|
||||
$field_name = $field['field_name'];
|
||||
$function = $options['default'] ? 'field_default_' . $op : $field['module'] . '_field_' . $op;
|
||||
if (drupal_function_exists($function)) {
|
||||
if (function_exists($function)) {
|
||||
// Iterate over all the field translations.
|
||||
foreach ($grouped_items[$field_id] as $langcode => $items) {
|
||||
$results = $function($obj_type, $grouped_objects[$field_id], $field, $grouped_instances[$field_id], $langcode, $grouped_items[$field_id][$langcode], $options, $a, $b);
|
||||
|
|
|
@ -56,7 +56,7 @@ function field_default_form($obj_type, $object, $field, $instance, $langcode, $i
|
|||
else {
|
||||
$delta = isset($get_delta) ? $get_delta : 0;
|
||||
$function = $instance['widget']['module'] . '_field_widget';
|
||||
if (drupal_function_exists($function)) {
|
||||
if (function_exists($function)) {
|
||||
if ($element = $function($form, $form_state, $field, $instance, $items, $delta)) {
|
||||
$defaults = array(
|
||||
'#required' => $get_delta > 0 ? FALSE : $instance['required'],
|
||||
|
@ -155,7 +155,7 @@ function field_multiple_value_form($field, $instance, $langcode, $items, &$form,
|
|||
);
|
||||
|
||||
$function = $instance['widget']['module'] . '_field_widget';
|
||||
if (drupal_function_exists($function)) {
|
||||
if (function_exists($function)) {
|
||||
for ($delta = 0; $delta <= $max; $delta++) {
|
||||
if ($element = $function($form, $form_state, $field, $instance, $items, $delta)) {
|
||||
$multiple = $field['cardinality'] > 1 || $field['cardinality'] == FIELD_CARDINALITY_UNLIMITED;
|
||||
|
@ -295,7 +295,7 @@ function field_default_form_errors($obj_type, $object, $field, $instance, $langc
|
|||
$field_name = $field['field_name'];
|
||||
if (!empty($errors[$field_name][$langcode])) {
|
||||
$function = $instance['widget']['module'] . '_field_widget_error';
|
||||
$function_exists = drupal_function_exists($function);
|
||||
$function_exists = function_exists($function);
|
||||
|
||||
// Walk the form down to where the widget lives.
|
||||
$form_path = $form['#fields'][$field_name]['form_path'];
|
||||
|
@ -330,7 +330,7 @@ function field_default_form_errors($obj_type, $object, $field, $instance, $langc
|
|||
*/
|
||||
function field_add_more_submit($form, &$form_state) {
|
||||
// Set the form to rebuild and run submit handlers.
|
||||
if (isset($form['#builder_function']) && drupal_function_exists($form['#builder_function'])) {
|
||||
if (isset($form['#builder_function']) && function_exists($form['#builder_function'])) {
|
||||
$entity = $form['#builder_function']($form, $form_state);
|
||||
|
||||
// Make the changes we want to the form state.
|
||||
|
|
|
@ -11,9 +11,11 @@
|
|||
* every page request.
|
||||
*/
|
||||
require(DRUPAL_ROOT . '/modules/field/field.crud.inc');
|
||||
require(DRUPAL_ROOT . '/modules/field/field.default.inc');
|
||||
require(DRUPAL_ROOT . '/modules/field/field.info.inc');
|
||||
require(DRUPAL_ROOT . '/modules/field/field.multilingual.inc');
|
||||
require(DRUPAL_ROOT . '/modules/field/field.attach.inc');
|
||||
require(DRUPAL_ROOT . '/modules/field/field.form.inc');
|
||||
|
||||
/**
|
||||
* @defgroup field Field API
|
||||
|
@ -164,6 +166,7 @@ function field_menu() {
|
|||
'page callback' => 'field_add_more_js',
|
||||
'access arguments' => array('access content'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'field.form.inc',
|
||||
);
|
||||
|
||||
return $items;
|
||||
|
@ -289,7 +292,7 @@ function field_get_default_value($obj_type, $object, $field, $instance, $langcod
|
|||
$items = array();
|
||||
if (!empty($instance['default_value_function'])) {
|
||||
$function = $instance['default_value_function'];
|
||||
if (drupal_function_exists($function)) {
|
||||
if (function_exists($function)) {
|
||||
$items = $function($obj_type, $object, $field, $instance, $langcode);
|
||||
}
|
||||
}
|
||||
|
@ -315,7 +318,7 @@ function field_get_default_value($obj_type, $object, $field, $instance, $langcod
|
|||
function field_set_empty($field, $items) {
|
||||
$function = $field['module'] . '_field_is_empty';
|
||||
// We ensure the function is loaded, but explicitly break if it is missing.
|
||||
drupal_function_exists($function);
|
||||
function_exists($function);
|
||||
foreach ((array) $items as $delta => $item) {
|
||||
if ($function($item, $field)) {
|
||||
unset($items[$delta]);
|
||||
|
@ -601,7 +604,7 @@ function field_view_field($obj_type, $object, $field, $instance, $build_mode = '
|
|||
|
||||
// One-field equivalent to _field_invoke('sanitize').
|
||||
$function = $field['module'] . '_field_sanitize';
|
||||
if (drupal_function_exists($function)) {
|
||||
if (function_exists($function)) {
|
||||
$function($obj_type, $object, $field, $instance, $items);
|
||||
$object->$field['field_name'] = $items;
|
||||
}
|
||||
|
@ -723,4 +726,4 @@ function template_preprocess_field(&$variables) {
|
|||
|
||||
/**
|
||||
* @} End of "defgroup field"
|
||||
*/
|
||||
*/
|
||||
|
|
|
@ -151,7 +151,7 @@ function list_allowed_values($field) {
|
|||
$allowed_values[$field['field_name']] = array();
|
||||
|
||||
$function = $field['settings']['allowed_values_function'];
|
||||
if (!empty($function) && drupal_function_exists($function)) {
|
||||
if (!empty($function) && function_exists($function)) {
|
||||
$allowed_values[$field['field_name']] = $function($field);
|
||||
}
|
||||
elseif (!empty($field['settings']['allowed_values'])) {
|
||||
|
|
|
@ -1205,7 +1205,7 @@ function field_ui_default_value_widget($field, $instance, &$form, &$form_state)
|
|||
'instance' => $instance,
|
||||
),
|
||||
);
|
||||
drupal_function_exists('field_default_form');
|
||||
function_exists('field_default_form');
|
||||
// @todo Allow multiple values (requires more work on 'add more' JS handler).
|
||||
$widget_form = field_default_form(NULL, NULL, $field, $instance, FIELD_LANGUAGE_NONE, $items, $form, $form_state, 0);
|
||||
$form['instance']['default_value_widget'] += $widget_form;
|
||||
|
@ -1257,7 +1257,7 @@ function field_ui_field_edit_form_validate($form, &$form_state) {
|
|||
|
||||
// Widget now does its own validation, should be no need to add anything
|
||||
// for widget validation here.
|
||||
if (drupal_function_exists($field_function)) {
|
||||
if (function_exists($field_function)) {
|
||||
$field_function('validate', $node, $field, $default_value, $form, NULL);
|
||||
}
|
||||
// The field validation routine won't set an error on the right field, so
|
||||
|
|
|
@ -38,6 +38,7 @@ function field_ui_menu() {
|
|||
'page callback' => 'field_ui_fields_list',
|
||||
'access arguments' => array('administer content types'),
|
||||
'type' => MENU_NORMAL_ITEM,
|
||||
'file' => 'field_ui.admin.inc',
|
||||
);
|
||||
|
||||
// Ensure the following is not executed until field_bundles is working and
|
||||
|
@ -60,6 +61,7 @@ function field_ui_menu() {
|
|||
'page arguments' => array('field_ui_field_overview_form', $obj_type, $bundle_arg),
|
||||
'type' => MENU_LOCAL_TASK,
|
||||
'weight' => 1,
|
||||
'file' => 'field_ui.admin.inc',
|
||||
) + $access;
|
||||
$instance_position = count(explode('/', $path)) + 1;
|
||||
$items["$path/fields/%field_ui_menu"] = array(
|
||||
|
@ -69,6 +71,7 @@ function field_ui_menu() {
|
|||
'page callback' => 'drupal_get_form',
|
||||
'page arguments' => array('field_ui_field_edit_form', $obj_type, $bundle_arg, $instance_position),
|
||||
'type' => MENU_LOCAL_TASK,
|
||||
'file' => 'field_ui.admin.inc',
|
||||
) + $access;
|
||||
$items["$path/fields/%field_ui_menu/edit"] = array(
|
||||
'title' => 'Edit instance settings',
|
||||
|
@ -76,6 +79,7 @@ function field_ui_menu() {
|
|||
'page callback' => 'drupal_get_form',
|
||||
'page arguments' => array('field_ui_field_edit_form', $obj_type, $bundle_arg, $instance_position),
|
||||
'type' => MENU_DEFAULT_LOCAL_TASK,
|
||||
'file' => 'field_ui.admin.inc',
|
||||
) + $access;
|
||||
$items["$path/fields/%field_ui_menu/field-settings"] = array(
|
||||
'title' => 'Edit field settings',
|
||||
|
@ -83,6 +87,7 @@ function field_ui_menu() {
|
|||
'page callback' => 'drupal_get_form',
|
||||
'page arguments' => array('field_ui_field_settings_form', $obj_type, $bundle_arg, $instance_position),
|
||||
'type' => MENU_LOCAL_TASK,
|
||||
'file' => 'field_ui.admin.inc',
|
||||
) + $access;
|
||||
$items["$path/fields/%field_ui_menu/widget-type"] = array(
|
||||
'title' => 'Change widget type',
|
||||
|
@ -90,6 +95,7 @@ function field_ui_menu() {
|
|||
'page callback' => 'drupal_get_form',
|
||||
'page arguments' => array('field_ui_widget_type_form', $obj_type, $bundle_arg, $instance_position),
|
||||
'type' => MENU_LOCAL_TASK,
|
||||
'file' => 'field_ui.admin.inc',
|
||||
) + $access;
|
||||
$items["$path/fields/%field_ui_menu/delete"] = array(
|
||||
'title' => 'Delete instance',
|
||||
|
@ -97,6 +103,7 @@ function field_ui_menu() {
|
|||
'page callback' => 'drupal_get_form',
|
||||
'page arguments' => array('field_ui_field_delete_form', $obj_type, $bundle_arg, $instance_position),
|
||||
'type' => MENU_LOCAL_TASK,
|
||||
'file' => 'field_ui.admin.inc',
|
||||
) + $access;
|
||||
|
||||
// 'Display fields' tab and context secondary tabs.
|
||||
|
@ -106,6 +113,7 @@ function field_ui_menu() {
|
|||
'page arguments' => array('field_ui_display_overview_form', $obj_type, $bundle_arg),
|
||||
'type' => MENU_LOCAL_TASK,
|
||||
'weight' => 2,
|
||||
'file' => 'field_ui.admin.inc',
|
||||
) + $access;
|
||||
$tabs = field_ui_build_modes_tabs($obj_type);
|
||||
foreach ($tabs as $key => $tab) {
|
||||
|
@ -114,6 +122,7 @@ function field_ui_menu() {
|
|||
'page arguments' => array('field_ui_display_overview_form', $obj_type, $bundle_arg, $key),
|
||||
'type' => $key == 'basic' ? MENU_DEFAULT_LOCAL_TASK : MENU_LOCAL_TASK,
|
||||
'weight' => $key == 'basic' ? 0 : 1,
|
||||
'file' => 'field_ui.admin.inc',
|
||||
) + $access;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -352,7 +352,7 @@ function filter_admin_configure(&$form_state, $format) {
|
|||
$form = array();
|
||||
foreach ($list as $filter) {
|
||||
$filter_info = module_invoke($filter->module, 'filter_info');
|
||||
if (isset($filter_info[$filter->name]['settings callback']) && drupal_function_exists($filter_info[$filter->name]['settings callback'])) {
|
||||
if (isset($filter_info[$filter->name]['settings callback']) && function_exists($filter_info[$filter->name]['settings callback'])) {
|
||||
$form_module = call_user_func($filter_info[$filter->name]['settings callback'], $format->format);
|
||||
}
|
||||
if (isset($form_module) && is_array($form_module)) {
|
||||
|
|
|
@ -76,6 +76,7 @@ function filter_menu() {
|
|||
'page callback' => 'drupal_get_form',
|
||||
'page arguments' => array('filter_admin_overview'),
|
||||
'access arguments' => array('administer filters'),
|
||||
'file' => 'filter.admin.inc',
|
||||
);
|
||||
$items['admin/settings/formats/list'] = array(
|
||||
'title' => 'List',
|
||||
|
@ -87,6 +88,7 @@ function filter_menu() {
|
|||
'access arguments' => array('administer filters'),
|
||||
'type' => MENU_LOCAL_ACTION,
|
||||
'weight' => 1,
|
||||
'file' => 'filter.admin.inc',
|
||||
);
|
||||
$items['admin/settings/formats/delete'] = array(
|
||||
'title' => 'Delete text format',
|
||||
|
@ -94,12 +96,14 @@ function filter_menu() {
|
|||
'page arguments' => array('filter_admin_delete'),
|
||||
'access arguments' => array('administer filters'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'filter.admin.inc',
|
||||
);
|
||||
$items['filter/tips'] = array(
|
||||
'title' => 'Compose tips',
|
||||
'page callback' => 'filter_tips_long',
|
||||
'access callback' => TRUE,
|
||||
'type' => MENU_SUGGESTED_ITEM,
|
||||
'file' => 'filter.pages.inc',
|
||||
);
|
||||
$items['admin/settings/formats/%filter_format'] = array(
|
||||
'type' => MENU_CALLBACK,
|
||||
|
@ -108,6 +112,7 @@ function filter_menu() {
|
|||
'page callback' => 'filter_admin_format_page',
|
||||
'page arguments' => array(3),
|
||||
'access arguments' => array('administer filters'),
|
||||
'file' => 'filter.admin.inc',
|
||||
);
|
||||
$items['admin/settings/formats/%filter_format/edit'] = array(
|
||||
'title' => 'Edit',
|
||||
|
@ -121,6 +126,7 @@ function filter_menu() {
|
|||
'access arguments' => array('administer filters'),
|
||||
'type' => MENU_LOCAL_TASK,
|
||||
'weight' => 1,
|
||||
'file' => 'filter.admin.inc',
|
||||
);
|
||||
$items['admin/settings/formats/%filter_format/order'] = array(
|
||||
'title' => 'Rearrange',
|
||||
|
@ -129,6 +135,7 @@ function filter_menu() {
|
|||
'access arguments' => array('administer filters'),
|
||||
'type' => MENU_LOCAL_TASK,
|
||||
'weight' => 2,
|
||||
'file' => 'filter.admin.inc',
|
||||
);
|
||||
return $items;
|
||||
}
|
||||
|
@ -259,7 +266,7 @@ function _filter_html_tips($format, $long = FALSE) {
|
|||
$output .= theme('table', $header, $rows);
|
||||
return $output;
|
||||
}
|
||||
|
||||
|
||||
else {
|
||||
return t('Allowed HTML tags: @tags', array('@tags' => $allowed_html));
|
||||
}
|
||||
|
@ -270,7 +277,7 @@ function _filter_autop_tips($format, $long = FALSE) {
|
|||
if ($long) {
|
||||
return t('Lines and paragraphs are automatically recognized. The <br /> line break, <p> paragraph and </p> close paragraph tags are inserted automatically. If paragraphs are not recognized simply add a couple blank lines.');
|
||||
}
|
||||
else {
|
||||
else {
|
||||
return t('Lines and paragraphs break automatically.');
|
||||
}
|
||||
}
|
||||
|
@ -446,7 +453,7 @@ function check_markup($text, $format = FILTER_FORMAT_DEFAULT, $langcode = '', $c
|
|||
// Give filters the chance to escape HTML-like data such as code or formulas.
|
||||
foreach ($filters as $filter) {
|
||||
$filter_info = module_invoke($filter->module, 'filter_info');
|
||||
if (isset($filter_info[$filter->name]['prepare callback']) && drupal_function_exists($filter_info[$filter->name]['prepare callback'])) {
|
||||
if (isset($filter_info[$filter->name]['prepare callback']) && function_exists($filter_info[$filter->name]['prepare callback'])) {
|
||||
$text = call_user_func($filter_info[$filter->name]['prepare callback'], $text, $format, $langcode, $cache_id);
|
||||
}
|
||||
}
|
||||
|
@ -454,7 +461,7 @@ function check_markup($text, $format = FILTER_FORMAT_DEFAULT, $langcode = '', $c
|
|||
// Perform filtering.
|
||||
foreach ($filters as $filter) {
|
||||
$filter_info = module_invoke($filter->module, 'filter_info');
|
||||
if (isset($filter_info[$filter->name]['process callback']) && drupal_function_exists($filter_info[$filter->name]['process callback'])) {
|
||||
if (isset($filter_info[$filter->name]['process callback']) && function_exists($filter_info[$filter->name]['process callback'])) {
|
||||
$text = call_user_func($filter_info[$filter->name]['process callback'], $text, $format, $langcode, $cache_id);
|
||||
}
|
||||
}
|
||||
|
@ -566,7 +573,7 @@ function _filter_tips($format, $long = FALSE) {
|
|||
$tips[$format->name] = array();
|
||||
foreach ($filters as $id => $filter) {
|
||||
$filter_info = module_invoke($filter->module, 'filter_info');
|
||||
if (isset($filter_info[$filter->name]['tips callback']) && drupal_function_exists($filter_info[$filter->name]['tips callback'])) {
|
||||
if (isset($filter_info[$filter->name]['tips callback']) && function_exists($filter_info[$filter->name]['tips callback'])) {
|
||||
$tip = call_user_func($filter_info[$filter->name]['tips callback'],$format->format, $long);
|
||||
$tips[$format->name][] = array('tip' => $tip, 'id' => $id);
|
||||
}
|
||||
|
|
|
@ -87,6 +87,7 @@ function forum_menu() {
|
|||
'title' => 'Forums',
|
||||
'page callback' => 'forum_page',
|
||||
'access arguments' => array('access content'),
|
||||
'file' => 'forum.pages.inc',
|
||||
);
|
||||
$items['admin/structure/forum'] = array(
|
||||
'title' => 'Forums',
|
||||
|
@ -94,6 +95,7 @@ function forum_menu() {
|
|||
'page callback' => 'drupal_get_form',
|
||||
'page arguments' => array('forum_overview'),
|
||||
'access arguments' => array('administer forums'),
|
||||
'file' => 'forum.admin.inc',
|
||||
);
|
||||
$items['admin/structure/forum/list'] = array(
|
||||
'title' => 'List',
|
||||
|
@ -107,6 +109,7 @@ function forum_menu() {
|
|||
'access arguments' => array('administer forums'),
|
||||
'type' => MENU_LOCAL_ACTION,
|
||||
'parent' => 'admin/structure/forum',
|
||||
'file' => 'forum.admin.inc',
|
||||
);
|
||||
$items['admin/structure/forum/add/forum'] = array(
|
||||
'title' => 'Add forum',
|
||||
|
@ -115,6 +118,7 @@ function forum_menu() {
|
|||
'access arguments' => array('administer forums'),
|
||||
'type' => MENU_LOCAL_ACTION,
|
||||
'parent' => 'admin/structure/forum',
|
||||
'file' => 'forum.admin.inc',
|
||||
);
|
||||
$items['admin/structure/forum/settings'] = array(
|
||||
'title' => 'Settings',
|
||||
|
@ -124,11 +128,13 @@ function forum_menu() {
|
|||
'weight' => 5,
|
||||
'type' => MENU_LOCAL_TASK,
|
||||
'parent' => 'admin/structure/forum',
|
||||
'file' => 'forum.admin.inc',
|
||||
);
|
||||
$items['admin/structure/forum/edit/%forum_term'] = array(
|
||||
'page callback' => 'forum_form_main',
|
||||
'access arguments' => array('administer forums'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'forum.admin.inc',
|
||||
);
|
||||
$items['admin/structure/forum/edit/container/%forum_term'] = array(
|
||||
'title' => 'Edit container',
|
||||
|
@ -136,6 +142,7 @@ function forum_menu() {
|
|||
'page arguments' => array('container', 5),
|
||||
'access arguments' => array('administer forums'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'forum.admin.inc',
|
||||
);
|
||||
$items['admin/structure/forum/edit/forum/%forum_term'] = array(
|
||||
'title' => 'Edit forum',
|
||||
|
@ -143,6 +150,7 @@ function forum_menu() {
|
|||
'page arguments' => array('forum', 5),
|
||||
'access arguments' => array('administer forums'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'forum.admin.inc',
|
||||
);
|
||||
return $items;
|
||||
}
|
||||
|
|
|
@ -15,6 +15,7 @@ function help_menu() {
|
|||
'page callback' => 'help_main',
|
||||
'access arguments' => array('access administration pages'),
|
||||
'weight' => 9,
|
||||
'file' => 'help.admin.inc',
|
||||
);
|
||||
|
||||
foreach (module_implements('help', TRUE) as $module) {
|
||||
|
@ -24,6 +25,7 @@ function help_menu() {
|
|||
'page arguments' => array(2),
|
||||
'access arguments' => array('access administration pages'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'help.admin.inc',
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -81,7 +81,7 @@ class HelpTestCase extends DrupalWebTestCase {
|
|||
$this->modules = array();
|
||||
$result = db_query("SELECT name, filename, info FROM {system} WHERE type = 'module' AND status = 1 ORDER BY weight ASC, filename ASC");
|
||||
foreach ($result as $module) {
|
||||
if (file_exists($module->filename) && drupal_function_exists($module->name . '_help')) {
|
||||
if (file_exists($module->filename) && function_exists($module->name . '_help')) {
|
||||
$fullname = unserialize($module->info);
|
||||
$this->modules[$module->name] = $fullname['name'];
|
||||
}
|
||||
|
|
|
@ -315,7 +315,7 @@ function image_effect_form(&$form_state, $style, $effect) {
|
|||
'#tree' => TRUE,
|
||||
'#attached_css' => array(drupal_get_path('module', 'image') . '/image.admin.css' => array('preprocess' => FALSE)),
|
||||
);
|
||||
if (drupal_function_exists($effect['form callback'])) {
|
||||
if (function_exists($effect['form callback'])) {
|
||||
$form['data'] = call_user_func($effect['form callback'], $effect['data']);
|
||||
}
|
||||
|
||||
|
|
|
@ -51,6 +51,7 @@ function image_menu() {
|
|||
'description' => 'Configure styles that can be used for resizing or adjusting images on display.',
|
||||
'page callback' => 'image_style_list',
|
||||
'access arguments' => array('administer image styles'),
|
||||
'file' => 'image.admin.inc',
|
||||
);
|
||||
$items['admin/config/media/image-styles/list'] = array(
|
||||
'title' => 'List',
|
||||
|
@ -59,6 +60,7 @@ function image_menu() {
|
|||
'access arguments' => array('administer image styles'),
|
||||
'type' => MENU_DEFAULT_LOCAL_TASK,
|
||||
'weight' => 1,
|
||||
'file' => 'image.admin.inc',
|
||||
);
|
||||
$items['admin/config/media/image-styles/add'] = array(
|
||||
'title' => 'Add style',
|
||||
|
@ -68,6 +70,7 @@ function image_menu() {
|
|||
'access arguments' => array('administer image styles'),
|
||||
'type' => MENU_LOCAL_ACTION,
|
||||
'weight' => 2,
|
||||
'file' => 'image.admin.inc',
|
||||
);
|
||||
$items['admin/config/media/image-styles/edit/%image_style'] = array(
|
||||
'title' => 'Edit style',
|
||||
|
@ -76,6 +79,7 @@ function image_menu() {
|
|||
'page arguments' => array('image_style_form', 5),
|
||||
'access arguments' => array('administer image styles'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'image.admin.inc',
|
||||
);
|
||||
$items['admin/config/media/image-styles/delete/%image_style'] = array(
|
||||
'title' => 'Delete style',
|
||||
|
@ -84,6 +88,7 @@ function image_menu() {
|
|||
'page arguments' => array('image_style_delete_form', 5, TRUE),
|
||||
'access arguments' => array('administer image styles'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'image.admin.inc',
|
||||
);
|
||||
$items['admin/config/media/image-styles/edit/%image_style/effects/%image_effect'] = array(
|
||||
'title' => 'Edit image effect',
|
||||
|
@ -92,6 +97,7 @@ function image_menu() {
|
|||
'page arguments' => array('image_effect_form', 5, 7),
|
||||
'access arguments' => array('administer image styles'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'image.admin.inc',
|
||||
);
|
||||
$items['admin/config/media/image-styles/edit/%image_style/effects/%image_effect/delete'] = array(
|
||||
'title' => 'Delete image effect',
|
||||
|
@ -100,6 +106,7 @@ function image_menu() {
|
|||
'page arguments' => array('image_effect_delete_form', 5, 7),
|
||||
'access arguments' => array('administer image styles'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'image.admin.inc',
|
||||
);
|
||||
$items['admin/config/media/image-styles/edit/%image_style/add/%image_effect_definition'] = array(
|
||||
'title' => 'Add image effect',
|
||||
|
@ -108,6 +115,7 @@ function image_menu() {
|
|||
'page arguments' => array('image_effect_form', 5, 7),
|
||||
'access arguments' => array('administer image styles'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'image.admin.inc',
|
||||
);
|
||||
|
||||
return $items;
|
||||
|
@ -567,7 +575,7 @@ function image_style_url($style_name, $path) {
|
|||
// Set a cache entry to grant access to this style/image path. This will be
|
||||
// checked by image_style_generate().
|
||||
cache_set('access:' . $style_name . ':' . md5($path), 1, 'cache_image', REQUEST_TIME + 600);
|
||||
|
||||
|
||||
$scheme = file_uri_scheme($path);
|
||||
$target = file_uri_target($path);
|
||||
|
||||
|
@ -614,6 +622,7 @@ function image_effect_definitions() {
|
|||
}
|
||||
else {
|
||||
$effects = array();
|
||||
include_once DRUPAL_ROOT . '/modules/image/image.effects.inc';
|
||||
foreach (module_implements('image_effect_info') as $module) {
|
||||
foreach (module_invoke($module, 'image_effect_info') as $name => $effect) {
|
||||
// Ensure the current toolkit supports the effect.
|
||||
|
@ -756,7 +765,7 @@ function image_effect_delete($effect) {
|
|||
* TRUE on success. FALSE if unable to perform the image effect on the image.
|
||||
*/
|
||||
function image_effect_apply($image, $effect) {
|
||||
if (drupal_function_exists($effect['effect callback'])) {
|
||||
if (function_exists($effect['effect callback'])) {
|
||||
return call_user_func($effect['effect callback'], $image, $effect['data']);
|
||||
}
|
||||
return FALSE;
|
||||
|
|
|
@ -76,6 +76,8 @@ function locale_menu() {
|
|||
'page callback' => 'drupal_get_form',
|
||||
'page arguments' => array('locale_languages_overview_form'),
|
||||
'access arguments' => array('administer languages'),
|
||||
'file' => 'locale.inc',
|
||||
'file path' => 'includes',
|
||||
);
|
||||
$items['admin/config/regional/language/overview'] = array(
|
||||
'title' => 'List',
|
||||
|
@ -88,6 +90,8 @@ function locale_menu() {
|
|||
'access arguments' => array('administer languages'),
|
||||
'weight' => 5,
|
||||
'type' => MENU_LOCAL_ACTION,
|
||||
'file' => 'locale.inc',
|
||||
'file path' => 'includes',
|
||||
);
|
||||
$items['admin/config/regional/language/configure'] = array(
|
||||
'title' => 'Configure',
|
||||
|
@ -95,6 +99,8 @@ function locale_menu() {
|
|||
'page arguments' => array('locale_languages_configure_form'),
|
||||
'access arguments' => array('administer languages'),
|
||||
'weight' => 10,
|
||||
'file' => 'locale.inc',
|
||||
'file path' => 'includes',
|
||||
'type' => MENU_LOCAL_TASK,
|
||||
);
|
||||
$items['admin/config/regional/language/edit/%'] = array(
|
||||
|
@ -102,6 +108,8 @@ function locale_menu() {
|
|||
'page callback' => 'drupal_get_form',
|
||||
'page arguments' => array('locale_languages_edit_form', 5),
|
||||
'access arguments' => array('administer languages'),
|
||||
'file' => 'locale.inc',
|
||||
'file path' => 'includes',
|
||||
'type' => MENU_CALLBACK,
|
||||
);
|
||||
$items['admin/config/regional/language/delete/%'] = array(
|
||||
|
@ -109,6 +117,8 @@ function locale_menu() {
|
|||
'page callback' => 'drupal_get_form',
|
||||
'page arguments' => array('locale_languages_delete_form', 5),
|
||||
'access arguments' => array('administer languages'),
|
||||
'file' => 'locale.inc',
|
||||
'file path' => 'includes',
|
||||
'type' => MENU_CALLBACK,
|
||||
);
|
||||
|
||||
|
@ -116,8 +126,11 @@ function locale_menu() {
|
|||
$items['admin/config/regional/translate'] = array(
|
||||
'title' => 'Translate interface',
|
||||
'description' => 'Translate the built in interface and optionally other text.',
|
||||
'page callback' => 'locale_translate_overview_screen', // not a form, just a table
|
||||
'page callback' => 'locale_inc_callback',
|
||||
'page arguments' => array('locale_translate_overview_screen'), // not a form, just a table
|
||||
'access arguments' => array('translate interface'),
|
||||
'file' => 'locale.inc',
|
||||
'file path' => 'includes',
|
||||
);
|
||||
$items['admin/config/regional/translate/overview'] = array(
|
||||
'title' => 'Overview',
|
||||
|
@ -130,6 +143,8 @@ function locale_menu() {
|
|||
'type' => MENU_LOCAL_TASK,
|
||||
'page callback' => 'locale_translate_seek_screen', // search results and form concatenated
|
||||
'access arguments' => array('translate interface'),
|
||||
'file' => 'locale.inc',
|
||||
'file path' => 'includes',
|
||||
);
|
||||
$items['admin/config/regional/translate/import'] = array(
|
||||
'title' => 'Import',
|
||||
|
@ -138,6 +153,8 @@ function locale_menu() {
|
|||
'access arguments' => array('translate interface'),
|
||||
'weight' => 20,
|
||||
'type' => MENU_LOCAL_TASK,
|
||||
'file' => 'locale.inc',
|
||||
'file path' => 'includes',
|
||||
);
|
||||
$items['admin/config/regional/translate/export'] = array(
|
||||
'title' => 'Export',
|
||||
|
@ -145,6 +162,8 @@ function locale_menu() {
|
|||
'access arguments' => array('translate interface'),
|
||||
'weight' => 30,
|
||||
'type' => MENU_LOCAL_TASK,
|
||||
'file' => 'locale.inc',
|
||||
'file path' => 'includes',
|
||||
);
|
||||
$items['admin/config/regional/translate/edit/%'] = array(
|
||||
'title' => 'Edit string',
|
||||
|
@ -152,6 +171,8 @@ function locale_menu() {
|
|||
'page arguments' => array('locale_translate_edit_form', 5),
|
||||
'access arguments' => array('translate interface'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'locale.inc',
|
||||
'file path' => 'includes',
|
||||
);
|
||||
$items['admin/config/regional/translate/delete/%'] = array(
|
||||
'title' => 'Delete string',
|
||||
|
@ -159,6 +180,8 @@ function locale_menu() {
|
|||
'page arguments' => array(5),
|
||||
'access arguments' => array('translate interface'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'locale.inc',
|
||||
'file path' => 'includes',
|
||||
);
|
||||
|
||||
return $items;
|
||||
|
|
|
@ -54,6 +54,7 @@ function menu_menu() {
|
|||
'page callback' => 'menu_overview_page',
|
||||
'access callback' => 'user_access',
|
||||
'access arguments' => array('administer menu'),
|
||||
'file' => 'menu.admin.inc',
|
||||
);
|
||||
$items['admin/structure/menu/list'] = array(
|
||||
'title' => 'List menus',
|
||||
|
@ -66,6 +67,7 @@ function menu_menu() {
|
|||
'page arguments' => array('menu_edit_menu', 'add'),
|
||||
'access arguments' => array('administer menu'),
|
||||
'type' => MENU_LOCAL_ACTION,
|
||||
'file' => 'menu.admin.inc',
|
||||
);
|
||||
$items['admin/structure/menu/settings'] = array(
|
||||
'title' => 'Settings',
|
||||
|
@ -74,6 +76,7 @@ function menu_menu() {
|
|||
'access arguments' => array('administer menu'),
|
||||
'type' => MENU_LOCAL_TASK,
|
||||
'weight' => 5,
|
||||
'file' => 'menu.admin.inc',
|
||||
);
|
||||
$items['admin/structure/menu-customize/%menu'] = array(
|
||||
'title' => 'Customize menu',
|
||||
|
@ -83,6 +86,7 @@ function menu_menu() {
|
|||
'title arguments' => array(3),
|
||||
'access arguments' => array('administer menu'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'menu.admin.inc',
|
||||
);
|
||||
$items['admin/structure/menu-customize/%menu/list'] = array(
|
||||
'title' => 'List links',
|
||||
|
@ -95,6 +99,7 @@ function menu_menu() {
|
|||
'page arguments' => array('menu_edit_item', 'add', NULL, 3),
|
||||
'access arguments' => array('administer menu'),
|
||||
'type' => MENU_LOCAL_ACTION,
|
||||
'file' => 'menu.admin.inc',
|
||||
);
|
||||
$items['admin/structure/menu-customize/%menu/edit'] = array(
|
||||
'title' => 'Edit menu',
|
||||
|
@ -102,6 +107,7 @@ function menu_menu() {
|
|||
'page arguments' => array('menu_edit_menu', 'edit', 3),
|
||||
'access arguments' => array('administer menu'),
|
||||
'type' => MENU_LOCAL_TASK,
|
||||
'file' => 'menu.admin.inc',
|
||||
);
|
||||
$items['admin/structure/menu-customize/%menu/delete'] = array(
|
||||
'title' => 'Delete menu',
|
||||
|
@ -109,6 +115,7 @@ function menu_menu() {
|
|||
'page arguments' => array(3),
|
||||
'access arguments' => array('administer menu'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'menu.admin.inc',
|
||||
);
|
||||
$items['admin/structure/menu/item/%menu_link/edit'] = array(
|
||||
'title' => 'Edit menu link',
|
||||
|
@ -116,6 +123,7 @@ function menu_menu() {
|
|||
'page arguments' => array('menu_edit_item', 'edit', 4, NULL),
|
||||
'access arguments' => array('administer menu'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'menu.admin.inc',
|
||||
);
|
||||
$items['admin/structure/menu/item/%menu_link/reset'] = array(
|
||||
'title' => 'Reset menu link',
|
||||
|
@ -123,6 +131,7 @@ function menu_menu() {
|
|||
'page arguments' => array('menu_reset_item_confirm', 4),
|
||||
'access arguments' => array('administer menu'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'menu.admin.inc',
|
||||
);
|
||||
$items['admin/structure/menu/item/%menu_link/delete'] = array(
|
||||
'title' => 'Delete menu link',
|
||||
|
@ -130,6 +139,7 @@ function menu_menu() {
|
|||
'page arguments' => array(4),
|
||||
'access arguments' => array('administer menu'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'menu.admin.inc',
|
||||
);
|
||||
return $items;
|
||||
}
|
||||
|
@ -157,7 +167,7 @@ function menu_theme() {
|
|||
*/
|
||||
function menu_enable() {
|
||||
menu_rebuild();
|
||||
$base_link = db_query("SELECT mlid AS plid, menu_name from {menu_links} WHERE link_path = 'admin/structure/menu' AND module = 'system'")->fetchAssoc();
|
||||
$base_link = db_query("SELECT mlid AS plid, menu_name FROM {menu_links} WHERE link_path = 'admin/structure/menu' AND module = 'system'")->fetchAssoc();
|
||||
$base_link['router_path'] = 'admin/structure/menu-customize/%';
|
||||
$base_link['module'] = 'menu';
|
||||
$result = db_query("SELECT * FROM {menu_custom}", array(), array('fetch' => PDO::FETCH_ASSOC));
|
||||
|
|
|
@ -1699,6 +1699,7 @@ function node_menu() {
|
|||
'page arguments' => array('node_admin_content'),
|
||||
'access arguments' => array('administer nodes'),
|
||||
'weight' => -10,
|
||||
'file' => 'node.admin.inc',
|
||||
);
|
||||
$items['admin/content/node'] = array(
|
||||
'title' => 'Content',
|
||||
|
@ -1714,6 +1715,7 @@ function node_menu() {
|
|||
// has to be allowed access to the 'node access rebuild' confirm form.
|
||||
'access arguments' => array('access administration pages'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'node.admin.inc',
|
||||
);
|
||||
|
||||
$items['admin/structure/types'] = array(
|
||||
|
@ -1721,6 +1723,7 @@ function node_menu() {
|
|||
'description' => 'Manage posts by content type, including default status, front page promotion, comment settings, etc.',
|
||||
'page callback' => 'node_overview_types',
|
||||
'access arguments' => array('administer content types'),
|
||||
'file' => 'content_types.inc',
|
||||
);
|
||||
$items['admin/structure/types/list'] = array(
|
||||
'title' => 'List',
|
||||
|
@ -1733,6 +1736,7 @@ function node_menu() {
|
|||
'page arguments' => array('node_type_form'),
|
||||
'access arguments' => array('administer content types'),
|
||||
'type' => MENU_LOCAL_ACTION,
|
||||
'file' => 'content_types.inc',
|
||||
);
|
||||
$items['node'] = array(
|
||||
'title' => 'Content',
|
||||
|
@ -1746,6 +1750,7 @@ function node_menu() {
|
|||
'access callback' => '_node_add_access',
|
||||
'weight' => 1,
|
||||
'menu_name' => 'management',
|
||||
'file' => 'node.pages.inc',
|
||||
);
|
||||
$items['rss.xml'] = array(
|
||||
'title' => 'RSS feed',
|
||||
|
@ -1765,6 +1770,7 @@ function node_menu() {
|
|||
'access callback' => 'node_access',
|
||||
'access arguments' => array('create', $type->type),
|
||||
'description' => $type->description,
|
||||
'file' => 'node.pages.inc',
|
||||
);
|
||||
$items['admin/structure/node-type/' . $type_url_str] = array(
|
||||
'title' => $type->name,
|
||||
|
@ -1772,6 +1778,7 @@ function node_menu() {
|
|||
'page arguments' => array('node_type_form', $type),
|
||||
'access arguments' => array('administer content types'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'content_types.inc',
|
||||
);
|
||||
$items['admin/structure/node-type/' . $type_url_str . '/edit'] = array(
|
||||
'title' => 'Edit',
|
||||
|
@ -1782,6 +1789,7 @@ function node_menu() {
|
|||
'page arguments' => array('node_type_delete_confirm', $type),
|
||||
'access arguments' => array('administer content types'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'content_types.inc',
|
||||
);
|
||||
}
|
||||
$items['node/%node'] = array(
|
||||
|
@ -1804,6 +1812,7 @@ function node_menu() {
|
|||
'access arguments' => array('update', 1),
|
||||
'weight' => 1,
|
||||
'type' => MENU_LOCAL_TASK,
|
||||
'file' => 'node.pages.inc',
|
||||
);
|
||||
$items['node/%node/delete'] = array(
|
||||
'title' => 'Delete',
|
||||
|
@ -1812,7 +1821,9 @@ function node_menu() {
|
|||
'access callback' => 'node_access',
|
||||
'access arguments' => array('delete', 1),
|
||||
'weight' => 1,
|
||||
'type' => MENU_CALLBACK);
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'node.pages.inc',
|
||||
);
|
||||
$items['node/%node/revisions'] = array(
|
||||
'title' => 'Revisions',
|
||||
'page callback' => 'node_revision_overview',
|
||||
|
@ -1821,6 +1832,7 @@ function node_menu() {
|
|||
'access arguments' => array(1),
|
||||
'weight' => 2,
|
||||
'type' => MENU_LOCAL_TASK,
|
||||
'file' => 'node.pages.inc',
|
||||
);
|
||||
$items['node/%node/revisions/%/view'] = array(
|
||||
'title' => 'Revisions',
|
||||
|
@ -1839,6 +1851,7 @@ function node_menu() {
|
|||
'access callback' => '_node_revision_access',
|
||||
'access arguments' => array(1, 'update'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'node.pages.inc',
|
||||
);
|
||||
$items['node/%node/revisions/%/delete'] = array(
|
||||
'title' => 'Delete earlier revision',
|
||||
|
@ -1848,6 +1861,7 @@ function node_menu() {
|
|||
'access callback' => '_node_revision_access',
|
||||
'access arguments' => array(1, 'delete'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'node.pages.inc',
|
||||
);
|
||||
return $items;
|
||||
}
|
||||
|
|
|
@ -15,6 +15,7 @@ function openid_menu() {
|
|||
'page callback' => 'openid_authentication_page',
|
||||
'access callback' => 'user_is_anonymous',
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'openid.pages.inc',
|
||||
);
|
||||
$items['user/%user/openid'] = array(
|
||||
'title' => 'OpenID identities',
|
||||
|
@ -23,6 +24,7 @@ function openid_menu() {
|
|||
'access callback' => 'user_edit_access',
|
||||
'access arguments' => array(1),
|
||||
'type' => MENU_LOCAL_TASK,
|
||||
'file' => 'openid.pages.inc',
|
||||
);
|
||||
$items['user/%user/openid/delete'] = array(
|
||||
'title' => 'Delete OpenID',
|
||||
|
@ -31,6 +33,7 @@ function openid_menu() {
|
|||
'access callback' => 'user_edit_access',
|
||||
'access arguments' => array(1),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'openid.pages.inc',
|
||||
);
|
||||
return $items;
|
||||
}
|
||||
|
|
|
@ -38,12 +38,14 @@ function path_menu() {
|
|||
'description' => "Change your site's URL paths by aliasing them.",
|
||||
'page callback' => 'path_admin_overview',
|
||||
'access arguments' => array('administer url aliases'),
|
||||
'file' => 'path.admin.inc',
|
||||
);
|
||||
$items['admin/settings/path/edit'] = array(
|
||||
'title' => 'Edit alias',
|
||||
'page callback' => 'path_admin_edit',
|
||||
'access arguments' => array('administer url aliases'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'path.admin.inc',
|
||||
);
|
||||
$items['admin/settings/path/delete'] = array(
|
||||
'title' => 'Delete alias',
|
||||
|
@ -51,6 +53,7 @@ function path_menu() {
|
|||
'page arguments' => array('path_admin_delete_confirm'),
|
||||
'access arguments' => array('administer url aliases'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'path.admin.inc',
|
||||
);
|
||||
$items['admin/settings/path/list'] = array(
|
||||
'title' => 'List',
|
||||
|
@ -62,6 +65,7 @@ function path_menu() {
|
|||
'page callback' => 'path_admin_edit',
|
||||
'access arguments' => array('administer url aliases'),
|
||||
'type' => MENU_LOCAL_ACTION,
|
||||
'file' => 'path.admin.inc',
|
||||
);
|
||||
|
||||
return $items;
|
||||
|
@ -210,7 +214,7 @@ function path_node_update($node) {
|
|||
function path_node_delete($node) {
|
||||
path_set_alias('node/' . $node->nid);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Implement hook_taxonomy_term_delete().
|
||||
*/
|
||||
|
@ -269,7 +273,7 @@ function path_form_taxonomy_form_term_alter(&$form, $form_state) {
|
|||
else {
|
||||
$url = 'taxonomy/term/' . $form['#term']['tid'];
|
||||
$alias = drupal_get_path_alias($url);
|
||||
|
||||
|
||||
// Since drupal_get_path_alias() can return the default path, check if we really have an alias.
|
||||
if ($alias != $url) {
|
||||
$path = $alias;
|
||||
|
|
|
@ -81,6 +81,7 @@ function poll_menu() {
|
|||
'page callback' => 'poll_page',
|
||||
'access arguments' => array('access content'),
|
||||
'type' => MENU_SUGGESTED_ITEM,
|
||||
'file' => 'poll.pages.inc',
|
||||
);
|
||||
|
||||
$items['node/%node/votes'] = array(
|
||||
|
@ -91,6 +92,7 @@ function poll_menu() {
|
|||
'access arguments' => array(1, 'inspect all votes', FALSE),
|
||||
'weight' => 3,
|
||||
'type' => MENU_LOCAL_TASK,
|
||||
'file' => 'poll.pages.inc',
|
||||
);
|
||||
|
||||
$items['node/%node/results'] = array(
|
||||
|
@ -101,6 +103,7 @@ function poll_menu() {
|
|||
'access arguments' => array(1, 'access content', TRUE),
|
||||
'weight' => 3,
|
||||
'type' => MENU_LOCAL_TASK,
|
||||
'file' => 'poll.pages.inc',
|
||||
);
|
||||
|
||||
return $items;
|
||||
|
@ -322,6 +325,7 @@ function poll_form($node, $form_state) {
|
|||
* entire form is rebuilt during the page reload.
|
||||
*/
|
||||
function poll_more_choices_submit($form, &$form_state) {
|
||||
include_once DRUPAL_ROOT . '/' . drupal_get_path('module', 'node') . '/node.pages.inc';
|
||||
// Set the form to rebuild and run submit handlers.
|
||||
node_form_submit_build_node($form, $form_state);
|
||||
|
||||
|
|
|
@ -80,6 +80,7 @@ function profile_menu() {
|
|||
'title' => 'User list',
|
||||
'page callback' => 'profile_browse',
|
||||
'access arguments' => array('access user profiles'),
|
||||
'file' => 'profile.pages.inc',
|
||||
'type' => MENU_SUGGESTED_ITEM,
|
||||
);
|
||||
$items['admin/config/people/profile'] = array(
|
||||
|
@ -88,18 +89,21 @@ function profile_menu() {
|
|||
'page callback' => 'drupal_get_form',
|
||||
'page arguments' => array('profile_admin_overview'),
|
||||
'access arguments' => array('administer users'),
|
||||
'file' => 'profile.admin.inc',
|
||||
);
|
||||
$items['admin/config/people/profile/add'] = array(
|
||||
'title' => 'Add field',
|
||||
'page callback' => 'drupal_get_form',
|
||||
'page arguments' => array('profile_field_form'),
|
||||
'access arguments' => array('administer users'),
|
||||
'file' => 'profile.admin.inc',
|
||||
'type' => MENU_CALLBACK,
|
||||
);
|
||||
$items['admin/config/people/profile/autocomplete'] = array(
|
||||
'title' => 'Profile category autocomplete',
|
||||
'page callback' => 'profile_admin_settings_autocomplete',
|
||||
'access arguments' => array('administer users'),
|
||||
'file' => 'profile.admin.inc',
|
||||
'type' => MENU_CALLBACK,
|
||||
);
|
||||
$items['admin/config/people/profile/edit'] = array(
|
||||
|
@ -107,6 +111,7 @@ function profile_menu() {
|
|||
'page callback' => 'drupal_get_form',
|
||||
'page arguments' => array('profile_field_form'),
|
||||
'access arguments' => array('administer users'),
|
||||
'file' => 'profile.admin.inc',
|
||||
'type' => MENU_CALLBACK,
|
||||
);
|
||||
$items['admin/config/people/profile/delete'] = array(
|
||||
|
@ -114,12 +119,14 @@ function profile_menu() {
|
|||
'page callback' => 'drupal_get_form',
|
||||
'page arguments' => array('profile_field_delete'),
|
||||
'access arguments' => array('administer users'),
|
||||
'file' => 'profile.admin.inc',
|
||||
'type' => MENU_CALLBACK,
|
||||
);
|
||||
$items['profile/autocomplete'] = array(
|
||||
'title' => 'Profile autocomplete',
|
||||
'page callback' => 'profile_autocomplete',
|
||||
'access arguments' => array('access user profiles'),
|
||||
'file' => 'profile.pages.inc',
|
||||
'type' => MENU_CALLBACK,
|
||||
);
|
||||
return $items;
|
||||
|
@ -128,7 +135,7 @@ function profile_menu() {
|
|||
/**
|
||||
* Implement hook_block_list().
|
||||
*/
|
||||
function profile_block_list() {
|
||||
function profile_block_list() {
|
||||
$blocks['author-information']['info'] = t('Author information');
|
||||
$blocks['author-information']['cache'] = BLOCK_CACHE_PER_PAGE | BLOCK_CACHE_PER_ROLE;
|
||||
return $blocks;
|
||||
|
|
|
@ -190,6 +190,7 @@ function search_menu() {
|
|||
'page callback' => 'search_view',
|
||||
'access arguments' => array('search content'),
|
||||
'type' => MENU_SUGGESTED_ITEM,
|
||||
'file' => 'search.pages.inc',
|
||||
);
|
||||
$items['admin/settings/search'] = array(
|
||||
'title' => 'Search settings',
|
||||
|
@ -198,6 +199,7 @@ function search_menu() {
|
|||
'page arguments' => array('search_admin_settings'),
|
||||
'access arguments' => array('administer search'),
|
||||
'type' => MENU_NORMAL_ITEM,
|
||||
'file' => 'search.admin.inc',
|
||||
);
|
||||
$items['admin/settings/search/reindex'] = array(
|
||||
'title' => 'Clear index',
|
||||
|
@ -205,6 +207,7 @@ function search_menu() {
|
|||
'page arguments' => array('search_reindex_confirm'),
|
||||
'access arguments' => array('administer search'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'search.admin.inc',
|
||||
);
|
||||
$items['admin/reports/search'] = array(
|
||||
'title' => 'Top search phrases',
|
||||
|
@ -213,6 +216,7 @@ function search_menu() {
|
|||
'page arguments' => array('search'),
|
||||
'access arguments' => array('access site reports'),
|
||||
'file path' => drupal_get_path('module', 'dblog'),
|
||||
'file' => 'dblog.admin.inc',
|
||||
);
|
||||
|
||||
foreach (module_implements('search') as $module) {
|
||||
|
@ -225,6 +229,7 @@ function search_menu() {
|
|||
'access arguments' => array($module),
|
||||
'type' => MENU_LOCAL_TASK,
|
||||
'parent' => 'search',
|
||||
'file' => 'search.pages.inc',
|
||||
);
|
||||
}
|
||||
return $items;
|
||||
|
|
|
@ -519,7 +519,7 @@ abstract class DrupalTestCase {
|
|||
*
|
||||
* These tests can not access the database nor files. Calling any Drupal
|
||||
* function that needs the database will throw exceptions. These include
|
||||
* watchdog(), drupal_function_exists(), module_implements(),
|
||||
* watchdog(), function_exists(), module_implements(),
|
||||
* module_invoke_all() etc.
|
||||
*/
|
||||
class DrupalUnitTestCase extends DrupalTestCase {
|
||||
|
@ -549,7 +549,7 @@ class DrupalUnitTestCase extends DrupalTestCase {
|
|||
if (isset($module_list['locale'])) {
|
||||
$this->originalModuleList = $module_list;
|
||||
unset($module_list['locale']);
|
||||
module_list(TRUE, FALSE, $module_list);
|
||||
module_list(TRUE, FALSE, FALSE, $module_list);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -561,7 +561,7 @@ class DrupalUnitTestCase extends DrupalTestCase {
|
|||
$db_prefix = $this->originalPrefix;
|
||||
// Restore modules if necessary.
|
||||
if (isset($this->originalModuleList)) {
|
||||
module_list(TRUE, FALSE, $this->originalModuleList);
|
||||
module_list(TRUE, FALSE, FALSE, $this->originalModuleList);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1203,7 +1203,7 @@ class DrupalWebTestCase extends DrupalTestCase {
|
|||
// Reload module list and implementations to ensure that test module hooks
|
||||
// aren't called after tests.
|
||||
module_list(TRUE);
|
||||
module_implements(MODULE_IMPLEMENTS_CLEAR_CACHE);
|
||||
module_implements('', FALSE, TRUE);
|
||||
|
||||
// Reset the Field API.
|
||||
field_cache_clear();
|
||||
|
|
|
@ -31,6 +31,7 @@ function simpletest_menu() {
|
|||
'page arguments' => array('simpletest_test_form'),
|
||||
'description' => 'Run tests against Drupal core and your active modules. These tests help assure that your site code is working as designed.',
|
||||
'access arguments' => array('administer unit tests'),
|
||||
'file' => 'simpletest.pages.inc',
|
||||
);
|
||||
$items['admin/config/development/testing/list'] = array(
|
||||
'title' => 'List',
|
||||
|
@ -42,6 +43,7 @@ function simpletest_menu() {
|
|||
'page arguments' => array('simpletest_settings_form'),
|
||||
'access arguments' => array('administer unit tests'),
|
||||
'type' => MENU_LOCAL_TASK,
|
||||
'file' => 'simpletest.pages.inc',
|
||||
);
|
||||
$items['admin/config/development/testing/results/%'] = array(
|
||||
'title' => 'Test result',
|
||||
|
@ -50,6 +52,7 @@ function simpletest_menu() {
|
|||
'description' => 'View result of tests.',
|
||||
'access arguments' => array('administer unit tests'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'simpletest.pages.inc',
|
||||
);
|
||||
return $items;
|
||||
}
|
||||
|
|
|
@ -69,8 +69,6 @@ class BatchAPIPercentagesTestCase extends DrupalWebTestCase {
|
|||
* testCases class variable.
|
||||
*/
|
||||
function testBatchAPIPercentages() {
|
||||
// Include batch.inc if it's not already included.
|
||||
drupal_function_exists('_batch_api_percentage');
|
||||
foreach ($this->testCases as $expected_result => $arguments) {
|
||||
// PHP sometimes casts numeric strings that are array keys to integers,
|
||||
// cast them back here.
|
||||
|
@ -86,4 +84,4 @@ class BatchAPIPercentagesTestCase extends DrupalWebTestCase {
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -255,7 +255,7 @@ class ImageToolkitGdTestCase extends DrupalWebTestCase {
|
|||
*/
|
||||
function testManipulations() {
|
||||
// If GD isn't available don't bother testing this.
|
||||
if (!drupal_function_exists('image_gd_check_settings') || !image_gd_check_settings()) {
|
||||
if (!function_exists('image_gd_check_settings') || !image_gd_check_settings()) {
|
||||
$this->pass(t('Image manipulations for the GD toolkit were skipped because the GD toolkit is not available.'));
|
||||
return;
|
||||
}
|
||||
|
@ -325,7 +325,7 @@ class ImageToolkitGdTestCase extends DrupalWebTestCase {
|
|||
);
|
||||
|
||||
// Systems using non-bundled GD2 don't have imagerotate. Test if available.
|
||||
if (drupal_function_exists('imagerotate')) {
|
||||
if (function_exists('imagerotate')) {
|
||||
$operations += array(
|
||||
'rotate_5' => array(
|
||||
'function' => 'rotate',
|
||||
|
@ -359,7 +359,7 @@ class ImageToolkitGdTestCase extends DrupalWebTestCase {
|
|||
}
|
||||
|
||||
// Systems using non-bundled GD2 don't have imagefilter. Test if available.
|
||||
if (drupal_function_exists('imagefilter')) {
|
||||
if (function_exists('imagefilter')) {
|
||||
$operations += array(
|
||||
'desaturate' => array(
|
||||
'function' => 'desaturate',
|
||||
|
|
|
@ -60,7 +60,7 @@ class ModuleUnitTest extends DrupalWebTestCase {
|
|||
'system' => array('filename' => drupal_get_path('module', 'system')),
|
||||
'menu' => array('filename' => drupal_get_path('module', 'menu')),
|
||||
);
|
||||
module_list(FALSE, FALSE, $fixed_list);
|
||||
module_list(FALSE, FALSE, FALSE, $fixed_list);
|
||||
$new_module_list = array_combine(array_keys($fixed_list), array_keys($fixed_list));
|
||||
$this->assertModuleList($new_module_list, t('When using a fixed list'));
|
||||
|
||||
|
@ -79,7 +79,7 @@ class ModuleUnitTest extends DrupalWebTestCase {
|
|||
$expected_values = array_combine($expected_values, $expected_values);
|
||||
$this->assertIdentical($expected_values, module_list(), t('@condition: module_list() returns correct results', array('@condition' => $condition)));
|
||||
ksort($expected_values);
|
||||
$this->assertIdentical($expected_values, module_list(FALSE, TRUE), t('@condition: module_list() returns correctly sorted results', array('@condition' => $condition)));
|
||||
$this->assertIdentical($expected_values, module_list(FALSE, FALSE, TRUE), t('@condition: module_list() returns correctly sorted results', array('@condition' => $condition)));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -12,7 +12,6 @@ class RegistryParseFileTestCase extends DrupalWebTestCase {
|
|||
|
||||
function setUp() {
|
||||
$this->fileName = 'registry_test_' . md5(rand());
|
||||
$this->functionName = 'registry_test_function' . md5(rand());
|
||||
$this->className = 'registry_test_class' . md5(rand());
|
||||
$this->interfaceName = 'registry_test_interface' . md5(rand());
|
||||
parent::setUp();
|
||||
|
@ -23,7 +22,7 @@ class RegistryParseFileTestCase extends DrupalWebTestCase {
|
|||
*/
|
||||
function testRegistryParseFile() {
|
||||
_registry_parse_file($this->fileName, $this->getFileContents());
|
||||
foreach (array('functionName', 'className', 'interfaceName') as $resource) {
|
||||
foreach (array('className', 'interfaceName') as $resource) {
|
||||
$foundName = db_query('SELECT name FROM {registry} WHERE name = :name', array(':name' => $this->$resource))->fetchField();
|
||||
$this->assertTrue($this->$resource == $foundName, t('Resource "@resource" found.', array('@resource' => $this->$resource)));
|
||||
}
|
||||
|
@ -36,8 +35,6 @@ class RegistryParseFileTestCase extends DrupalWebTestCase {
|
|||
$file_contents = <<<CONTENTS
|
||||
<?php
|
||||
|
||||
function {$this->functionName}() {}
|
||||
|
||||
class {$this->className} {}
|
||||
|
||||
interface {$this->interfaceName} {}
|
||||
|
@ -66,7 +63,6 @@ class RegistryParseFilesTestCase extends DrupalWebTestCase {
|
|||
foreach ($this->fileTypes as $fileType) {
|
||||
$this->$fileType = new stdClass();
|
||||
$this->$fileType->fileName = file_directory_path() . '/registry_test_' . md5(rand());
|
||||
$this->$fileType->functionName = 'registry_test_function' . md5(rand());
|
||||
$this->$fileType->className = 'registry_test_class' . md5(rand());
|
||||
$this->$fileType->interfaceName = 'registry_test_interface' . md5(rand());
|
||||
$this->$fileType->contents = $this->getFileContents($fileType);
|
||||
|
@ -82,7 +78,7 @@ class RegistryParseFilesTestCase extends DrupalWebTestCase {
|
|||
->execute();
|
||||
|
||||
// Insert some fake resource records.
|
||||
foreach (array('function', 'class', 'interface') as $type) {
|
||||
foreach (array('class', 'interface') as $type) {
|
||||
db_insert('registry')
|
||||
->fields(array(
|
||||
'name' => $type . md5(rand()),
|
||||
|
@ -102,7 +98,7 @@ class RegistryParseFilesTestCase extends DrupalWebTestCase {
|
|||
_registry_parse_files($this->getFiles());
|
||||
foreach ($this->fileTypes as $fileType) {
|
||||
// Test that we have all the right resources.
|
||||
foreach (array('functionName', 'className', 'interfaceName') as $resource) {
|
||||
foreach (array('className', 'interfaceName') as $resource) {
|
||||
$foundName = db_query('SELECT name FROM {registry} WHERE name = :name', array(':name' => $this->$fileType->$resource))->fetchField();
|
||||
$this->assertTrue($this->$fileType->$resource == $foundName, t('Resource "@resource" found.', array('@resource' => $this->$fileType->$resource)));
|
||||
}
|
||||
|
@ -135,8 +131,6 @@ class RegistryParseFilesTestCase extends DrupalWebTestCase {
|
|||
$file_contents = <<<CONTENTS
|
||||
<?php
|
||||
|
||||
function {$this->$fileType->functionName}() {}
|
||||
|
||||
class {$this->$fileType->className} {}
|
||||
|
||||
interface {$this->$fileType->interfaceName} {}
|
||||
|
@ -146,33 +140,3 @@ CONTENTS;
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
class RegistrySkipBodyTestCase extends DrupalUnitTestCase {
|
||||
public static function getInfo() {
|
||||
return array(
|
||||
'name' => 'Skip function body test',
|
||||
'description' => 'Tokenize a simple function and check that the body is skipped right',
|
||||
'group' => 'System',
|
||||
);
|
||||
}
|
||||
|
||||
function testRegistrySkipBody() {
|
||||
// This string contains all three kinds of opening braces.
|
||||
$function = '<?php function foo () { $x = "{$y}"; $x = "${y}"; }';
|
||||
$tokens = token_get_all($function);
|
||||
require_once DRUPAL_ROOT . '/includes/registry.inc';
|
||||
_registry_skip_body($tokens);
|
||||
// Consume the last }
|
||||
each($tokens);
|
||||
$this->assertIdentical(each($tokens), FALSE, t('Tokens skipped'));
|
||||
|
||||
// Check workaround for PHP < 5.2.3 regarding tokenization of strings
|
||||
// containing variables. The { contained in the string should not be
|
||||
// treated as a separate token.
|
||||
$function = '<?php function foo() { $x = "$y {"; $x = `$y {`; $x = ' . "<<<EOD\n\$y {\nEOD\n; } function bar() {}";
|
||||
$tokens = token_get_all($function);
|
||||
_registry_skip_body($tokens);
|
||||
$this->assertTrue(each($tokens), t('Tokens not skipped to end of file.'));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -12,9 +12,6 @@ class XMLRPCValidator1IncTestCase extends DrupalWebTestCase {
|
|||
|
||||
function setUp() {
|
||||
parent::setUp('xmlrpc_test');
|
||||
|
||||
// Force loading the xmlrpc.inc to have the xmlrpc() function.
|
||||
drupal_function_exists('xmlrpc');
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -135,9 +132,6 @@ class XMLRPCMessagesTestCase extends DrupalWebTestCase {
|
|||
|
||||
function setUp() {
|
||||
parent::setUp('xmlrpc_test');
|
||||
|
||||
// Force loading the xmlrpc.inc to have the xmlrpc() function.
|
||||
drupal_function_exists('xmlrpc');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -130,6 +130,7 @@ function statistics_menu() {
|
|||
'description' => 'View pages that have recently been visited.',
|
||||
'page callback' => 'statistics_recent_hits',
|
||||
'access arguments' => array('access statistics'),
|
||||
'file' => 'statistics.admin.inc',
|
||||
);
|
||||
$items['admin/reports/pages'] = array(
|
||||
'title' => 'Top pages',
|
||||
|
@ -137,6 +138,7 @@ function statistics_menu() {
|
|||
'page callback' => 'statistics_top_pages',
|
||||
'access arguments' => array('access statistics'),
|
||||
'weight' => 1,
|
||||
'file' => 'statistics.admin.inc',
|
||||
);
|
||||
$items['admin/reports/visitors'] = array(
|
||||
'title' => 'Top visitors',
|
||||
|
@ -144,12 +146,14 @@ function statistics_menu() {
|
|||
'page callback' => 'statistics_top_visitors',
|
||||
'access arguments' => array('access statistics'),
|
||||
'weight' => 2,
|
||||
'file' => 'statistics.admin.inc',
|
||||
);
|
||||
$items['admin/reports/referrers'] = array(
|
||||
'title' => 'Top referrers',
|
||||
'description' => 'View top referrers.',
|
||||
'page callback' => 'statistics_top_referrers',
|
||||
'access arguments' => array('access statistics'),
|
||||
'file' => 'statistics.admin.inc',
|
||||
);
|
||||
$items['admin/reports/access/%'] = array(
|
||||
'title' => 'Details',
|
||||
|
@ -158,6 +162,7 @@ function statistics_menu() {
|
|||
'page arguments' => array(3),
|
||||
'access arguments' => array('access statistics'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'statistics.admin.inc',
|
||||
);
|
||||
$items['admin/settings/statistics'] = array(
|
||||
'title' => 'Statistics',
|
||||
|
@ -165,6 +170,7 @@ function statistics_menu() {
|
|||
'page callback' => 'drupal_get_form',
|
||||
'page arguments' => array('statistics_settings_form'),
|
||||
'access arguments' => array('administer statistics'),
|
||||
'file' => 'statistics.admin.inc',
|
||||
);
|
||||
$items['user/%user/track/navigation'] = array(
|
||||
'title' => 'Track page visits',
|
||||
|
@ -173,6 +179,7 @@ function statistics_menu() {
|
|||
'access arguments' => array('access statistics'),
|
||||
'type' => MENU_LOCAL_TASK,
|
||||
'weight' => 2,
|
||||
'file' => 'statistics.pages.inc',
|
||||
);
|
||||
$items['node/%node/track'] = array(
|
||||
'title' => 'Track',
|
||||
|
@ -181,6 +188,7 @@ function statistics_menu() {
|
|||
'access arguments' => array('access statistics'),
|
||||
'type' => MENU_LOCAL_TASK,
|
||||
'weight' => 2,
|
||||
'file' => 'statistics.pages.inc',
|
||||
);
|
||||
|
||||
return $items;
|
||||
|
|
|
@ -118,7 +118,7 @@ function image_gd_resize(stdClass $image, $width, $height) {
|
|||
*/
|
||||
function image_gd_rotate(stdClass $image, $degrees, $background = NULL) {
|
||||
// PHP installations using non-bundled GD do not have imagerotate.
|
||||
if (!drupal_function_exists('imagerotate')) {
|
||||
if (!function_exists('imagerotate')) {
|
||||
watchdog('image', 'The image %file could not be rotated because the imagerotate() function is not available in this PHP installation.', array('%file' => $image->source));
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -215,7 +215,7 @@ function image_gd_crop(stdClass $image, $x, $y, $width, $height) {
|
|||
*/
|
||||
function image_gd_desaturate(stdClass $image) {
|
||||
// PHP installations using non-bundled GD do not have imagefilter.
|
||||
if (!drupal_function_exists('imagefilter')) {
|
||||
if (!function_exists('imagefilter')) {
|
||||
watchdog('image', 'The image %file could not be desaturated because the imagefilter() function is not available in this PHP installation.', array('%file' => $image->source));
|
||||
return FALSE;
|
||||
}
|
||||
|
|
|
@ -52,7 +52,7 @@ function system_main_admin_page($arg = NULL) {
|
|||
$block['show'] = TRUE;
|
||||
if (empty($content)) {
|
||||
// If no items found below, but access checks did not fail, show.
|
||||
$block['title'] = l($item['title'], $item['href'], $item['localized_options']);
|
||||
$block['title'] = l($item['title'], $item['href'], $item['localized_options']);
|
||||
}
|
||||
else {
|
||||
// Theme items below.
|
||||
|
@ -1552,7 +1552,7 @@ function system_image_toolkit_settings() {
|
|||
|
||||
// Get the toolkit's settings form.
|
||||
$function = 'image_' . $current_toolkit . '_settings';
|
||||
if (drupal_function_exists($function)) {
|
||||
if (function_exists($function)) {
|
||||
$form['image_toolkit_settings'] = $function();
|
||||
}
|
||||
|
||||
|
|
|
@ -44,7 +44,7 @@ function system_requirements($phase) {
|
|||
'severity' => REQUIREMENT_INFO,
|
||||
'weight' => -9
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Web server information.
|
||||
|
@ -953,6 +953,11 @@ function system_schema() {
|
|||
'not null' => TRUE,
|
||||
'default' => 0,
|
||||
),
|
||||
'file' => array(
|
||||
'description' => 'The file to include for this element, usually the page callback function lives in this file.',
|
||||
'type' => 'text',
|
||||
'size' => 'medium'
|
||||
),
|
||||
),
|
||||
'indexes' => array(
|
||||
'fit' => array('fit'),
|
||||
|
@ -1237,13 +1242,6 @@ function system_schema() {
|
|||
'not null' => TRUE,
|
||||
'default' => ''
|
||||
),
|
||||
'suffix' => array(
|
||||
'description' => "The part of the function name after the module, which is the hook this function implements, if any.",
|
||||
'type' => 'varchar',
|
||||
'length' => 68,
|
||||
'not null' => TRUE,
|
||||
'default' => ''
|
||||
),
|
||||
'weight' => array(
|
||||
'description' => "The order in which this module's hooks should be invoked relative to other modules. Equal-weighted modules are ordered by name.",
|
||||
'type' => 'int',
|
||||
|
@ -1253,7 +1251,7 @@ function system_schema() {
|
|||
),
|
||||
'primary key' => array('name', 'type'),
|
||||
'indexes' => array(
|
||||
'hook' => array('type', 'suffix', 'weight', 'module'),
|
||||
'hook' => array('type', 'weight', 'module'),
|
||||
),
|
||||
);
|
||||
|
||||
|
@ -1399,6 +1397,12 @@ function system_schema() {
|
|||
'not null' => TRUE,
|
||||
'default' => 0,
|
||||
),
|
||||
'bootstrap' => array(
|
||||
'description' => "Boolean indicating whether this module is loaded during Drupal's early bootstrapping phase (e.g. even before the page cache is consulted).",
|
||||
'type' => 'int',
|
||||
'not null' => TRUE,
|
||||
'default' => 0,
|
||||
),
|
||||
'schema_version' => array(
|
||||
'description' => "The module's database schema version number. -1 if the module is not installed (its tables do not exist); 0 or the largest N of the module's hook_update_N() function that has either been run or existed when the module was first installed.",
|
||||
'type' => 'int',
|
||||
|
@ -1421,6 +1425,7 @@ function system_schema() {
|
|||
'primary key' => array('filename'),
|
||||
'indexes' => array(
|
||||
'modules' => array('type', 'status', 'weight', 'name'),
|
||||
'bootstrap' => array('type', 'status', 'bootstrap', 'weight', 'name'),
|
||||
'type_name' => array('type', 'name'),
|
||||
),
|
||||
);
|
||||
|
@ -1711,19 +1716,17 @@ function system_update_7005() {
|
|||
*/
|
||||
function system_update_7006() {
|
||||
$ret = array();
|
||||
db_drop_field($ret, 'menu_router', 'file');
|
||||
$schema['registry'] = array(
|
||||
'fields' => array(
|
||||
'name' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'type' => array('type' => 'varchar', 'length' => 9, 'not null' => TRUE, 'default' => ''),
|
||||
'filename' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'module' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
|
||||
'suffix' => array('type' => 'varchar', 'length' => 68, 'not null' => TRUE, 'default' => ''),
|
||||
'weight' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
|
||||
),
|
||||
'primary key' => array('name', 'type'),
|
||||
'indexes' => array(
|
||||
'hook' => array('type', 'suffix', 'weight', 'module'),
|
||||
'hook' => array('type', 'weight', 'module'),
|
||||
),
|
||||
);
|
||||
$schema['registry_file'] = array(
|
||||
|
@ -1919,11 +1922,10 @@ function system_update_7013() {
|
|||
}
|
||||
|
||||
/**
|
||||
* Drop the bootstrap column from the {system} table.
|
||||
* Drop the bootstrap column from the {system} table. This was reverted.
|
||||
*/
|
||||
function system_update_7014() {
|
||||
$ret = array();
|
||||
db_drop_field($ret, 'system', 'bootstrap');
|
||||
return $ret;
|
||||
}
|
||||
|
||||
|
|
|
@ -501,18 +501,22 @@ function system_menu() {
|
|||
'page callback' => 'ajax_form_callback',
|
||||
'access callback' => TRUE,
|
||||
'type' => MENU_CALLBACK,
|
||||
'file path' => 'includes',
|
||||
'file' => 'form.inc',
|
||||
);
|
||||
$items['system/timezone'] = array(
|
||||
'title' => 'Time zone',
|
||||
'page callback' => 'system_timezone',
|
||||
'access callback' => TRUE,
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'system.admin.inc',
|
||||
);
|
||||
$items['system/run-cron-image'] = array(
|
||||
'title' => 'Execute cron',
|
||||
'page callback' => 'system_run_cron_image',
|
||||
'access callback' => 'system_run_cron_image_access',
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'system.admin.inc',
|
||||
);
|
||||
$items['admin'] = array(
|
||||
'title' => 'Administer',
|
||||
|
@ -520,18 +524,21 @@ function system_menu() {
|
|||
'page callback' => 'system_main_admin_page',
|
||||
'weight' => 9,
|
||||
'menu_name' => 'management',
|
||||
'file' => 'system.admin.inc',
|
||||
);
|
||||
$items['admin/compact'] = array(
|
||||
'title' => 'Compact mode',
|
||||
'page callback' => 'system_admin_compact_page',
|
||||
'access arguments' => array('access administration pages'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'system.admin.inc',
|
||||
);
|
||||
$items['admin/by-task'] = array(
|
||||
'title' => 'By task',
|
||||
'page callback' => 'system_main_admin_page',
|
||||
'access arguments' => array('access administration pages'),
|
||||
'type' => MENU_DEFAULT_LOCAL_TASK,
|
||||
'file' => 'system.admin.inc',
|
||||
);
|
||||
$items['admin/by-module'] = array(
|
||||
'title' => 'By module',
|
||||
|
@ -539,6 +546,7 @@ function system_menu() {
|
|||
'access arguments' => array('access administration pages'),
|
||||
'type' => MENU_LOCAL_TASK,
|
||||
'weight' => 2,
|
||||
'file' => 'system.admin.inc',
|
||||
);
|
||||
|
||||
// Menu items that are basically just menu blocks.
|
||||
|
@ -550,6 +558,7 @@ function system_menu() {
|
|||
'page callback' => 'system_settings_overview',
|
||||
'access callback' => 'system_admin_menu_block_access',
|
||||
'access arguments' => array('admin/settings', 'access administration pages'),
|
||||
'file' => 'system.admin.inc',
|
||||
);
|
||||
$items['admin/structure'] = array(
|
||||
'title' => 'Structure',
|
||||
|
@ -559,6 +568,7 @@ function system_menu() {
|
|||
'page callback' => 'system_admin_menu_block_page',
|
||||
'access callback' => 'system_admin_menu_block_access',
|
||||
'access arguments' => array('admin/structure', 'access administration pages'),
|
||||
'file' => 'system.admin.inc',
|
||||
);
|
||||
// Appearance.
|
||||
$items['admin/appearance'] = array(
|
||||
|
@ -569,18 +579,21 @@ function system_menu() {
|
|||
'access arguments' => array('administer site configuration'),
|
||||
'position' => 'left',
|
||||
'weight' => -6,
|
||||
'file' => 'system.admin.inc',
|
||||
);
|
||||
$items['admin/appearance/select'] = array(
|
||||
'title' => 'List',
|
||||
'description' => 'Select the default theme for your site.',
|
||||
'type' => MENU_DEFAULT_LOCAL_TASK,
|
||||
'weight' => -1,
|
||||
'file' => 'system.admin.inc',
|
||||
);
|
||||
$items['admin/appearance/settings'] = array(
|
||||
'title' => 'Configure',
|
||||
'page arguments' => array('system_theme_settings'),
|
||||
'access arguments' => array('administer site configuration'),
|
||||
'type' => MENU_LOCAL_TASK,
|
||||
'file' => 'system.admin.inc',
|
||||
);
|
||||
// Theme configuration subtabs.
|
||||
$items['admin/appearance/settings/global'] = array(
|
||||
|
@ -596,6 +609,7 @@ function system_menu() {
|
|||
'type' => MENU_LOCAL_TASK,
|
||||
'access callback' => '_system_themes_access',
|
||||
'access arguments' => array($theme),
|
||||
'file' => 'system.admin.inc',
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -604,12 +618,14 @@ function system_menu() {
|
|||
'title' => 'Configuration and modules',
|
||||
'page callback' => 'system_admin_config_page',
|
||||
'access arguments' => array('access administration pages'),
|
||||
'file' => 'system.admin.inc',
|
||||
);
|
||||
$items['admin/config/config'] = array(
|
||||
'title' => 'Configuration',
|
||||
'access arguments' => array('administer site configuration'),
|
||||
'type' => MENU_DEFAULT_LOCAL_TASK,
|
||||
'weight' => -10,
|
||||
'file' => 'system.admin.inc',
|
||||
);
|
||||
$items['admin/config/modules'] = array(
|
||||
'title' => 'Modules',
|
||||
|
@ -617,6 +633,7 @@ function system_menu() {
|
|||
'page callback' => 'drupal_get_form',
|
||||
'page arguments' => array('system_modules'),
|
||||
'access arguments' => array('administer site configuration'),
|
||||
'file' => 'system.admin.inc',
|
||||
'type' => MENU_LOCAL_TASK,
|
||||
'weight' => 10,
|
||||
);
|
||||
|
@ -634,11 +651,25 @@ function system_menu() {
|
|||
'page arguments' => array('system_modules_uninstall'),
|
||||
'access arguments' => array('administer site configuration'),
|
||||
'type' => MENU_LOCAL_TASK,
|
||||
'file' => 'system.admin.inc',
|
||||
);
|
||||
$items['admin/config/modules/uninstall/confirm'] = array(
|
||||
'title' => 'Uninstall',
|
||||
'access arguments' => array('administer site configuration'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'system.admin.inc',
|
||||
);
|
||||
|
||||
// Development menu category.
|
||||
$items['admin/development'] = array(
|
||||
'title' => 'Development',
|
||||
'description' => 'Development tools.',
|
||||
'position' => 'right',
|
||||
'weight' => -7,
|
||||
'page callback' => 'system_admin_menu_block_page',
|
||||
'access callback' => 'system_admin_menu_block_access',
|
||||
'access arguments' => array('admin/development', 'access administration pages'),
|
||||
'file' => 'system.admin.inc',
|
||||
);
|
||||
|
||||
// Actions.
|
||||
|
@ -646,7 +677,8 @@ function system_menu() {
|
|||
'title' => 'Actions',
|
||||
'description' => 'Manage the actions defined for your site.',
|
||||
'access arguments' => array('administer actions'),
|
||||
'page callback' => 'system_actions_manage'
|
||||
'page callback' => 'system_actions_manage',
|
||||
'file' => 'system.admin.inc',
|
||||
);
|
||||
$items['admin/settings/actions/manage'] = array(
|
||||
'title' => 'Manage actions',
|
||||
|
@ -654,6 +686,7 @@ function system_menu() {
|
|||
'page callback' => 'system_actions_manage',
|
||||
'type' => MENU_DEFAULT_LOCAL_TASK,
|
||||
'weight' => -2,
|
||||
'file' => 'system.admin.inc',
|
||||
);
|
||||
$items['admin/settings/actions/configure'] = array(
|
||||
'title' => 'Configure an advanced action',
|
||||
|
@ -661,6 +694,7 @@ function system_menu() {
|
|||
'page arguments' => array('system_actions_configure'),
|
||||
'access arguments' => array('administer actions'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'system.admin.inc',
|
||||
);
|
||||
$items['admin/settings/actions/delete/%actions'] = array(
|
||||
'title' => 'Delete action',
|
||||
|
@ -669,12 +703,14 @@ function system_menu() {
|
|||
'page arguments' => array('system_actions_delete_form', 4),
|
||||
'access arguments' => array('administer actions'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'system.admin.inc',
|
||||
);
|
||||
$items['admin/settings/actions/orphan'] = array(
|
||||
'title' => 'Remove orphans',
|
||||
'page callback' => 'system_actions_remove_orphans',
|
||||
'access arguments' => array('administer actions'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'system.admin.inc',
|
||||
);
|
||||
|
||||
// IP address blocking.
|
||||
|
@ -683,6 +719,7 @@ function system_menu() {
|
|||
'description' => 'Manage blocked IP addresses.',
|
||||
'page callback' => 'system_ip_blocking',
|
||||
'access arguments' => array('block IP addresses'),
|
||||
'file' => 'system.admin.inc',
|
||||
);
|
||||
$items['admin/settings/ip-blocking/%'] = array(
|
||||
'title' => 'IP address blocking',
|
||||
|
@ -690,6 +727,7 @@ function system_menu() {
|
|||
'page callback' => 'system_ip_blocking',
|
||||
'access arguments' => array('block IP addresses'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'system.admin.inc',
|
||||
);
|
||||
$items['admin/settings/ip-blocking/delete/%blocked_ip'] = array(
|
||||
'title' => 'Delete IP address',
|
||||
|
@ -697,17 +735,19 @@ function system_menu() {
|
|||
'page arguments' => array('system_ip_blocking_delete', 4),
|
||||
'access arguments' => array('block IP addresses'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'system.admin.inc',
|
||||
);
|
||||
|
||||
// Configuration.
|
||||
$items['admin/config/development'] = array(
|
||||
'title' => 'Development',
|
||||
'description' => 'Development tools.',
|
||||
'position' => 'left',
|
||||
'weight' => 10,
|
||||
'page callback' => 'system_admin_menu_block_page',
|
||||
'access callback' => 'system_admin_menu_block_access',
|
||||
'access arguments' => array('admin/config/development', 'access administration pages'),
|
||||
'title' => 'Development',
|
||||
'description' => 'Development tools.',
|
||||
'position' => 'left',
|
||||
'weight' => 10,
|
||||
'page callback' => 'system_admin_menu_block_page',
|
||||
'access callback' => 'system_admin_menu_block_access',
|
||||
'access arguments' => array('admin/config/development', 'access administration pages'),
|
||||
'file' => 'system.admin.inc',
|
||||
);
|
||||
$items['admin/config/development/maintenance'] = array(
|
||||
'title' => 'Maintenance mode',
|
||||
|
@ -715,6 +755,7 @@ function system_menu() {
|
|||
'page callback' => 'drupal_get_form',
|
||||
'page arguments' => array('system_site_maintenance_mode'),
|
||||
'access arguments' => array('administer site configuration'),
|
||||
'file' => 'system.admin.inc',
|
||||
);
|
||||
$items['admin/config/development/performance'] = array(
|
||||
'title' => 'Performance',
|
||||
|
@ -722,15 +763,17 @@ function system_menu() {
|
|||
'page callback' => 'drupal_get_form',
|
||||
'page arguments' => array('system_performance_settings'),
|
||||
'access arguments' => array('administer site configuration'),
|
||||
'file' => 'system.admin.inc',
|
||||
);
|
||||
$items['admin/config/media'] = array(
|
||||
'title' => 'Media',
|
||||
'description' => 'Media tools.',
|
||||
'position' => 'left',
|
||||
'weight' => 10,
|
||||
'page callback' => 'system_admin_menu_block_page',
|
||||
'access callback' => 'system_admin_menu_block_access',
|
||||
'access arguments' => array('admin/config/media', 'access administration pages'),
|
||||
'title' => 'Media',
|
||||
'description' => 'Media tools.',
|
||||
'position' => 'left',
|
||||
'weight' => 10,
|
||||
'page callback' => 'system_admin_menu_block_page',
|
||||
'access callback' => 'system_admin_menu_block_access',
|
||||
'access arguments' => array('admin/config/media', 'access administration pages'),
|
||||
'file' => 'system.admin.inc',
|
||||
);
|
||||
$items['admin/config/media/file-system'] = array(
|
||||
'title' => 'File system',
|
||||
|
@ -738,6 +781,7 @@ function system_menu() {
|
|||
'page callback' => 'drupal_get_form',
|
||||
'page arguments' => array('system_file_system_settings'),
|
||||
'access arguments' => array('administer site configuration'),
|
||||
'file' => 'system.admin.inc',
|
||||
);
|
||||
$items['admin/config/media/image-toolkit'] = array(
|
||||
'title' => 'Image toolkit',
|
||||
|
@ -745,6 +789,15 @@ function system_menu() {
|
|||
'page callback' => 'drupal_get_form',
|
||||
'page arguments' => array('system_image_toolkit_settings'),
|
||||
'access arguments' => array('administer site configuration'),
|
||||
'file' => 'system.admin.inc',
|
||||
);
|
||||
$items['admin/settings/performance'] = array(
|
||||
'title' => 'Performance',
|
||||
'description' => 'Enable or disable page caching for anonymous users and set CSS and JS bandwidth optimization options.',
|
||||
'page callback' => 'drupal_get_form',
|
||||
'page arguments' => array('system_performance_settings'),
|
||||
'access arguments' => array('administer site configuration'),
|
||||
'file' => 'system.admin.inc',
|
||||
);
|
||||
$items['admin/config/development/logging'] = array(
|
||||
'title' => 'Logging and errors',
|
||||
|
@ -752,15 +805,17 @@ function system_menu() {
|
|||
'page callback' => 'drupal_get_form',
|
||||
'page arguments' => array('system_logging_settings'),
|
||||
'access arguments' => array('administer site configuration'),
|
||||
'file' => 'system.admin.inc',
|
||||
);
|
||||
$items['admin/config/regional'] = array(
|
||||
'title' => 'Regional and language',
|
||||
'description' => 'Regional settings, localization and translation.',
|
||||
'position' => 'left',
|
||||
'weight' => -7,
|
||||
'page callback' => 'system_admin_menu_block_page',
|
||||
'access callback' => 'system_admin_menu_block_access',
|
||||
'access arguments' => array('admin/config/regional', 'access administration pages'),
|
||||
'title' => 'Regional and language',
|
||||
'description' => 'Regional settings, localization and translation.',
|
||||
'position' => 'left',
|
||||
'weight' => -7,
|
||||
'page callback' => 'system_admin_menu_block_page',
|
||||
'access callback' => 'system_admin_menu_block_access',
|
||||
'access arguments' => array('admin/config/regional', 'access administration pages'),
|
||||
'file' => 'system.admin.inc',
|
||||
);
|
||||
$items['admin/config/regional/settings'] = array(
|
||||
'title' => 'Regional settings',
|
||||
|
@ -769,14 +824,16 @@ function system_menu() {
|
|||
'page arguments' => array('system_regional_settings'),
|
||||
'access arguments' => array('administer site configuration'),
|
||||
'weight' => -10,
|
||||
'file' => 'system.admin.inc',
|
||||
);
|
||||
$items['admin/config/regional/settings/lookup'] = array(
|
||||
'title' => 'Date and time lookup',
|
||||
'type' => MENU_CALLBACK,
|
||||
'page callback' => 'system_date_time_lookup',
|
||||
'access arguments' => array('administer site configuration'),
|
||||
'file' => 'system.admin.inc',
|
||||
);
|
||||
|
||||
|
||||
// Settings.
|
||||
$items['admin/settings/site-information'] = array(
|
||||
'title' => 'Site information',
|
||||
|
@ -784,6 +841,7 @@ function system_menu() {
|
|||
'page callback' => 'drupal_get_form',
|
||||
'page arguments' => array('system_site_information_settings'),
|
||||
'access arguments' => array('administer site configuration'),
|
||||
'file' => 'system.admin.inc',
|
||||
);
|
||||
$items['admin/settings/rss-publishing'] = array(
|
||||
'title' => 'RSS publishing',
|
||||
|
@ -791,6 +849,7 @@ function system_menu() {
|
|||
'page callback' => 'drupal_get_form',
|
||||
'page arguments' => array('system_rss_feeds_settings'),
|
||||
'access arguments' => array('administer site configuration'),
|
||||
'file' => 'system.admin.inc',
|
||||
);
|
||||
$items['admin/settings/clean-urls'] = array(
|
||||
'title' => 'Clean URLs',
|
||||
|
@ -798,6 +857,7 @@ function system_menu() {
|
|||
'page callback' => 'drupal_get_form',
|
||||
'page arguments' => array('system_clean_url_settings'),
|
||||
'access arguments' => array('administer site configuration'),
|
||||
'file' => 'system.admin.inc',
|
||||
);
|
||||
$items['admin/settings/clean-urls/check'] = array(
|
||||
'title' => 'Clean URL check',
|
||||
|
@ -805,6 +865,7 @@ function system_menu() {
|
|||
'page arguments' => array(array('status' => TRUE)),
|
||||
'access callback' => TRUE,
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'system.admin.inc',
|
||||
);
|
||||
|
||||
// Reports.
|
||||
|
@ -816,6 +877,7 @@ function system_menu() {
|
|||
'access arguments' => array('admin/reports', 'access site reports'),
|
||||
'weight' => 5,
|
||||
'position' => 'left',
|
||||
'file' => 'system.admin.inc',
|
||||
);
|
||||
$items['admin/reports/status'] = array(
|
||||
'title' => 'Status report',
|
||||
|
@ -823,24 +885,28 @@ function system_menu() {
|
|||
'page callback' => 'system_status',
|
||||
'weight' => 10,
|
||||
'access arguments' => array('administer site configuration'),
|
||||
'file' => 'system.admin.inc',
|
||||
);
|
||||
$items['admin/reports/status/run-cron'] = array(
|
||||
'title' => 'Run cron',
|
||||
'page callback' => 'system_run_cron',
|
||||
'access arguments' => array('administer site configuration'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'system.admin.inc',
|
||||
);
|
||||
$items['admin/reports/status/php'] = array(
|
||||
'title' => 'PHP',
|
||||
'page callback' => 'system_php',
|
||||
'access arguments' => array('administer site configuration'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'system.admin.inc',
|
||||
);
|
||||
// Default page for batch operations.
|
||||
$items['batch'] = array(
|
||||
'page callback' => 'system_batch_page',
|
||||
'access callback' => TRUE,
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'system.admin.inc',
|
||||
);
|
||||
return $items;
|
||||
}
|
||||
|
@ -1275,7 +1341,7 @@ function system_filetransfer_backends() {
|
|||
'weight' => 0,
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
if (ini_get('allow_url_fopen')) {
|
||||
$backends['ftp_wrapper'] = array(
|
||||
'title' => t('FTP using file streams'),
|
||||
|
@ -1284,7 +1350,7 @@ function system_filetransfer_backends() {
|
|||
'weight' => 10,
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
// SSH2 lib connection is only available if the proper PHP extension is
|
||||
// installed.
|
||||
if (function_exists('ssh2_connect')) {
|
||||
|
@ -1310,7 +1376,7 @@ function system_filetransfer_backends() {
|
|||
function system_get_filetransfer_settings_form($filetransfer_backend_name, $defaults) {
|
||||
$available_backends = module_invoke_all('filetransfer_backends');
|
||||
$form = call_user_func($available_backends[$filetransfer_backend_name]['settings_form']);
|
||||
|
||||
|
||||
foreach ($form as $name => &$element) {
|
||||
if (isset($defaults[$name])) {
|
||||
$element['#default_value'] = $defaults[$name];
|
||||
|
@ -1342,30 +1408,30 @@ function system_filetransfer_backend_form_ssh() {
|
|||
*/
|
||||
function _system_filetransfer_backend_form_common() {
|
||||
$form = array();
|
||||
|
||||
|
||||
$form['hostname'] = array (
|
||||
'#type' => 'textfield',
|
||||
'#title' => t('Host'),
|
||||
'#default_value' => 'localhost',
|
||||
);
|
||||
|
||||
|
||||
$form['port'] = array (
|
||||
'#type' => 'textfield',
|
||||
'#title' => t('Port'),
|
||||
'#default_value' => NULL,
|
||||
);
|
||||
|
||||
|
||||
$form['username'] = array (
|
||||
'#type' => 'textfield',
|
||||
'#title' => t('Username'),
|
||||
);
|
||||
|
||||
|
||||
$form['password'] = array (
|
||||
'#type' => 'password',
|
||||
'#title' => t('Password'),
|
||||
'#description' => t('This is not saved in the database and is only used to test the connection'),
|
||||
);
|
||||
|
||||
|
||||
return $form;
|
||||
}
|
||||
|
||||
|
@ -1644,7 +1710,7 @@ function system_admin_menu_block($item) {
|
|||
*/
|
||||
function system_check_directory($form_element) {
|
||||
$directory = $form_element['#value'];
|
||||
|
||||
|
||||
if (!is_dir($directory) && !drupal_mkdir($directory, NULL, TRUE)) {
|
||||
// If the directory does not exists and cannot be created.
|
||||
form_set_error($form_element['#parents'][0], t('The directory %directory does not exist and could not be created.', array('%directory' => $directory)));
|
||||
|
@ -1801,6 +1867,7 @@ function _system_get_module_data() {
|
|||
'version' => NULL,
|
||||
'php' => DRUPAL_MINIMUM_PHP,
|
||||
'files' => array(),
|
||||
'bootstrap' => 0,
|
||||
);
|
||||
|
||||
// Read info files for each module.
|
||||
|
@ -1839,6 +1906,22 @@ function system_get_module_data() {
|
|||
ksort($modules);
|
||||
system_get_files_database($modules, 'module');
|
||||
system_update_files_database($modules, 'module');
|
||||
// Refresh bootstrap status.
|
||||
$bootstrap_modules = array();
|
||||
foreach (bootstrap_hooks() as $hook) {
|
||||
foreach (module_implements($hook) as $module) {
|
||||
$bootstrap_modules[] = $module;
|
||||
}
|
||||
}
|
||||
$query = db_update('system')->fields(array('bootstrap' => 0));
|
||||
if ($bootstrap_modules) {
|
||||
db_update('system')
|
||||
->fields(array('bootstrap' => 1))
|
||||
->condition('name', $bootstrap_modules, 'IN')
|
||||
->execute();
|
||||
$query->condition('name', $bootstrap_modules, 'NOT IN');
|
||||
}
|
||||
$query->execute();
|
||||
$modules = _module_build_dependencies($modules);
|
||||
return $modules;
|
||||
}
|
||||
|
@ -2588,7 +2671,7 @@ function system_actions_configure($form_state, $action = NULL) {
|
|||
function system_actions_configure_validate($form, $form_state) {
|
||||
$function = actions_function_lookup($form_state['values']['actions_action']) . '_validate';
|
||||
// Hand off validation to the action.
|
||||
if (drupal_function_exists($function)) {
|
||||
if (function_exists($function)) {
|
||||
$function($form, $form_state);
|
||||
}
|
||||
}
|
||||
|
@ -2748,7 +2831,7 @@ function system_send_email_action($object, $context) {
|
|||
}
|
||||
|
||||
$recipient = token_replace($context['recipient'], $context);
|
||||
|
||||
|
||||
$language = user_preferred_language($account);
|
||||
$params = array('context' => $context);
|
||||
|
||||
|
@ -2941,10 +3024,11 @@ function theme_meta_generator_header($version = VERSION) {
|
|||
* Implement hook_image_toolkits().
|
||||
*/
|
||||
function system_image_toolkits() {
|
||||
include_once DRUPAL_ROOT . '/' . drupal_get_path('module', 'system') . '/' . 'image.gd.inc';
|
||||
return array(
|
||||
'gd' => array(
|
||||
'title' => t('GD2 image manipulation toolkit'),
|
||||
'available' => drupal_function_exists('image_gd_check_settings') && image_gd_check_settings(),
|
||||
'available' => function_exists('image_gd_check_settings') && image_gd_check_settings(),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
@ -2972,18 +3056,18 @@ function system_retrieve_file($url, $destination = NULL, $overwrite = TRUE) {
|
|||
}
|
||||
$parsed_url = parse_url($url);
|
||||
$local = is_dir(file_directory_path() . '/' . $destination) ? $destination . '/' . basename($parsed_url['path']) : $destination;
|
||||
|
||||
|
||||
if (!$overwrite && file_exists($local)) {
|
||||
drupal_set_message(t('@remote could not be saved. @local already exists', array('@remote' => $url, '@local' => $local)), 'error');
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
$result = drupal_http_request($url);
|
||||
if ($result->code != 200 || !file_save_data($result->data, $local)) {
|
||||
drupal_set_message(t('@remote could not be saved.', array('@remote' => $url)), 'error');
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
return $local;
|
||||
}
|
||||
|
||||
|
|
|
@ -196,6 +196,7 @@ function taxonomy_menu() {
|
|||
'page callback' => 'drupal_get_form',
|
||||
'page arguments' => array('taxonomy_overview_vocabularies'),
|
||||
'access arguments' => array('administer taxonomy'),
|
||||
'file' => 'taxonomy.admin.inc',
|
||||
);
|
||||
|
||||
$items['admin/structure/taxonomy/list'] = array(
|
||||
|
@ -210,6 +211,7 @@ function taxonomy_menu() {
|
|||
'page arguments' => array('taxonomy_form_vocabulary'),
|
||||
'access arguments' => array('administer taxonomy'),
|
||||
'type' => MENU_LOCAL_ACTION,
|
||||
'file' => 'taxonomy.admin.inc',
|
||||
);
|
||||
|
||||
$items['taxonomy/term/%taxonomy_term'] = array(
|
||||
|
@ -220,6 +222,7 @@ function taxonomy_menu() {
|
|||
'page arguments' => array(2),
|
||||
'access arguments' => array('access content'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'taxonomy.pages.inc',
|
||||
);
|
||||
|
||||
$items['taxonomy/term/%taxonomy_term/view'] = array(
|
||||
|
@ -234,6 +237,7 @@ function taxonomy_menu() {
|
|||
'access arguments' => array('administer taxonomy'),
|
||||
'type' => MENU_LOCAL_TASK,
|
||||
'weight' => 10,
|
||||
'file' => 'taxonomy.pages.inc',
|
||||
);
|
||||
$items['taxonomy/term/%taxonomy_term/feed'] = array(
|
||||
'title' => 'Taxonomy term',
|
||||
|
@ -243,12 +247,14 @@ function taxonomy_menu() {
|
|||
'page arguments' => array(2),
|
||||
'access arguments' => array('access content'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'taxonomy.feeds.inc',
|
||||
);
|
||||
$items['taxonomy/autocomplete'] = array(
|
||||
'title' => 'Autocomplete taxonomy',
|
||||
'page callback' => 'taxonomy_autocomplete',
|
||||
'access arguments' => array('access content'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'taxonomy.pages.inc',
|
||||
);
|
||||
// TODO: remove with taxonomy_term_node_*
|
||||
$items['taxonomy/autocomplete/legacy'] = array(
|
||||
|
@ -266,6 +272,7 @@ function taxonomy_menu() {
|
|||
'title arguments' => array(3),
|
||||
'access arguments' => array('administer taxonomy'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'taxonomy.admin.inc',
|
||||
);
|
||||
|
||||
$items['admin/structure/taxonomy/%taxonomy_vocabulary/edit'] = array(
|
||||
|
@ -281,6 +288,7 @@ function taxonomy_menu() {
|
|||
'access arguments' => array('administer taxonomy'),
|
||||
'type' => MENU_LOCAL_TASK,
|
||||
'weight' => -10,
|
||||
'file' => 'taxonomy.admin.inc',
|
||||
);
|
||||
|
||||
$items['admin/structure/taxonomy/%taxonomy_vocabulary/list/add'] = array(
|
||||
|
@ -289,6 +297,7 @@ function taxonomy_menu() {
|
|||
'page arguments' => array('taxonomy_form_term', 3),
|
||||
'access arguments' => array('administer taxonomy'),
|
||||
'type' => MENU_LOCAL_ACTION,
|
||||
'file' => 'taxonomy.admin.inc',
|
||||
);
|
||||
|
||||
return $items;
|
||||
|
@ -1933,7 +1942,7 @@ function taxonomy_field_schema($field) {
|
|||
function taxonomy_field_validate($obj_type, $object, $field, $instance, $langcode, $items, &$errors) {
|
||||
$allowed_values = taxonomy_allowed_values($field);
|
||||
$widget = field_info_widget_types($instance['widget']['type']);
|
||||
|
||||
|
||||
// Check we don't exceed the allowed number of values for widgets with custom
|
||||
// behavior for multiple values (taxonomy_autocomplete widget).
|
||||
if ($widget['behaviors']['multiple values'] == FIELD_BEHAVIOR_CUSTOM && $field['cardinality'] >= 2) {
|
||||
|
@ -2092,7 +2101,7 @@ function _taxonomy_clean_field_cache($term) {
|
|||
foreach ($field['settings']['allowed_values'] as $tree) {
|
||||
$vids[$tree['vid']] = $tree['vid'];
|
||||
}
|
||||
|
||||
|
||||
// Check this term's vocabulary against those used for the field's options.
|
||||
if (in_array($term->vid, $vids)) {
|
||||
$conditions = array(array('value', $term->tid));
|
||||
|
|
|
@ -82,6 +82,7 @@ function taxonomy_term_feed($term) {
|
|||
function taxonomy_term_edit($term) {
|
||||
if (isset($term)) {
|
||||
drupal_set_title($term->name);
|
||||
include_once DRUPAL_ROOT . '/'. drupal_get_path('module', 'taxonomy') . '/taxonomy.admin.inc';
|
||||
return drupal_get_form('taxonomy_form_term', taxonomy_vocabulary_load($term->vid), (array)$term);
|
||||
}
|
||||
return drupal_not_found();
|
||||
|
|
|
@ -28,6 +28,7 @@ function tracker_menu() {
|
|||
'page callback' => 'tracker_page',
|
||||
'access arguments' => array('access content'),
|
||||
'weight' => 1,
|
||||
'file' => 'tracker.pages.inc',
|
||||
);
|
||||
$items['tracker/all'] = array(
|
||||
'title' => 'All recent posts',
|
||||
|
@ -48,6 +49,7 @@ function tracker_menu() {
|
|||
'access callback' => '_tracker_user_access',
|
||||
'access arguments' => array(1),
|
||||
'type' => MENU_LOCAL_TASK,
|
||||
'file' => 'tracker.pages.inc',
|
||||
);
|
||||
$items['user/%user/track/posts'] = array(
|
||||
'title' => 'Track posts',
|
||||
|
|
|
@ -63,6 +63,7 @@ function translation_menu() {
|
|||
'access arguments' => array(1),
|
||||
'type' => MENU_LOCAL_TASK,
|
||||
'weight' => 2,
|
||||
'file' => 'translation.pages.inc',
|
||||
);
|
||||
return $items;
|
||||
}
|
||||
|
|
|
@ -40,6 +40,7 @@ function trigger_menu() {
|
|||
'description' => 'Tell Drupal when to execute actions.',
|
||||
'page callback' => 'trigger_assign',
|
||||
'access arguments' => array('administer actions'),
|
||||
'file' => 'trigger.admin.inc',
|
||||
);
|
||||
|
||||
// Explicitly define the system menu item so we can label it "cron" rather
|
||||
|
@ -50,6 +51,7 @@ function trigger_menu() {
|
|||
'page arguments' => array('system'),
|
||||
'access arguments' => array('administer actions'),
|
||||
'type' => MENU_LOCAL_TASK,
|
||||
'file' => 'trigger.admin.inc',
|
||||
);
|
||||
|
||||
// We want contributed modules to be able to describe
|
||||
|
@ -73,6 +75,7 @@ function trigger_menu() {
|
|||
'page arguments' => array($module),
|
||||
'access arguments' => array('administer actions'),
|
||||
'type' => MENU_LOCAL_TASK,
|
||||
'file' => 'trigger.admin.inc',
|
||||
);
|
||||
}
|
||||
$items['admin/structure/trigger/unassign'] = array(
|
||||
|
@ -82,6 +85,7 @@ function trigger_menu() {
|
|||
'page arguments' => array('trigger_unassign'),
|
||||
'access arguments' => array('administer actions'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'trigger.admin.inc',
|
||||
);
|
||||
|
||||
return $items;
|
||||
|
|
|
@ -132,6 +132,7 @@ function update_menu() {
|
|||
'page callback' => 'update_status',
|
||||
'access arguments' => array('administer site configuration'),
|
||||
'weight' => 10,
|
||||
'file' => 'update.report.inc',
|
||||
);
|
||||
$items['admin/settings/updates'] = array(
|
||||
'title' => 'Updates',
|
||||
|
@ -139,12 +140,14 @@ function update_menu() {
|
|||
'page callback' => 'drupal_get_form',
|
||||
'page arguments' => array('update_settings'),
|
||||
'access arguments' => array('administer site configuration'),
|
||||
'file' => 'update.settings.inc',
|
||||
);
|
||||
$items['admin/reports/updates/check'] = array(
|
||||
'title' => 'Manual update check',
|
||||
'page callback' => 'update_manual_status',
|
||||
'access arguments' => array('administer site configuration'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'update.fetch.inc',
|
||||
);
|
||||
|
||||
return $items;
|
||||
|
|
|
@ -99,6 +99,7 @@ function upload_menu() {
|
|||
'page arguments' => array('upload_admin_settings'),
|
||||
'access arguments' => array('administer site configuration'),
|
||||
'type' => MENU_NORMAL_ITEM,
|
||||
'file' => 'upload.admin.inc',
|
||||
);
|
||||
return $items;
|
||||
}
|
||||
|
|
|
@ -938,41 +938,3 @@ function theme_user_filters($form) {
|
|||
|
||||
return $output;
|
||||
}
|
||||
|
||||
/**
|
||||
* Implementation of hook_modules_installed().
|
||||
*/
|
||||
function user_modules_installed($modules) {
|
||||
// Assign all available permissions to the administrator role.
|
||||
$rid = variable_get('user_admin_role', 0);
|
||||
if ($rid) {
|
||||
foreach ($modules as $module) {
|
||||
if ($permissions = module_invoke($module, 'permission')) {
|
||||
foreach (array_keys($permissions) as $permission) {
|
||||
db_insert('role_permission')
|
||||
->fields(array(
|
||||
'rid' => $rid,
|
||||
'permission' => $permission,
|
||||
))->execute();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Implement hook_modules_uninstalled().
|
||||
*/
|
||||
function user_modules_uninstalled($modules) {
|
||||
$permissions = array();
|
||||
foreach ($modules as $module) {
|
||||
if (drupal_function_exists($module . '_permission')) {
|
||||
$permissions = array_merge($permissions, array_keys(module_invoke($module, 'permission')));
|
||||
}
|
||||
}
|
||||
if (!empty($permissions)) {
|
||||
db_delete('role_permission')
|
||||
->condition('permission', $permissions, 'IN')
|
||||
->execute();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -433,7 +433,7 @@ function user_save($account, $edit = array(), $category = 'account') {
|
|||
if (($picture->status & FILE_STATUS_PERMANENT) == 0) {
|
||||
$info = image_get_info($picture->uri);
|
||||
$picture_directory = variable_get('file_default_scheme', 'public') . '://' . variable_get('user_picture_path', 'pictures');
|
||||
|
||||
|
||||
// Prepare the pictures directory.
|
||||
file_prepare_directory($picture_directory, FILE_CREATE_DIRECTORY);
|
||||
$destination = file_stream_wrapper_uri_normalize($picture_directory . '/picture-' . $account->uid . '.' . $info['extension']);
|
||||
|
@ -1298,6 +1298,7 @@ function user_menu() {
|
|||
'access callback' => 'user_access',
|
||||
'access arguments' => array('access user profiles'),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'user.pages.inc',
|
||||
);
|
||||
|
||||
// Registration and login pages.
|
||||
|
@ -1306,6 +1307,7 @@ function user_menu() {
|
|||
'page callback' => 'user_page',
|
||||
'access callback' => TRUE,
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'user.pages.inc',
|
||||
);
|
||||
|
||||
$items['user/login'] = array(
|
||||
|
@ -1328,6 +1330,7 @@ function user_menu() {
|
|||
'page arguments' => array('user_pass'),
|
||||
'access callback' => 'user_is_anonymous',
|
||||
'type' => MENU_LOCAL_TASK,
|
||||
'file' => 'user.pages.inc',
|
||||
);
|
||||
$items['user/reset/%/%/%'] = array(
|
||||
'title' => 'Reset password',
|
||||
|
@ -1335,6 +1338,7 @@ function user_menu() {
|
|||
'page arguments' => array('user_pass_reset', 2, 3, 4),
|
||||
'access callback' => TRUE,
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'user.pages.inc',
|
||||
);
|
||||
|
||||
$items['user/logout'] = array(
|
||||
|
@ -1343,6 +1347,7 @@ function user_menu() {
|
|||
'page callback' => 'user_logout',
|
||||
'weight' => 10,
|
||||
'menu_name' => 'user-menu',
|
||||
'file' => 'user.pages.inc',
|
||||
);
|
||||
|
||||
// User listing pages.
|
||||
|
@ -1354,6 +1359,7 @@ function user_menu() {
|
|||
'access arguments' => array('administer users'),
|
||||
'position' => 'left',
|
||||
'weight' => -4,
|
||||
'file' => 'user.admin.inc',
|
||||
);
|
||||
$items['admin/people/list'] = array(
|
||||
'title' => 'List',
|
||||
|
@ -1382,6 +1388,7 @@ function user_menu() {
|
|||
'page callback' => 'drupal_get_form',
|
||||
'page arguments' => array('user_admin_settings'),
|
||||
'access arguments' => array('administer users'),
|
||||
'file' => 'user.admin.inc',
|
||||
'weight' => -10,
|
||||
);
|
||||
$items['admin/config/people/accounts/settings'] = array(
|
||||
|
@ -1397,6 +1404,7 @@ function user_menu() {
|
|||
'page callback' => 'drupal_get_form',
|
||||
'page arguments' => array('user_admin_new_role'),
|
||||
'access arguments' => array('administer permissions'),
|
||||
'file' => 'user.admin.inc',
|
||||
'weight' => -9,
|
||||
);
|
||||
$items['admin/config/people/roles/edit'] = array(
|
||||
|
@ -1411,6 +1419,7 @@ function user_menu() {
|
|||
'page callback' => 'drupal_get_form',
|
||||
'page arguments' => array('user_admin_permissions'),
|
||||
'access arguments' => array('administer permissions'),
|
||||
'file' => 'user.admin.inc',
|
||||
'weight' => -8,
|
||||
);
|
||||
|
||||
|
@ -1424,6 +1433,7 @@ function user_menu() {
|
|||
'access arguments' => array(1),
|
||||
'weight' => -10,
|
||||
'menu_name' => 'user-menu',
|
||||
'file' => 'user.pages.inc',
|
||||
);
|
||||
|
||||
$items['user/%user/view'] = array(
|
||||
|
@ -1439,6 +1449,7 @@ function user_menu() {
|
|||
'access callback' => 'user_cancel_access',
|
||||
'access arguments' => array(1),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'user.pages.inc',
|
||||
);
|
||||
|
||||
$items['user/%user/cancel/confirm/%/%'] = array(
|
||||
|
@ -1448,6 +1459,7 @@ function user_menu() {
|
|||
'access callback' => 'user_cancel_access',
|
||||
'access arguments' => array(1),
|
||||
'type' => MENU_CALLBACK,
|
||||
'file' => 'user.pages.inc',
|
||||
);
|
||||
|
||||
$items['user/%user/edit'] = array(
|
||||
|
@ -1457,6 +1469,7 @@ function user_menu() {
|
|||
'access callback' => 'user_edit_access',
|
||||
'access arguments' => array(1),
|
||||
'type' => MENU_LOCAL_TASK,
|
||||
'file' => 'user.pages.inc',
|
||||
);
|
||||
|
||||
$items['user/%user_category/edit/account'] = array(
|
||||
|
@ -1480,6 +1493,7 @@ function user_menu() {
|
|||
'weight' => $category['weight'],
|
||||
'load arguments' => array('%map', '%index'),
|
||||
'tab_parent' => 'user/%/edit',
|
||||
'file' => 'user.pages.inc',
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -1711,7 +1725,7 @@ function user_login_authenticate_validate($form, &$form_state) {
|
|||
|
||||
/**
|
||||
* The final validation handler on the login form.
|
||||
*
|
||||
*
|
||||
* Sets a form error if user has not been authenticated, or if too many
|
||||
* logins have been attempted. This validation function should always
|
||||
* be the last one.
|
||||
|
@ -3025,3 +3039,41 @@ function _user_forms(&$edit, $account, $category, $hook = 'form') {
|
|||
return empty($groups) ? FALSE : $groups;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Implementation of hook_modules_installed().
|
||||
*/
|
||||
function user_modules_installed($modules) {
|
||||
// Assign all available permissions to the administrator role.
|
||||
$rid = variable_get('user_admin_role', 0);
|
||||
if ($rid) {
|
||||
foreach ($modules as $module) {
|
||||
if ($permissions = module_invoke($module, 'permission')) {
|
||||
foreach (array_keys($permissions) as $permission) {
|
||||
db_insert('role_permission')
|
||||
->fields(array(
|
||||
'rid' => $rid,
|
||||
'permission' => $permission,
|
||||
))->execute();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Implement hook_modules_uninstalled().
|
||||
*/
|
||||
function user_modules_uninstalled($modules) {
|
||||
$permissions = array();
|
||||
foreach ($modules as $module) {
|
||||
if (function_exists($module . '_permission')) {
|
||||
$permissions = array_merge($permissions, array_keys(module_invoke($module, 'permission')));
|
||||
}
|
||||
}
|
||||
if (!empty($permissions)) {
|
||||
db_delete('role_permission')
|
||||
->condition('permission', $permissions, 'IN')
|
||||
->execute();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -281,7 +281,7 @@ if (empty($op) && $update_access_allowed) {
|
|||
include_once DRUPAL_ROOT . '/includes/module.inc';
|
||||
$module_list['system']['filename'] = 'modules/system/system.module';
|
||||
$module_list['filter']['filename'] = 'modules/filter/filter.module';
|
||||
module_list(TRUE, FALSE, $module_list);
|
||||
module_list(TRUE, FALSE, FALSE, $module_list);
|
||||
drupal_load('module', 'system');
|
||||
drupal_load('module', 'filter');
|
||||
|
||||
|
|
Loading…
Reference in New Issue