/** * @todo: docs */ public function execute(ezcWorkflowExecution $execution) { $form = midgardmvc_ui_forms_generator::get_by_guid($execution->getVariable('review_form')); $instance = new midgardmvc_ui_forms_form_instance($execution->getVariable('review')); $review = midgardmvc_ui_forms_store::load_form($form, $instance); $items = $form->items; $boolean_count = 0; $positive = 0; $package = new com_meego_package($instance->relatedobject); foreach ($items as $key => $item) { if ($key == "redirect_link" || $key == "execution") { continue; } try { $field = new midgardmvc_ui_forms_form_field($key); } catch (Exception $e) { midgardmvc_core::get_instance()->log('Invalid field detected in distill review: ' . $key . ', value: ' . $item, 'warning'); } // todo: ugly hardcoded check, but what can we do.. if ($field->title == "Should the application be in this application catalog?") { // if the answer belongs to a certain field then we process // this field must be a boolean too if ($item instanceof midgardmvc_helper_forms_field_boolean) { if ($item->get_value()) { // add +1 to the package score $package->metadata->score++; } else { // oh yes, we do give -1 points too ;) $package->metadata->score--; } $res = $package->update(); if (!$res) { //update failed; do what? } } } else { // otherwise continue; } } // pass on the score $execution->setVariable('distilled_review', $package->metadata->score); }
/** * retreives a form instance */ public function get_posted_form_instance(array $args) { $forminstance = new midgardmvc_ui_forms_form_instance($args['forminstance']); $form = new midgardmvc_ui_forms_form($forminstance->form); // get user info $currentuser = com_meego_packages_utils::get_current_user(); $formcreator = com_meego_packages_utils::get_user_by_person_guid($forminstance->metadata->creator); $form_to_return = midgardmvc_ui_forms_load::load_form(midgardmvc_ui_forms_generator::get_by_guid($form->guid), $forminstance); $form_to_return->set_readonly(true); if ($currentuser) { if ($forminstance->metadata->creator == $currentuser->person) { $form_to_return->set_readonly(false); } } $login = '******'; if ($formcreator) { $login = $formcreator->login; } $this->data['title'] = $form->title . " submitted by " . $login; $this->data['form'] = $form_to_return; unset($form_to_return); }