<input type="submit" name="decrypt" value="<?php _e('Save Decrypted'); ?> " onclick="do_save_decrypted();" class="submit_button delete_button"> <?php } ?> </td> </tr> <?php } ?> </tbody> </table> <?php if (module_encrypt::can_i('create', 'Encrypts')) { ?> <form action="" method="post"> <table class="tableclass tableclass_form tableclass_full" id="enc_create_new" style="display:none;"> <tbody> <tr> <th class="width2"> <?php _e('Encryption Vault:'); ?> </th> <td> <input type="text" name="encrypt_key_name" id="encrypt_key_name"> </td> </tr> <tr>
function get_form_element($element, $viewing_revision = false, $data_record = array()) { $has_write_access = !$viewing_revision; // convert our data field to an element. $element['name'] = isset($element['name']) && !empty($element['name']) ? $element['name'] : 'data_field[' . $element['data_field_id'] . ']'; $element['id'] = 'data_field_' . $element['data_field_id'] . ''; $element['type'] = $element['field_type']; if (!isset($element['value'])) { $element['value'] = ''; } if (!$has_write_access) { //$element['disabled'] = 'disabled'; $element['class'] = 'data_field_view'; } $highlight = false; $this->ajax_edit = false; $input_name = $element['name']; if (!$input_name) { return false; } if (isset($element['id']) && $element['id']) { $input_id = $element['id']; } else { $element['id'] = $input_name; $input_id = $input_name; } //if(!$value && isset($_REQUEST[$input_name]))$value = $_REQUEST[$input_name]; if (!$element['value']) { $element['value'] = $element['default']; } if (!is_array($element['value'])) { //$value=htmlspecialchars($value); } if (!isset($element['class'])) { $element['class'] = ''; } $attr = $attr_other = ''; if ($has_write_access) { if ($element['type'] == 'radio' || $element['type'] == 'checkbox_list') { // hacky! if ($element['required']) { $attr_other .= ' class="form_field form_field_required"'; } else { $attr_other .= ' class="form_field"'; } } else { $element['class'] .= " form_field"; if ($element['required']) { $element['class'] .= " form_field_required"; } } switch ($element['type']) { case 'date': $element['class'] .= " date_field"; if (!isset($element['size']) || !$element['size']) { $element['size'] = 8; } if (strtolower($element['value']) == 'now') { $element['value'] = print_date(time()); } break; case 'datetime': $element['class'] .= " date_time_field"; if (!isset($element['size']) || !$element['size']) { $element['size'] = 12; } if (strtolower($element['value']) == 'now') { $element['value'] = print_date(time(), true); } break; } } switch ($element['type']) { case 'checkbox_list': case 'radio': $element['attributes'] = array(); foreach (explode("\n", trim($element['field_data'])) as $line) { $line = trim($line); if (preg_match('/^attributes=/', $line)) { $line = preg_replace('/^attributes=/', '', $line); $element['attributes'] = explode("|", $line); break; } } break; case 'select': if (!isset($element['attributes']) || !is_array($element['attributes']) || !count($element['attributes'])) { $element['attributes'] = array(); foreach (explode("\n", trim($element['field_data'])) as $line) { $line = trim($line); if (preg_match('/^attributes=/', $line)) { $line = preg_replace('/^attributes=/', '', $line); if (preg_match('#hook:([\\w_]+)$#', $line, $matches)) { // see if we get anything back from this hook. $attributes = array(); $attributes = hook_filter_var($matches[1], $attributes, $element); if (is_array($attributes)) { $element['attributes'] = $attributes; } else { $element['attributes'] = array('Unable to call hook: ' . $matches[1]); } } else { $element['attributes'] = explode("|", $line); } break; } } } break; } if (!isset($element['style'])) { $element['style'] = ''; } // we have to apply some custom width/height styles if they exist. $width = $height = false; foreach (explode("\n", trim($element['field_data'])) as $line) { $line = trim($line); if (preg_match('/^width=/', $line)) { $line = preg_replace('/^width=/', '', $line); $width = (int) $line; } if (preg_match('/^height=/', $line)) { $line = preg_replace('/^height=/', '', $line); $height = (int) $line; } } if (!$height && $height < _MIN_INPUT_HEIGHT) { $height = _MIN_INPUT_HEIGHT; } switch ($element['type']) { case 'text': case 'date': case 'datetime': if ($width) { $element['style'] .= 'width:' . $width . 'px; '; } break; case 'radio': if ($width) { $attr_other .= ' style="width:' . $width . 'px; "'; } break; case 'textarea': case 'textbox': if ($width) { $element['style'] .= 'width:' . $width . 'px; '; } if ($has_write_access && $height) { $element['style'] .= 'height:' . $height . 'px; '; } break; } if (isset($element['width'])) { unset($element['width']); } if (isset($element['height'])) { unset($element['height']); } if (isset($element['multiple']) && $element['multiple']) { $element['multiple'] = true; // pass 'multiple' through to the UCM form builder which should handle everything $value_unserialize = @unserialize($element['value']); if (is_array($value_unserialize)) { $element['values'] = $value_unserialize; // 'values' is used in the UCM field generation tool } $element['name'] = $element['name'] . '[]'; } else { $element['multiple'] = false; } if (!$has_write_access && $element['multiple'] && isset($element['values']) && is_array($element['values'])) { $element['value'] = $element['values']; } if (is_array($element['value']) && count($element['value'])) { $all_values = $element['value']; } else { $all_values = array($element['value']); } if ($element['type'] == 'checkbox_list') { $test = @unserialize($element['value']); if (is_array($test) && count($test)) { $all_values = array($test); } else { $all_values = array($element['value']); } } if ($element['type'] == "cancel" && !isset($element['onclick'])) { $element['onclick'] = "history.go(-1);"; } if ($highlight) { $element['class'] .= " form_field_highlight"; } /*if(!$has_write_access){ $element['class'] .= ' form_disabled'; }*/ $attribute_keys = array('class', 'disabled', 'onclick', 'onfocus', 'onmouseup', 'onmousedown', 'onchange', 'size', 'cols', 'rows', 'width', 'style'); foreach ($element as $key => $val) { if (!is_array($val) && !trim($val)) { continue; } if (in_array(strtolower($key), $attribute_keys)) { if (in_array(strtolower($key), array('size', 'cols', 'rows', 'width', 'height')) && (int) $val == 0) { continue; } $attr .= ' ' . $key . '="' . $val . '"'; } } // check for default values, these are cleared when submitting the form if ($element['default']) { $has_default = true; } $real_input_id = $input_id; $real_input_name = $input_name; ob_start(); foreach ($all_values as $value_key => $value) { if (!$has_write_access) { // disabled. if (isset($width) && $width && $element['type'] != 'encrypted') { echo '<span ' . $attr; echo ' style="width:' . $width . 'px;"'; echo '> '; } // display value differently depending on value type. switch ($element['type']) { case 'checkbox_list': $other = ''; if (is_array($value)) { if (isset($value['other_val'])) { $other = $value['other_val']; unset($value['other_val']); } echo implode(', ', array_keys($value)); } echo ' ' . $other; break; case 'select': if (isset($element['attributes'])) { $attributes = $element['attributes']; } else { $attributes = array(); } if (isset($attributes[0])) { $new_attributes = array(); foreach ($attributes as $aid => $a) { $new_attributes[$aid + 1] = $a; } $attributes = $new_attributes; } if (isset($attributes[$value])) { echo $attributes[$value]; } break; case 'textarea': case 'textbox': echo nl2br(htmlspecialchars($value)); break; case 'file': if ($value) { $file_data = @unserialize($value); $file_link = 'includes/plugin_data/upload/' . $file_data['file']; if (is_file($file_link)) { $download_link = self::link_public_file_download($data_record['data_record_id'], $data_record['data_type_id'], $element['data_field_group_id'], $element['data_field_id']); echo '<a href="' . $download_link . '" target="_blank">' . $file_data['name'] . '</a>'; } else { echo 'File Not Found'; } } break; case 'wysiwyg': echo module_security::purify_html($value); break; case 'encrypted': if (class_exists('module_encrypt', false)) { ob_start(); $element['type'] = 'text'; module_form::generate_form_element($element); $enc_html = ob_get_clean(); echo module_encrypt::parse_html_input('custom_data', $enc_html, false); } break; case 'created_date_time': echo isset($data_record['date_created']) && $data_record['date_created'] != '0000-00-00 00:00:00' ? print_date($data_record['date_created'], true) : _l('N/A'); break; case 'created_date': echo isset($data_record['date_created']) && $data_record['date_created'] != '0000-00-00 00:00:00' ? print_date($data_record['date_created'], false) : _l('N/A'); break; case 'created_time': echo isset($data_record['date_created']) && $data_record['date_created'] != '0000-00-00 00:00:00' ? date(module_config::c('time_format', 'g:ia'), strtotime($data_record['date_created'])) : _l('N/A'); break; case 'updated_date_time': echo isset($data_record['date_updated']) && $data_record['date_updated'] != '0000-00-00 00:00:00' ? print_date($data_record['date_updated'], true) : (isset($data_record['date_created']) && $data_record['date_created'] != '0000-00-00 00:00:00' ? print_date($data_record['date_created'], true) : _l('N/A')); break; case 'updated_date': echo isset($data_record['date_updated']) && $data_record['date_updated'] != '0000-00-00 00:00:00' ? print_date($data_record['date_updated'], false) : (isset($data_record['date_created']) && $data_record['date_created'] != '0000-00-00 00:00:00' ? print_date($data_record['date_created'], false) : _l('N/A')); break; case 'updated_time': echo isset($data_record['date_updated']) && $data_record['date_updated'] != '0000-00-00 00:00:00' ? date(module_config::c('time_format', 'g:ia'), strtotime($data_record['date_updated'])) : (isset($data_record['date_created']) && $data_record['date_created'] != '0000-00-00 00:00:00' ? date(module_config::c('time_format', 'g:ia'), strtotime($data_record['date_created'])) : _l('N/A')); break; case 'created_by': echo isset($data_record['create_user_id']) && (int) $data_record['create_user_id'] > 0 ? module_user::link_open($data_record['create_user_id'], true) : _l('N/A'); break; case 'updated_by': echo isset($data_record['update_user_id']) && (int) $data_record['update_user_id'] > 0 ? module_user::link_open($data_record['update_user_id'], true) : (isset($data_record['create_user_id']) && (int) $data_record['create_user_id'] > 0 ? module_user::link_open($data_record['create_user_id'], true) : _l('N/A')); break; case 'url': echo '<a href="' . htmlspecialchars($value) . '" target="_blank">' . htmlspecialchars($value) . '</a>'; break; default: echo htmlspecialchars($value); break; } if (isset($width) && $width && $element['type'] != 'encrypted') { echo ' </span>'; } } else { // update for UCM: use the ucm form generator if (isset($element['default']) && $element['default'] && !$element['value']) { $element['value'] = $element['default']; } switch ($element['type']) { case 'wysiwyg': $element['options']['inline'] = false; module_form::generate_form_element($element); break; case "radio": $has_val = false; foreach ($element['attributes'] as $attribute) { $this_input_id = $input_id . preg_replace('/[^a-zA-Z]/', '', $attribute); ?> <span class="field_radio"> <input type="radio" name="<?php echo $input_name; ?> " id="<?php echo $this_input_id; ?> " value="<?php echo htmlspecialchars($attribute); ?> "<?php if ($attribute == $value || strtolower($attribute) == 'other' && !$has_val) { // assumes "OTHER" is always last... fix with a separate loop before hand checking all vals if (strtolower($attribute) != 'other') { $has_val = true; } echo " checked"; } echo ' ' . $attr; if (strtolower($attribute) == 'other') { echo ' onmouseup="if(this.checked)$(\'#other_' . $this_input_id . '\')[0].focus();"'; echo ' onchange="if(this.checked)$(\'#other_' . $this_input_id . '\')[0].focus();"'; } ?> > <label for="<?php echo $this_input_id; ?> "><?php echo $attribute; ?> </label> <?php if (strtolower($attribute) == 'other') { ?> <span class="data_field_input"> <input type="text" name="other_<?php echo $input_name; ?> " id="other_<?php echo $this_input_id; ?> " value="<?php if (!$has_val) { echo htmlspecialchars($value); } ?> " onchange="$('input[type=radio]',$(this).parent())[0].checked = true;" <?php echo $attr . $attr_other; ?> > </span> <?php } ?> </span> <?php } break; case "checkbox_list": $has_val = false; if (!is_array($value)) { $value = array(); } foreach ($element['attributes'] as $attribute) { $this_input_id = $input_id . preg_replace('/[^a-zA-Z]/', '', $attribute); ?> <span class="field_radio"> <input type="checkbox" name="<?php echo $input_name; ?> [<?php echo htmlspecialchars($attribute); ?> ]" id="<?php echo $this_input_id; ?> " value="1"<?php if (isset($value[$attribute])) { if (strtolower($attribute) != 'other') { $has_val = true; } echo " checked"; } echo ' ' . $attr; if (strtolower($attribute) == 'other') { echo ' onmouseup="if(this.checked)$(\'#other_' . $this_input_id . '\')[0].focus();"'; echo ' onchange="if(this.checked)$(\'#other_' . $this_input_id . '\')[0].focus();"'; } ?> > <label for="<?php echo $this_input_id; ?> "><?php echo $attribute; ?> </label> <?php if (strtolower($attribute) == 'other') { ?> <span class="data_field_input"> <input type="text" name="<?php echo $input_name; ?> [other_val]" id="other_<?php echo $this_input_id; ?> " value="<?php echo isset($value['other_val']) ? htmlspecialchars($value['other_val']) : ''; ?> " onchange="$('input[type=radio]',$(this).parent())[0].checked = true;" <?php echo $attr . $attr_other; ?> > </span> <?php } ?> </span> <?php } break; case "file": $this->has_files = true; ?> <input type="file" name="<?php echo $input_name; ?> " id="<?php echo $input_id; ?> " value="<?php echo $value; ?> "<?php echo $attr; ?> > <?php break; case 'select': $attributes = isset($element['attributes']) ? $element['attributes'] : array(); if (isset($attributes[0])) { $new_attributes = array(); foreach ($attributes as $aid => $a) { $new_attributes[$aid + 1] = $a; } $attributes = $new_attributes; } $element['options'] = $attributes; module_form::generate_form_element($element); break; case 'encrypted': if (class_exists('module_encrypt', false)) { ob_start(); $element['type'] = 'text'; module_form::generate_form_element($element); $enc_html = ob_get_clean(); echo module_encrypt::parse_html_input('custom_data', $enc_html); } break; case 'created_date_time': echo isset($data_record['date_created']) && $data_record['date_created'] != '0000-00-00 00:00:00' ? print_date($data_record['date_created'], true) : _l('N/A'); break; case 'created_date': echo isset($data_record['date_created']) && $data_record['date_created'] != '0000-00-00 00:00:00' ? print_date($data_record['date_created'], false) : _l('N/A'); break; case 'created_time': echo isset($data_record['date_created']) && $data_record['date_created'] != '0000-00-00 00:00:00' ? date(module_config::c('time_format', 'g:ia'), strtotime($data_record['date_created'])) : _l('N/A'); break; case 'updated_date_time': echo isset($data_record['date_updated']) && $data_record['date_updated'] != '0000-00-00 00:00:00' ? print_date($data_record['date_updated'], true) : (isset($data_record['date_created']) && $data_record['date_created'] != '0000-00-00 00:00:00' ? print_date($data_record['date_created'], true) : _l('N/A')); break; case 'updated_date': echo isset($data_record['date_updated']) && $data_record['date_updated'] != '0000-00-00 00:00:00' ? print_date($data_record['date_updated'], false) : (isset($data_record['date_created']) && $data_record['date_created'] != '0000-00-00 00:00:00' ? print_date($data_record['date_created'], false) : _l('N/A')); break; case 'updated_time': echo isset($data_record['date_updated']) && $data_record['date_updated'] != '0000-00-00 00:00:00' ? date(module_config::c('time_format', 'g:ia'), strtotime($data_record['date_updated'])) : (isset($data_record['date_created']) && $data_record['date_created'] != '0000-00-00 00:00:00' ? date(module_config::c('time_format', 'g:ia'), strtotime($data_record['date_created'])) : _l('N/A')); break; case 'created_by': echo isset($data_record['create_user_id']) && (int) $data_record['create_user_id'] > 0 ? module_user::link_open($data_record['create_user_id'], true) : _l('N/A'); break; case 'updated_by': echo isset($data_record['update_user_id']) && (int) $data_record['update_user_id'] > 0 ? module_user::link_open($data_record['update_user_id'], true) : (isset($data_record['create_user_id']) && (int) $data_record['create_user_id'] > 0 ? module_user::link_open($data_record['create_user_id'], true) : _l('N/A')); break; case 'url': $element['type'] = 'text'; module_form::generate_form_element($element); break; default: module_form::generate_form_element($element); } if (isset($element['after_link']) && $element['after_link']) { if (preg_match('/^https?:\\/\\//', $value) || ($have_www = preg_match('/^www\\./', $value) || ($have_www = preg_match('/\\.com/', $value) && !preg_match('/\\w@\\w/', $value)))) { // we have a url if ($have_www) { $value = "http://" . $value; } ?> <a href="<?php echo $value; ?> " target="_blank">»</a> <?php } if (preg_match('/\\w@\\w/', $value)) { ?> <a href="mailto:<?php echo $value; ?> ">»</a> <?php } } } // editable echo ' '; } // foreach all values //${$element_id} = ob_get_clean(); // we just print the html for now return ob_get_clean(); }
public function process() { switch ($_REQUEST['_process']) { case 'save_encrypt': $data = $_REQUEST; if (isset($data['encrypt_key_id']) && !$data['encrypt_key_id']) { unset($data['encrypt_key_id']); } else { if (isset($data['encrypt_key_id']) && $data['encrypt_key_id'] && isset($data['encrypt_field_id']) && $data['encrypt_field_id']) { // change our key over to this new one. // only really used in dev. if someone did this irl they would loose all encryption. //update_insert('encrypt_field_id',(int)$data['encrypt_field_id'],'encrypt_field',array('encrypt_key_id'=>$data['encrypt_key_id'])); } } $encrypt_id = update_insert('encrypt_id', (int) $_REQUEST['encrypt_id'], 'encrypt', $data); echo json_encode(array('encrypt_id' => $encrypt_id)); exit; break; case 'save_encrypt_key': $encrypt_key_id = update_insert('encrypt_key_id', (int) $_REQUEST['encrypt_key_id'], 'encrypt_key', $_REQUEST); // update the field info to say we are using this key. if (isset($_REQUEST['encrypt_field_id']) && (int) $_REQUEST['encrypt_field_id'] > 0) { update_insert('encrypt_field_id', (int) $_REQUEST['encrypt_field_id'], 'encrypt_field', array('encrypt_key_id' => $encrypt_key_id)); } echo 'Saved!'; exit; break; case 'encrypt_successful': $encrypt_field_id = isset($_REQUEST['encrypt_field_id']) ? (int) $_REQUEST['encrypt_field_id'] : 0; $encrypt_id = isset($_REQUEST['encrypt_id']) ? (int) $_REQUEST['encrypt_id'] : 0; if ($encrypt_id && $encrypt_field_id) { module_encrypt::log_access($encrypt_id, 'success'); } echo 'Saved!'; exit; break; } }
public static function generate_form_element($setting) { if (isset($setting['ignore']) && $setting['ignore']) { return; } // type defaults if ($setting['type'] == 'currency') { $setting['class'] = (isset($setting['class']) ? $setting['class'] . ' ' : '') . 'currency'; } if ($setting['type'] == 'date') { $setting['class'] = (isset($setting['class']) ? $setting['class'] . ' ' : '') . 'date_field'; $setting['type'] = 'text'; } if ($setting['type'] == 'time') { $setting['class'] = (isset($setting['class']) ? $setting['class'] . ' ' : '') . 'time_field'; $setting['type'] = 'text'; } if ($setting['type'] == 'select' || $setting['type'] == 'wysiwyg') { if (!isset($setting['id']) || !$setting['id']) { $setting['id'] = $setting['name']; } } if ($setting['type'] == 'save_button') { $setting['type'] = 'submit'; $setting['class'] = (isset($setting['class']) ? $setting['class'] . ' ' : '') . 'submit_button save_button'; } if ($setting['type'] == 'delete_button') { $setting['type'] = 'submit'; $setting['class'] = (isset($setting['class']) ? $setting['class'] . ' ' : '') . 'submit_button delete_button'; } if (isset($setting['label']) && (!isset($setting['id']) || !$setting['id'])) { // labels need ids $setting['id'] = md5($setting['name']); } $attributes = ''; foreach (array('size', 'style', 'autocomplete', 'placeholder', 'class', 'id', 'onclick') as $attr) { if (isset($setting[$attr])) { $attributes .= ' ' . $attr . '="' . $setting[$attr] . '"'; } } if (!isset($setting['value'])) { $setting['value'] = ''; } ob_start(); // handle multiple options $loop_count = 1; if (isset($setting['multiple']) && $setting['multiple']) { // has to have at least 1 value if ($setting['multiple'] === true) { // create our wrapper id. $multiple_id = md5(serialize($setting)); echo '<div id="' . $multiple_id . '">'; } else { $multiple_id = $setting['multiple']; } if (!isset($setting['values'])) { $setting['values'] = array($setting['value']); } $loop_count = count($setting['values']); } for ($x = 0; $x < $loop_count; $x++) { if (isset($setting['multiple']) && $setting['multiple']) { $setting['value'] = isset($setting['values'][$x]) ? $setting['values'][$x] : false; echo '<div class="dynamic_block">'; } switch ($setting['type']) { case 'currency': echo currency('<input type="text" name="' . $setting['name'] . '" value="' . htmlspecialchars($setting['value']) . '"' . $attributes . '>', true, isset($setting['currency_id']) ? $setting['currency_id'] : false); break; case 'number': ?> <input type="number" name="<?php echo $setting['name']; ?> " value="<?php echo htmlspecialchars($setting['value']); ?> "<?php echo $attributes; ?> > <?php break; case 'text': ?> <input type="text" name="<?php echo $setting['name']; ?> " value="<?php echo htmlspecialchars($setting['value']); ?> "<?php echo $attributes; ?> > <?php break; case 'password': ?> <input type="password" name="<?php echo $setting['name']; ?> " value="<?php echo htmlspecialchars($setting['value']); ?> "<?php echo $attributes; ?> > <?php break; case 'hidden': ?> <input type="hidden" name="<?php echo $setting['name']; ?> " value="<?php echo htmlspecialchars($setting['value']); ?> "<?php echo $attributes; ?> > <?php break; case 'textarea': ?> <textarea name="<?php echo $setting['name']; ?> " rows="6" cols="50"<?php echo $attributes; ?> ><?php echo htmlspecialchars($setting['value']); ?> </textarea> <?php break; case 'wysiwyg': self::load_wysiwyg(); ?> <?php if (!isset($setting['options']) || !isset($setting['options']['inline']) || $setting['options']['inline']) { ?> <div style="border:1px solid #EFEFEF;" data-name="<?php echo $setting['name']; ?> " <?php echo $attributes; ?> ><?php echo module_security::purify_html($setting['value']); ?> </div> <?php if ($setting['name'] != $setting['id']) { ?> <!-- we update this on change, needed because tinymce jquery has issues with name[] form elements --> <input type="hidden" name="<?php echo $setting['name']; ?> " id="<?php echo $setting['id']; ?> _postback" value="<?php echo htmlspecialchars(module_security::purify_html($setting['value'])); ?> "> <?php } ?> <?php } else { ?> <textarea name="<?php echo $setting['name']; ?> " rows="6" cols="50"<?php echo $attributes; ?> ><?php echo htmlspecialchars($setting['value']); ?> </textarea> <?php } ?> <script type="text/javascript"> $(function() { $('#<?php echo $setting['id']; ?> ').tinymce({ // Location of TinyMCE script <?php if (!isset($setting['options']) || !isset($setting['options']['inline']) || $setting['options']['inline']) { ?> inline: true, <?php } ?> script_url : '<?php echo _BASE_HREF; ?> includes/plugin_form/js/tinymce4.0.11/tinymce.min.js', relative_urls : false, convert_urls : false, // General options theme : "modern", statusbar: false, /*plugins: [ "advlist autolink lists link image charmap print preview anchor", "searchreplace visualblocks code fullscreen", "insertdatetime media table contextmenu paste" ], toolbar: "insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image",*/ plugins: [ "advlist autolink autoresize link image lists charmap print preview hr anchor pagebreak", "searchreplace wordcount visualblocks visualchars code fullscreen insertdatetime media nonbreaking", "table directionality emoticons template textcolor paste textcolor" ], toolbar1: "bold italic underline strikethrough | alignleft aligncenter alignright alignjustify | formatselect fontselect fontsizeselect", toolbar2: "cut copy paste | searchreplace | bullist numlist | outdent indent blockquote | undo redo | link unlink anchor image media code | inserttime preview | forecolor backcolor", toolbar3: "table | hr removeformat | subscript superscript | charmap emoticons | print fullscreen | ltr rtl | visualchars visualblocks nonbreaking", menubar: false, toolbar_items_size: 'small', width : '100%', browser_spellcheck: true, contextmenu: false, setup : function(ed) { ed.on("init", function() { if(typeof tinymce_focus != 'undefined'){ $(ed.getDoc()).contents().find('body').focus(function(){tinymce_focus();}); } if(typeof tinymce_blur != 'undefined'){ $(ed.getDoc()).contents().find('body').blur(function(){tinymce_blur();}); } }); <?php if (!isset($setting['options']) || !isset($setting['options']['inline']) || $setting['options']['inline']) { if ($setting['name'] != $setting['id']) { ?> ed.on("change", function() { $('#<?php echo $setting['id']; ?> _postback').val(ed.getContent()); }); <?php } } ?> } }); }); </script> <?php break; case 'select': // copied from print_select_box() if (isset($setting['allow_new']) && $setting['allow_new']) { $attributes .= ' onchange="dynamic_select_box(this);"'; } ?> <select name="<?php echo $setting['name']; ?> "<?php echo $attributes; ?> > <?php if (!isset($setting['blank']) || $setting['blank']) { ?> <option value=""><?php echo !isset($setting['blank']) || $setting['blank'] === true ? _l('- Select -') : htmlspecialchars($setting['blank']); ?> </option> <?php } $found_selected = false; $current_val = 'Enter new value here'; $sel = ''; foreach ($setting['options'] as $key => $val) { if (is_array($val)) { if (!$setting['options_array_id']) { if (isset($val[$setting['id']])) { $setting['options_array_id'] = $setting['id']; } else { $setting['options_array_id'] = key($val); } } $printval = $val[$setting['options_array_id']]; } else { $printval = $val; } if (strlen($printval) == 0) { continue; } $sel .= '<option value="' . htmlspecialchars($key) . '"'; // to handle 0 elements: if ($setting['value'] !== false && $setting['value'] !== '' && $key == $setting['value']) { $current_val = $printval; $sel .= ' selected'; $found_selected = true; } $sel .= '>' . htmlspecialchars($printval) . '</option>'; } if ($setting['value'] && !$found_selected) { $sel .= '<option value="' . htmlspecialchars($setting['value']) . '" selected>' . htmlspecialchars($setting['value']) . '</option>'; } if (isset($setting['allow_new']) && $setting['allow_new'] && get_display_mode() != 'mobile') { $sel .= '<option value="create_new_item">' . _l(' - Create New - ') . '</option>'; } if (isset($setting['allow_new']) && $setting['allow_new']) { //$sel .= '<input type="text" name="new_'.$id.'" style="display:none;" value="'.$current_val.'">'; } echo $sel; ?> <?php /*foreach($setting['options'] as $key=>$val){ ?> <option value="<?php echo $key;?>"<?php echo $setting['value'] == $key ? ' selected':'' ?>><?php echo htmlspecialchars($val);?></option> <?php }*/ ?> </select> <?php break; case 'checkbox': ?> <input type="hidden" name="default_<?php echo $setting['name']; ?> " value="1"> <input type="checkbox" name="<?php echo $setting['name']; ?> " value="1" <?php if ($setting['value']) { echo ' checked'; } echo $attributes; ?> > <?php break; case 'check': ?> <input type="checkbox" name="<?php echo $setting['name']; ?> " value="<?php echo $setting['value']; ?> " <?php if ($setting['checked']) { echo ' checked'; } echo $attributes; ?> > <?php break; case 'submit': ?> <input type="submit" name="<?php echo htmlspecialchars($setting['name']); ?> " value="<?php echo htmlspecialchars($setting['value']); ?> " <?php echo $attributes; ?> /> <?php break; case 'button': ?> <input type="button" name="<?php echo htmlspecialchars($setting['name']); ?> " value="<?php echo htmlspecialchars($setting['value']); ?> " <?php echo $attributes; ?> /> <?php break; case 'html': ?> <div<?php echo $attributes; ?> ><?php echo $setting['value']; ?> </div> <?php break; } if (isset($setting['multiple']) && $setting['multiple']) { echo '<a href="#" class="add_addit" onclick="return seladd(this);">+</a> <a href="#" class="remove_addit" onclick="return selrem(this);">-</a>'; echo '</div>'; } } if (isset($setting['multiple']) && $setting['multiple']) { if ($setting['multiple'] === true) { echo '</div>'; } echo '<script type="text/javascript"> set_add_del("' . $multiple_id . '"); </script>'; } $html = ob_get_clean(); if (isset($setting['encrypt']) && $setting['encrypt'] && class_exists('module_encrypt', false)) { $html = module_encrypt::parse_html_input($setting['page_name'], $html); } echo $html; if (isset($setting['label']) && strlen($setting['label'])) { echo '<label for="' . htmlspecialchars($setting['id']) . '">' . _l($setting['label']) . '</label>'; } if (isset($setting['help']) && (count($setting['help']) || strlen($setting['help']))) { _h($setting['help']); } }
</tr> <?php } ?> <?php if (class_exists('module_encrypt', false) && ($ticket_data_key['type'] == 'text' || $ticket_data_key['type'] == 'textarea')) { ?> <tr> <th> <?php echo _l('Encrypt Using Vault'); ?> </th> <td> <?php $encryption_keys = module_encrypt::get_encrypt_keys(); echo print_select_box($encryption_keys, 'encrypt_key_id', isset($ticket_data_key['encrypt_key_id']) ? $ticket_data_key['encrypt_key_id'] : false, '', true, 'encrypt_key_name', false); ?> </td> </tr> <?php } ?> </tbody> </table> <?php $fieldset_data = array('heading' => array('type' => 'h3', 'main' => true, 'title' => 'Edit Ticket Data Key'), 'elements_before' => ob_get_clean()); echo module_form::generate_fieldset($fieldset_data); unset($fieldset_data); $form_actions = array('class' => 'action_bar action_bar_center action_bar_single', 'elements' => array(array('type' => 'save_button', 'name' => 'butt_save', 'value' => _l('Save')), array('type' => 'delete_button', 'name' => 'butt_del', 'value' => _l('Delete'), 'onclick' => "return confirm('" . _l('Really delete this record?') . "');")));
public function save_ticket($ticket_id, $data) { if (isset($data['website_id']) && $data['website_id']) { $website = module_website::get_website($data['website_id']); $data['customer_id'] = $website['customer_id']; } if (isset($data['user_id']) && $data['user_id']) { $user = module_user::get_user($data['user_id'], false); if (!isset($data['customer_id']) || !$data['customer_id']) { $data['customer_id'] = $user['customer_id']; } } if ((int) $ticket_id > 0) { $existing_ticket_data = $this->get_ticket($ticket_id); } else { $existing_ticket_data = array(); } if (isset($data['change_assigned_user_id']) && (int) $data['change_assigned_user_id'] > 0) { // check if we're realling changing the user. if ($ticket_id > 0) { if ($existing_ticket_data['assigned_user_id'] != $data['change_assigned_user_id']) { // they are really changing the user $data['assigned_user_id'] = $data['change_assigned_user_id']; } } else { $data['assigned_user_id'] = $data['change_assigned_user_id']; } module_cache::clear('ticket'); } $ticket_id = update_insert("ticket_id", $ticket_id, "ticket", $data); if ($ticket_id) { // save any extra data if (isset($data['ticket_extra']) && is_array($data['ticket_extra'])) { $available_extra_fields = $this->get_ticket_extras_keys(); foreach ($data['ticket_extra'] as $ticket_data_key_id => $ticket_data_key_value) { if (strlen($ticket_data_key_value) > 0 && isset($available_extra_fields[$ticket_data_key_id])) { // save this one! // hack: addition for encryption module. // bit nasty, but it works. if (class_exists('module_encrypt', false) && isset($available_extra_fields[$ticket_data_key_id]['encrypt_key_id']) && $available_extra_fields[$ticket_data_key_id]['encrypt_key_id'] && strpos($ticket_data_key_value, 'encrypt:') === false && ($available_extra_fields[$ticket_data_key_id]['type'] == 'text' || $available_extra_fields[$ticket_data_key_id]['type'] == 'textarea')) { // encrypt this value using this key. $page_name = 'ticket_extras'; // match the page_name we have in ticket_extra_sidebar.php $input_id = 'ticket_extras_' . $ticket_data_key_id; // match the input id we have in ticket_extra_sidebar.php $ticket_data_key_value = module_encrypt::save_encrypt_value($available_extra_fields[$ticket_data_key_id]['encrypt_key_id'], $ticket_data_key_value, $page_name, $input_id); } // check for existing $existing = get_single('ticket_data', array('ticket_id', 'ticket_data_key_id'), array($ticket_id, $ticket_data_key_id)); if ($existing) { update_insert('ticket_data_id', $existing['ticket_data_id'], 'ticket_data', array('value' => $ticket_data_key_value)); } else { update_insert('ticket_data_id', 'new', 'ticket_data', array('ticket_data_key_id' => $ticket_data_key_id, 'ticket_id' => $ticket_id, 'value' => $ticket_data_key_value)); } } } } $ticket_message_id = false; if (isset($data['new_ticket_message']) && strlen($data['new_ticket_message']) > 1) { // post a new reply to this message. // who are we replying to? $ticket_data = $this->get_ticket($ticket_id); if (isset($data['change_status_id']) && $data['change_status_id']) { update_insert("ticket_id", $ticket_id, "ticket", array('status_id' => $data['change_status_id'])); } else { if ($ticket_data['status_id'] == _TICKET_STATUS_RESOLVED_ID || $ticket_data['status_id'] == 7) { $data['change_status_id'] = _TICKET_STATUS_IN_PROGRESS_ID; // change to in progress. } } module_cache::clear('ticket'); // it's either a reply from the admin, or from the user via the web interface. $ticket_data = $this->get_ticket($ticket_id); $logged_in_user = isset($data['force_logged_in_user_id']) ? $data['force_logged_in_user_id'] : false; if (!$logged_in_user) { $logged_in_user = module_security::get_loggedin_id(); if (!$logged_in_user) { $logged_in_user = $ticket_data['user_id']; } } if (!$ticket_data['user_id'] && module_security::get_loggedin_id()) { update_insert('ticket_id', $ticket_id, 'ticket', array('user_id' => module_security::get_loggedin_id())); $ticket_data['user_id'] = module_security::get_loggedin_id(); } $ticket_creator = $ticket_data['user_id']; // echo "creator: $ticket_creator logged in: $logged_in_user"; print_r($ticket_data);exit; //echo "Creator: ".$ticket_data['user_id'] . " logged in ".$logged_in_user;exit; if ($ticket_creator == $logged_in_user) { // we are sending a reply back to the admin, from the end user. self::mark_as_unread($ticket_id); $ticket_message_id = $this->send_reply($ticket_id, $data['new_ticket_message'], $ticket_creator, $ticket_data['assigned_user_id'] ? $ticket_data['assigned_user_id'] : module_config::c('ticket_default_user_id', 1), 'end_user', '', array('private_message' => isset($data['private_message']) && $data['private_message'])); } else { // we are sending a reply back to the ticket user. // admin is allowed to change the status of a message. $from_user_id = $ticket_data['assigned_user_id'] ? $ticket_data['assigned_user_id'] : module_security::get_loggedin_id(); //echo "From $from_user_id to $ticket_creator ";exit; $ticket_message_id = $this->send_reply($ticket_id, $data['new_ticket_message'], $from_user_id, $ticket_creator, 'admin', '', array('private_message' => isset($data['private_message']) && $data['private_message'])); // do we add cc/bcc here? } if ($ticket_message_id && isset($data['change_status_id']) && $data['change_status_id']) { // store the ticket status change here. update_insert("ticket_message_id", $ticket_message_id, "ticket_message", array('status_id' => $data['change_status_id'])); } } if (isset($data['change_status_id']) && $data['change_status_id']) { // we only update this status if the sent reply or send reply and next buttons are clicked. if (isset($_REQUEST['newmsg']) || isset($_REQUEST['newmsg_next'])) { update_insert("ticket_id", $ticket_id, "ticket", array('status_id' => $data['change_status_id'])); } } } module_extra::save_extras('ticket', 'ticket_id', $ticket_id); // automaticall send notification email to assigned staff membeR? if (module_config::c('ticket_auto_notify_staff', 0)) { module_cache::clear('ticket'); $new_ticket_data = self::get_ticket($ticket_id); if ($new_ticket_data['assigned_user_id'] && (!$existing_ticket_data || $existing_ticket_data['assigned_user_id'] != $new_ticket_data['assigned_user_id'])) { // copied from ticket_admin_notify.php // template for sending emails. // are we sending the paid one? or the dueone. $template = module_template::get_template_by_key('ticket_email_notify'); $new_ticket_data['from_name'] = module_security::get_loggedin_name(); $new_ticket_data['ticket_url'] = module_ticket::link_open($ticket_id); $new_ticket_data['ticket_subject'] = $new_ticket_data['subject']; // sending to the staff member. $replace_fields = self::get_replace_fields($new_ticket_data['ticket_id'], $new_ticket_data); $template->assign_values($replace_fields); $template->assign_values($new_ticket_data); $html = $template->render('html'); $email = module_email::new_email(); $email->replace_values = $new_ticket_data + $replace_fields; $email->set_subject($template->description); $email->set_to('user', $new_ticket_data['assigned_user_id']); // do we send images inline? $email->set_html($html); if ($email->send()) { // it worked successfully!! } else { /// log err? } } } module_cache::clear('ticket'); return $ticket_id; }