function form(RedBeanPHP\OODBBean $page) { //Check if object is loaded //Load areas connected to this page $areas = $page->ownArea; //Load form html $view = new G2_TwigView('forms/page/page'); //Create processors $areasP = []; $data = []; foreach ($areas as $area) { $areaP = new Theme_Area_Processor($area); $areasP[$area->id] = $areaP; $data[$area->id] = $areaP->render(); } $view->areas = $areasP; $view->page = $page; $form = new G2_FormMagic($view->get_render()); if (!$form->is_posted()) { $form->set_data($data); } if ($form->is_posted()) { //Field Validate the content $data = $form->data(); foreach ($data as $area_id => $value) { $areasP[$area_id]->set_value($value); $message = $areasP[$area_id]->validate(); if ($message !== true) { $form->invalidate($area_id, $message); } } foreach ($form->get_uploaded_files() as $key => $file) { $areasP[$key]->set_value($file); $message = $areasP[$key]->validate(); if ($message !== true) { $form->invalidate($area_id, $message); } } } if ($form->is_posted() && $form->validate()) { $data = $form->data(); foreach ($data as $area_id => $value) { $areasP[$area_id]->set_value($value); $areasP[$area_id]->save(); } foreach ($form->get_uploaded_files() as $key => $file) { $areasP[$key]->set_value($file); $areasP[$key]->save(); } return true; } echo $form->parse(); }
function crud($posttype, RedBeanPHP\OODBBean $post_object) { $fields = $this->get_fields($posttype, false); $view = new G2_TwigView('post_form'); $view->fields = $fields; $form = new G2_FormMagic($view->get_render()); if (!$form->is_posted() && $post_object->getID()) { $data = []; foreach ($post_object->ownPostdata as $postdata) { $data[$postdata->postmeta->fieldname] = $postdata->value; } $form->set_data($data); } if ($form->is_posted()) { $old = clone $post_object; //Save fields to correct db locations $postdatas = []; foreach ($form->data() as $field => $value) { // First Match the field with the correct postdata record from the current post unset($postdata); foreach ($post_object->ownPostdata as &$data) { if ($data->postmeta->fieldname == $field) { $postdata = $data; } } if (!isset($postdata)) { $postdata = R::dispense('postdata'); $postdata->postmeta = R::findOne('postmeta', 'fieldname = :field AND post_type = :type', ['type' => $posttype, 'field' => $field]); } $postdata->value = $value; R::store($postdata); $postdatas[] = $postdata; } $post_object->ownPostdata = $postdatas; $post_object->post_type = $posttype; if (!$post_object->getID()) { $post_object->date_created = date('Y-m-d H:i:s'); } $post_object->date_modified = date('Y-m-d H:i:s'); $files = $form->get_uploaded_files(); R::store($post_object); //Save files to Audit::create($old, $post_object, 'An Post was saved'); return true; } echo $form->parse(); }