Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
wp-content
/
plugins
/
contact-form-maker
/
admin
/
views
:
FMSqlMapping.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php class FMViewFormMakerSQLMapping_fmc extends FMAdminView_fmc { private $fm_nonce = null; public function __construct() { $this->fm_nonce = wp_create_nonce('fm_ajax_nonce'); wp_print_scripts('jquery'); wp_print_scripts('jquery-ui-tooltip'); wp_print_styles(WDFMInstance(self::PLUGIN)->handle_prefix . '-tables'); wp_print_styles(WDFMInstance(self::PLUGIN)->handle_prefix . '-jquery-ui'); wp_print_styles('dashicons'); } /** * Edit query. * * @param array $params */ public function edit_query( $params = array() ) { $id = $params['id']; $form_id = $params['form_id']; $label = $params['label']; $query_obj = $params['query_obj']; $tables = $params['tables']; $table_struct = $params['table_struct']; $temp = explode('***wdfcon_typewdf***', $query_obj->details); $con_type = $temp[0]; $temp = explode('***wdfcon_methodwdf***', $temp[1]); $con_method = $temp[0]; $temp = explode('***wdftablewdf***', $temp[1]); $table_cur = $temp[0]; $temp = explode('***wdfhostwdf***', $temp[1]); $host = $temp[0]; $temp = explode('***wdfportwdf***', $temp[1]); $port = $temp[0]; if ($port) { $host .= ':' . $port; } $temp = explode('***wdfusernamewdf***', $temp[1]); $username = $temp[0]; $temp = explode('***wdfpasswordwdf***', $temp[1]); $password = $temp[0]; $temp = explode('***wdfdatabasewdf***', $temp[1]); $database = $temp[0]; $details = $temp[1]; $filter_types = array( "type_submit_reset", "type_map", "type_editor", "type_captcha", "type_recaptcha", "type_button", "type_paypal_total", "type_send_copy", ); $label_id = array(); $label_order = array(); $label_order_original = array(); $label_type = array(); $label_all = explode('#****#', $label); $label_all = array_slice($label_all, 0, count($label_all) - 1); foreach ( $label_all as $key => $label_each ) { $label_id_each = explode('#**id**#', $label_each); $label_oder_each = explode('#**label**#', $label_id_each[1]); if ( in_array($label_oder_each[1], $filter_types) ) { continue; } array_push($label_id, $label_id_each[0]); array_push($label_order_original, $label_oder_each[0]); $ptn = "/[^a-zA-Z0-9_]/"; $rpltxt = ""; $label_temp = preg_replace($ptn, $rpltxt, $label_oder_each[0]); array_push($label_order, $label_temp); array_push($label_type, $label_oder_each[1]); } $form_fields = ''; foreach ( $label_id as $key => $lid ) { $form_fields .= '<a onclick="insert_field(' . $lid . '); jQuery(\'#fieldlist\').hide();" style="display:block; text-decoration:none;">' . $label_order_original[$key] . '</a>'; } $user_fields = array( "subid" => "Submission ID", "ip" => "Submitter's IP", "userid" => "User ID", "username" => "Username", "useremail" => "User Email", ); foreach ( $user_fields as $user_key => $user_field ) { $form_fields .= '<a onclick="insert_field(\'' . $user_key . '\'); jQuery(\'#fieldlist\').hide();" style="display:block; text-decoration:none;">' . $user_field . '</a>'; } $cond = '<div id="condid"><select id="sel_condid" style="width: 160px">'; foreach ( $table_struct as $col ) { $cond .= '<option>' . str_replace("'", "SingleQuot", $col->Field) . '</option>'; } $cond .= '</select>'; $cond .= '<select id="op_condid"><option value="=" selected="selected">=</option><option value="!=">!=</option><option value=">">></option><option value="<"><</option><option value=">=">>=</option><option value="<="><=</option><option value="%..%">Like</option><option value="..%">Starts with</option><option value="%..">Ends with</option></select>'; $cond .= '<input autocomplete="off" id="val_condid" style="width:170px" type="text" class="fm-where-input" />'; $cond .= '<select id="andor_condid" style="visibility: hidden;"><option value="AND">AND</option><option value="OR">OR</option></select>'; $cond .= '<img src="' . WDFMInstance(self::PLUGIN)->plugin_url . '/images/delete.png?ver=' . WDFMInstance(self::PLUGIN)->plugin_version . '" onclick="delete_cond("condid")" style="vertical-align: middle;"></div>'; ?> <script> jQuery(document).ready(function() { // Add tooltip to elements with "wd-info" class. if ( typeof jQuery(document).tooltip != "undefined" ) { jQuery(document).tooltip({ show: null, items: ".wd-info", content: function () { var element = jQuery(this); if (element.is(".wd-info")) { var html = jQuery('#' + jQuery(this).data("id")).html(); return html; } }, open: function (event, ui) { if (typeof(event.originalEvent) === 'undefined') { return false; } var $id = jQuery(ui.tooltip).attr('id'); // close any lingering tooltips jQuery('div.ui-tooltip').not('#' + $id).remove(); }, close: function (event, ui) { ui.tooltip.hover(function () { jQuery(this).stop(true).fadeTo(400, 1); }, function () { jQuery(this).fadeOut('400', function () { jQuery(this).remove(); }); }); }, position: { my: "center top+30", at: "center top", using: function (position, feedback) { jQuery(this).css(position); jQuery("<div>") .addClass("tooltip-arrow") .addClass(feedback.vertical) .addClass(feedback.horizontal) .appendTo(this); } } }); } }); function connect() { jQuery("input[type='radio']").attr('disabled', ''); jQuery('#struct').html('<div class="fm-loading-container"><div class="fm-loading-content"></div></div>'); jQuery("#struct").load('index.php?option=com_formmaker&task=db_tables&con_type=' + jQuery('input[name=con_type]:checked').val() + '&con_method=' + jQuery('input[name=con_method]:checked').val() + '&format=row'); } jQuery(document).ready(function () { jQuery("#tables").change(function () { jQuery("#struct").removeClass("fm_loading"); jQuery("#table_struct").load('index.php?option=com_formmaker&task=db_table_struct&name=' + jQuery(this).val() + '&con_type=' + jQuery('input[name=con_type]:checked').val() + '&con_method=' + jQuery('input[name=con_method]:checked').val() + '&host=' + jQuery('#host_rem').val() + '&port=' + jQuery('#port_rem').val() + '&username=' + jQuery('#username_rem').val() + '&password=' + jQuery('#password_rem').val() + '&database=' + jQuery('#database_rem').val() + '&format=row&id=' + jQuery("#form_id").val()); }); jQuery('html').click(function () { if (jQuery("#fieldlist").css('display') == "block") { jQuery("#fieldlist").hide(); } }); jQuery('.cols input[type="text"]').on('click', function (event) { event.stopPropagation(); jQuery("#fieldlist").css("top", jQuery(this).offset().top + jQuery(this).height() + 2); jQuery("#fieldlist").css("left", jQuery(this).offset().left); jQuery("#fieldlist").slideDown('fast'); selected_field = this.id; }); jQuery('#query_txt').click(function (event) { event.stopPropagation(); jQuery("#fieldlist").css("top", jQuery(this).offset().top + jQuery(this).height() + 2); jQuery("#fieldlist").css("left", jQuery(this).offset().left); jQuery("#fieldlist").slideDown('fast'); selected_field = this.id; }); jQuery('#fieldlist').click(function (event) { event.stopPropagation(); }); jQuery('.add_cond').click(function () { jQuery('.cols').append(conds.replace(/condid/g, cond_id++).replace('SingleQuot', "'")); update_vis(); }); }); var selected_field = ''; var isvisible = 1; var cond_id = 1; conds = '<?php echo $cond ?>'; fields = new Array(<?php $fields = ""; if ( $table_struct ) { foreach ( $table_struct as $col ) { $fields .= ' "' . $col->Field . '",'; } echo substr($fields, 0, -1); } ?>); function dis(id, x) { if (x) { jQuery('#' + id).removeAttr('disabled'); } else { jQuery('#' + id).attr('disabled', 'disabled'); } } function update_vis() { previous = 0; for (i = 1; i < cond_id; i++) { if (jQuery('#' + i).html()) { jQuery('#andor_' + i).css('visibility', 'hidden'); if (previous) { jQuery('#andor_' + previous).css('visibility', 'visible'); } previous = i; } } } function delete_cond(id) { jQuery('#' + id).remove(); update_vis(); } function save_query() { con_type = jQuery('input[name=con_type]:checked').val(); con_method = jQuery('input[name=con_method]:checked').val(); table = jQuery('#tables').val(); host = jQuery('#host_rem').val(); port = jQuery('#port_rem').val(); username = jQuery('#username_rem').val(); password = jQuery('#password_rem').val(); database = jQuery('#database_rem').val(); str = con_type + "***wdfcon_typewdf***" + con_method + "***wdfcon_methodwdf***" + table + "***wdftablewdf***" + host + "***wdfhostwdf***" + port + "***wdfportwdf***" + username + "***wdfusernamewdf***" + password + "***wdfpasswordwdf***" + database + "***wdfdatabasewdf***"; if (fields.length) { for (i = 0; i < fields.length; i++) { str += fields[i] + '***wdfnamewdf***' + jQuery('#' + fields[i]).val() + '***wdfvaluewdf***' + jQuery('#ch_' + fields[i] + ":checked").length + '***wdffieldwdf***'; } } for (i = 1; i < cond_id; i++) { if (jQuery('#' + i).html()) { str += jQuery('#sel_' + i).val() + '***sel***' + jQuery('#op_' + i).val() + '***op***' + jQuery('#val_' + i).val() + '***val***' + jQuery('#andor_' + i).val() + '***where***'; } } if (!jQuery('#query_txt').val()) { gen_query(); } jQuery('#details').val(str); var datatxt = jQuery("#query_form").serialize() + '&form_id=' + jQuery("#form_id").val(); if (jQuery('#query_txt').val()) { jQuery('.c1').html('<div class="fm-loading-container"><div class="fm-loading-content"></div></div>'); jQuery.ajax({ type: "POST", url: "<?php echo add_query_arg(array( 'action' => 'FormMakerSQLMapping' . WDFMInstance(self::PLUGIN)->plugin_postfix, 'id' => $id, 'form_id' => $form_id, 'task' => 'update_query', 'width' => '1000', 'height' => '500', 'nonce' => $this->fm_nonce, 'TB_iframe' => '1', ), admin_url('admin-ajax.php')); ?>", data: datatxt, success: function (data) { window.parent.wd_fm_apply_options('apply_form_options'); window.parent.FormManageSubmitButton(); window.parent.fm_set_input_value('task', 'apply'); window.parent.document.getElementById('manage_form').submit(); } }); } else { alert('The query is empty.'); } return false; } function gen_query() { if (jQuery('#query_txt').val()) { if (!confirm('Are you sure you want to replace the Query? All the modifications to the Query will be lost.')) { return; } } query = ""; fields = new Array(<?php $fields = ""; if ( $table_struct ) { foreach ( $table_struct as $col ) { $fields .= ' "' . str_replace("'", "SingleQuot", $col->Field) . '",'; } echo substr($fields, 0, -1); } ?>); con_type = jQuery('input[name=con_type]:checked').val(); con_method = jQuery('input[name=con_method]:checked').val(); table = jQuery('#tables').val(); fls = ''; vals = ''; valsA = new Array(); flsA = new Array(); if (fields.length) { for (i = 0; i < fields.length; i++) { if (jQuery('#ch_' + fields[i] + ":checked").length) { flsA.push(fields[i]); valsA.push(jQuery('#' + fields[i]).val()); } } } if (con_method == "insert") { if (flsA.length) { for (i = 0; i < flsA.length - 1; i++) { fls += '`' + flsA[i] + '`, '; vals += '"' + valsA[i] + '", '; } fls += '`' + flsA[i] + '`'; vals += '"' + valsA[i] + '"'; } if (fls) { query = "INSERT INTO " + jQuery('#tables').val() + " (" + fls + ") VALUES (" + vals + ")"; } } if (con_method == "update") { if (flsA.length) { for (i = 0; i < flsA.length - 1; i++) { vals += '`' + flsA[i] + '`="' + valsA[i] + '", '; } vals += '`' + flsA[i] + '`="' + valsA[i] + '"'; } where = ""; previous = ''; for (i = 1; i < cond_id; i++) { if (jQuery('#' + i).html()) { if (jQuery('#op_' + i).val() == "%..%") { op_val = ' LIKE "%' + jQuery('#val_' + i).val() + '%"'; } else if (jQuery('#op_' + i).val() == "..%") { op_val = ' LIKE "' + jQuery('#val_' + i).val() + '%"'; } else if (jQuery('#op_' + i).val() == "%..") { op_val = ' LIKE "%' + jQuery('#val_' + i).val() + '"'; } else { op_val = ' ' + jQuery('#op_' + i).val() + ' "' + jQuery('#val_' + i).val() + '"'; } where += previous + ' `' + jQuery('#sel_' + i).val() + '`' + op_val; previous = ' ' + jQuery('#andor_' + i).val(); } } if (vals) { query = "UPDATE " + jQuery('#tables').val() + " SET " + vals + (where ? ' WHERE' + where : ''); } } if (con_method == "delete") { where = ""; previous = ''; for (i = 1; i < cond_id; i++) { if (jQuery('#' + i).html()) { if (jQuery('#op_' + i).val() == "%..%") { op_val = ' LIKE "%' + jQuery('#val_' + i).val() + '%"'; } else if (jQuery('#op_' + i).val() == "..%") { op_val = ' LIKE "' + jQuery('#val_' + i).val() + '%"'; } else if (jQuery('#op_' + i).val() == "%..") { op_val = ' LIKE "%' + jQuery('#val_' + i).val() + '"'; } else { op_val = ' ' + jQuery('#op_' + i).val() + ' "' + jQuery('#val_' + i).val() + '"'; } where += previous + ' ' + jQuery('#sel_' + i).val() + op_val; previous = ' ' + jQuery('#andor_' + i).val(); } } if (where) { query = "DELETE FROM " + jQuery('#tables').val() + ' WHERE' + where; } } jQuery('#query_txt').val(query.replace("SingleQuot", "'")); } function insert_field(myValue) { if (!selected_field) { return; } myField = document.getElementById(selected_field); if (document.selection) { myField.focus(); sel = document.selection.createRange(); sel.text = myValue; } else { if (myField.selectionStart || myField.selectionStart == '0') { var startPos = myField.selectionStart; var endPos = myField.selectionEnd; myField.value = myField.value.substring(0, startPos) + "{" + myValue + "}" + myField.value.substring(endPos, myField.value.length); } else { myField.value += "{" + myValue + "}"; } } } </script> <style> .ui-tooltip { padding: 0 10px !important; position: absolute; z-index: 9999; max-width: 300px; white-space: pre-line; } .ui-tooltip .ui-tooltip-content { font-weight: normal; } .ui-tooltip, .tooltip-arrow:after { background: #23282D; } .ui-tooltip { color: white; border-radius: 10px; font: bold 14px "Helvetica Neue", Sans-Serif; box-shadow: 0 0 7px black; } .ui-tooltip p { margin: 0; } .tooltip-arrow { width: 70px; height: 16px; overflow: hidden; position: absolute; left: 50%; margin-left: -35px; bottom: -16px; } .tooltip-arrow.top { top: -16px; bottom: auto; } .tooltip-arrow.left { left: 20%; } .tooltip-arrow:after { content: ""; position: absolute; left: 20px; top: -20px; width: 25px; height: 25px; box-shadow: 6px 5px 9px -9px #23282D; -webkit-transform: rotate(45deg); -ms-transform: rotate(45deg); transform: rotate(45deg); } .tooltip-arrow.top:after { bottom: -20px; top: auto; } .screen-reader-text, .screen-reader-text span, .ui-helper-hidden-accessible { border: 0; clip: rect(1px,1px,1px,1px); -webkit-clip-path: inset(50%); clip-path: inset(50%); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; word-wrap: normal!important; } .field-name { vertical-align: middle; } .wd-info { cursor: pointer; vertical-align: middle; color: #777777; } .wd-hide { display: none; } .c1 { padding: 0 10px; } .main_func { font-family: Segoe UI; display: inline-block; width: 550px; } .main_func .admintable { width: 100%; padding: 10px 0; margin-bottom: 15px; } .main_func .admintable .key { width: 36%; } .main_func .admintable input[type='text'], .main_func .admintable input[type='password'] { padding: 4px 6px; width: 244px; } .btn.connect { background: #4EC0D9; width: 78px; height: 32px; border: 1px solid #4EC0D9; border-radius: 0px; color: #fff; cursor: pointer; } .desc { font-size: 13px; display: inline-block; width: 100%; height: 100%; position: fixed; margin: 15px; margin-left: 45px; overflow: scroll; } .desc > div { margin-top: 3px; } .desc div span { width: 62px; display: inline-block; } .desc button { max-width: 190px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; padding: 4px; background: #eee; border: 1px solid #ccc; border-radius: 0px; height: 27px; } .key label { display: inline-block; width: 150px; } .select-db-label { display: inline-block; font-size: 16px; width: 201px; } .select-db-select { width: 325px; padding: 6px; } .struct { border: 3px solid red; padding: 4px 6px; display: inline-block; margin-top: 10px; } .cols div:nth-child(even) { background: #FFF } .cols div:nth-child(odd) { background: #F5F5F5 } .cols div { height: 28px; padding: 5px } .cols label { display: inline-block; width: 175px; font-size: 15px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; vertical-align: middle; } .cols input[type="text"] { width: 295px; line-height: 18px; height: 28px; border: 1px solid #ccc; padding: 0 3px; margin-right: 2px; } .cols input[type="text"]:disabled { cursor: not-allowed; background-color: #eee; } .cols input[type="checkbox"] { width: 20px; line-height: 18px; height: 20px; vertical-align: middle; } .cols select { line-height: 18px; height: 28px; margin-right: 2px; } #fieldlist { position: absolute; width: 225px; background: #fff; border: solid 1px #c7c7c7; top: 0; left: 0; z-index: 1000; } #fieldlist a { padding: 5px; cursor: pointer; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } #fieldlist a:hover { background: #ccc; } .gen_query, .gen_query:focus { width: 148px; height: 38px; background: #4EC0D9; color: white; cursor: pointer; border: 0px; font-size: 14px; font-weight: bold; margin: 20px 0; border-radius: 0px; } .gen_query:active { background: #ccc; } .fm-query-save { float: right; font-size: 13px; margin: 0 20px; background: #4EC0D9; width: 83px; height: 34px; border: 1px solid #4EC0D9; border-radius: 0px; color: #fff; cursor: pointer; } .select-db-op { display: inline-block; text-align: right; font-weight: bold; font-size: 18px; padding: 5px 0; margin: 5px 0; background: none !important; } .select-db-op.where { width: 272px; } .select-db-op img { float: left; } .select-db-label { display: inline-block; font-size: 16px; width: 201px; } .select-db-select { width: 325px; padding: 6px; } .fm-query-save { float: right; font-size: 13px; margin: 0 20px; background: #4EC0D9; width: 83px; height: 34px; border: 1px solid #4EC0D9; border-radius: 0px; color: #fff; cursor: pointer; } </style> <div class="c1"> <div class="main_func"> <table class="admintable"> <tr valign="top"> <td class="key"> <label style="font-size:20px;">Connection type: </label> </td> <td> <input type="radio" name="con_type" id="local" value="local" <?php if ( $con_type == 'local' ) echo 'checked="checked"' ?> disabled> <label for="local">Local</label> <input type="radio" name="con_type" id="remote" value="remote" <?php if ( $con_type == 'remote' ) echo 'checked="checked"' ?> disabled> <label for="remote">Remote</label> </td> <td rowspan="2"> <input type="button" value="Connect" onclick="connect()" class="wd-button button-primary" disabled> </td> </tr> <tr class="remote_info" <?php if ( $con_type == 'local' ) echo 'style="display:none"' ?>> <td class="key">Host</td> <td> <input type="text" name="host" id="host_rem" style="width:150px" value="<?php echo $host; ?>" disabled> Port : <input type="text" name="port" id="port_rem" value="<?php echo $port; ?>" style="width:48px" disabled> </td> </tr> <tr class="remote_info" <?php if ( $con_type == 'local' ) echo 'style="display:none"' ?>> <td class="key">Username</td> <td> <input type="text" name="username" id="username_rem" value="<?php echo $username; ?>" disabled> </td> </tr> <tr class="remote_info" <?php if ( $con_type == 'local' ) echo 'style="display:none"' ?>> <td class="key">Password</td> <td> <input type="password" name="password" id="password_rem" value="<?php echo $password; ?>" disabled> </td> </tr> <tr class="remote_info" <?php if ( $con_type == 'local' ) echo 'style="display:none"' ?>> <td class="key">Database</td> <td> <input type="text" name="database" id="database_rem" value="<?php echo $database; ?>" disabled> </td> </tr> <tr valign="top"> <td class="key"> <label style="font-size:20px;">Type: </label> </td> <td> <input type="radio" name="con_method" id="insert" value="insert" <?php if ( $con_method == 'insert' ) echo 'checked="checked"' ?> disabled> <label for="insert">Insert</label> <input type="radio" name="con_method" id="update" value="update" <?php if ( $con_method == 'update' ) echo 'checked="checked"' ?> disabled> <label for="update">Update</label> <input type="radio" name="con_method" id="delete" value="delete" <?php if ( $con_method == 'delete' ) echo 'checked="checked"' ?> disabled> <label for="delete">Delete</label> </td> </tr> </table> <div id="struct"> <label for="tables" class="select-db-label">Select a table</label> <select name="tables" id="tables" class="select-db-select" disabled> <option value=""></option> <?php foreach ( $tables as $table ) { echo '<option value="' . $table . '" ' . ($table_cur == $table ? 'selected' : '') . ' >' . $table . '</option>'; } ?> </select> <br /> <div id="table_struct"> <?php if ( $table_struct ) { ?> <div class="struct"> <div class="cols"> <?php $temps = explode('***wdffieldwdf***', $details); $wheres = $temps[count($temps) - 1]; $temps = array_slice($temps, 0, count($temps) - 1); $col_names = array(); $col_vals = array(); $col_checks = array(); foreach ( $temps as $temp ) { $temp = explode('***wdfnamewdf***', $temp); array_push($col_names, $temp[0]); $temp = explode('***wdfvaluewdf***', $temp[1]); array_push($col_vals, $temp[0]); array_push($col_checks, $temp[1]); } if ( $con_method == 'insert' or $con_method == 'update' ) { echo '<div style="background: none;text-align: center;font-size: 20px;color: #000;font-weight: bold;"> SET </div>'; foreach ( $table_struct as $key => $col ) { $title = $col->Field; $title .= "<ul style='padding-left: 17px;'>"; if ( $col->Type ) { $title .= "<li>" . __('Type', WDFMInstance(self::PLUGIN)->prefix) . " - " . $col->Type . "</li>"; } if ( $col->Null ) { $title .= "<li>" . __('Null', WDFMInstance(self::PLUGIN)->prefix) . " - " . $col->Null . "</li>"; } if ( $col->Key ) { $title .= "<li>" . __('Key', WDFMInstance(self::PLUGIN)->prefix) . " - " . $col->Key . "</li>"; } if ( $col->Default ) { $title .= "<li>" . __('Default', WDFMInstance(self::PLUGIN)->prefix) . " - " . $col->Default . "</li>"; } if ( $col->Extra ) { $title .= "<li>" . __('Extra', WDFMInstance(self::PLUGIN)->prefix) . " - " . $col->Extra . "</li>"; } $title .= "</ul>"; ?> <div> <label> <b><?php echo $col->Field; ?></b> <i class="wd-info dashicons dashicons-info" data-id="wd-info-<?php echo $key; ?>"></i> <div id="wd-info-<?php echo $key; ?>" class="wd-hide"> <?php echo $title; ?> </div> </label> <input autocomplete="off" type="text" id="<?php echo str_replace("'", "SingleQuot", $col->Field); ?>" <?php if ( !$col_checks[$key] ) echo 'disabled="disabled"' ?> value="<?php echo $col_vals[$key]; ?>" /> <input id="ch_<?php echo str_replace("'", "SingleQuot", $col->Field); ?>" type="checkbox" onClick="dis('<?php echo str_replace("'", "SingleQuot", $col->Field); ?>', this.checked)" <?php if ( $col_checks[$key] ) echo 'checked="checked"' ?> /> </div> <?php } } if ( $con_method == 'delete' or $con_method == 'update' ) { echo '<div class="select-db-op where"><img src="' . WDFMInstance(self::PLUGIN)->plugin_url . '/images/add_condition.png?ver=' . WDFMInstance(self::PLUGIN)->plugin_version . '" title="ADD" class="add_cond"/>WHERE</div>'; if ( $wheres ) { echo '<script>'; $wheres = explode('***where***', $wheres); $wheres = array_slice($wheres, 0, count($wheres) - 1); foreach ( $wheres as $where ) { $temp = explode('***sel***', $where); $sel = $temp[0]; $temp = explode('***op***', $temp[1]); $op = $temp[0]; $temp = explode('***val***', $temp[1]); $val = $temp[0]; $andor = $temp[1]; echo 'jQuery(".cols").append(conds.replace(/condid/g, cond_id++).replace(\'SingleQuot\', "\'")); update_vis(); jQuery("#sel_"+(cond_id-1)).val("' . html_entity_decode($sel, ENT_QUOTES) . '"); jQuery("#op_"+(cond_id-1)).val("' . $op . '"); jQuery("#val_"+(cond_id-1)).val("' . $val . '"); jQuery("#andor_"+(cond_id-1)).val("' . $andor . '");'; } echo '</script>'; } } ?> </div> <div style="color:red; background: none">The changes above will not affect the query until you click "Generate query".</div> </div> <br /> <input type="button" value="Generate Query" class="gen_query" onclick="gen_query()"> <br /> <form name="query_form" id="query_form"> <label style="vertical-align: top; width: 102px; display: inline-block;" for="query_txt"> Query: </label><textarea id="query_txt" name="query" rows=5 style="width:428px"><?php echo $query_obj->query; ?></textarea> <input type="hidden" name="details" id="details"> <input type="hidden" name="id" value="<?php echo $query_obj->id; ?>"> </form> <input type="button" value="Save" class="fm-query-save" onclick="save_query()"> <div id="fieldlist" style="display: none;"> <?php echo $form_fields; ?> </div> <?php } ?> </div> </div> <input type="hidden" value="<?php echo $form_id ?>" id="form_id"> </div> <div class="desc"> <?php foreach ( $label_id as $key => $lid ) { echo '<div>{' . $lid . '} - <button onclick="insert_field(' . $lid . ');">' . $label_order_original[$key] . '</button></div>'; } $user_fields = array( "subid" => "Submission ID", "ip" => "Submitter's IP", "userid" => "User ID", "username" => "Username", "useremail" => "User Email", ); foreach ( $user_fields as $user_key => $user_field ) { echo '<div>{' . $user_key . '} - <button onclick="insert_field(\'' . $user_key . '\');">' . $user_field . '</button></div>'; } ?> </div> </div> <?php die(); } /** * Add query. * * @param array $params */ public function add_query( $params = array() ) { $label = $params['label']; $form_id = $params['form_id']; $filter_types = array( "type_submit_reset", "type_map", "type_editor", "type_captcha", "type_recaptcha", "type_button", "type_paypal_total", "type_send_copy", ); $label_id = array(); $label_order = array(); $label_order_original = array(); $label_type = array(); $label_all = explode('#****#', $label); $label_all = array_slice($label_all, 0, count($label_all) - 1); foreach ( $label_all as $key => $label_each ) { $label_id_each = explode('#**id**#', $label_each); $label_oder_each = explode('#**label**#', $label_id_each[1]); if ( in_array($label_oder_each[1], $filter_types) ) { continue; } array_push($label_id, $label_id_each[0]); array_push($label_order_original, $label_oder_each[0]); $ptn = "/[^a-zA-Z0-9_]/"; $rpltxt = ""; $label_temp = preg_replace($ptn, $rpltxt, $label_oder_each[0]); array_push($label_order, $label_temp); array_push($label_type, $label_oder_each[1]); } ?> <script> function insert_field() { } function connect() { jQuery("input[type='radio']").attr('disabled', ''); jQuery(".connect").attr('disabled', ''); jQuery('#struct').html('<div class="fm-loading-container"><div class="fm-loading-content"></div></div>'); jQuery.ajax({ type: "POST", url: "<?php echo add_query_arg(array( 'action' => 'FormMakerSQLMapping' . WDFMInstance(self::PLUGIN)->plugin_postfix, 'id' => 0, 'form_id' => $form_id, 'task' => 'db_tables', 'width' => '1000', 'height' => '500', 'nonce' => $this->fm_nonce, 'TB_iframe' => '1', ), admin_url('admin-ajax.php')); ?>", data: 'con_type=' + jQuery('input[name=con_type]:checked').val() + '&con_method=' + jQuery('input[name=con_method]:checked').val() + '&host=' + jQuery('#host_rem').val() + '&port=' + jQuery('#port_rem').val() + '&username=' + jQuery('#username_rem').val() + '&password=' + jQuery('#password_rem').val() + '&database=' + jQuery('#database_rem').val() + '&format=row&nonce=<?php echo $this->fm_nonce; ?>', success: function (data) { jQuery("#struct").removeClass("fm_loading"); if (data == 1) { jQuery("#struct").html('<div style="font-size: 22px; text-align: center; padding-top: 15px;">Could not connect to MySQL.</div>') jQuery(".connect").removeAttr('disabled'); jQuery("input[type='radio']").removeAttr('disabled', ''); } else { jQuery("#struct").html(data.replace("<a", "<a target='_blank'")); } } }); } function shh(x) { if (x) { jQuery(".remote_info").show(); } else { jQuery(".remote_info").hide(); } } </script> <style> .c1 { padding: 0 10px; } .main_func { font-family: Segoe UI; display: inline-block; width: 550px; } .main_func .admintable { width: 100%; padding: 10px 0; margin-bottom: 15px; } .main_func .admintable .key { width: 36%; } .main_func .admintable input[type='text'], .main_func .admintable input[type='password'] { padding: 4px 6px; width: 244px; } .btn.connect { background: #4EC0D9; width: 78px; height: 32px; border: 1px solid #4EC0D9; border-radius: 0px; color: #fff; cursor: pointer; } .desc { font-size: 13px; display: inline-block; width: 100%; height: 100%; position: fixed; margin: 15px; margin-left: 45px; overflow: scroll; } .desc > div { margin-top: 3px; } .desc div span { width: 62px; display: inline-block; } .desc button { max-width: 190px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; padding: 4px; background: #eee; border: 1px solid #ccc; border-radius: 0px; height: 27px; } .key label { display: inline-block; width: 150px; } .select-db-label { display: inline-block; font-size: 16px; width: 201px; } .select-db-select { width: 325px; padding: 6px; } </style> <div class="c1"> <div class="main_func"> <table class="admintable"> <tr valign="top"> <td class="key"> <label style="font-size:20px;">Connection type: </label> </td> <td> <input type="radio" name="con_type" id="local" value="local" checked="checked" onclick="shh(false)"> <label for="local">Local</label> <input type="radio" name="con_type" id="remote" value="remote" onclick="shh(true)"> <label for="remote">Remote</label> </td> <td rowspan="2"> <input type="button" value="Connect" onclick="connect()" class="btn connect"> </td> </tr> <tr class="remote_info" style="display:none"> <td class="key">Host</td> <td> <input type="text" name="host" id="host_rem" style="width:150px"> Port : <input type="text" name="port" id="port_rem" value="3306" style="width:48px"> </td> </tr> <tr class="remote_info" style="display:none"> <td class="key">Username</td> <td> <input type="text" name="username" id="username_rem"> </td> </tr> <tr class="remote_info" style="display:none"> <td class="key">Password</td> <td> <input type="password" name="password" id="password_rem"> </td> </tr> <tr class="remote_info" style="display:none"> <td class="key">Database</td> <td> <input type="text" name="database" id="database_rem"> </td> </tr> <tr valign="top"> <td class="key"> <label style="font-size:20px;">Type: </label> </td> <td> <input type="radio" name="con_method" id="insert" value="insert" checked="checked"> <label for="insert">Insert</label> <input type="radio" name="con_method" id="update" value="update"> <label for="update">Update</label> <input type="radio" name="con_method" id="delete" value="delete"> <label for="delete">Delete</label> </td> </tr> </table> <div id="struct"> </div> <input type="hidden" value="<?php echo $form_id ?>" id="form_id"> </div> <div class="desc"> <?php foreach ( $label_id as $key => $lid ) { echo '<div><span>{' . $lid . '}</span> - <button onclick="insert_field(' . $lid . ');">' . $label_order_original[$key] . '</button></div>'; } $user_fields = array( "subid" => "Submission ID", "ip" => "Submitter's IP", "userid" => "User ID", "username" => "Username", "useremail" => "User Email", ); foreach ( $user_fields as $user_key => $user_field ) { echo '<div><span>{' . $user_key . '}</span> - <button onclick="insert_field(\'' . $user_key . '\');">' . $user_field . '</button></div>'; } ?> </div> </div> <?php die(); } /** * db tables. * * @param array $params */ public function db_tables( $params = array() ) { $tables = $params['tables']; $form_id = $params['form_id']; ?> <label for="tables" class="select-db-label">Select a table</label> <select name="tables" id="tables" class="select-db-select"> <option value=""></option> <?php foreach ( $tables as $table ) { echo '<option value="' . $table . '" >' . $table . '</option>'; } ?> </select> <br /> <div id="table_struct"> </div> <script> jQuery("#tables").change(function () { jQuery('#table_struct').html('<div class="fm-loading-container"><div class="fm-loading-content"></div></div>'); jQuery.ajax({ type: "POST", url: "<?php echo add_query_arg(array( 'action' => 'FormMakerSQLMapping' . WDFMInstance(self::PLUGIN)->plugin_postfix, 'id' => 0, 'form_id' => $form_id, 'task' => 'db_table_struct', 'width' => '1000', 'height' => '500', 'nonce' => $this->fm_nonce, 'TB_iframe' => '1', ), admin_url('admin-ajax.php')); ?>", data: 'name=' + jQuery(this).val() + '&con_type=' + jQuery('input[name=con_type]:checked').val() + '&con_method=' + jQuery('input[name=con_method]:checked').val() + '&host=' + jQuery('#host_rem').val() + '&port=' + jQuery('#port_rem').val() + '&username=' + jQuery('#username_rem').val() + '&password=' + jQuery('#password_rem').val() + '&database=' + jQuery('#database_rem').val() + '&format=row&nonce=<?php echo $this->fm_nonce; ?>', success: function (data) { jQuery("#table_struct").removeClass("fm_loading"); jQuery("#table_struct").html(data); } }); }) </script> <?php die(); } /** * db table struct. * * @param array $params */ public function db_table_struct( $params = array() ) { $label = $params['label']; $form_id = $params['form_id']; $con_method = $params['con_method']; $table_struct = $params['table_struct']; $filter_types = array( "type_submit_reset", "type_map", "type_editor", "type_captcha", "type_recaptcha", "type_button", "type_paypal_total", "type_send_copy", ); $label_id = array(); $label_order = array(); $label_order_original = array(); $label_type = array(); // stexic $label_all = explode('#****#', $label); $label_all = array_slice($label_all, 0, count($label_all) - 1); foreach ( $label_all as $key => $label_each ) { $label_id_each = explode('#**id**#', $label_each); $label_oder_each = explode('#**label**#', $label_id_each[1]); if ( in_array($label_oder_each[1], $filter_types) ) { continue; } array_push($label_id, $label_id_each[0]); array_push($label_order_original, $label_oder_each[0]); $ptn = "/[^a-zA-Z0-9_]/"; $rpltxt = ""; $label_temp = preg_replace($ptn, $rpltxt, $label_oder_each[0]); array_push($label_order, $label_temp); array_push($label_type, $label_oder_each[1]); } $form_fields = ''; foreach ( $label_id as $key => $id ) { $form_fields .= '<a onclick="insert_field(' . $id . '); jQuery(\'#fieldlist\').hide();" style="display:block; text-decoration:none;">' . $label_order_original[$key] . '</a>'; } $user_fields = array( "subid" => "Submission ID", "ip" => "Submitter's IP", "userid" => "User ID", "username" => "Username", "useremail" => "User Email", ); foreach ( $user_fields as $user_key => $user_field ) { $form_fields .= '<a onclick="insert_field(\'' . $user_key . '\'); jQuery(\'#fieldlist\').hide();" style="display:block; text-decoration:none;">' . $user_field . '</a>'; } $cond = '<div id="condid"><select id="sel_condid" style="width: 160px">'; foreach ( $table_struct as $col ) { $cond .= '<option>' . str_replace("'", "SingleQuot", $col->Field) . '</option>'; } $cond .= '</select>'; $cond .= '<select id="op_condid"><option value="=" selected="selected">=</option><option value="!=">!=</option><option value=">">></option><option value="<"><</option><option value=">=">>=</option><option value="<="><=</option><option value="%..%">Like</option><option value="..%">Starts with</option><option value="%..">Ends with</option></select>'; $cond .= '<input autocomplete="off" id="val_condid" style="width:170px" class="fm-where-input" type="text" />'; $cond .= '<select id="andor_condid" style="visibility: hidden;"><option value="AND">AND</option><option value="OR">OR</option></select>'; $cond .= '<img src="' . WDFMInstance(self::PLUGIN)->plugin_url . '/images/delete.png?ver=' . WDFMInstance(self::PLUGIN)->plugin_version . '" onclick="delete_cond("condid")" style="vertical-align: middle;"></div>'; ?> <script> jQuery(document).ready(function() { // Add tooltip to elements with "wd-info" class. if ( typeof jQuery(document).tooltip != "undefined" ) { jQuery(document).tooltip({ show: null, items: ".wd-info", content: function () { var element = jQuery(this); if (element.is(".wd-info")) { var html = jQuery('#' + jQuery(this).data("id")).html(); return html; } }, open: function (event, ui) { if (typeof(event.originalEvent) === 'undefined') { return false; } var $id = jQuery(ui.tooltip).attr('id'); // close any lingering tooltips jQuery('div.ui-tooltip').not('#' + $id).remove(); }, close: function (event, ui) { ui.tooltip.hover(function () { jQuery(this).stop(true).fadeTo(400, 1); }, function () { jQuery(this).fadeOut('400', function () { jQuery(this).remove(); }); }); }, position: { my: "center top+30", at: "center top", using: function (position, feedback) { jQuery(this).css(position); jQuery("<div>") .addClass("tooltip-arrow") .addClass(feedback.vertical) .addClass(feedback.horizontal) .appendTo(this); } } }); } }); var selected_field = ''; var isvisible = 1; var cond_id = 1; conds = '<?php echo $cond ?>'; fields = new Array(<?php $fields = ""; if ( $table_struct ) { foreach ( $table_struct as $col ) { $fields .= ' "' . $col->Field . '",'; } echo substr($fields, 0, -1); } ?>); function dis(id, x) { if (x) { jQuery('#' + id).removeAttr('disabled'); } else { jQuery('#' + id).attr('disabled', 'disabled'); } } function update_vis() { previous = 0; for (i = 1; i < cond_id; i++) { if (jQuery('#' + i).html()) { jQuery('#andor_' + i).css('visibility', 'hidden'); if (previous) { jQuery('#andor_' + previous).css('visibility', 'visible'); } previous = i; } } } function delete_cond(id) { jQuery('#' + id).remove(); update_vis(); } jQuery('.add_cond').click(function () { jQuery('.cols').append(conds.replace(/condid/g, cond_id++).replace('SingleQuot', "'")); update_vis(); }); jQuery('html').click(function () { if (jQuery("#fieldlist").css('display') == "block") { jQuery("#fieldlist").hide(); } }); jQuery(document).on("click", ".fm-where-input", function(e) { e.stopPropagation(); jQuery("#fieldlist").css("top", jQuery(this).offset().top + jQuery(this).height() + 2); jQuery("#fieldlist").css("left", jQuery(this).offset().left); jQuery("#fieldlist").slideDown('fast'); selected_field = this.id; }); jQuery('.cols input[type="text"]').on('click', function (event) { event.stopPropagation(); jQuery("#fieldlist").css("top", jQuery(this).offset().top + jQuery(this).height() + 2); jQuery("#fieldlist").css("left", jQuery(this).offset().left); jQuery("#fieldlist").slideDown('fast'); selected_field = this.id; }); jQuery('#query_txt').click(function (event) { event.stopPropagation(); jQuery("#fieldlist").css("top", jQuery(this).offset().top + jQuery(this).height() + 2); jQuery("#fieldlist").css("left", jQuery(this).offset().left); jQuery("#fieldlist").slideDown('fast'); selected_field = this.id; }); jQuery('#fieldlist').click(function (event) { event.stopPropagation(); }); function save_query() { con_type = jQuery('input[name=con_type]:checked').val(); con_method = jQuery('input[name=con_method]:checked').val(); table = jQuery('#tables').val(); table = jQuery('#tables').val(); host = jQuery('#host_rem').val(); port = jQuery('#port_rem').val(); username = jQuery('#username_rem').val(); password = jQuery('#password_rem').val(); database = jQuery('#database_rem').val(); str = con_type + "***wdfcon_typewdf***" + con_method + "***wdfcon_methodwdf***" + table + "***wdftablewdf***" + host + "***wdfhostwdf***" + port + "***wdfportwdf***" + username + "***wdfusernamewdf***" + password + "***wdfpasswordwdf***" + database + "***wdfdatabasewdf***"; if (fields.length) { for (i = 0; i < fields.length; i++) { str += fields[i] + '***wdfnamewdf***' + jQuery('#' + fields[i]).val() + '***wdfvaluewdf***' + jQuery('#ch_' + fields[i] + ":checked").length + '***wdffieldwdf***'; } } for (i = 1; i < cond_id; i++) { if (jQuery('#' + i).html()) { str += jQuery('#sel_' + i).val() + '***sel***' + jQuery('#op_' + i).val() + '***op***' + jQuery('#val_' + i).val() + '***val***' + jQuery('#andor_' + i).val() + '***where***'; } } if (!jQuery('#query_txt').val()) { gen_query(); } jQuery('#details').val(str); var datatxt = jQuery("#query_form").serialize() + '&form_id=' + jQuery("#form_id").val()+'&nonce=<?php echo $this->fm_nonce?>'; if (jQuery('#query_txt').val()) { jQuery('.c1').html('<div class="fm-loading-container"><div class="fm-loading-content"></div></div>'); jQuery.ajax({ type: "POST", url: "<?php echo add_query_arg(array( 'action' => 'FormMakerSQLMapping' . WDFMInstance(self::PLUGIN)->plugin_postfix, 'id' => 0, 'form_id' => $form_id, 'task' => 'save_query', 'width' => '1000', 'height' => '500', 'nonce' => $this->fm_nonce, 'TB_iframe' => '1', ), admin_url('admin-ajax.php')); ?>", data: datatxt, success: function (data) { window.parent.wd_fm_apply_options('apply_form_options'); window.parent.FormManageSubmitButton(); window.parent.fm_set_input_value('task', 'apply'); window.parent.document.getElementById('manage_form').submit(); } }); } else { alert('The query is empty.'); } return false; } function gen_query() { if (jQuery('#query_txt').val()) { if (!confirm('Are you sure you want to replace the Query? All the modifications to the Query will be lost.')) { return; } } query = ""; fields = new Array(<?php $fields = ""; if ( $table_struct ) { foreach ( $table_struct as $col ) { $fields .= ' "' . str_replace("'", "SingleQuot", $col->Field) . '",'; } echo substr($fields, 0, -1); } ?>); con_type = jQuery('input[name=con_type]:checked').val(); con_method = jQuery('input[name=con_method]:checked').val(); table = jQuery('#tables').val(); fls = ''; vals = ''; valsA = new Array(); flsA = new Array(); if (fields.length) { for (i = 0; i < fields.length; i++) { if (jQuery('#ch_' + fields[i] + ":checked").length) { flsA.push(fields[i]); valsA.push(jQuery('#' + fields[i]).val()); } } } if (con_method == "insert") { if (flsA.length) { for (i = 0; i < flsA.length - 1; i++) { fls += '`' + flsA[i] + '`, '; vals += '"' + valsA[i] + '", '; } fls += '`' + flsA[i] + '`'; vals += '"' + valsA[i] + '"'; } if (fls) { query = "INSERT INTO " + jQuery('#tables').val() + " (" + fls + ") VALUES (" + vals + ")"; } } if (con_method == "update") { if (flsA.length) { for (i = 0; i < flsA.length - 1; i++) { vals += '`' + flsA[i] + '`="' + valsA[i] + '", '; } vals += '`' + flsA[i] + '`="' + valsA[i] + '"'; } where = ""; previous = ''; for (i = 1; i < cond_id; i++) { if (jQuery('#' + i).html()) { if (jQuery('#op_' + i).val() == "%..%") { op_val = ' LIKE "%' + jQuery('#val_' + i).val() + '%"'; } else if (jQuery('#op_' + i).val() == "..%") { op_val = ' LIKE "' + jQuery('#val_' + i).val() + '%"'; } else if (jQuery('#op_' + i).val() == "%..") { op_val = ' LIKE "%' + jQuery('#val_' + i).val() + '"'; } else { op_val = ' ' + jQuery('#op_' + i).val() + ' "' + jQuery('#val_' + i).val() + '"'; } where += previous + ' `' + jQuery('#sel_' + i).val() + '`' + op_val; previous = ' ' + jQuery('#andor_' + i).val(); } } if (vals) { query = "UPDATE " + jQuery('#tables').val() + " SET " + vals + (where ? ' WHERE' + where : ''); } } if (con_method == "delete") { where = ""; previous = ''; for (i = 1; i < cond_id; i++) { if (jQuery('#' + i).html()) { if (jQuery('#op_' + i).val() == "%..%") { op_val = ' LIKE "%' + jQuery('#val_' + i).val() + '%"'; } else if (jQuery('#op_' + i).val() == "..%") { op_val = ' LIKE "' + jQuery('#val_' + i).val() + '%"'; } else if (jQuery('#op_' + i).val() == "%..") { op_val = ' LIKE "%' + jQuery('#val_' + i).val() + '"'; } else { op_val = ' ' + jQuery('#op_' + i).val() + ' "' + jQuery('#val_' + i).val() + '"'; } where += previous + ' ' + jQuery('#sel_' + i).val() + op_val; previous = ' ' + jQuery('#andor_' + i).val(); } } if (where) { query = "DELETE FROM " + jQuery('#tables').val() + ' WHERE' + where; } } jQuery('#query_txt').val(query.replace("SingleQuot", "'")); } function insert_field(myValue) { if (!selected_field) { return; } myField = document.getElementById(selected_field); if (document.selection) { myField.focus(); sel = document.selection.createRange(); sel.text = myValue; } else { if (myField.selectionStart || myField.selectionStart == '0') { var startPos = myField.selectionStart; var endPos = myField.selectionEnd; myField.value = myField.value.substring(0, startPos) + "{" + myValue + "}" + myField.value.substring(endPos, myField.value.length); } else { myField.value += "{" + myValue + "}"; } } } </script> <style> .ui-tooltip { padding: 0 10px !important; position: absolute; z-index: 9999; max-width: 300px; white-space: pre-line; } .ui-tooltip .ui-tooltip-content { font-weight: normal; } .ui-tooltip, .tooltip-arrow:after { background: #23282D; } .ui-tooltip { color: white; border-radius: 10px; font: bold 14px "Helvetica Neue", Sans-Serif; box-shadow: 0 0 7px black; } .ui-tooltip p { margin: 0; } .tooltip-arrow { width: 70px; height: 16px; overflow: hidden; position: absolute; left: 50%; margin-left: -35px; bottom: -16px; } .tooltip-arrow.top { top: -16px; bottom: auto; } .tooltip-arrow.left { left: 20%; } .tooltip-arrow:after { content: ""; position: absolute; left: 20px; top: -20px; width: 25px; height: 25px; box-shadow: 6px 5px 9px -9px #23282D; -webkit-transform: rotate(45deg); -ms-transform: rotate(45deg); transform: rotate(45deg); } .tooltip-arrow.top:after { bottom: -20px; top: auto; } .screen-reader-text, .screen-reader-text span, .ui-helper-hidden-accessible { border: 0; clip: rect(1px,1px,1px,1px); -webkit-clip-path: inset(50%); clip-path: inset(50%); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; word-wrap: normal!important; } .field-name { vertical-align: middle; } .wd-info { cursor: pointer; vertical-align: middle; color: #777777; } .wd-hide { display: none; } .cols div:nth-child(even) { background: #FFF; } .cols div:nth-child(odd) { background: #F5F5F5; } .cols div { height: 28px; padding: 5px; } .cols { display: inline-block; } .cols label { display: inline-block; width: 200px; font-size: 15px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; vertical-align: middle; } .cols input[type="text"] { width: 295px; line-height: 18px; height: 28px; border: 1px solid #ccc; padding: 0 3px; margin-right: 2px; } .cols input[type="text"]:disabled { cursor: not-allowed; background-color: #eee; } .cols input[type="checkbox"] { width: 20px; line-height: 18px; height: 20px; vertical-align: middle; } .cols select { line-height: 18px; height: 28px; margin-right: 2px; } #fieldlist { position: absolute; width: 225px; background: #fff; border: solid 1px #c7c7c7; top: 0; left: 0; z-index: 1000; } #fieldlist a { padding: 5px; cursor: pointer; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } #fieldlist a:hover { background: #ccc; } .gen_query, .gen_query:focus { width: 148px; height: 38px; background: #4EC0D9; color: white; cursor: pointer; border: 0px; font-size: 14px; font-weight: bold; margin: 20px 0; border-radius: 0px; } .gen_query:active { background: #ccc; } .fm-query-save { float: right; font-size: 13px; margin: 0 20px; background: #4EC0D9; width: 83px; height: 34px; border: 1px solid #4EC0D9; border-radius: 0px; color: #fff; cursor: pointer; } .select-db-op { display: inline-block; text-align: right; font-weight: bold; font-size: 18px; padding: 5px 0; margin: 5px 0; background: none !important; } .select-db-op.where { width: 272px; } .select-db-op img { float: left; } </style> <?php if ( $table_struct ) { ?> <div class="cols"> <?php if ( $con_method == 'insert' or $con_method == 'update' ) { echo '<div style="background: none;text-align: center;font-size: 20px;color: #000;font-weight: bold;"> SET </div>'; foreach ( $table_struct as $key => $col ) { $title = $col->Field; $title .= "<ul style='padding-left: 17px;'>"; if ( $col->Type ) { $title .= "<li>" . __('Type', WDFMInstance(self::PLUGIN)->prefix) . " - " . $col->Type . "</li>"; } if ( $col->Null ) { $title .= "<li>" . __('Null', WDFMInstance(self::PLUGIN)->prefix) . " - " . $col->Null . "</li>"; } if ( $col->Key ) { $title .= "<li>" . __('Key', WDFMInstance(self::PLUGIN)->prefix) . " - " . $col->Key . "</li>"; } if ( $col->Default ) { $title .= "<li>" . __('Default', WDFMInstance(self::PLUGIN)->prefix) . " - " . $col->Default . "</li>"; } if ( $col->Extra ) { $title .= "<li>" . __('Extra', WDFMInstance(self::PLUGIN)->prefix) . " - " . $col->Extra . "</li>"; } $title .= "</ul>"; ?> <div> <label> <b class="field-name"><?php echo $col->Field; ?></b> <i class="wd-info dashicons dashicons-info" data-id="wd-info-<?php echo $key; ?>"></i> <div id="wd-info-<?php echo $key; ?>" class="wd-hide"> <?php echo $title; ?> </div> </label> <input autocomplete="off" type="text" id="<?php echo str_replace("'", "SingleQuot", $col->Field); ?>" disabled="disabled" /><input id="ch_<?php echo str_replace("'", "SingleQuot", $col->Field); ?>" type="checkbox" onClick="dis('<?php echo str_replace("'", "SingleQuot", $col->Field); ?>', this.checked)" /> </div> <?php } } if ( $con_method == 'delete' or $con_method == 'update' ) { echo '<div class="select-db-op where"><img src="' . WDFMInstance(self::PLUGIN)->plugin_url . '/images/add_condition.png?ver=' . WDFMInstance(self::PLUGIN)->plugin_version . '" title="ADD" class="add_cond"/>WHERE</div>'; } ?> </div> <br /> <input type="button" value="Generate Query" class="gen_query" onclick="gen_query()"> <br /> <form name="query_form" id="query_form"> <label style="vertical-align: top; width: 102px; display: inline-block;" for="query_txt"> Query: </label><textarea id="query_txt" name="query" rows=5 style="width:428px"></textarea> <input type="hidden" name="details" id="details"> </form> <input type="button" value="Save" class="fm-query-save" onclick="save_query()"> <div id="fieldlist" style="display: none;"> <?php echo $form_fields ?> </div> <?php } die(); } }