function preAction()
 {
     xoonips_allow_post_method();
     if (!$GLOBALS['xoopsGTicket']->check(true, 'xoonips_transfer_admin_list_item', false)) {
         die('ticket error');
     }
     global $xoopsUser;
     $from_uid = $this->_formdata->getValue('post', 'from_uid', 'i', true);
     $to_uid = $this->_formdata->getValue('post', 'to_uid', 'i', true);
     $to_index_id = $this->_formdata->getValue('post', 'to_index_id', 'i', true);
     $transfer_item_ids = array_merge($this->get_item_ids_to_transfer(), $this->get_child_item_ids_to_transfer());
     if (!xoonips_transfer_is_transferrable($from_uid, $to_uid, $transfer_item_ids)) {
         redirect_header(XOOPS_URL . '/modules/xoonips/admin/maintenance.php?' . 'page=item&action=transfer_admin_initialize', 3, _AM_XOONIPS_MAINTENANCE_TRANSFER_ITEM_ERROR);
     }
     if (xoonips_transfer_is_private_item_number_exceeds_if_transfer($to_uid, $transfer_item_ids)) {
         redirect_header(XOOPS_URL . '/modules/xoonips/admin/maintenance.php?' . 'page=item&action=transfer_admin_initialize', 3, _AM_XOONIPS_MAINTENANCE_TRANSFER_ITEM_ERROR_ITEM_NUMBER_EXCEEDS);
     }
     if (xoonips_transfer_is_private_item_storage_exceeds_if_transfer($to_uid, $transfer_item_ids)) {
         redirect_header(XOOPS_URL . '/modules/xoonips/admin/maintenance.php?' . 'page=item&action=transfer_admin_initialize', 3, _AM_XOONIPS_MAINTENANCE_TRANSFER_ITEM_ERROR_ITEM_STORAGE_EXCEEDS);
     }
     if (!$this->is_equals_group_ids(xoonips_transfer_get_group_ids_of_items($transfer_item_ids), $this->_formdata->getValueArray('post', 'group_ids_to_subscribe', 'i', false))) {
         redirect_header(XOOPS_URL . '/modules/xoonips/admin/maintenance.php' . '?page=item', 3, _AM_XOONIPS_MAINTENANCE_TRANSFER_ITEM_ERROR_BAD_SUBSCRIBE_GROUP);
     }
     $this->_params[] = $transfer_item_ids;
     $this->_params[] = $from_uid;
     $this->_params[] = $to_uid;
     $this->_params[] = $to_index_id;
     $this->_params[] = xoonips_transfer_get_group_ids_of_items($transfer_item_ids);
 }
 /**
  * transfer request
  *
  * @param[in]  $vars[0] array of item_id 
  * @param[in]  $vars[1] uid of old item owner
  * @param[in]  $vars[2] uid of new item owner
  * @param[out] XooNIpsError error
  * @return bool true if succeeded
  */
 function execute_without_transaction(&$vars, &$error)
 {
     $item_ids = $vars[0];
     $from_uid = $vars[1];
     $to_uid = $vars[2];
     if (false == xoonips_transfer_is_transferrable($from_uid, $to_uid, $item_ids)) {
         $error->add(XNPERR_SERVER_ERROR, "not transferrable");
         return false;
     }
     foreach ($item_ids as $item_id) {
         $transfer_request_handler =& xoonips_getormhandler('xoonips', 'transfer_request');
         $transfer_request = $transfer_request_handler->create();
         $transfer_request->set('item_id', $item_id);
         $transfer_request->set('to_uid', $to_uid);
         if (false == $transfer_request_handler->insert($transfer_request)) {
             $error->add(XNPERR_SERVER_ERROR, "cannot insert tranfer_request");
             return false;
         }
         $item_lock_handler =& xoonips_getormhandler('xoonips', 'item_lock');
         if (false == $item_lock_handler->lock($item_id)) {
             $error->add(XNPERR_SERVER_ERROR, "cannot lock item");
             return false;
         }
         $eventlog_handler =& xoonips_getormhandler('xoonips', 'event_log');
         if (false == $eventlog_handler->recordRequestTransferItemEvent($item_id, $to_uid)) {
             $error->add(XNPERR_SERVER_ERROR, "cannot insert evnet log");
             return false;
         }
     }
     return true;
 }
 /**
  * transfer items for admin
  *
  * @param[in]  $vars[0] array of item_id 
  * @param[in]  $vars[1] uid of current item owner
  * @param[in]  $vars[2] uid of new item owner
  * @param[in]  $vars[3] index_id where items are registered to
  * @param[in]  $vars[4] array of group id 
  * which new item owner are registered to
  * @param[out] XooNIpsError error
  * @return bool true if succeeded
  */
 function execute_without_transaction(&$vars, &$error)
 {
     $item_ids = $vars[0];
     $from_uid = $vars[1];
     $to_uid = $vars[2];
     $index_id = $vars[3];
     $gids = $vars[4];
     if (false == $this->add_user_to_groups($error, $to_uid, $gids)) {
         return false;
     }
     if (false == xoonips_transfer_is_transferrable($from_uid, $to_uid, $item_ids)) {
         $error->add(XNPERR_SERVER_ERROR, "not transferrable");
         return false;
     }
     if (false == $this->is_private_index_id_of($index_id, $to_uid)) {
         $error->add(XNPERR_SERVER_ERROR, "bad index id");
         return false;
     }
     foreach ($item_ids as $item_id) {
         if (false == $this->move_item_to_other_private_index($error, $item_id, $index_id)) {
             return false;
         }
         if (false == $this->remove_item_from_achievements_if_needed($error, $item_id)) {
             return false;
         }
         $item_basic_handler =& xoonips_getormhandler('xoonips', 'item_basic');
         $item_basic = $item_basic_handler->get($item_id);
         $item_basic->set('uid', $to_uid);
         if (false == $item_basic_handler->insert($item_basic)) {
             $error->add(XNPERR_SERVER_ERROR, "cannot change owner of item");
             return false;
         }
         $eventlog_handler =& xoonips_getormhandler('xoonips', 'event_log');
         if (!$eventlog_handler->recordTransferItemEvent($item_id, $index_id, $to_uid)) {
             $error->add(XNPERR_SERVER_ERROR, "cannot insert event");
             return false;
         }
         if (false == $this->update_item_status_if_public_certified($error, $item_id)) {
             return false;
         }
     }
     foreach ($item_ids as $item_id) {
         if (false == $this->remove_related_to_if_no_read_permission($item_id, $from_uid, $to_uid)) {
             return false;
         }
     }
     return true;
 }
 function preAction()
 {
     xoonips_deny_guest_access();
     xoonips_allow_post_method();
     if (!$GLOBALS['xoopsGTicket']->check(true, 'xoonips_transfer_user_item_confirm', false)) {
         die('ticket error');
     }
     global $xoopsUser;
     $all_of_item_ids_to_transfer = array_unique(array_merge($this->get_item_ids_to_transfer(), $this->get_child_item_ids_to_transfer()));
     if (!xoonips_transfer_is_transferrable($xoopsUser->getVar('uid'), $this->get_to_uid(), $all_of_item_ids_to_transfer)) {
         redirect_header(XOOPS_URL . '/modules/xoonips/transfer_item.php', 3, _MD_XOONIPS_TRANSFER_USER_REQUEST_ERROR);
     }
     if (!$this->is_user_in_group_of_items($this->get_to_uid(), $all_of_item_ids_to_transfer)) {
         redirect_header(XOOPS_URL . '/modules/xoonips/transfer_item.php', 3, _MD_XOONIPS_TRANSFER_USER_REQUEST_ERROR_BAD_SUBSCRIBE_GROUP);
     }
     $this->_params = array($all_of_item_ids_to_transfer, $xoopsUser->getVar('uid'), $this->get_to_uid());
 }