示例#1
0
 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();
 }
示例#2
0
 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();
 }