Changeset 10912 for trunk/wp-admin/admin-ajax.php
- Timestamp:
- 04/11/2009 02:37:24 PM (17 years ago)
- File:
-
- 1 edited
-
trunk/wp-admin/admin-ajax.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/wp-admin/admin-ajax.php
r10909 r10912 1269 1269 die; 1270 1270 break; 1271 case 'widgets-order' : 1272 check_ajax_referer( 'save-sidebar-widgets', 'savewidgets' ); 1273 1274 if ( !current_user_can('switch_themes') ) 1275 die('-1'); 1276 1277 unset( $_POST['savewidgets'], $_POST['action'] ); 1278 $sidebars_widgets = array('array_version' => 3); 1279 1280 foreach ( $_POST as $key => $val ) { 1281 if ( preg_match( '/^(wp_inactive_widgets|sidebar-[0-9]+)$/', $key ) ) { 1282 if ( preg_match( '/^[0-9a-z,_-]+$/i', $val ) ) { 1283 $val = explode(',', $val); 1284 1285 foreach ( $val as $k => $v ) { 1286 $val[$k] = substr($v, strpos($v, '_') + 1); 1287 } 1288 } elseif ( '' == $val ) { 1289 $val = array(); 1290 } else { 1291 die('-1'); 1292 } 1293 1294 $sidebars_widgets[$key] = $val; 1295 } 1296 } 1297 1298 wp_set_sidebars_widgets($sidebars_widgets); 1299 1300 die('1'); 1301 break; 1302 case 'save-widget' : 1303 check_ajax_referer( 'save-sidebar-widgets', 'savewidgets' ); 1304 1305 if ( !current_user_can('switch_themes') ) 1306 die('-1'); 1307 1308 unset( $_POST['savewidgets'], $_POST['action'] ); 1309 1310 $number = isset($_POST['widget_number']) ? $_POST['widget_number'] : ''; 1311 if ( isset($_POST['id_base']) ) 1312 $id_base = $_POST['id_base']; 1313 else 1314 die('-1'); 1315 1316 $sidebar_id = (string) $_POST['sidebar']; 1317 $sidebars = wp_get_sidebars_widgets(); 1318 $sidebar = isset($sidebars[$sidebar_id]) ? $sidebars[$sidebar_id] : array(); 1319 1320 // delete 1321 if ( isset($_POST['delete_widget']) && $_POST['delete_widget'] ) { 1322 $del_id = $_POST['widget-id']; 1323 $widget = isset($wp_registered_widgets[$del_id]) ? $wp_registered_widgets[$del_id] : false; 1324 1325 if ( !in_array($del_id, $sidebar, true) || !$widget ) 1326 die('-1'); 1327 1328 $option = str_replace( '-', '_', 'widget_' . $id_base ); 1329 $data = get_option($option); 1330 1331 if ( isset($widget['params'][0]['number']) ) { 1332 $number = $widget['params'][0]['number']; 1333 if ( is_array($data) && isset($data[$number]) ) { 1334 unset( $data[$number] ); 1335 update_option($option, $data); 1336 } 1337 } else { 1338 if ( $data ) { 1339 $data = array(); 1340 update_option($option, $data); 1341 } 1342 } 1343 1344 $sidebar = array_diff( $sidebar, array($del_id) ); 1345 $sidebars[$sidebar_id] = $sidebar; 1346 wp_set_sidebars_widgets($sidebars); 1347 1348 echo "deleted:$del_id"; 1349 die(); 1350 } 1351 1352 // save 1353 foreach ( (array) $wp_registered_widget_updates as $name => $control ) { 1354 if ( $name == $id_base ) { 1355 if ( !is_callable( $control['callback'] ) ) 1356 continue; 1357 1358 if ( $number ) { 1359 // don't delete other instances of the same multi-widget 1360 foreach ( $sidebar as $_widget_id ) { 1361 if ( isset($wp_registered_widgets[$_widget_id]['params'][0]['number']) ) 1362 unset($wp_registered_widgets[$_widget_id]['params'][0]['number']); 1363 } 1364 } 1365 1366 ob_start(); 1367 call_user_func_array( $control['callback'], $control['params'] ); 1368 ob_end_clean(); 1369 break; 1370 } 1371 } 1372 1373 die('1'); 1374 break; 1271 1375 default : 1272 1376 do_action( 'wp_ajax_' . $_POST['action'] );
Note: See TracChangeset
for help on using the changeset viewer.