/** * * @brief unlock item * * @param[in] $item_id item id */ function xoonips_admin_maintenance_item_unlock_item($item_id) { // unlock item $index_handler =& xoonips_getormhandler('xoonips', 'index'); $item_lock_handler =& xoonips_getormhandler('xoonips', 'item_lock'); $item_basic_handler =& xoonips_getormhandler('xoonips', 'item_basic'); $index_item_link_handler =& xoonips_getormhandler('xoonips', 'index_item_link'); $event_log_handler =& xoonips_getormhandler('xoonips', 'event_log'); if ($item_lock_handler->isLocked($item_id)) { $lock_type = $item_lock_handler->getLockType($item_id); if ($lock_type == XOONIPS_LOCK_TYPE_CERTIFY_REQUEST) { $index_item_links =& $index_item_link_handler->getObjects(new Criteria('item_id', $item_id)); foreach ($index_item_links as $index_item_link) { if ($index_item_link->get('certify_state') == CERTIFY_REQUIRED) { $index_id = $index_item_link->get('index_id'); $index = $index_handler->get($index_id); if ($index->getVar('open_level', 'n') == OL_PUBLIC || $index->getVar('open_level', 'n') == OL_GROUP_ONLY) { $item_basic_handler->unlockItemAndIndexes($item_id, $index_id); $event_log_handler->recordRejectItemEvent($item_id, $index_id); $index_item_link_handler->delete($index_item_link); xoonips_notification_item_rejected($item_id, $index_id); } } } } else { // TODO: unlock if transfer request } } }
if ($index_item_links === false) { // no item in tree continue; } foreach ($index_item_links as $index_item_link) { $item_id = $index_item_link->get('item_id'); if ($item_lock_handler->isLocked($item_id)) { // item is not certified $uncertified++; } else { if ($index_item_link_handler->delete($index_item_link)) { // succeed $succeed++; $event_log_handler->recordRejectItemEvent($item_id, $xid); $modified_item_ids[$item_id] = $item_id; xoonips_notification_item_rejected($item_id, $xid); } else { // error occured $failed++; } } } $results[] = array('id' => $xid, 'evenodd' => $evenodd, 'index' => $textutil->html_special_chars($treemap[$xid]), 'succeed' => $succeed, 'uncertified' => $uncertified, 'failed' => $failed); $evenodd = $evenodd == 'even' ? 'odd' : 'even'; } // update item_status and item_basic. delete item_show foreach ($modified_item_ids as $item_id) { // update last_update $item_basic = $item_basic_handler->get($item_id); $item_basic->set('last_update_date', time()); $item_basic_handler->insert($item_basic);