models/opiniarbo_model.php
author viric@mandarina
Sun, 28 Dec 2008 23:12:28 +0000
changeset 8 971cc5994467
parent 5 cb13c07e7e5d
permissions -rw-r--r--
Fixing the calculation of values.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
     1
<?php
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
     2
class Opiniarbo_model extends Model {
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
     3
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
     4
    function Opiniarbo_model()
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
     5
    {
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
     6
        parent::Model();
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
     7
    }
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
     8
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
     9
    function get_user_name($userid)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    10
    {
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    11
        if ($userid == 0)
5
cb13c07e7e5d Made multilanguage. Catalan and Russian.
viric@mandarina
parents: 4
diff changeset
    12
            return lang("noone_str");
3
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    13
        $this->db->select('id,name');
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    14
        $this->db->from('auser');
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    15
        $this->db->where('id', $userid);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    16
        $query = $this->db->get();
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    17
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    18
        return $query->row()->name;
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    19
    }
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    20
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    21
    function get_other_users($userid)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    22
    {
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    23
        $this->db->select('id,name');
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    24
        $this->db->from('auser');
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    25
        $this->db->where('id !=', $userid);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    26
        $query = $this->db->get();
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    27
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    28
        return $query->result_array();
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    29
    }
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    30
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    31
    function get_assertions($userid1, $userid2, $parent)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    32
    {
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    33
        $heads = array();
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    34
        // contains: id, assert, value1, value2, calc_value1, calc_value2
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    35
        $user1_heads = $this->get_my_heads_values($userid1, $parent);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    36
        if ($userid2 != 0)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    37
            $user2_heads = $this->get_my_heads_values($userid2, $parent);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    38
        else
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    39
            $user2_heads = array();
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    40
        foreach($user1_heads as $row1)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    41
        {
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    42
            $found = FALSE;
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    43
            foreach($user2_heads as $row2)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    44
            {
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    45
                if($row2['id'] == $row1['id'])
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    46
                {
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    47
                    $value2 = $row2['value'];
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    48
                    if ($parent != NULL)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    49
                        $influence2 = $row['influence'];
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    50
                    $calc_value2 = $row2['calc_value'];
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    51
                    $found = TRUE;
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    52
                    break;
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    53
                }
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    54
            }
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    55
            if ($found)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    56
            {
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    57
                $heads[$row1['id']] = array('id' => $row1['id'],
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    58
                            'vid' => $row1['vid'],
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    59
                            'text' => $row1['assert'],
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    60
                            'value1' => $row1['value'],
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    61
                            'parent' => $row1['parent'],
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    62
                            'value2' => $value2);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    63
                if ($parent != NULL)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    64
                {
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    65
                    $heads[$row1['id']] += array('influence1' => $row1['influence']);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    66
                    $heads[$row1['id']] += array('influence2' => $influence2);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    67
                }
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    68
                if ($row1['calc_value'] != NULL)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    69
                    $heads[$row1['id']] += array('calc_value1' => $row1['calc_value']);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    70
                if ($calc_value2 != NULL)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    71
                    $heads[$row1['id']] += array('calc_value2' => $calc_value2);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    72
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    73
            }
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    74
            else
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    75
            {
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    76
                $heads[$row1['id']] = array('id' => $row1['id'],
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    77
                            'vid' => $row1['vid'],
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    78
                            'text' => $row1['assert'],
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    79
                            'parent' => $row1['parent'],
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    80
                            'value1' => $row1['value']);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    81
                if ($parent != NULL)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    82
                {
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    83
                    $heads[$row1['id']] += array('influence1' => $row1['influence']);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    84
                }
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    85
                if ($row1['calc_value'] != NULL)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    86
                    $heads[$row1['id']] += array('calc_value1' => $row1['calc_value']);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    87
            }
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    88
        }
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    89
        foreach($user2_heads as $row2)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    90
        {
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    91
            if (!isset($heads[$row2['id']]))
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    92
            {
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    93
                $heads[$row2['id']] = array('id' => $row2['id'],
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    94
                                'text' => $row2['assert'],
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    95
                                'parent' => $row2['parent'],
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    96
                                'value2' => $row2['value']);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    97
                if ($row2['calc_value'] != NULL)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    98
                    $heads[$row2['id']] += array('calc_value2' => $row2['calc_value']);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
    99
                if ($parent != NULL)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   100
                {
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   101
                    $heads[$row2['id']] += array('influence2' => $row2['influence']);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   102
                }
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   103
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   104
            }
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   105
        }
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   106
        return $heads;
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   107
    }
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   108
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   109
    function get_my_heads_values($user, $parent)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   110
    {
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   111
        $this->db->select('asertoj.id,asertoj.assert,asertoj.parent,values.value,values.influence,'
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   112
            .'values.calc_value, values.id as vid');
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   113
        $this->db->from('asertoj');
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   114
        $this->db->join('values', 'values.assertion = asertoj.id');
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   115
        $this->db->where('values.user', $user);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   116
        $this->db->where('asertoj.parent', $parent);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   117
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   118
        $query = $this->db->get();
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   119
        return $query->result_array();
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   120
    }
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   121
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   122
    function get_assertion($userid1, $userid2, $id)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   123
    {
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   124
        $this->db->select('assert,context,parent');
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   125
        $this->db->from('asertoj');
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   126
        $this->db->where('id', $id);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   127
        $query = $this->db->get();
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   128
        $qresult = $query->row_array();
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   129
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   130
        $result['id'] = $id;
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   131
        $result['text'] = $qresult['assert'];
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   132
        $result['context'] = $qresult['context'];
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   133
        $result['parent'] = $qresult['parent'];
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   134
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   135
        $this->db->select('id,value,calc_value,influence');
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   136
        $this->db->from('values');
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   137
        $this->db->where('assertion', $id);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   138
        $this->db->where('user', $userid1);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   139
        $query = $this->db->get();
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   140
        if ($query->num_rows() > 0)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   141
        {
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   142
            $qresult = $query->row_array();
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   143
            $result['vid'] = $qresult['id'];
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   144
            if ($qresult['value'] != NULL)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   145
                $result['value1'] = $qresult['value'];
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   146
            if ($qresult['influence'] != NULL)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   147
                $result['influence1'] = $qresult['influence'];
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   148
            if ($qresult['calc_value'] != NULL)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   149
                $result['calc_value1'] = $qresult['calc_value'];
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   150
        }
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   151
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   152
        $this->db->select('value,calc_value,influence');
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   153
        $this->db->from('values');
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   154
        $this->db->where('assertion', $id);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   155
        $this->db->where('user', $userid2);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   156
        $query = $this->db->get();
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   157
        if ($query->num_rows() > 0)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   158
        {
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   159
            $qresult = $query->row_array();
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   160
            if ($qresult['value'] != NULL)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   161
                $result['value2'] = $qresult['value'];
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   162
            if ($qresult['influence'] != NULL)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   163
                $result['influence2'] = $qresult['influence'];
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   164
            if ($qresult['calc_value'] != NULL)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   165
                $result['calc_value2'] = $qresult['calc_value'];
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   166
        }
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   167
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   168
        return $result;
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   169
    }
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   170
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   171
    function get_subasserts($parent, $user)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   172
    {
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   173
        $this->db->select('asertoj.id,asertoj.assert,values.value,'
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   174
            .'values.calc_value,values.influence, values.id as vid');
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   175
        $this->db->from('asertoj');
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   176
        $this->db->join('values', 'values.assertion = asertoj.id');
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   177
        $this->db->where('values.user', $user);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   178
        $this->db->where('asertoj.parent', $parent);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   179
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   180
        $query = $this->db->get();
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   181
        return $query->result_array();
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   182
    }
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   183
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   184
    function get_preassertions($userid1, $userid2, $id)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   185
    {
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   186
        $result = array();
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   187
        do
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   188
        {
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   189
            $assertion = $this->get_assertion($userid1, $userid2, $id);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   190
            $id = $assertion['parent'];
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   191
            $result[] = $assertion;
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   192
        } while($id != NULL);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   193
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   194
        // We already show the main assert, so don't need in the preasserts
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   195
        unset($result[0]);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   196
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   197
        return array_reverse($result);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   198
    }
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   199
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   200
    function get_other_subasserts($parent, $user)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   201
    {
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   202
        $query = $this->db->get_where('asertoj',
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   203
            array('user !=' => $user,
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   204
                  'parent' => $parent));
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   205
        return $query->result();
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   206
    }
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   207
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   208
    function recalc_user_influences($user,$parent)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   209
    {
4
fcb273554da6 Fixing problems recalculating, and showing values as %2.2f
viric@mandarina
parents: 3
diff changeset
   210
        $this->db->select('values.id as vid,asertoj.id,values.influence');
3
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   211
        $this->db->from('values');
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   212
        $this->db->join('asertoj','values.assertion = asertoj.id');
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   213
        $this->db->where('asertoj.parent',$parent);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   214
        $this->db->where('values.user', $user);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   215
        $query = $this->db->get();
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   216
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   217
        // Remap the influences
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   218
        if ($query->num_rows() > 0)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   219
        {
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   220
            $qresult = $query->result_array();
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   221
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   222
            $sum_influence = 0;
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   223
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   224
            if ($parent != NULL)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   225
            {
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   226
                foreach($qresult as $row)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   227
                {
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   228
                    $sum_influence += abs($row['influence']);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   229
                }
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   230
            }
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   231
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   232
            // Remap as needed between a total of -10 and 10
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   233
            foreach($qresult as $row)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   234
            {
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   235
                if ($parent != NULL)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   236
                {
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   237
                    $newinfluence = $row['influence'] / $sum_influence;
4
fcb273554da6 Fixing problems recalculating, and showing values as %2.2f
viric@mandarina
parents: 3
diff changeset
   238
                    $query2 = $this->db->where('id', $row['vid']);
3
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   239
                    $query2->update('values', array(
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   240
                                'influence' => $newinfluence));
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   241
                }
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   242
                $this->recalc_user_influences($user,$row['id']);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   243
            }
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   244
        }
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   245
    }
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   246
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   247
    function get_user_calc_value($user, $parent, $orig_value)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   248
    {
4
fcb273554da6 Fixing problems recalculating, and showing values as %2.2f
viric@mandarina
parents: 3
diff changeset
   249
        $this->db->select('asertoj.id,values.id as vid,values.value,values.influence');
3
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   250
        $this->db->from('values');
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   251
        $this->db->join('asertoj','values.assertion = asertoj.id');
8
971cc5994467 Fixing the calculation of values.
viric@mandarina
parents: 5
diff changeset
   252
        $this->db->where('values.user', $user);
3
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   253
        $this->db->where('asertoj.parent',$parent);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   254
        $query = $this->db->get();
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   255
5
cb13c07e7e5d Made multilanguage. Catalan and Russian.
viric@mandarina
parents: 4
diff changeset
   256
        $val = NULL;
8
971cc5994467 Fixing the calculation of values.
viric@mandarina
parents: 5
diff changeset
   257
        if ($query->num_rows() > 0)
3
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   258
        {
8
971cc5994467 Fixing the calculation of values.
viric@mandarina
parents: 5
diff changeset
   259
            $qresult = $query->result_array();
5
cb13c07e7e5d Made multilanguage. Catalan and Russian.
viric@mandarina
parents: 4
diff changeset
   260
8
971cc5994467 Fixing the calculation of values.
viric@mandarina
parents: 5
diff changeset
   261
            $sum_influence = 0.;
5
cb13c07e7e5d Made multilanguage. Catalan and Russian.
viric@mandarina
parents: 4
diff changeset
   262
8
971cc5994467 Fixing the calculation of values.
viric@mandarina
parents: 5
diff changeset
   263
            foreach($qresult as $row)
971cc5994467 Fixing the calculation of values.
viric@mandarina
parents: 5
diff changeset
   264
            {
971cc5994467 Fixing the calculation of values.
viric@mandarina
parents: 5
diff changeset
   265
                $sum_influence += abs($row['influence']);
971cc5994467 Fixing the calculation of values.
viric@mandarina
parents: 5
diff changeset
   266
            }
5
cb13c07e7e5d Made multilanguage. Catalan and Russian.
viric@mandarina
parents: 4
diff changeset
   267
8
971cc5994467 Fixing the calculation of values.
viric@mandarina
parents: 5
diff changeset
   268
            // Calculate the calc_value
971cc5994467 Fixing the calculation of values.
viric@mandarina
parents: 5
diff changeset
   269
            $val = 0;
971cc5994467 Fixing the calculation of values.
viric@mandarina
parents: 5
diff changeset
   270
971cc5994467 Fixing the calculation of values.
viric@mandarina
parents: 5
diff changeset
   271
            foreach($qresult as $row)
971cc5994467 Fixing the calculation of values.
viric@mandarina
parents: 5
diff changeset
   272
            {
971cc5994467 Fixing the calculation of values.
viric@mandarina
parents: 5
diff changeset
   273
                // for $parent == NULL we only need the recursive call.
971cc5994467 Fixing the calculation of values.
viric@mandarina
parents: 5
diff changeset
   274
                // the $row['influence'] will have no meaning in a head assertion,
971cc5994467 Fixing the calculation of values.
viric@mandarina
parents: 5
diff changeset
   275
                // so we avoid the division_by_zero error writting a special case.
971cc5994467 Fixing the calculation of values.
viric@mandarina
parents: 5
diff changeset
   276
                if ($parent != NULL)
5
cb13c07e7e5d Made multilanguage. Catalan and Russian.
viric@mandarina
parents: 4
diff changeset
   277
                {
cb13c07e7e5d Made multilanguage. Catalan and Russian.
viric@mandarina
parents: 4
diff changeset
   278
                    if ($row['influence'] >= 0)
cb13c07e7e5d Made multilanguage. Catalan and Russian.
viric@mandarina
parents: 4
diff changeset
   279
                        $val += $row['influence'] * $this->get_user_calc_value($user,
cb13c07e7e5d Made multilanguage. Catalan and Russian.
viric@mandarina
parents: 4
diff changeset
   280
                            $row['id'], $row['value']) / $sum_influence;
cb13c07e7e5d Made multilanguage. Catalan and Russian.
viric@mandarina
parents: 4
diff changeset
   281
                    else
cb13c07e7e5d Made multilanguage. Catalan and Russian.
viric@mandarina
parents: 4
diff changeset
   282
                        $val += $row['influence'] * ($this->get_user_calc_value($user,
cb13c07e7e5d Made multilanguage. Catalan and Russian.
viric@mandarina
parents: 4
diff changeset
   283
                            $row['id'], $row['value']) - 1) / $sum_influence;
cb13c07e7e5d Made multilanguage. Catalan and Russian.
viric@mandarina
parents: 4
diff changeset
   284
                }
8
971cc5994467 Fixing the calculation of values.
viric@mandarina
parents: 5
diff changeset
   285
                else
971cc5994467 Fixing the calculation of values.
viric@mandarina
parents: 5
diff changeset
   286
                    $this->get_user_calc_value($user, $row['id'], $row['value']);
5
cb13c07e7e5d Made multilanguage. Catalan and Russian.
viric@mandarina
parents: 4
diff changeset
   287
            }
8
971cc5994467 Fixing the calculation of values.
viric@mandarina
parents: 5
diff changeset
   288
        }
5
cb13c07e7e5d Made multilanguage. Catalan and Russian.
viric@mandarina
parents: 4
diff changeset
   289
8
971cc5994467 Fixing the calculation of values.
viric@mandarina
parents: 5
diff changeset
   290
        if ($parent != NULL)
971cc5994467 Fixing the calculation of values.
viric@mandarina
parents: 5
diff changeset
   291
        {
5
cb13c07e7e5d Made multilanguage. Catalan and Russian.
viric@mandarina
parents: 4
diff changeset
   292
            // Set the NULL calc_value to those without subassertions,
cb13c07e7e5d Made multilanguage. Catalan and Russian.
viric@mandarina
parents: 4
diff changeset
   293
            // and the proper value to those with subassertions.
4
fcb273554da6 Fixing problems recalculating, and showing values as %2.2f
viric@mandarina
parents: 3
diff changeset
   294
            $query2 = $this->db->where('assertion', $parent);
fcb273554da6 Fixing problems recalculating, and showing values as %2.2f
viric@mandarina
parents: 3
diff changeset
   295
            $query2 = $this->db->where('user', $user);
fcb273554da6 Fixing problems recalculating, and showing values as %2.2f
viric@mandarina
parents: 3
diff changeset
   296
            $query2->update('values', array('calc_value' => $val));
3
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   297
        }
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   298
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   299
        if ($val == NULL)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   300
            return $orig_value;
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   301
        else
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   302
            return $val;
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   303
    }
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   304
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   305
    function recalculate($user)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   306
    {
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   307
        // Get all heads calculated
5
cb13c07e7e5d Made multilanguage. Catalan and Russian.
viric@mandarina
parents: 4
diff changeset
   308
        //$this->recalc_user_influences($user, NULL);
3
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   309
        $this->get_user_calc_value($user, NULL, 0);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   310
    }
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   311
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   312
    function insert_assertion($user, $inputdata)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   313
    {
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   314
        $assertdata = array('assert' => $inputdata['assert']);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   315
        // concat the 'context', if provided.
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   316
        if (isset($inputdata['context']))
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   317
            $assertdata += array('context' => $inputdata['context']);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   318
        // concat the 'parent', if provided.
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   319
        if (isset($inputdata['parent']))
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   320
            $assertdata += array('parent' => $inputdata['parent']);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   321
        $this->db->insert('asertoj', $assertdata);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   322
        $this->db->select('LAST_INSERT_ID()');
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   323
        $query = $this->db->get();
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   324
        $lastid = array_values($query->row_array());
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   325
        $lastid = $lastid[0];
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   326
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   327
        $valuesdata = array('assertion' => $lastid,
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   328
            'value' => $inputdata['value'],
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   329
            'user' => $user);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   330
        // concat the 'influence', if provided.
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   331
        if (isset($inputdata['influence']))
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   332
            $valuesdata += array('influence' => $inputdata['influence']);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   333
        $this->db->insert('values', $valuesdata);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   334
    }
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   335
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   336
    function modify_values($user, $inputdata)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   337
    {
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   338
        $valuesdata = array('value' => $inputdata['value']);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   339
        if (isset($inputdata['influence']))
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   340
            $valuesdata = array_merge($valuesdata,array('influence' => $inputdata['influence']));
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   341
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   342
        $this->db->where('id', $inputdata['valueid']);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   343
        $this->db->update('values', $valuesdata);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   344
    }
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   345
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   346
    function remove_value($user, $inputdata)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   347
    {
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   348
        $this->db->where('id', $inputdata['valueid']);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   349
        $this->db->delete('values');
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   350
    }
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   351
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   352
    function add_value($user, $inputdata)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   353
    {
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   354
        $valuesdata = array('value' => $inputdata['value']);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   355
        $valuesdata += array('assertion' => $inputdata['assertid']);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   356
        $valuesdata += array('user' => $user);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   357
        if (isset($inputdata['influence']))
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   358
            $valuesdata += array('influence' => $inputdata['influence']);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   359
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   360
        $this->db->insert('values', $valuesdata);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   361
    }
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   362
}
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   363
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   364
?>