public function index($pid, $fid) { if (!FormController::validProjForm($pid, $fid)) { return redirect('projects'); } $form = FormController::getForm($fid); if (!\Auth::user()->isFormAdmin($form)) { flash()->overlay('You do not have permission to view that page.', 'Whoops.'); return redirect('projects'); } $presets = RecordPreset::where('fid', '=', $fid)->get(); return view('recordPresets/index', compact('form', 'presets')); }
/** * Creates a form group. * * @param Request $request * @return Response */ public function create(Request $request) { $fid = $request['form']; $form = FormController::getForm($fid); $project = $form->project()->first(); $pid = $project->pid; if ($request['name'] == "") { flash()->overlay('You must enter a group name.', 'Whoops.'); return redirect(action('FormGroupController@index', ['fid' => $form->fid])); } $group = FormGroupController::buildGroup($form->fid, $request); if (!is_null($request['users'])) { $group->users()->attach($request['users']); } flash()->overlay('Group created!', 'Success'); return redirect(action('FormGroupController@index', ['fid' => $form->fid])); }
/** * Display a listing of the resource. * * @return Response */ public function index(Request $request) { //These functions deal with field nav $field = \App\Http\Controllers\FieldController::getField($request->flid); $form = \App\Http\Controllers\FormController::getForm($field->fid); $vals = FormController::xmlToArray($form->layout); if ($request->action == 'moveFieldUp') { for ($i = 0; $i < sizeof($vals); $i++) { if (isset($vals[$i]['value']) && $vals[$i]['value'] == $field->flid) { //if we have a field above us if ($vals[$i - 1]['tag'] == 'ID') { $temp = $vals[$i]; $vals[$i] = $vals[$i - 1]; $vals[$i - 1] = $temp; } //if we have a node above us if ($vals[$i - 1]['tag'] == 'NODE' && $vals[$i - 1]['type'] == 'close') { $j = $i - 1; $lvl = $vals[$i - 1]['level']; while ($j > 0) { if ($vals[$j]['tag'] == 'NODE' && $vals[$j]['type'] == 'open' && $vals[$j]['level'] == $lvl) { $k = $j; //this is the start of the node break; } else { $j--; } } $temp = $vals[$i]; while ($i > $k) { $vals[$i] = $vals[$i - 1]; $i--; } $vals[$i] = $temp; } $form->layout = $this->valsToXML($vals); $form->save(); break; } } } if ($request->action == 'moveFieldDown') { for ($i = 0; $i < sizeof($vals); $i++) { if (isset($vals[$i]['value']) && $vals[$i]['value'] == $field->flid) { //if we have a field below us if ($vals[$i + 1]['tag'] == 'ID') { $temp = $vals[$i]; $vals[$i] = $vals[$i + 1]; $vals[$i + 1] = $temp; } //if we have a node below us if ($vals[$i + 1]['tag'] == 'NODE' && $vals[$i + 1]['type'] == 'open') { $j = $i + 1; $lvl = $vals[$i + 1]['level']; while ($j < sizeof($vals)) { if ($vals[$j]['tag'] == 'NODE' && $vals[$j]['type'] == 'close' && $vals[$j]['level'] == $lvl) { $k = $j; //this is the start of the node break; } else { $j++; } } $temp = $vals[$i]; while ($i < $k) { $vals[$i] = $vals[$i + 1]; $i++; } $vals[$i] = $temp; } $form->layout = $this->valsToXML($vals); $form->save(); break; } } } if ($request->action == 'moveFieldUpIn') { for ($i = 0; $i < sizeof($vals); $i++) { if (isset($vals[$i]['value']) && $vals[$i]['value'] == $field->flid) { //if the Node is above us if ($vals[$i - 1]['tag'] == 'NODE' && $vals[$i - 1]['type'] == 'close') { $tmp = $vals[$i]; $vals[$i] = $vals[$i - 1]; $vals[$i - 1] = $tmp; } $form->layout = $this->valsToXML($vals); $form->save(); break; } } } if ($request->action == 'moveFieldDownIn') { for ($i = 0; $i < sizeof($vals); $i++) { if (isset($vals[$i]['value']) && $vals[$i]['value'] == $field->flid) { //if the Node is above us if ($vals[$i + 1]['tag'] == 'NODE' && $vals[$i + 1]['type'] == 'open') { $tmp = $vals[$i]; $vals[$i] = $vals[$i + 1]; $vals[$i + 1] = $tmp; } $form->layout = $this->valsToXML($vals); $form->save(); break; } } } if ($request->action == 'moveFieldUpOut') { for ($i = 0; $i < sizeof($vals); $i++) { if (isset($vals[$i]['value']) && $vals[$i]['value'] == $field->flid) { //if we have a node above us $j = $i - 1; $lvl = $vals[$i]['level'] - 1; while ($j > 0) { if ($vals[$j]['tag'] == 'NODE' && $vals[$j]['type'] == 'open' && $vals[$j]['level'] == $lvl) { $k = $j; break; } else { $j--; } } $temp = $vals[$i]; while ($i > $k) { $vals[$i] = $vals[$i - 1]; $i--; } $vals[$i] = $temp; $form->layout = $this->valsToXML($vals); $form->save(); break; } } } if ($request->action == 'moveFieldDownOut') { for ($i = 0; $i < sizeof($vals); $i++) { if (isset($vals[$i]['value']) && $vals[$i]['value'] == $field->flid) { //if we have a node below us $j = $i + 1; $lvl = $vals[$i]['level'] - 1; while ($j < sizeof($vals)) { if ($vals[$j]['tag'] == 'NODE' && $vals[$j]['type'] == 'close' && $vals[$j]['level'] == $lvl) { $k = $j; break; } else { $j++; } } $temp = $vals[$i]; while ($i < $k) { $vals[$i] = $vals[$i + 1]; $i++; } $vals[$i] = $temp; $form->layout = $this->valsToXML($vals); $form->save(); break; } } } }
/** * * Display a view for mass assigning a value to many records at once * * @param $pid * @param $fid * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector|\Illuminate\View\View */ public function showMassAssignmentView($pid, $fid) { if (!$this->checkPermissions($fid, 'modify')) { return redirect()->back(); } $form = FormController::getForm($fid); $fields = $form->fields()->get(); return view('records.mass-assignment', compact('form', 'fields', 'pid', 'fid')); }
/** * Validate that a form belongs to the project in use. * * @param $pid * @param $fid * @return bool */ public static function validProjForm($pid, $fid) { $form = FormController::getForm($fid); $proj = ProjectController::getProject($pid); if (is_null($form) || is_null($proj)) { return false; } else { if ($proj->pid == $form->pid) { return true; } else { return false; } } }
/** * Rolls back a record. * * @param Request $request */ public function rollback(Request $request) { $revision = Revision::where('id', '=', $request['revision'])->first(); $form = FormController::getForm($revision->fid); if ($revision->type == 'create') { $record = Record::where('rid', '=', $revision->rid)->first(); $revision = RevisionController::storeRevision($record->rid, 'delete'); $record->delete(); flash()->overlay('Record ' . $form->pid . '-' . $form->fid . '-' . $revision->rid . ' has been deleted.', 'Success!'); } elseif ($revision->type == 'delete') { if (RecordController::exists($revision->rid)) { flash()->overlay('Cannot recreate a record that already exists.'); } else { $record = new Record(); $record->rid = $revision->rid; $record->fid = $revision->fid; $record->pid = $form->pid; $record->owner = $revision->owner; $record->save(); $record->kid = $record->pid . '-' . $record->fid . '-' . $record->rid; $record->save(); RevisionController::redo($record, $form, $revision, false); RevisionController::storeRevision($record->rid, 'create'); flash()->overlay('Record ' . $form->pid . '-' . $form->fid . '-' . $record->rid . ' has been rolled back.', 'Success!'); } } else { $record = RecordController::getRecord($revision->rid); RevisionController::redo($record, $form, $revision, true); flash()->overlay('Record ' . $form->pid . '-' . $form->fid . '-' . $record->rid . ' has been rolled back.', 'Success!'); } }
private function checkPermissions($fid, $permission = '') { switch ($permission) { case 'create': if (!\Auth::user()->canCreateFields(FormController::getForm($fid))) { flash()->overlay('You do not have permission to create fields for that form.', 'Whoops.'); return false; } return true; case 'edit': if (!\Auth::user()->canEditFields(FormController::getForm($fid))) { flash()->overlay('You do not have permission to edit fields for that form.', 'Whoops.'); return false; } return true; case 'delete': if (!\Auth::user()->canDeleteFields(FormController::getForm($fid))) { flash()->overlay('You do not have permission to delete fields for that form.', 'Whoops.'); return false; } return true; default: if (!\Auth::user()->inAFormGroup(FormController::getForm($fid))) { flash()->overlay('You do not have permission to view that field.', 'Whoops.'); return false; } return true; } }