WordPress.org

Make WordPress Core


Ignore:
Timestamp:
04/11/2009 02:37:24 PM (11 years ago)
Author:
azaozz
Message:

Widgets page, first run, see #9511

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/admin-ajax.php

    r10909 r10912  
    12691269    die;
    12701270    break;
     1271case '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;
     1302case '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;
    12711375default :
    12721376    do_action( 'wp_ajax_' . $_POST['action'] );
Note: See TracChangeset for help on using the changeset viewer.