$file = R::load('attachment', $data->fileId); if ($file->id) { $filename = $file->name; $before = $item->export(); unlink('uploads/' . $file->filename); R::trash($file); R::store($item); logAction($actor->username . ' removed attachment ' . $filename . ' from item ' . $item->title, $before, $item, $itemId); $jsonResponse->addAlert('success', $filename . ' was deleted.'); $jsonResponse->addBeans($item); } } $app->response->setBody($jsonResponse->asJson()); })->conditions(['itemId' => '\\d+']); // Remove an item. $app->post('/items/remove', function () use($app, $jsonResponse) { $data = json_decode($app->environment['slim.input']); if (validateToken(true)) { $item = R::load('item', $data->itemId); if ($item->id) { $before = $item->export(); R::trash($item); renumberItems($item->lane_id, $item->position); $actor = getUser(); logAction($actor->username . ' removed item ' . $item->title, $before, null, $data->itemId); $jsonResponse->addAlert('success', $item->title . ' was deleted.'); $jsonResponse->addBeans(getBoards()); } } $app->response->setBody($jsonResponse->asJson()); });
function getNextItemPosition($columnId) { $retVal = 0; $column = R::load('lane', $columnId); if ($column->id) { $options = R::exportAll(getUser()->ownOption); if ($options[0]['tasks_order'] == 1) { // Tasks at top of column. renumberItems($columnId, 0, false); } else { try { $retVal = $column->countOwn('item'); } catch (Exception $e) { // Ignore, just means there are no items. } } } return $retVal; }