models/opiniarbo_model.php
author viric@mandarina
Sun, 28 Dec 2008 20:48:10 +0000
changeset 5 cb13c07e7e5d
parent 4 fcb273554da6
child 8 971cc5994467
permissions -rw-r--r--
Made multilanguage. Catalan and Russian.
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');
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   252
        $this->db->where('asertoj.parent',$parent);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   253
        $this->db->where('values.user', $user);
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;
3
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   257
        if ($parent != NULL)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   258
        {
5
cb13c07e7e5d Made multilanguage. Catalan and Russian.
viric@mandarina
parents: 4
diff changeset
   259
            if ($query->num_rows() > 0)
cb13c07e7e5d Made multilanguage. Catalan and Russian.
viric@mandarina
parents: 4
diff changeset
   260
            {
cb13c07e7e5d Made multilanguage. Catalan and Russian.
viric@mandarina
parents: 4
diff changeset
   261
                $qresult = $query->result_array();
cb13c07e7e5d Made multilanguage. Catalan and Russian.
viric@mandarina
parents: 4
diff changeset
   262
cb13c07e7e5d Made multilanguage. Catalan and Russian.
viric@mandarina
parents: 4
diff changeset
   263
                $sum_influence = 0;
cb13c07e7e5d Made multilanguage. Catalan and Russian.
viric@mandarina
parents: 4
diff changeset
   264
cb13c07e7e5d Made multilanguage. Catalan and Russian.
viric@mandarina
parents: 4
diff changeset
   265
                foreach($qresult as $row)
cb13c07e7e5d Made multilanguage. Catalan and Russian.
viric@mandarina
parents: 4
diff changeset
   266
                {
cb13c07e7e5d Made multilanguage. Catalan and Russian.
viric@mandarina
parents: 4
diff changeset
   267
                    $sum_influence += abs($row['influence']);
cb13c07e7e5d Made multilanguage. Catalan and Russian.
viric@mandarina
parents: 4
diff changeset
   268
                }
cb13c07e7e5d Made multilanguage. Catalan and Russian.
viric@mandarina
parents: 4
diff changeset
   269
cb13c07e7e5d Made multilanguage. Catalan and Russian.
viric@mandarina
parents: 4
diff changeset
   270
                // Calculate the calc_value
cb13c07e7e5d Made multilanguage. Catalan and Russian.
viric@mandarina
parents: 4
diff changeset
   271
                $val = 0;
cb13c07e7e5d Made multilanguage. Catalan and Russian.
viric@mandarina
parents: 4
diff changeset
   272
                foreach($qresult as $row)
cb13c07e7e5d Made multilanguage. Catalan and Russian.
viric@mandarina
parents: 4
diff changeset
   273
                {
cb13c07e7e5d Made multilanguage. Catalan and Russian.
viric@mandarina
parents: 4
diff changeset
   274
                    if ($row['influence'] >= 0)
cb13c07e7e5d Made multilanguage. Catalan and Russian.
viric@mandarina
parents: 4
diff changeset
   275
                        $val += $row['influence'] * $this->get_user_calc_value($user,
cb13c07e7e5d Made multilanguage. Catalan and Russian.
viric@mandarina
parents: 4
diff changeset
   276
                            $row['id'], $row['value']) / $sum_influence;
cb13c07e7e5d Made multilanguage. Catalan and Russian.
viric@mandarina
parents: 4
diff changeset
   277
                    else
cb13c07e7e5d Made multilanguage. Catalan and Russian.
viric@mandarina
parents: 4
diff changeset
   278
                        $val += $row['influence'] * ($this->get_user_calc_value($user,
cb13c07e7e5d Made multilanguage. Catalan and Russian.
viric@mandarina
parents: 4
diff changeset
   279
                            $row['id'], $row['value']) - 1) / $sum_influence;
cb13c07e7e5d Made multilanguage. Catalan and Russian.
viric@mandarina
parents: 4
diff changeset
   280
                }
cb13c07e7e5d Made multilanguage. Catalan and Russian.
viric@mandarina
parents: 4
diff changeset
   281
            }
cb13c07e7e5d Made multilanguage. Catalan and Russian.
viric@mandarina
parents: 4
diff changeset
   282
cb13c07e7e5d Made multilanguage. Catalan and Russian.
viric@mandarina
parents: 4
diff changeset
   283
            // Set the NULL calc_value to those without subassertions,
cb13c07e7e5d Made multilanguage. Catalan and Russian.
viric@mandarina
parents: 4
diff changeset
   284
            // 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
   285
            $query2 = $this->db->where('assertion', $parent);
fcb273554da6 Fixing problems recalculating, and showing values as %2.2f
viric@mandarina
parents: 3
diff changeset
   286
            $query2 = $this->db->where('user', $user);
fcb273554da6 Fixing problems recalculating, and showing values as %2.2f
viric@mandarina
parents: 3
diff changeset
   287
            $query2->update('values', array('calc_value' => $val));
3
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   288
        }
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   289
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   290
        if ($val == NULL)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   291
            return $orig_value;
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   292
        else
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   293
            return $val;
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   294
    }
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   295
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   296
    function recalculate($user)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   297
    {
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   298
        // Get all heads calculated
5
cb13c07e7e5d Made multilanguage. Catalan and Russian.
viric@mandarina
parents: 4
diff changeset
   299
        //$this->recalc_user_influences($user, NULL);
3
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   300
        $this->get_user_calc_value($user, NULL, 0);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   301
    }
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   302
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   303
    function insert_assertion($user, $inputdata)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   304
    {
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   305
        $assertdata = array('assert' => $inputdata['assert']);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   306
        // concat the 'context', if provided.
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   307
        if (isset($inputdata['context']))
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   308
            $assertdata += array('context' => $inputdata['context']);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   309
        // concat the 'parent', if provided.
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   310
        if (isset($inputdata['parent']))
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   311
            $assertdata += array('parent' => $inputdata['parent']);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   312
        $this->db->insert('asertoj', $assertdata);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   313
        $this->db->select('LAST_INSERT_ID()');
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   314
        $query = $this->db->get();
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   315
        $lastid = array_values($query->row_array());
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   316
        $lastid = $lastid[0];
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   317
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   318
        $valuesdata = array('assertion' => $lastid,
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   319
            'value' => $inputdata['value'],
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   320
            'user' => $user);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   321
        // concat the 'influence', if provided.
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   322
        if (isset($inputdata['influence']))
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   323
            $valuesdata += array('influence' => $inputdata['influence']);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   324
        $this->db->insert('values', $valuesdata);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   325
    }
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   326
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   327
    function modify_values($user, $inputdata)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   328
    {
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   329
        $valuesdata = array('value' => $inputdata['value']);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   330
        if (isset($inputdata['influence']))
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   331
            $valuesdata = array_merge($valuesdata,array('influence' => $inputdata['influence']));
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   332
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   333
        $this->db->where('id', $inputdata['valueid']);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   334
        $this->db->update('values', $valuesdata);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   335
    }
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   336
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   337
    function remove_value($user, $inputdata)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   338
    {
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   339
        $this->db->where('id', $inputdata['valueid']);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   340
        $this->db->delete('values');
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   341
    }
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   342
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   343
    function add_value($user, $inputdata)
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   344
    {
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   345
        $valuesdata = array('value' => $inputdata['value']);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   346
        $valuesdata += array('assertion' => $inputdata['assertid']);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   347
        $valuesdata += array('user' => $user);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   348
        if (isset($inputdata['influence']))
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   349
            $valuesdata += array('influence' => $inputdata['influence']);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   350
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   351
        $this->db->insert('values', $valuesdata);
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   352
    }
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   353
}
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   354
f3e55c2386a1 Made multiuser.
viric@mandarina
parents:
diff changeset
   355
?>