Portions created by the Initial Developer are Copyright (C) 2008-2012 the Initial Developer. All Rights Reserved. Contributor(s): Mark J Crane */ require_once "root.php"; require_once "includes/require.php"; require_once "includes/checkauth.php"; if (permission_exists('virtual_tables_data_view')) { //access granted } else { echo "access denied"; exit; } if (strlen($_GET["id"]) > 0) { $virtual_table_uuid = check_str($_GET["id"]); if (strlen($_GET["virtual_data_parent_row_uuid"])>0) { $virtual_data_parent_row_uuid = $_GET["virtual_data_parent_row_uuid"]; } $search_all = check_str($_GET["search_all"]); } //used for changing the order $order_by = $_GET["order_by"]; $order = $_GET["order"]; //used to alternate colors when paging $c = 0; $row_style["0"] = "row_style0"; $row_style["1"] = "row_style1"; //show the header require_once "includes/header.php"; //get the information about the virtual table by using the id $sql = ""; $sql .= "select * from v_virtual_tables "; $sql .= "where domain_uuid = '$domain_uuid' "; $sql .= "and virtual_table_uuid = '$virtual_table_uuid' "; $prep_statement = $db->prepare(check_sql($sql)); $prep_statement->execute(); $result = $prep_statement->fetchAll(PDO::FETCH_ASSOC); foreach ($result as &$row) { $virtual_table_category = $row["virtual_table_category"]; $virtual_table_label = $row["virtual_table_label"]; $virtual_table_name = $row["virtual_table_name"]; $virtual_table_auth = $row["virtual_table_auth"]; $virtual_table_captcha = $row["virtual_table_captcha"]; $virtual_table_parent_uuid = $row["virtual_table_parent_uuid"]; $virtual_table_description = $row["virtual_table_description"]; break; //limit to 1 row } unset ($prep_statement); //get the field information $db_field_name_array = array(); $db_value_array = array(); $db_names .= "\n"; $sql = "select * from v_virtual_table_fields "; $sql .= "where domain_uuid = '$domain_uuid' "; $sql .= "and virtual_table_uuid = '$virtual_table_uuid' "; $sql .= "order by virtual_field_order asc "; $prep_statement = $db->prepare($sql); $prep_statement->execute(); $result_names = $prep_statement->fetchAll(PDO::FETCH_ASSOC); $result_count = count($result); foreach($result_names as $row) { $virtual_field_label = $row["virtual_field_label"]; $virtual_field_name = $row["virtual_field_name"]; $virtual_field_type = $row["virtual_field_type"]; $virtual_field_value = $row["virtual_field_value"]; $virtual_field_list_hidden = $row["virtual_field_list_hidden"]; $virtual_field_column = $row["virtual_field_column"]; $virtual_field_required = $row["virtual_field_required"]; $virtual_field_order = $row["virtual_field_order"]; $virtual_field_order_tab = $row["virtual_field_order_tab"]; $virtual_field_description = $row["virtual_field_description"]; $name_array[$virtual_field_name]['virtual_field_label'] = $row["virtual_field_label"]; $name_array[$virtual_field_name]['virtual_field_type'] = $row["virtual_field_type"]; $name_array[$virtual_field_name]['virtual_field_list_hidden'] = $row["virtual_field_list_hidden"]; $name_array[$virtual_field_name]['virtual_field_column'] = $row["virtual_field_column"]; $name_array[$virtual_field_name]['virtual_field_required'] = $row["virtual_field_required"]; $name_array[$virtual_field_name]['virtual_field_order'] = $row["virtual_field_order"]; $name_array[$virtual_field_name]['virtual_field_order_tab'] = $row["virtual_field_order_tab"]; $name_array[$virtual_field_name]['virtual_field_description'] = $row["virtual_field_description"]; } unset($sql, $prep_statement, $row); $fieldcount = count($name_array); //get the data $sql = ""; $sql .= "select * from v_virtual_table_data "; $sql .= "where domain_uuid = '".$domain_uuid."' "; if (strlen($search_all) == 0) { $sql .= "and virtual_table_uuid = '$virtual_table_uuid' "; if (strlen($virtual_data_parent_row_uuid) > 0) { $sql .= " and virtual_data_parent_row_uuid = '$virtual_data_parent_row_uuid' "; } } else { $sql .= "and virtual_data_row_uuid in ("; $sql .= "select virtual_data_row_uuid from v_virtual_table_data \n"; $sql .= "where domain_uuid = '".$domain_uuid."' "; $sql .= "and virtual_table_uuid = '$virtual_table_uuid' "; if (strlen($virtual_data_parent_row_uuid) == 0) { $tmp_digits = preg_replace('{\D}', '', $search_all); if (is_numeric($tmp_digits) && strlen($tmp_digits) > 5) { if (strlen($tmp_digits) == '11' ) { $sql .= "and virtual_data_field_value like '%".substr($tmp_digits, -10)."%' \n"; } else { $sql .= "and virtual_data_field_value like '%$tmp_digits%' \n"; } } else { $sql .= "and virtual_data_field_value like '%$search_all%' \n"; } } else { $sql .= "and virtual_data_parent_row_uuid = '$virtual_data_parent_row_uuid' "; } $sql .= ")\n"; } $sql .= "limit 20000\n"; $prep_statement = $db->prepare($sql); $prep_statement->execute(); $result_values = $prep_statement->fetchAll(PDO::FETCH_ASSOC); foreach($result_values as $row) { //set a php variable $virtual_field_name = $row[virtual_field_name]; $virtual_data_row_uuid = $row[virtual_data_row_uuid]; //restructure the data by setting it the value_array $value_array[$virtual_data_row_uuid][$virtual_field_name] = $row[virtual_data_field_value]; $value_array[$virtual_data_row_uuid]['virtual_table_uuid'] = $row[virtual_table_uuid]; $value_array[$virtual_data_row_uuid]['virtual_data_row_uuid'] = $row[virtual_data_row_uuid]; $value_array[$virtual_data_row_uuid]['virtual_table_parent_uuid'] = $row[virtual_table_parent_uuid]; $value_array[$virtual_data_row_uuid]['virtual_data_parent_row_uuid'] = $row[virtual_data_parent_row_uuid]; } $num_rows = count($value_array); //create the connection to the memory dbase_add_record try { $db_memory = new PDO('sqlite::memory:'); //sqlite 3 } catch (PDOException $error) { print "error: " . $error->getMessage() . "
"; die(); } //create a memory database and add the fields to the table $sql = "CREATE TABLE memory_table "; $sql .= "("; $sql .= "'id' INTEGER PRIMARY KEY, "; $sql .= "'virtual_table_uuid' TEXT, "; $sql .= "'virtual_data_row_uuid' TEXT, "; $sql .= "'virtual_table_parent_uuid' TEXT, "; $sql .= "'virtual_data_parent_row_uuid' TEXT, "; foreach($result_names as $row) { if ($row["virtual_field_type"] != "label") { if ($row["virtual_field_name"] != "domain_uuid") { //$row["virtual_field_label"]; //$row["virtual_field_name"] //$row["virtual_field_type"]; if ($row["virtual_field_name"] == "number") { $sql .= "'".$row["virtual_field_name"]."' NUMERIC, "; } else { $sql .= "'".$row["virtual_field_name"]."' TEXT, "; } } } } $sql .= "'domain_uuid' TEXT "; $sql .= ");"; //echo "$sql

\n"; $prep_statement = $db_memory->prepare($sql); $prep_statement->execute(); unset ($prep_statement, $sql); //list the values from the array $x = 0; foreach($value_array as $array) { //insert the data into the memory table $sql = "insert into memory_table "; $sql .= "("; $sql .= "'virtual_table_uuid', "; $sql .= "'virtual_data_row_uuid', "; $sql .= "'virtual_table_parent_uuid', "; $sql .= "'virtual_data_parent_row_uuid', "; //foreach($array as $key => $value) { // $sql .= "'$key', "; foreach($result_names as $row) { $virtual_field_name = $row["virtual_field_name"]; $sql .= "'$virtual_field_name', "; } $sql .= "'domain_uuid' "; $sql .= ")"; $sql .= "values "; $sql .= "("; $sql .= "'".$array['virtual_table_uuid']."', "; $sql .= "'".$array['virtual_data_row_uuid']."', "; $sql .= "'".$array['virtual_table_parent_uuid']."', "; $sql .= "'".$array['virtual_data_parent_row_uuid']."', "; //foreach($array as $key => $value) { // $sql .= "'$value', "; foreach($result_names as $row) { $virtual_field_name = $row["virtual_field_name"]; $sql .= "'".check_str($array[$virtual_field_name])."', "; } $sql .= "'$domain_uuid' "; $sql .= ");"; //echo "$sql

\n"; $db_memory->exec(check_sql($sql)); unset($sql); unset($array); //unset the row of data unset($value_array[$x]); //increment the value $x++; } //set the title and description of the virtual table echo "
\n"; echo "\n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo "
$virtual_table_label
\n"; echo " $virtual_table_description\n"; echo "
\n"; if (strlen($virtual_data_parent_row_uuid) == 0) { $search_all = str_replace("''", "'", $search_all); echo "
\n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo "
\n"; } echo "
\n"; echo "
"; //prepare for paging the results require_once "includes/paging.php"; $rows_per_page = 100; $param = ""; $page = $_GET['page']; if (strlen($page) == 0) { $page = 0; $_GET['page'] = 0; } if (strlen($virtual_table_parent_uuid) > 0) { $param = "&id=$virtual_table_parent_uuid&virtual_data_row_uuid=$virtual_data_row_uuid"; } else { $param = "&id=$virtual_table_uuid&virtual_data_row_uuid=$virtual_data_row_uuid"; } list($paging_controls, $rows_per_page, $var_3) = paging($num_rows, $param, $rows_per_page); $offset = $rows_per_page * $page; //list the data in the database $sql = "select * from memory_table \n"; $sql .= "where domain_uuid = '$domain_uuid' \n"; $sql .= "limit $rows_per_page offset $offset \n"; //$sql .= "order by virtual_field_order asc \n"; //echo "
\n";
	//echo $sql;
	//echo "
\n"; $prep_statement = $db_memory->prepare($sql); $prep_statement->execute(); $result = $prep_statement->fetchAll(PDO::FETCH_ASSOC); //begin the list echo "\n"; echo "\n"; foreach($result_names as $row) { if ($row['virtual_field_list_hidden'] != "hide") { echo "\n"; } } echo "\n"; echo "\n"; $db_values = ''; $x = 0; foreach ($result as &$row) { echo "\n"; foreach($result_names as $row2) { $virtual_field_name = $row2[virtual_field_name]; //get the values from the array and set as php variables $virtual_field_label = $name_array[$virtual_field_name]['virtual_field_label']; $virtual_field_type = $name_array[$virtual_field_name]['virtual_field_type']; $virtual_field_list_hidden = $name_array[$virtual_field_name]['virtual_field_list_hidden']; $virtual_field_column = $name_array[$virtual_field_name]['virtual_field_column']; $virtual_field_required = $name_array[$virtual_field_name]['virtual_field_required']; $virtual_field_order = $name_array[$virtual_field_name]['virtual_field_order']; $virtual_field_order_tab = $name_array[$virtual_field_name]['virtual_field_order_tab']; $virtual_field_description = $name_array[$virtual_field_name]['virtual_field_description']; if ($virtual_field_list_hidden != "hide") { switch ($virtual_field_type) { case "textarea": $tmp_value = str_replace("\n", "
\n", $row[$virtual_field_name]); echo "\n"; unset($tmp_value); break; case "email": echo "\n"; break; case "phone": $tmp_phone = $row[$virtual_field_name]; $tmp_phone = format_phone($tmp_phone); echo "\n"; break; case "url": $url = $row[$virtual_field_name]; if (substr($url,0,4) != "http") { $url = 'http://'.$url; } echo "\n"; break; default: echo "\n"; break; } } } echo "\n"; echo "\n"; if ($c==0) { $c=1; } else { $c=0; } } //show the paging tools and final add button echo "\n"; echo "\n"; echo "\n"; echo "
  ".$row['virtual_field_label']."  \n"; if (permission_exists('virtual_tables_data_add')) { echo " $v_link_label_add\n"; } echo "
".$tmp_value." ".$row[$virtual_field_name]." ".$tmp_phone." ".$row[$virtual_field_name]." ".$row[$virtual_field_name]." \n"; if (permission_exists('virtual_tables_data_edit')) { if (strlen($virtual_data_parent_row_uuid) == 0) { echo " $v_link_label_edit\n"; } else { echo " $v_link_label_edit\n"; } } if (permission_exists('virtual_tables_data_delete')) { echo" $v_link_label_delete\n"; } echo "
\n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo "
 $paging_controls\n"; if (permission_exists('virtual_tables_data_add')) { echo " $v_link_label_add\n"; } echo "
\n"; echo "
\n"; echo "

\n"; echo ""; //show the header echo "

"; require_once "includes/footer.php"; ?>