Ja va el cĂ lcul.
<?php
class Opiniarbo extends Controller {
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');
}
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;
}
}