# HG changeset patch # User viric@mandarina # Date 1230241159 0 # Node ID f08a11b5d2076aadc0887132e685bd7707675402 # Parent 3773f4677c40abad3b1340167dd915243de44c84 Ja va el càlcul. diff -r 3773f4677c40 -r f08a11b5d207 controllers/opiniarbo.php --- a/controllers/opiniarbo.php Thu Dec 25 11:25:58 2008 +0000 +++ b/controllers/opiniarbo.php Thu Dec 25 21:39:19 2008 +0000 @@ -2,13 +2,124 @@ class Opiniarbo extends Controller { - function index() + function Opiniarbo() { + parent::Controller(); + $this->load->library('form_validation'); $this->load->library('aulib'); $this->load->library('parser'); $this->load->helper('form'); + $this->load->model('opiniarbo_model'); + } - $data['logindata'] = $this->aulib->getLoginLink(); - $this->parser->parse('arbo', $data); + function index() + { + $mainassert = $this->uri->segment(3, -1); + $parserdata['logindata'] = $this->aulib->getLoginLink(); + if ($mainassert == -1) + { + // Managing heads + $this->form_validation->set_rules('text', 'Aserta teksto', 'required|min_length[1]'); + $this->form_validation->set_rules('value', 'Valoro', 'callback__value_check'); + $this->form_validation->set_rules('context', 'Context', 'required|min_length[0]'); + + if ($this->form_validation->run()) + { + $dbdata['assert'] = $this->input->post('text'); + $dbdata['value'] = $this->input->post('value')/20.+0.5; + $dbdata['context'] = $this->input->post('context'); + $this->opiniarbo_model->insert_assertion($this->aulib->getSessionId(), + $dbdata); + $this->opiniarbo_model->recalculate(); + } + $parserdata['asserts'] = $this->opiniarbo_model->get_my_heads($this->aulib->getSessionId()); + foreach($parserdata['asserts'] as &$row) + { + if ($row->value != NULL) + $row->value = ($row->value - 0.5) * 20; + if ($row->calc_value != NULL) + $row->calc_value = $row->calc_value * 10; + } + $this->parser->parse('arbo_heads', $parserdata); + } + else + { + // Assert chosen + $parserdata['mainassert'] = $mainassert; + + $this->form_validation->set_rules('text', 'Aserta teksto', 'required|min_length[1]'); + $this->form_validation->set_rules('value', 'Valoro', 'callback__value_check'); + $this->form_validation->set_rules('influence', 'Influo', 'callback__influence_check'); + $this->form_validation->set_rules('context', 'Context', 'required|min_length[0]'); + + if ($this->form_validation->run()) + { + $dbdata['assert'] = $this->input->post('text'); + $dbdata['value'] = $this->input->post('value')/20. + 0.5; + $dbdata['influence'] = $this->input->post('influence')/10.; + $dbdata['context'] = $this->input->post('context'); + $dbdata['parent'] = $mainassert; + $this->opiniarbo_model->insert_assertion($this->aulib->getSessionId(), + $dbdata); + $this->opiniarbo_model->recalculate(); + } + $assertdata = $this->opiniarbo_model->get_assert($mainassert, $this->aulib->getSessionId()); + $parserdata['maintext'] = $assertdata['assert']; + $parserdata['mainvalue'] = $assertdata['value']; + if ($parserdata['mainvalue'] != NULL) + $parserdata['mainvalue'] = ($parserdata['mainvalue'] - 0.5)*20; + $parserdata['maininfluence'] = $assertdata['influence']; + if ($parserdata['maininfluence'] != NULL) + $parserdata['maininfluence'] = $parserdata['maininfluence'] * 10; + $parserdata['maincontext'] = $assertdata['context']; + $parserdata['maincalc_value'] = $assertdata['calc_value']; + if ($parserdata['maincalc_value'] != NULL) + $parserdata['maincalc_value'] = ($parserdata['maincalc_value'] - 0.5)*20; + + $parserdata['subasserts'] = $this->opiniarbo_model->get_subasserts($mainassert, $this->aulib->getSessionId()); + foreach($parserdata['subasserts'] as &$row) + { + if ($row['value'] != NULL) + $row['value'] = ($row['value'] - 0.5) * 20; + if ($row['influence'] != NULL) + $row['influence'] = $row['influence'] * 10; + if ($row['calc_value'] != NULL) + $row['calc_value'] = ($row['calc_value'] - 0.5)*20; + } + + $parserdata['preasserts'] = $this->opiniarbo_model->get_preasserts($mainassert, $this->aulib->getSessionId()); + foreach($parserdata['preasserts'] as &$row) + { + if ($row['value'] != NULL) + $row['value'] = ($row['value'] - 0.5) * 20; + if ($row['influence'] != NULL) + $row['influence'] = $row['influence'] * 10; + if ($row['calc_value'] != NULL) + $row['calc_value'] = ($row['calc_value'] - 0.5)*20; + } + $this->parser->parse('arbo', $parserdata); + } + } + + function recalculate() + { + $this->opiniarbo_model->recalculate(); + echo "OK"; + } + + function _value_check($str) + { + if (strlen($str) > 0 && $str <= 10.0 && $str >= -10.0) + return TRUE; + $this->form_validation->set_message("_value_check", "Skribu valoron inter -10 kaj 10"); + return FALSE; + } + + function _influence_check($str) + { + if (strlen($str) > 0 && $str <= 10.0 && $str >= -10.0) + return TRUE; + $this->form_validation->set_message("_influence_check", "Skribu influon inter -10 kaj 10"); + return FALSE; } } diff -r 3773f4677c40 -r f08a11b5d207 views/arbo.php --- a/views/arbo.php Thu Dec 25 11:25:58 2008 +0000 +++ b/views/arbo.php Thu Dec 25 21:39:19 2008 +0000 @@ -2,6 +2,7 @@ Opiniarbo + - - - -

Opiniarbo

- -

Uzantoj