flatpress /branches/coding-style/fp-includes/core/core.wp-plugin-interface.php

Language PHP Lines 271
MD5 Hash 4635b0a427fa89c8149e38682416a0f9 Estimated Cost $2,763 (why?)
Repository https://bitbucket.org/alexandrul/flatpress View Raw File View Project SPDX
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
<?php

// plugins.php
// plugin interface
// This is EXACTLY a copy & paste from wordpress
// DMKE: Erm... not more. It is formatted ;-)
// Filters: these are the core of WP's plugin architecture

/**
 * Enter description here...
 *
 * @global $wp_filter
 * @param string $tag
 */
function merge_filters($tag) {
	global $wp_filter;
	if (isset($wp_filter['all'])) {
		foreach ($wp_filter['all'] as $priority => $functions) {
			if (isset($wp_filter[$tag][$priority])) {
				$wp_filter[$tag][$priority] = array_merge($wp_filter['all'][$priority], $wp_filter[$tag][$priority]);
			} else {
				$wp_filter[$tag][$priority] = array_merge($wp_filter['all'][$priority], array());
			}
			$wp_filter[$tag][$priority] = array_unique($wp_filter[$tag][$priority]);
		}
	}
	if (isset($wp_filter[$tag])) {
		ksort($wp_filter[$tag]);
	}
}

/**
 * Applies all $tag related filters.
 *
 * @global $wp_filter
 * @param string $tag
 * @param string $string
 * @return mixed
 */
function apply_filters($tag, $string) {
	global $wp_filter;
	$args = array_slice(func_get_args(), 2);
	merge_filters($tag);
	if (!isset($wp_filter[$tag])) {
		return $string;
	}
	foreach ($wp_filter[$tag] as $priority => $functions) {
		if (!is_null($functions)) {
			foreach($functions as $function) {
				$all_args = array_merge(array($string), $args);
				$function_name = $function['function'];
				$accepted_args = $function['accepted_args'];
				if($accepted_args == 1) {
					$the_args = array($string);
				} elseif ($accepted_args > 1) {
					$the_args = array_slice($all_args, 0, $accepted_args);
				} elseif($accepted_args == 0) {
					$the_args = NULL;
				} else {
					$the_args = $all_args;
				}
				$string = call_user_func_array($function_name, $the_args);
			}
		}
	}
	return $string;
}

/**
 * Adds a filter.
 *
 * @global $wp_filter
 * @param string $tag
 * @param string $function_to_add
 * @param int $priority
 * @param int $accepted_args
 * @return boolean
 */
function add_filter($tag, $function_to_add, $priority = 10, $accepted_args = 1) {
	global $wp_filter;
	// check that we don't already have the same filter at the same priority
	if (isset($wp_filter[$tag]["$priority"])) {
		foreach($wp_filter[$tag]["$priority"] as $filter) {
			// uncomment if we want to match function AND accepted_args
			//if ($filter == array($function, $accepted_args)) {
			if ($filter['function'] == $function_to_add) {
				return true;
			}
		}
	}
	// So the format is wp_filter['tag']['array of priorities']['array of ['array (functions, accepted_args)]']
	$wp_filter[$tag]["$priority"][] = array(
		'function' => $function_to_add,
		'accepted_args' => $accepted_args
	);
	//added by NoWhereMan
	ksort($wp_filter[$tag]["$priority"]);
	return true;
}

/**
 * Deletes a filter.
 *
 * @global $wp_filter
 * @param string $tag
 * @param string $function_to_remove
 * @param inr $priority
 * @param int $accepted_args
 * @return boolean
 */
function remove_filter($tag, $function_to_remove, $priority = 10, $accepted_args = 1) {
	global $wp_filter;
	$new_function_list = array();
	// rebuild the list of filters
	if (isset($wp_filter[$tag]["$priority"])) {
		foreach($wp_filter[$tag]["$priority"] as $filter) {
			if ($filter['function'] != $function_to_remove) {
				$new_function_list[] = $filter;
			}
		}
		$wp_filter[$tag]["$priority"] = $new_function_list;
	}
	return true;
}

// The *_action functions are just aliases for the *_filter functions,
// they take special strings instead of generic content

/**
 * Applies an action.
 *
 * @param string $tag
 * @param mixed $arg
 */
function do_action($tag, $arg = '') {
	global $wp_filter;
	$extra_args = array_slice(func_get_args(), 2);
	if (is_array($arg)) {
		$args = array_merge($arg, $extra_args);
	} else {
		$args = array_merge(array($arg), $extra_args);
	}
	merge_filters($tag);
	if (!isset($wp_filter[$tag])) {
		return;
	}
	foreach ($wp_filter[$tag] as $priority => $functions) {
		if (!is_null($functions)) {
			foreach($functions as $function) {
				$function_name = $function['function'];
				$accepted_args = $function['accepted_args'];
				if ($accepted_args == 1) {
					if (is_array($arg)) {
						$the_args = $arg;
					} else {
						$the_args = array($arg);
					}
				} elseif ($accepted_args > 1) {
					$the_args = array_slice($args, 0, $accepted_args);
				} elseif($accepted_args == 0) {
					$the_args = NULL;
				} else {
					$the_args = $args;
				}
				$string = call_user_func_array($function_name, $the_args);
			}
		}
	}
}

/**
 * Add an action.
 *
 * @param string $tag
 * @param string $function_to_add
 * @param int $priority
 * @param int $accepted_args
 */
function add_action($tag, $function_to_add, $priority = 10, $accepted_args = 1) {
	add_filter($tag, $function_to_add, $priority, $accepted_args);
}

/**
 * Removes an action.
 *
 * @param string $tag
 * @param string $function_to_remove
 * @param int $priority
 * @param int $accepted_args
 */
function remove_action($tag, $function_to_remove, $priority = 10, $accepted_args = 1) {
	remove_filter($tag, $function_to_remove, $priority, $accepted_args);
}


//----------------------------------------------------------------------------
// WordPress hooks
//----------------------------------------------------------------------------
 /*
 Current Hooks For Actions 
This is a comprehensive list of plugin hooks in the core distribution of WordPress as of version 1.5 beta 1. 

NOTE: the following list is not a comprehensive listing of hooks available in 1.5 final. See Skippy's list (http://codex.wordpress.org/User:Skippy) for a more comprehensive, if less descriptive, listing of actions and filters. 

admin_footer 
	No parameter. Executes at the end of the admin panel inside the body tag. Useful for insertion of additional content. 
admin_head 
	No parameter. Executes in the <head> section of the admin panel. Useful for insertion of additional content. 
admin_menu 
	No parameter. Executes after the basic admin panel menu structure is in place. Useful for adding additional menus to the admin panel. 
comment_closed 
	Receives the comment's post ID as a parameter. Executes when attempting to display the comment form for a post that has closed comments. 
comment_form 
	Receives the comment's post ID as a parameter. Template tag. Executes after displaying the comment form for a post that allows comments. 
comment_id_not_found 
	Receives the comment's post ID as a parameter. Executes when attempting to display the comment form for a post that does not exist. 
comment_post 
	Receives the comment ID as a parameter. Executes when a comment is added through wp-comments.php. 
delete_comment 
	Receives the comment ID as a parameter. Executes when a comment is deleted. 
delete_post 
	Receives the post ID as a parameter. Executes whenever a post is deleted. 
edit_comment 
	Receives the comment ID as a parameter. Executes whenever a comment is edited. 
edit_form_advanced 
	No parameter. Executes during the display of the admin panel's advanced editing page, just before the <div> is closed that contains the post content textarea. Useful for inserting additional input fields into the advanced editing form. 
edit_page_form 
	No parameter. Executes inside the <form> tag on the page editing form. Useful for inserting additional input fields in the page editing form. 
edit_post 
	Receives the post ID as a parameter. Executes every time a post is edited. 
generate_rewrite_rules 
	No parameter. Executes whenever the rewrite rules are recomputed. To modify the computed rules, use the filter rewrite_rules_array instead. 
init 
	Executes after WordPress has finished loading but before any headers are sent. Useful for intercepting $_GET or $_POST triggers. 
pingback_post 
	Receives the comment ID as a parameter. Executes when a comment is added via XMLRPC. 
private_to_published 
	Receives the post ID as a parameter. Executes when a post is moved from private to published status. 
publish_phone 
	Receives the post ID as a parameter. Executes when a post is added via wp-mail.php. 
publish_post 
	Receives the post ID as a parameter. Executes when a post is saved and its status is set to "publish", regardless of its prior setting. NOTE: to add a hook to this action in 1.2, be sure to specify a priority between 0 and 9. The generic_ping hook is buggy and prevents any lesser priority hooks from working. 
save_post 
	Receives the post ID as a parameter. Executes when a post is saved to the database. 
shutdown 
	No parameter. Executes when the page output is complete. 
simple_edit_form 
	No parameter. Executes during the display of the admin panel's simple editing page, just before the <div> is closed that contains the post content textarea. Useful for inserting additional input fields into the simple editing form. 
switch_theme 
	Receives the name of the current theme as a parameter. Executes when the blog theme is changed. 
template_redirect 
	No parameter. Executes before the determination of the template file to be used to display the requested page. Useful for providing additional templates based on request criteria. Example (pedagogical, not useful): Redirect all requests to the all.php template file in the current themes' directory. 
function all_on_one () {
	include(TEMPLATEPATH . '/all.php');
	exit;
}

add_action('template_redirect', 'all_on_one');
trackback_post 
	Receives the comment ID as a parameter. Executes when a comment is added via trackback.php. 
wp_footer 
	No parameter. Template tag. Executes at the end of the <body> tag. Useful for insertion of additional content. 
wp_head 
	No parameter. Executes in the <head> section. Useful for insertion of additional content. 
wp_meta 
	No parameter. Executes in the <li>Meta</li> section of the included Theme's sidebar.php's. Useful for insertion of additional content. 
wp_set_comment_status 
	Receives the comment ID as a parameter. Executes when the comment status changes. 
*/

?>
Back to Top