//Select variable (column) $sql = "SELECT column_id as value, name as description, CASE WHEN column_id = '{$column_id}' THEN 'selected=\\'selected\\'' ELSE '' END AS selected\r\n\t\tFROM `column`\r\n\t\tWHERE data_id = '{$data_id}'"; print "<div>" . T_("Select variable: "); $c = $db->GetAll($sql); display_chooser($c, 'column_id', 'column_id', true, "data_id={$data_id}"); print "</div>"; $sql = "SELECT column_id,name,code_level_id\r\n\t\tFROM `column` \r\n\t\tWHERE data_id = '{$data_id}'"; if ($column_id != 0) { $sql .= " AND column_id = '{$column_id}'"; $cols = $db->GetAll($sql); $sql = "SELECT c.row_id\r\n\t\tFROM cell as c\r\n\t\tWHERE c.column_id = {$cols[0]['column_id']}\r\n\t\tGROUP BY c.row_id"; $rows = $db->GetAll($sql); print "<table class='tclass'>"; print "<tr>"; foreach ($cols as $c) { print "<th>" . $c['name'] . "</th>"; } print "</tr>"; foreach ($rows as $r) { print "<tr>"; foreach ($cols as $c) { list($data, $revision) = get_cell_data(get_cell_id($r['row_id'], $c['column_id'])); //convert to code if one exists? print "<td>" . $data . "</td>"; } print "</tr>"; } print "</table>"; } } xhtml_foot();
/** * Compare columns, and create an auto work unit if they are identical * Also create a cell containing a code identifying this as "identical" * * This function should only be run once for each work_id * * @param string $data The string in the original column * @param int $cell_id The cell id * @param int $work_id The work id * @param int $process_id The process id * @param int $row_id The row id * @return int Return 1 if the columns to compare are different, otherwise return 0 */ function compare($data, $cell_id, $work_id, $process_id, $row_id) { global $db; //Select column_multi_group or column_group from work parents of this work_id $sql = "SELECT parent_work_id\r\n\t\tFROM work_parent\r\n\t\tWHERE work_id = '{$work_id}'"; //Loop over all columns for this column_group and compare cell contents (break on any difference) $rs = $db->GetAll($sql); $compare = ""; foreach ($rs as $r) { $wi = $r['parent_work_id']; $sql = "SELECT c.column_id, ce.cell_id\r\n\t\t\tFROM work AS w \r\n\t\t\tJOIN `column` AS c ON (w.column_multi_group_id = c.column_multi_group_id OR c.column_group_id = w.column_group_id)\r\n\t\t\tLEFT JOIN `cell` AS ce ON (ce.column_id = c.column_id AND ce.row_id = '{$row_id}')\r\n\t\t\tWHERE w.work_id = '{$wi}'\r\n\t\t\tORDER BY c.column_id ASC"; if (empty($compare)) { $compare = $db->GetAll($sql); } else { $test = $db->GetAll($sql); //print_r($compare); //print_r($test); for ($i = 0; $i < count($compare); $i++) { $compareval = $compare[$i]['cell_id']; $testval = $test[$i]['cell_id']; list($comparedata, $rev) = get_cell_data($compareval); list($thisdata, $rev) = get_cell_data($testval); //data from this SQL from the same column if ($comparedata != $thisdata) { //different, return 1 return 1; } } } } //If identical - create a code in the new column as "identical" and return 0 to create work unit $work_unit_id = create_work_unit($work_id, $cell_id, $process_id, 0); //Get the column_id of the new column to send to $sql = "SELECT c.column_id\r\n\t\tFROM `column` as c, work as w\r\n\t\tWHERE w.work_id = '{$work_id}'\r\n\t\tAND c.column_group_id = w.column_group_id"; $c = $db->GetRow($sql); $column_id = $c['column_id']; $ncell_id = get_cell_id($row_id, $column_id); if ($ncell_id == false) { $ncell_id = new_cell($row_id, $column_id); } new_cell_revision($ncell_id, '1', $work_unit_id); //code as '1' "Identical" //return 1 as we have created the work_unit here return 1; }