Make WordPress Core


Ignore:
Timestamp:
04/11/2009 02:37:24 PM (17 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.