示例#1
0
    //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();
示例#2
0
/**
 * 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;
}