Example #1
0
 /**
  * Saves evidence text in rafl tables
  * @author David Drummond <*****@*****.**>, Daniel Dammann <*****@*****.**>
  */
 function store_evidence($share_id, $success_item_id, $unit_item_id, $webcelltext)
 {
     global $CFG, $USER;
     // note: including more than we might need to avoid regression bugs - too much work right now to analyse and cull
     require_once 'includes/rlsmart/header.php';
     require_once "includes/get_sql_value_string.php";
     require_once 'includes/common/KT_common.php';
     require_once 'includes/tng/tNG.inc.php';
     require_once 'userviews_class.php';
     require_once "classes/class_comment_evidence_count.php";
     // Make unified connection variable // todo is this still necessary?
     $conn_smart = new KT_connection($smart, $CFG->dbname);
     $colname_rs_evidence = "-1";
     if (isset($success_item_id)) {
         $colname_rs_evidence = $success_item_id;
     }
     $colname_rs_evidence2 = "-1";
     if (isset($_SESSION['USER']->id)) {
         $colname_rs_evidence2 = $_SESSION['USER']->id;
     }
     mysql_select_db($CFG->dbname);
     //mysql_select_db($CFG->dbname, $smart);
     // Check whether this evidence already exists
     // INNER JOIN share_cohort_members ON {$_SESSION['RealS_prefix']}share_cohort_members.s_c_m_member = {$_SESSION['RealS_prefix']}webcells.webcell_member
     // AND {$_SESSION['RealS_prefix']}share_cohort_members.s_c_m_share = " . GetSQLValueString($_POST['share_id'], 'int') . "
     $query_rs_evidence = sprintf("SELECT {$_SESSION['RealS_prefix']}items.item_id, \n\t\t                              {$_SESSION['RealS_prefix']}items.*,\n\t\t                              {$_SESSION['RealS_prefix']}webcells.*,\n\t\t                              {$_SESSION['RealS_prefix']}rafl_res.*\n\t                              FROM {$_SESSION['RealS_prefix']}items\n\t\t                              INNER JOIN {$_SESSION['RealS_prefix']}webcells \n                                                   ON {$_SESSION['RealS_prefix']}items.item_webcell = {$_SESSION['RealS_prefix']}webcells.webcell_id\n\t\t                              INNER JOIN {$_SESSION['RealS_prefix']}rafl_res \n                                                   ON {$_SESSION['RealS_prefix']}items.item_id = {$_SESSION['RealS_prefix']}rafl_res.rafl_res_item\n\t                              WHERE {$_SESSION['RealS_prefix']}items.item_parent_item = %s\n\t                              \tAND {$_SESSION['RealS_prefix']}items.item_default_type = 6\n\t                              \tAND rafl_res_share = " . GetSQLValueString($share_id, "int") . "\n\t                              \tAND {$_SESSION['RealS_prefix']}webcells.webcell_member = %s", GetSQLValueString($colname_rs_evidence, "int"), GetSQLValueString($colname_rs_evidence2, "int"));
     //$rs_evidence = mysql_query($query_rs_evidence, $smart) or die(mysql_error());
     $rs_evidence = mysql_query($query_rs_evidence) or die(mysql_error());
     $row_rs_evidence = mysql_fetch_assoc($rs_evidence);
     $totalRows_rs_evidence = mysql_num_rows($rs_evidence);
     //debugging($query_rs_evidence);
     //debugging($totalRows_rs_evidence);
     // todo decide whether this is needed
     // HACK: Cos tinyMce goes mad with escaping
     //$_POST["webcelltext"] = str_replace('\"', '"', $_POST["webcelltext"]);
     if ($totalRows_rs_evidence == 0) {
         //debugging('Inserting new RAFL webcell');
         $webcell_id = null;
         $item_id = null;
         $webcell = new stdclass();
         $webcell->webcell_title = 'Evidence';
         $webcell->webcell_text = addslashes($webcelltext);
         $webcell->webcell_member = $USER->id;
         $webcell->webcell_school = $_SESSION["RealS_schoolid"];
         if (!($webcell_id = insert_record('rafl_webcells', $webcell, true, 'webcell_id'))) {
             // todo replace insert_record with something more appropriate
             error('rafl_webcells INSERT failed');
         }
         //debugging('webcell: ' .  $webcell_id);
         $items = new stdclass();
         $items->item_webcell = $webcell_id;
         $items->item_parent_item = $success_item_id;
         $items->item_school = $_SESSION["RealS_schoolid"];
         $items->item_default_type = 6;
         //$items->item_access =
         if (!($item_id = insert_record('rafl_items', $items, true, 'item_id'))) {
             // todo replace insert_record with something more appropriate
             error('rafl_items INSERT failed');
         }
         //debugging('item: ' .  $item_id);
         $rafl_res = new stdclass();
         $rafl_res->rafl_res_item = $item_id;
         //$rafl_res->rafl_res_date = now();
         $rafl_res->rafl_res_rate = 1;
         $rafl_res->rafl_res_share = $share_id;
         if (!insert_record('rafl_rafl_res', $rafl_res, true, 'rafl_res_id')) {
             // todo replace insert_record with something more appropriate
             error('rafl_rafl_res INSERT failed');
         }
         $rating = 1;
     } else {
         if (!empty($webcelltext)) {
             //debugging('Updating RAFL webcell ' . $row_rs_evidence['webcell_id']);
             $sql = "UPDATE {$CFG->prefix}rafl_webcells SET webcell_text = '" . addslashes($webcelltext) . "' WHERE webcell_id = " . $row_rs_evidence['webcell_id'];
             if (!execute_sql($sql)) {
                 error('rafl_webcells UPDATE failed');
             }
             // todo rafl_res.rafl_res_date
             $rating = $row_rs_evidence['rafl_res_rate'];
         } else {
             //debugging(4);
             // todo delete
             debugging('Deleting RAFL webcell ' . $row_rs_evidence['webcell_id']);
             $rating = "0";
         }
     }
     // If evidence exists, else new evidence
     if ($totalRows_rs_evidence == 0) {
         $query = "SELECT MAX(item_id) AS evidence_item_id\n\t\t          FROM {$_SESSION['RealS_prefix']}items";
         //$rows = mysql_query($query, $smart) or die(mysql_error());
         $rows = mysql_query($query) or die(mysql_error());
         $row = mysql_fetch_assoc($rows);
         $evidence_item_id = $row['evidence_item_id'];
     } else {
         $evidence_item_id = $row_rs_evidence['item_id'];
     }
     // todo test what this does
     // AFTER evidence creation save this member status count for unread evidence
     $obj_count = new commentEvidenceCount();
     $obj_count->increaseEvidenceCounter($unit_item_id, $evidence_item_id, $share_id);
     return $rating;
 }