public static function loadAllItemsFromBasket()
 {
     // load all items from basket
     $items = array();
     $itemids = RoleTaxonomy::getCurrentBasket();
     // get_user_meta(get_current_user_id(), 'itembasket', true);
     if ($itemids == null) {
         $itemids = array();
     }
     $itemids_new = array();
     foreach ($itemids as $item_id) {
         $post = get_post($item_id);
         if ($post == null) {
             continue;
         }
         $item = null;
         if ($post->post_type == 'itemsc') {
             $item = new EAL_ItemSC();
         }
         if ($post->post_type == 'itemmc') {
             $item = new EAL_ItemMC();
         }
         if ($item == null) {
             continue;
         }
         $item->loadById($item_id);
         if (RoleTaxonomy::getCurrentRoleDomain()["name"] != "" && $item->domain != RoleTaxonomy::getCurrentRoleDomain()["name"]) {
             continue;
         }
         array_push($items, $item);
         array_push($itemids_new, $item_id);
     }
     RoleTaxonomy::setCurrentBasket($itemids_new);
     // update_user_meta (get_current_user_id(), 'itembasket', $itemids_new);
     return $items;
 }
 function custom_bulk_action()
 {
     if ($_REQUEST["post_type"] != $this->type) {
         return;
     }
     global $wpdb;
     $wp_list_table = _get_list_table('WP_Posts_List_Table');
     if ($wp_list_table->current_action() == 'view') {
         if (substr($_REQUEST['post_type'], 0, 4) == 'item') {
             $sendback = add_query_arg('itemids', $_REQUEST['post'], 'edit.php?page=view&post_type=itembasket');
             wp_redirect($sendback);
             exit;
         }
         if ($_REQUEST['post_type'] == 'learnout') {
             $sendback = add_query_arg('learnoutids', $_REQUEST['post'], 'edit.php?page=view&post_type=itembasket');
             wp_redirect($sendback);
             exit;
         }
         if ($_REQUEST['post_type'] == 'review') {
             $sendback = add_query_arg('reviewids', $_REQUEST['post'], 'edit.php?page=view&post_type=itembasket');
             wp_redirect($sendback);
             exit;
         }
     }
     if ($wp_list_table->current_action() == 'mark' || $wp_list_table->current_action() == 'unmark') {
         if (substr($_REQUEST['post_type'], 0, 4) == 'item') {
             /* get array of postids */
             $postids = $_REQUEST['post'];
             if (!is_array($postids)) {
                 $postids = [$postids];
             }
             if (count($postids) > 0) {
                 $sql = sprintf("UPDATE {$wpdb->prefix}eal_item SET flag = %d WHERE id IN (%s)", $wp_list_table->current_action() == 'mark' ? 1 : 0, join(",", $postids));
                 $wpdb->query($sql);
             }
         }
     }
     if ($wp_list_table->current_action() == 'setpublished' || $wp_list_table->current_action() == 'setpending' || $wp_list_table->current_action() == 'setdraft') {
         $status = "publish";
         if ($wp_list_table->current_action() == 'setpending') {
             $status = "pending";
         }
         if ($wp_list_table->current_action() == 'setdraft') {
             $status = "draft";
         }
         /* get array of postids */
         $postids = $_REQUEST['post'];
         if (!is_array($postids)) {
             $postids = [$postids];
         }
         if (count($postids) > 0) {
             $sql = sprintf("UPDATE {$wpdb->posts} SET post_status = '%s' WHERE id IN (%s)", $status, join(",", $postids));
             $wpdb->query($sql);
         }
     }
     /* Add Items to Basket */
     if ($wp_list_table->current_action() == 'add_to_basket') {
         /* get array of postids */
         $postids = $_REQUEST['post'];
         if (!is_array($postids)) {
             $postids = [$postids];
         }
         $basket_old = RoleTaxonomy::getCurrentBasket();
         // get_user_meta(get_current_user_id(), 'itembasket', true);
         if ($basket_old == null) {
             $basket_old = array();
         }
         if (count($basket_old) == 0) {
             $basket_old = [-1];
         }
         // dummy basket to make sure SQLL works
         /* get Items from Learning Outcomes */
         $sql = "SELECT P.id FROM {$wpdb->prefix}eal_item I JOIN {$wpdb->prefix}posts P ON (P.ID = I.ID) WHERE P.post_parent = 0 AND ";
         $sql .= sprintf('( %1$s IN (%2$s) OR I.id IN (%3$s) )', $_REQUEST['post_type'] == 'learnout' ? 'I.learnout_id' : 'I.id', join(", ", $postids), join(", ", $basket_old));
         $itemids = $wpdb->get_col($sql);
         RoleTaxonomy::setCurrentBasket($itemids);
         // $x = update_user_meta( get_current_user_id(), 'itembasket', $itemids);
     }
     if ($wp_list_table->current_action() == 'remove_from_basket') {
         $b_old = RoleTaxonomy::getCurrentBasket();
         // get_user_meta(get_current_user_id(), 'itembasket', true);
         $b_new = $b_old;
         if (isset($_REQUEST["post"])) {
             $b_new = array_diff($b_old, $_REQUEST['post']);
         }
         if ($_REQUEST['itemid'] != null) {
             $b_new = array_diff($b_old, [$_REQUEST['itemid']]);
         }
         if ($_REQUEST['itemids'] != null) {
             $b_new = array_diff($b_old, $_REQUEST['itemids']);
         }
         RoleTaxonomy::setCurrentBasket($b_new);
         // $x = update_user_meta( get_current_user_id(), 'itembasket', $b_new, $b_old );
     }
 }