tags */ function html_debug_print($var, $file='', $oneline=false) { $more_info = ''; if (is_string($var)) { $more_info = 'size: '.strlen($var); } else if (is_bool($var)) { $more_info = 'val: '.($var ? 'true' : 'false'); } else if (is_null($var)) { $more_info = 'is null'; } else if (is_array($var)) { $more_info = count($var); } if ($file === true) { $file = '/tmp/logDebug'; } if ($oneline && is_string($var)) { $var = preg_replace("/[\t|\n| ]+/", ' ', $var); } if (strlen($file) > 0) { $f = fopen($file, 'a'); ob_start(); echo date('Y/m/d H:i:s').' ('.gettype($var).') '.$more_info."\n"; print_r($var); echo "\n\n"; $output = ob_get_clean(); fprintf($f, '%s', $output); fclose($f); } else { echo '
'.date('Y/m/d H:i:s').' ('.gettype($var).') '.$more_info.'
'; echo '
';
        print_r($var);
        echo '
'; } } // Alias for "html_debug_print" function html_debug($var, $file='', $oneline=false) { html_debug_print($var, $file, $oneline); } // Alias for "html_debug_print" function hd($var, $file='', $oneline=false) { html_debug_print($var, $file, $oneline); } function debug() { $args_num = func_num_args(); $arg_list = func_get_args(); for ($i = 0; $i < $args_num; $i++) { html_debug_print($arg_list[$i], true); } } function html_f2str($function, $params) { ob_start(); call_user_func_array($function, $params); return ob_get_clean(); } /** * Print side layer * * @params mixed Hash with all the params: * * position: left or right * width: width of the layer * height: height of the layer * icon_closed: icon showed when layer is hidden * icon_open: icon showed when layer is showed * top_text: text over the content * body_text: content of layer * bottom_text: text under the contet * * @return string HTML code if return parameter is true. */ function html_print_side_layer($params) { global $config; // Check mandatory values, if any of them is missed, return '' $mandatory = [ 'icon_closed', 'body_text', ]; foreach ($mandatory as $man) { if (!isset($params[$man])) { return ''; } } // Set default values if not setted $defaults = [ 'position' => 'left', 'width' => '400', 'height' => '97%', 'top_text' => '', 'bottom_text' => '', 'top' => '0', 'autotop' => '', 'right' => '0', 'autoright' => '', 'vertical_mode' => 'out', 'icon_width' => 50, 'icon_height' => 50, 'icon_open' => $params['icon_closed'], ]; foreach ($defaults as $token => $value) { if (!isset($params[$token])) { $params[$token] = $value; } } // z-index is 1 because 2 made the calendar show under the side_layer switch ($params['position']) { case 'left': $round_class = 'menu_sidebar_radius_right'; $body_float = 'left'; $button_float = 'right'; break; case 'right': $round_class = 'menu_sidebar_radius_left'; $body_float = 'right'; $button_float = 'left'; break; case 'bottom': $round_class = 'menu_sidebar_radius_left menu_sidebar_radius_right'; $body_float = 'right'; $button_float = 'left'; break; } $out_html = ''; $out_js = ""; echo $out_html.$out_js; } /** * Prints an array of fields in a popup menu of a form. * * Based on choose_from_menu() from Moodle * * @param array Array with dropdown values. Example: $fields["value"] = "label" * @param string Select form name * @param variant Current selected value. Can be a single value or an * array of selected values (in combination with multiple) * @param string Javascript onChange code. * @param string Label when nothing is selected. * @param variant Value when nothing is selected * @param bool Whether to return an output string or echo now (optional, echo by default). * @param bool Set the input to allow multiple selections (optional, single selection by default). * @param bool Whether to sort the options or not (optional, unsorted by default). * * @return string HTML code if return parameter is true. */ function html_print_select_style($fields, $name, $selected='', $style='', $script='', $nothing='', $nothing_value=0, $return=false, $multiple=false, $sort=true, $class='', $disabled=false) { $output = "\n"; static $idcounter = []; // If duplicate names exist, it will start numbering. Otherwise it won't if (isset($idcounter[$name])) { $idcounter[$name]++; } else { $idcounter[$name] = 0; } $id = preg_replace('/[^a-z0-9\:\;\-\_]/i', '', $name.($idcounter[$name] ? $idcounter[$name] : '')); $attributes = ''; if (!empty($script)) { $attributes .= ' onchange="'.$script.'"'; } if (!empty($multiple)) { $attributes .= ' multiple="multiple" size="10"'; } if (!empty($class)) { $attributes .= ' class="'.$class.'"'; } if (!empty($disabled)) { $attributes .= ' disabled="disabled"'; } $output .= ''; if ($return) { return $output; } echo $output; } /** * Prints the groups of user of fields in a popup menu of a form. * * @param string User id * @param string The privilege to evaluate * @param boolean $returnAllGroup Flag the return group, by default true. * @param boolean $returnAllColumns Flag to return all columns of groups. * @param array Array with dropdown values. Example: $fields["value"] = "label" * @param string Select form name * @param variant Current selected value. Can be a single value or an * array of selected values (in combination with multiple) * @param string Javascript onChange code. * @param string Label when nothing is selected. * @param variant Value when nothing is selected * @param bool Whether to return an output string or echo now (optional, echo by default). * @param bool Set the input to allow multiple selections (optional, single selection by default). * @param bool Whether to sort the options or not (optional, unsorted by default). * @param string $style The string of style. * @param integer $id_group The id of node that must do not show the children and own. * @param string $keys_field The field of the group used in the array keys. By default ID * * @return string HTML code if return parameter is true. */ function html_print_select_groups( $id_user=false, $privilege='AR', $returnAllGroup=true, $name, $selected='', $script='', $nothing='', $nothing_value=0, $return=false, $multiple=false, $sort=true, $class='', $disabled=false, $style=false, $option_style=false, $id_group=false, $keys_field='id_grupo', $strict_user=false, $delete_groups=false, $include_groups=false ) { global $config; $fields = users_get_groups_for_select( $id_user, $privilege, $returnAllGroup, true, $id_group, $keys_field ); if ($delete_groups && is_array($delete_groups)) { foreach ($delete_groups as $value) { unset($fields[$value]); } } if (is_array($include_groups)) { $field = []; foreach ($include_groups as $value) { $field[$value] = $fields[$value]; } $fields = array_intersect($fields, $field); } if ($strict_user) { $fields = users_get_strict_mode_groups($config['id_user'], $returnAllGroup); } $output = html_print_select( $fields, $name, $selected, $script, $nothing, $nothing_value, $return, $multiple, false, $class, $disabled, $style, $option_style ); if ($return) { return $output; } else { echo $output; } } /** * Prints an array of fields in a popup menu of a form. * * Based on choose_from_menu() from Moodle * * @param array Array with dropdown values. Example: $fields["value"] = "label" * @param string Select form name * @param variant Current selected value. Can be a single value or an * array of selected values (in combination with multiple) * @param string Javascript onChange code. * @param string Label when nothing is selected. * @param variant Value when nothing is selected * @param bool Whether to return an output string or echo now (optional, echo by default). * @param bool Set the input to allow multiple selections (optional, single selection by default). * @param bool Whether to sort the options or not (optional, unsorted by default). * @param string $style The string of style. * @param mixed $size Max elements showed in the select or default (size=10). * * @return string HTML code if return parameter is true. */ function html_print_select( $fields, $name, $selected='', $script='', $nothing='', $nothing_value=0, $return=false, $multiple=false, $sort=true, $class='', $disabled=false, $style=false, $option_style=false, $size=false, $modal=false, $message='', $select_all=false ) { $output = "\n"; static $idcounter = []; // If duplicate names exist, it will start numbering. Otherwise it won't if (isset($idcounter[$name])) { $idcounter[$name]++; } else { $idcounter[$name] = 0; } $id = preg_replace('/[^a-z0-9\:\;\-\_]/i', '', $name.($idcounter[$name] ? $idcounter[$name] : '')); $attributes = ''; if (!empty($script)) { $attributes .= ' onchange="'.$script.'"'; } if (!empty($multiple)) { if ($size !== false) { $attributes .= ' multiple="multiple" size="'.$size.'"'; } else { $attributes .= ' multiple="multiple" size="10"'; } } if (!empty($class)) { $attributes .= ' class="'.$class.'"'; } if (!empty($disabled)) { $attributes .= ' disabled="disabled"'; } if ($style === false) { $styleText = 'style=""'; } else { $styleText = 'style="'.$style.'"'; } $output .= ''; if ($modal && !enterprise_installed()) { $output .= "
"; } if ($return) { return $output; } echo $output; } /** * Prints an array of fields in a popup menu of a form based on a SQL query. * The first and second columns of the query will be used. * * The element will have an id like: "password-$value". Based on choose_from_menu() from Moodle. * * @param string $sql SQL sentence, the first field will be the identifier of the option. * The second field will be the shown value in the dropdown. * @param string $name Select form name * @param string $selected Current selected value. * @param string $script Javascript onChange code. * @param string $nothing Label when nothing is selected. * @param string $nothing_value Value when nothing is selected * @param boolean $return Whether to return an output string or echo now (optional, echo by default). * @param boolean $multiple Whether to allow multiple selections or not. Single by default * @param boolean $sort Whether to sort the options or not. Sorted by default. * @param boolean $disabled if it's true, disable the select. * @param string $style The string of style. * @param mixed $size Max elements showed in select or default (size=10) * @param integer $truncante_size Truncate size of the element, by default is set to GENERIC_SIZE_TEXT constant * * @return string HTML code if return parameter is true. */ function html_print_select_from_sql( $sql, $name, $selected='', $script='', $nothing='', $nothing_value='0', $return=false, $multiple=false, $sort=true, $disabled=false, $style=false, $size=false, $trucate_size=GENERIC_SIZE_TEXT ) { global $config; $fields = []; $result = db_get_all_rows_sql($sql); if ($result === false) { $result = []; } foreach ($result as $row) { $id = array_shift($row); $value = array_shift($row); $fields[$id] = ui_print_truncate_text( $value, $trucate_size, false, true, false ); } return html_print_select( $fields, $name, $selected, $script, $nothing, $nothing_value, $return, $multiple, $sort, '', $disabled, $style, '', $size ); } function html_print_extended_select_for_unit( $name, $selected='', $script='', $nothing='', $nothing_value='0', $size=false, $return=false, $select_style=false, $unique_name=true, $disabled=false, $no_change=0 ) { global $config; // $fields = post_process_get_custom_values(); $fields['_timeticks_'] = 'Timeticks'; $fields['none'] = __('none'); if ($no_change != 0) { $fields[-1] = __('No change'); } // $selected_float = (float)$selected; // $found = false; // // if (array_key_exists($selected, $fields)) // $found = true; // // if (!$found) { // $fields[$selected] = floatval($selected); // } if ($unique_name === true) { $uniq_name = uniqid($name); } else { $uniq_name = $name; } ob_start(); echo '
'; html_print_select( $fields, $uniq_name.'_select', $selected, ''.$script, $nothing, $nothing_value, false, false, false, '', $disabled, 'font-size: xx-small;'.$select_style ); echo ' '.html_print_image( 'images/pencil.png', true, [ 'class' => $uniq_name.'_toggler', 'alt' => __('Custom'), 'title' => __('Custom'), 'style' => 'width: 18px;', ] ).''; echo '
'; echo '
'; html_print_input_text($uniq_name.'_text', $selected, '', 20); html_print_input_hidden($name, $selected, false, $uniq_name); echo ' '.html_print_image( 'images/default_list.png', true, [ 'class' => $uniq_name.'_toggler', 'alt' => __('List'), 'title' => __('List'), 'style' => 'width: 18px;', ] ).''; echo '
'; echo ""; $returnString = ob_get_clean(); if ($return) { return $returnString; } else { echo $returnString; } } function html_print_extended_select_for_post_process( $name, $selected='', $script='', $nothing='', $nothing_value='0', $size=false, $return=false, $select_style=false, $unique_name=true, $disabled=false, $no_change=0 ) { global $config; include_once $config['homedir'].'/include/functions_post_process.php'; $fields = post_process_get_custom_values(); if ($no_change != 0) { $fields[-1] = __('No change'); } $selected_float = (float) $selected; $found = false; if ($selected) { if (array_key_exists(number_format($selected, 14, '.', ','), $fields)) { $found = true; } } if (!$found) { $fields[$selected] = floatval($selected); } if ($unique_name === true) { $uniq_name = uniqid($name); } else { $uniq_name = $name; } ob_start(); echo '
'; html_print_select( $fields, $uniq_name.'_select', $selected, ''.$script, $nothing, $nothing_value, false, false, false, '', $disabled, 'font-size: xx-small;'.$select_style ); echo ' '.html_print_image( 'images/pencil.png', true, [ 'class' => $uniq_name.'_toggler', 'alt' => __('Custom'), 'title' => __('Custom'), 'style' => 'width: 18px;', ] ).''; echo '
'; echo '
'; html_print_input_text($uniq_name.'_text', $selected, '', 20); html_print_input_hidden($name, $selected, false, $uniq_name); echo ' '.html_print_image( 'images/default_list.png', true, [ 'class' => $uniq_name.'_toggler', 'alt' => __('List'), 'title' => __('List'), 'style' => 'width: 18px;', ] ).''; echo '
'; echo ""; $returnString = ob_get_clean(); if ($return) { return $returnString; } else { echo $returnString; } } /** * Render a pair of select for times and text box for set the time more fine. * * @param string Select form name * @param variant Current selected value. Can be a single value or an * array of selected values (in combination with multiple) * @param string Javascript onChange (select) code. * @param string Label when nothing is selected. * @param variant Value when nothing is selected * @param integer $size Size of the input. * @param bool Whether to return an output string or echo now (optional, echo by default). * @param bool Wherter to assign to combo a unique name (to have more than one on same page, like dashboard) * * @return string HTML code if return parameter is true. */ function html_print_extended_select_for_time( $name, $selected='', $script='', $nothing='', $nothing_value='0', $size=false, $return=false, $select_style=false, $unique_name=true, $class='', $readonly=false, $custom_fields=false, $style_icon='', $no_change=false ) { global $config; $admin = is_user_admin($config['id_user']); if ($custom_fields) { $fields = $custom_fields; } else { $fields = get_periods(); } if ($no_change) { $fields['-2'] = __('No change'); } if (! $selected) { foreach ($fields as $t_key => $t_value) { if ($t_key != -1) { if ($nothing == '') { // -1 means 'custom' $selected = $t_key; break; } else { $selected = $nothing; break; } } } } if (($selected !== false) && (!isset($fields[$selected]) && $selected != 0)) { $fields[$selected] = human_time_description_raw($selected, true); } $units = [ 1 => __('seconds'), SECONDS_1MINUTE => __('minutes'), SECONDS_1HOUR => __('hours'), SECONDS_1DAY => __('days'), SECONDS_1WEEK => __('weeks'), SECONDS_1MONTH => __('months'), SECONDS_1YEAR => __('years'), ]; if ($unique_name === true) { $uniq_name = uniqid($name); } else { $uniq_name = $name; } if ($readonly) { $readonly = true; } ob_start(); // Use the no_meta parameter because this image is only in the base console echo '
'; html_print_select( $fields, $uniq_name.'_select', $selected, ''.$script, $nothing, $nothing_value, false, false, false, $class, $readonly, 'font-size: xx-small;'.$select_style ); // The advanced control is only for admins if ($admin) { echo ' '.html_print_image( 'images/pencil.png', true, [ 'class' => $uniq_name.'_toggler', 'alt' => __('Custom'), 'title' => __('Custom'), 'style' => 'width: 18px;'.$style_icon, ], false, false, true ).''; } echo '
'; echo '
'; html_print_input_text($uniq_name.'_text', $selected, '', $size, 255, false, $readonly, false, '', $class); html_print_input_hidden($name, $selected, false, $uniq_name); html_print_select( $units, $uniq_name.'_units', 1, ''.$script, $nothing, $nothing_value, false, false, false, $class, $readonly, 'font-size: xx-small;'.$select_style ); echo ' '.html_print_image( 'images/default_list.png', true, [ 'class' => $uniq_name.'_toggler', 'alt' => __('List'), 'title' => __('List'), 'style' => 'width: 18px;'.$style_icon, ] ).''; echo '
'; echo ""; $returnString = ob_get_clean(); if ($return) { return $returnString; } else { echo $returnString; } } /** * Print selects to configure the cron of a module. * * @param string Run hour. * @param string Run minute. * @param string Run day of the month. * @param string Run month. * @param string Run day of the week. * @param bool Whether to return an output string or echo now (optional, echo by default). * @param bool Print cron grayed * * @return string HTML code if return parameter is true. */ function html_print_extended_select_for_cron($hour='*', $minute='*', $mday='*', $month='*', $wday='*', $return=false, $disabled=false, $to=false) { // Hours for ($i = 0; $i < 24; $i++) { $hours[$i] = $i; } // Minutes for ($i = 0; $i < 60; $i += 5) { $minutes[$i] = $i; } // Month days for ($i = 0; $i < 31; $i++) { $mdays[$i] = $i; } // Months for ($i = 1; $i <= 12; $i++) { $months[$i] = date('F', mktime(0, 0, 0, $i, 1)); } // Days of the week $wdays = [ __('Sunday'), __('Monday'), __('Tuesday'), __('Wednesday'), __('Thursday'), __('Friday'), __('Saturday'), ]; // Print selectors $table = new stdClass(); $table->id = 'cron'; $table->width = '100%'; $table->class = 'databox data'; $table->head[0] = __('Hour'); $table->head[1] = __('Minute'); $table->head[2] = __('Month day'); $table->head[3] = __('Month'); $table->head[4] = __('Week day'); if ($to) { $table->data[0][0] = html_print_select($hours, 'hour_to', $hour, '', __('Any'), '*', true, false, false, '', $disabled); $table->data[0][1] = html_print_select($minutes, 'minute_to', $minute, '', __('Any'), '*', true, false, false, '', $disabled); $table->data[0][2] = html_print_select($mdays, 'mday_to', $mday, '', __('Any'), '*', true, false, false, '', $disabled); $table->data[0][3] = html_print_select($months, 'month_to', $month, '', __('Any'), '*', true, false, false, '', $disabled); $table->data[0][4] = html_print_select($wdays, 'wday_to', $wday, '', __('Any'), '*', true, false, false, '', $disabled); } else { $table->data[0][0] = html_print_select($hours, 'hour_from', $hour, '', __('Any'), '*', true, false, false, '', $disabled); $table->data[0][1] = html_print_select($minutes, 'minute_from', $minute, '', __('Any'), '*', true, false, false, '', $disabled); $table->data[0][2] = html_print_select($mdays, 'mday_from', $mday, '', __('Any'), '*', true, false, false, '', $disabled); $table->data[0][3] = html_print_select($months, 'month_from', $month, '', __('Any'), '*', true, false, false, '', $disabled); $table->data[0][4] = html_print_select($wdays, 'wday_from', $wday, '', __('Any'), '*', true, false, false, '', $disabled); } return html_print_table($table, $return); } /** * Render an input text element. Extended version, use html_print_input_text() to simplify. * * @param string $name Input name. * @param string $value Input value. * @param string $id Input HTML id. * @param string $alt Do not use, invalid for text and password. Use html_print_input_image * @param integer $size Size of the input. * @param integer $maxlength Maximum length allowed. * @param boolean $disabled Disable the button (optional, button enabled by default). * @param mixed $script JavaScript to attach to this. It is array the index is event to set a script, it is only string for "onkeyup" event. * @param mixed $attributes Attributes to add to this tag. Should be an array for correction. * @param boolean $return Whether to return an output string or echo now (optional, echo by default). * @param boolean $password Whether it is a password input or not. Not password by default. * * @return string HTML code if return parameter is true. */ function html_print_input_text_extended($name, $value, $id, $alt, $size, $maxlength, $disabled, $script, $attributes, $return=false, $password=false, $function='') { static $idcounter = 0; if ($maxlength == 0) { $maxlength = 255; } if ($size == 0) { $size = 10; } ++$idcounter; $valid_attrs = [ 'accept', 'disabled', 'maxlength', 'name', 'readonly', 'placeholder', 'size', 'value', 'accesskey', 'class', 'dir', 'id', 'lang', 'style', 'tabindex', 'title', 'xml:lang', 'onfocus', 'onblur', 'onselect', 'onchange', 'onclick', 'ondblclick', 'onmousedown', 'onmouseup', 'onmouseover', 'onmousemove', 'onmouseout', 'onkeypress', 'onkeydown', 'onkeyup', 'required', 'autocomplete', ]; $output = ' $attr_value) { if (! in_array($attribute, $valid_attrs)) { continue; } $output .= $attribute.'="'.$attr_value.'" '; } } else { $output .= trim($attributes).' '; $attributes = []; } if (!empty($alt)) { $output .= 'alt="'.$alt.'" '; } // Attributes specified by function call $attrs = [ 'name' => 'unnamed', 'value' => '', 'id' => 'text-'.sprintf('%04d', $idcounter), 'size' => '', 'maxlength' => '', ]; foreach ($attrs as $attribute => $default) { if (array_key_exists($attribute, $attributes)) { continue; } //end if /* * Remember, this next code have a $$ that for example there is a var as * $a = 'john' then $$a is a var $john . * * In this case is use for example for $name and $atribute = 'name' . * */ // Exact operator because we want to show "0" on the value if ($attribute !== '') { $output .= $attribute.'="'.$$attribute.'" '; } else if ($default != '') { $output .= $attribute.'="'.$default.'" '; } } if (!empty($script)) { if (is_string($script)) { $code = $script; $script = []; $script['onkeyup'] = $code; } foreach ($script as $event => $code) { $output .= ' '.$event.'="'.$code.'" '; } } $output .= $function.'/>'; if (!$return) { echo $output; } return $output; } /** * Render an input password element. * * The element will have an id like: "password-$name" * * @param mixed parameters: * - id: string * - style: string * - hidden: boolean * - content: string * @param bool return or echo flag * * @return string HTML code if return parameter is true. */ function html_print_div($options, $return=false) { $output = ''; if ($return) { return $output; } echo $output; } /** * Render an input hidden element. * * The element will have an id like: "hidden-$name" * * @param string $name Input name. * @param string $value Input value. * @param boolean $return Whether to return an output string or echo now (optional, echo by default). * @param string $class Set the class of input. * * @return string HTML code if return parameter is true. */ function html_print_input_hidden($name, $value, $return=false, $class=false) { if ($class !== false) { $classText = 'class="'.$class.'"'; } else { $classText = ''; } $separator = '"'; if (is_string($value)) { if (strstr($value, '"')) { $separator = "'"; } } $output = ''; if ($return) { return $output; } echo $output; } /** * Render an input hidden element. Extended version, use html_print_input_hidden() to simplify. * * The element will have an id like: "hidden-$name" * * @param string $name Input name. * @param string $value Input value. * @param string $id Input value. * @param boolean $return Whether to return an output string or echo now (optional, echo by default). * @param string $class Set the class of input. * * @return string HTML code if return parameter is true. */ function html_print_input_hidden_extended($name, $value, $id, $return=false, $class=false) { if ($class !== false) { $classText = 'class="'.$class.'"'; } else { $classText = ''; } if (empty($id)) { $ouput_id = 'hidden-'.$name; } else { $ouput_id = $id; } $output = ''; if ($return) { return $output; } echo $output; } /** * Render a color input element. * * The element will have an id like: "hidden-$name" * * @param string $name Input name. * @param integer $value Input value. Decimal representation of the color's hexadecimal value. * @param string $class Set the class of input. * @param boolean $return Whether to return an output string or echo now (optional, echo by default). * * @return string HTML code if return parameter is true. */ function html_print_input_color($name, $value, $class=false, $return=false) { $attr_type = 'type="color"'; $attr_id = 'id="color-'.htmlspecialchars($name, ENT_QUOTES).'"'; $attr_name = 'name="'.htmlspecialchars($name, ENT_QUOTES).'"'; $attr_value = 'value="'.htmlspecialchars($value, ENT_QUOTES).'"'; $attr_class = 'class="'.($class !== false ? htmlspecialchars($class, ENT_QUOTES) : '').'"'; $output = ''; if ($return) { return $output; } echo $output; } /** * Render an submit input button element. * * The element will have an id like: "submit-$name" * * @param string $label Input label. * @param string $name Input name. * @param boolean $disabled Whether to disable by default or not. Enabled by default. * @param array $attributes Additional HTML attributes. * @param boolean $return Whether to return an output string or echo now (optional, echo by default). * * @return string HTML code if return parameter is true. */ function html_print_submit_button($label='OK', $name='', $disabled=false, $attributes='', $return=false) { if (!$name) { $name = 'unnamed'; } if (is_array($attributes)) { $attr_array = $attributes; $attributes = ''; foreach ($attr_array as $attribute => $value) { $attributes .= $attribute.'="'.$value.'" '; } } $output = ' "; } if ($return) { return $output; } echo $output; } /** * Render an input textarea element. * * The element will have an id like: "textarea_$name" * * @param string $name Input name. * @param integer $rows How many rows (height) * @param integer $columns How many columns (width) * @param string $value Text in the textarea * @param string $attributes Additional attributes * @param boolean $return Whether to return an output string or echo now (optional, echo by default). * * * @return string HTML code if return parameter is true. */ function html_print_textarea($name, $rows, $columns, $value='', $attributes='', $return=false, $class='') { $output = ''; if ($return) { return $output; } echo $output; } /** * Return a table parameters predefined * * @param string model * - Transparent: More basic template. No borders, all the columns with same width * @param int number of columns * * @return object Table object */ function html_get_predefined_table($model='transparent', $columns=4) { $width_percent = (100 / $columns); switch ($model) { case 'transparent': default: $table = new stdClass(); $table->class = 'none'; $table->cellpadding = 0; $table->cellspacing = 0; $table->head = []; $table->data = []; $table->style = array_fill(0, 4, 'text-align:center; width: '.$width_percent.'%;'); $table->width = '100%'; } return $table; } /** * Print a nicely formatted table. Code taken from moodle. * * @param object Object with several properties: * $table->head - An array of heading names. * $table->head_colspan - An array of colspans of each head column. * $table->headstyle - An array of styles of each head column. * $table->align - An array of column alignments * $table->valign - An array of column alignments * $table->size - An array of column sizes * $table->wrap - An array of "nowrap"s or nothing * $table->style - An array of personalized style for each column. * $table->rowid - An array of personalized ids of each row. * $table->rowstyle - An array of personalized style of each row. * $table->rowclass - An array of personalized classes of each row (odd-evens classes will be ignored). * $table->colspan - An array of colspans of each column. * $table->rowspan - An array of rowspans of each column. * $table->data[] - An array of arrays containing the data. * $table->width - A percentage of the page * $table->border - Border of the table. * $table->tablealign - Align the whole table (float left or right) * $table->cellpadding - Padding on each cell * $table->cellspacing - Spacing between cells * $table->cellstyle - Style of a cell * $table->cellclass - Class of a cell * $table->class - CSS table class * $table->id - Table ID (useful in JavaScript) * $table->headclass[] - An array of classes for each heading * $table->title - Title of the table is a single string that will be on top of the table in the head spanning the whole table * $table->titlestyle - Title style * $table->titleclass - Title class * $table->styleTable - Table style * $table->caption - Table title * @param bool Whether to return an output string or echo now * * @return string HTML code if return parameter is true. */ function html_print_table(&$table, $return=false) { $output = ''; static $table_count = 0; $table_count++; if (isset($table->align)) { foreach ($table->align as $key => $aa) { if ($aa) { $align[$key] = ' text-align:'.$aa.';'; } else { $align[$key] = ''; } } } if (isset($table->valign)) { foreach ($table->valign as $key => $aa) { if ($aa) { $valign[$key] = ' vertical-align:'.$aa.';'; } else { $valign[$key] = ''; } } } if (isset($table->size)) { foreach ($table->size as $key => $ss) { if ($ss) { $size[$key] = ' width:'.$ss.';'; } else { $size[$key] = ''; } } } if (isset($table->style)) { foreach ($table->style as $key => $st) { if ($st) { $style[$key] = ' '.$st.';'; } else { $style[$key] = ''; } } } $styleTable = ''; if (isset($table->styleTable)) { $styleTable = $table->styleTable; } if (isset($table->rowid)) { foreach ($table->rowid as $key => $id) { $rowid[$key] = $id; } } if (isset($table->rowstyle)) { foreach ($table->rowstyle as $key => $st) { $rowstyle[$key] = ' '.$st.';'; } } if (isset($table->rowclass)) { foreach ($table->rowclass as $key => $class) { $rowclass[$key] = $class; } } if (isset($table->colspan)) { foreach ($table->colspan as $keyrow => $cspan) { foreach ($cspan as $key => $span) { $colspan[$keyrow][$key] = ' colspan="'.$span.'"'; } } } if (isset($table->cellstyle)) { foreach ($table->cellstyle as $keyrow => $cstyle) { foreach ($cstyle as $key => $cst) { $cellstyle[$keyrow][$key] = $cst; } } } if (isset($table->cellclass)) { foreach ($table->cellclass as $keyrow => $cclass) { foreach ($cclass as $key => $ccl) { $cellclass[$keyrow][$key] = $ccl; } } } if (isset($table->rowspan)) { foreach ($table->rowspan as $keyrow => $rspan) { foreach ($rspan as $key => $span) { $rowspan[$keyrow][$key] = ' rowspan="'.$span.'"'; } } } if (empty($table->width)) { // $table->width = '80%'; } if (empty($table->border)) { if (empty($table)) { $table = new stdClass(); } $table->border = '0'; } if (empty($table->tablealign) || (($table->tablealign != 'left') && ($table->tablealign != 'right'))) { $table->tablealign = '"'; } else { $table->tablealign = 'float:'.$table->tablealign.';"'; // Align is deprecated. Use float instead } if (!isset($table->cellpadding)) { $table->cellpadding = '4'; } if (!isset($table->cellspacing)) { $table->cellspacing = '4'; } if (empty($table->class)) { $table->class = 'databox'; } if (empty($table->titlestyle)) { $table->titlestyle = 'text-align:center;'; } $tableid = empty($table->id) ? 'table'.$table_count : $table->id; if (!empty($table->width)) { $output .= 'tablealign; } $output .= ' cellpadding="'.$table->cellpadding.'" cellspacing="'.$table->cellspacing.'"'; $output .= ' border="'.$table->border.'" class="'.$table->class.'" id="'.$tableid.'">'; $countcols = 0; if (!empty($table->caption)) { $output .= ''; } if (!empty($table->head)) { $countcols = count($table->head); $output .= ''; if (isset($table->title)) { $output .= ''; } foreach ($table->head as $key => $heading) { if (!isset($size[$key])) { $size[$key] = ''; } if (!isset($align[$key])) { $align[$key] = ''; } if (!isset($table->headclass[$key])) { $table->headclass[$key] = 'header c'.$key; } if (isset($table->head_colspan[$key])) { $headColspan = 'colspan = "'.$table->head_colspan[$key].'"'; } else { $headColspan = ''; } if (isset($table->headstyle[$key])) { $headStyle = ' style = "'.$table->headstyle[$key].'" '; } else { $headStyle = ''; } $output .= ''; } $output .= ''."\n"; } $output .= ''."\n"; if (!empty($table->data)) { $oddeven = 1; foreach ($table->data as $keyrow => $row) { if (!isset($rowstyle[$keyrow])) { $rowstyle[$keyrow] = ''; } if (!isset($rowid[$keyrow])) { $rowid[$keyrow] = $tableid.'-'.$keyrow; } $oddeven = $oddeven ? 0 : 1; $class = 'datos'.($oddeven ? '' : '2'); if (isset($rowclass[$keyrow])) { $class = $rowclass[$keyrow]; } $output .= ''."\n"; // Special separator rows if ($row == 'hr' and $countcols) { $output .= ''; continue; } if (!is_array($row)) { $row = (array) $row; } // It's a normal row foreach ($row as $key => $item) { if (!isset($size[$key])) { $size[$key] = ''; } if (!isset($cellstyle[$keyrow][$key])) { $cellstyle[$keyrow][$key] = ''; } if (!isset($cellclass[$keyrow][$key])) { $cellclass[$keyrow][$key] = ''; } if (!isset($colspan[$keyrow][$key])) { $colspan[$keyrow][$key] = ''; } if (!isset($rowspan[$keyrow][$key])) { $rowspan[$keyrow][$key] = ''; } if (!isset($align[$key])) { $align[$key] = ''; } if (!isset($valign[$key])) { $valign[$key] = ''; } if (!isset($wrap[$key])) { $wrap[$key] = ''; } if (!isset($style[$key])) { $style[$key] = ''; } $output .= ''."\n"; } $output .= ''."\n"; } } $output .= '

'.$table->caption.'

titlestyle)) { $output .= ' style="'.$table->titlestyle.'"'; } if (isset($table->titleclass)) { $output .= ' class="'.$table->titleclass.'"'; } $output .= '>'.$table->title.'
'.$heading.'
'.$item.'
'."\n"; if ($return) { return $output; } echo $output; } /** * Render a radio button input. Extended version, use html_print_radio_button() to simplify. * * @param string Input name. * @param string Input value. * @param string Set the button to be marked (optional, unmarked by default). * @param bool Disable the button (optional, button enabled by default). * @param string Script to execute when onClick event is triggered (optional). * @param string Optional HTML attributes. It's a free string which will be inserted into the HTML tag, use it carefully (optional). * @param bool Whether to return an output string or echo now (optional, echo by default). * * @return string HTML code if return parameter is true. */ /* Hello there! :) We added some of what seems to be "buggy" messages to the openSource version recently. This is not to force open-source users to move to the enterprise version, this is just to inform people using Pandora FMS open source that it requires skilled people to maintain and keep it running smoothly without professional support. This does not imply open-source version is limited in any way. If you check the recently added code, it contains only warnings and messages, no limitations except one: we removed the option to add custom logo in header. In the Update Manager section, it warns about the 'danger’ of applying automated updates without a proper backup, remembering in the process that the Enterprise version comes with a human-tested package. Maintaining an OpenSource version with more than 500 agents is not so easy, that's why someone using a Pandora with 8000 agents should consider asking for support. It's not a joke, we know of many setups with a huge number of agents, and we hate to hear that “its becoming unstable and slow” :( You can of course remove the warnings, that's why we include the source and do not use any kind of trick. And that's why we added here this comment, to let you know this does not reflect any change in our opensource mentality of does the last 14 years. */ function html_print_radio_button_extended($name, $value, $label, $checkedvalue, $disabled, $script, $attributes, $return=false, $modal=false, $message='visualmodal') { static $idcounter = 0; $output = ''; $output = ''.$label.''."\n"; } if ($modal && !enterprise_installed()) { $output .= "
"; } if ($return) { return $output; } echo $output; } /** * Render a radio button input. * * @param string Input name. * @param string Input value. * @param string Label to add after the radio button (optional). * @param string Checked and selected value, the button will be selected if it matches $value (optional). * @param bool Whether to return an output string or echo now (optional, echo by default). * * @return string HTML code if return parameter is true. */ function html_print_radio_button($name, $value, $label='', $checkedvalue='', $return=false, $disabled=false) { $output = html_print_radio_button_extended($name, $value, $label, $checkedvalue, $disabled, '', '', true); if ($return) { return $output; } echo $output; } /** * Render a checkbox button input. Extended version, use html_print_checkbox() to simplify. * * @param string Input name. * @param string Input value. * @param string Set the button to be marked (optional, unmarked by default). * @param bool Disable the button (optional, button enabled by default). * @param string Script to execute when onClick event is triggered (optional). * @param string Optional HTML attributes. It's a free string which will be inserted into the HTML tag, use it carefully (optional). * @param bool Whether to return an output string or echo now (optional, echo by default). * * @return string HTML code if return parameter is true. */ function html_print_checkbox_extended($name, $value, $checked, $disabled, $script, $attributes, $return=false, $id='') { static $idcounter = []; // If duplicate names exist, it will start numbering. Otherwise it won't if (isset($idcounter[$name])) { $idcounter[$name]++; } else { $idcounter[$name] = 0; } $id_aux = preg_replace('/[^a-z0-9\:\;\-\_]/i', '', $name.($idcounter[$name] ? $idcounter[$name] : '')); $output = ''). * @param boolean $relative Whether to use relative path to image or not (i.e. $relative= true : /pandora/). * * @return string HTML code if return parameter is true. */ function html_print_image( $src, $return=false, $options=false, $return_src=false, $relative=false, $no_in_meta=false, $isExternalLink=false ) { global $config; // If metaconsole is in use then don't use skins if (!is_metaconsole()) { // Checks if user's skin is available $isFunctionSkins = enterprise_include_once('include/functions_skins.php'); if ($isFunctionSkins !== ENTERPRISE_NOT_HOOK) { $skin_path = enterprise_hook('skins_get_image_path', [$src]); if ($skin_path) { $src = $skin_path; } } } // If metaconsole is activated and image doesn't exists try to search on normal console if (is_metaconsole()) { if (!$relative) { $working_dir = str_replace('\\', '/', getcwd()); // Windows compatibility if ($no_in_meta) { $src = '../../'.$src; } else if (strstr($working_dir, 'enterprise/meta') === false) { if ($src[0] !== '/') { $src = '/'.$src; } if (!is_readable($working_dir.'/enterprise/meta'.$src)) { if ($isExternalLink) { $src = ui_get_full_url($src); } else { $src = ui_get_full_url('../..'.$src); } } else { $src = ui_get_full_url($src); } } else { if ($src[0] !== '/') { $src = '/'.$src; } if (is_readable($working_dir.$src)) { $src = ui_get_full_url($src); } else if (!is_readable($src)) { $src = ui_get_full_url('../../'.$src); } } } else { $src = '../../'.$src; } } else { if (!$relative) { $src_tmp = $src; $src = ui_get_full_url($src); } } // Only return src field of image if ($return_src) { if (!$return) { echo io_safe_input($src); return; } return io_safe_input($src); } $output = ''; } else { $output .= '/>'; } if (!$return) { echo $output; } return $output; } /** * Render an input text element. Extended version, use html_print_input_text() to simplify. * * @param string Input name. * @param bool Whether to return an output string or echo now (optional, echo by default). * @param array An array with optional HTML parameters. * Key size: HTML size attribute. * Key disabled: Whether to disable the input or not. * Key class: HTML class */ function html_print_input_file($name, $return=false, $options=false) { $output = ''; $output .= ''; $output .= $text; $output .= ''; if ($options) { if (isset($options['html'])) { $output .= $options['html']; } } if ($return) { return $output; } echo $output; } /** * Convert a html color like #FF00FF into the rgb values like (255,0,255). * * @param string color in format #FFFFFF, FFFFFF, #FFF or FFF */ function html_html2rgb($htmlcolor) { if ($htmlcolor[0] == '#') { $htmlcolor = substr($htmlcolor, 1); } if (strlen($htmlcolor) == 6) { $r = hexdec($htmlcolor[0].$htmlcolor[1]); $g = hexdec($htmlcolor[2].$htmlcolor[3]); $b = hexdec($htmlcolor[4].$htmlcolor[5]); return [ $r, $g, $b, ]; } else if (strlen($htmlcolor) == 3) { $r = hexdec($htmlcolor[0].$htmlcolor[0]); $g = hexdec($htmlcolor[1].$htmlcolor[1]); $b = hexdec($htmlcolor[2].$htmlcolor[2]); return [ $r, $g, $b, ]; } else { return false; } } /** * Print a magic-ajax control to select the module. * * @param string $name The name of ajax control, by default is "module". * @param string $default The default value to show in the ajax control. * @param array $id_agents The array list of id agents as array(1,2,3), by default is false and the function use all agents (if the ACL desactive). * @param boolean $ACL Filter the agents by the ACL list of user. * @param string $scriptResult The source code of script to call, by default is * empty. And the example is: * function (e, data, formatted) { * ... * } * * And the formatted is the select item as string. * * @param array $filter Other filter of modules. * @param boolean $return If it is true return a string with the output instead to echo the output. * * @return mixed If the $return is true, return the output as string. */ function html_print_autocomplete_modules( $name='module', $default='', $id_agents=false, $ACL=true, $scriptResult='', $filter=[], $return=false, $id_agent_module=0 ) { global $config; if ($id_agents === false) { $groups = []; if ($ACL) { $groups = users_get_groups($config['id_user'], 'AW', false); $groups = array_keys($groups); if (empty($groups)) { $id_groups = 0; } else { $id_groups = implode(',', $groups); } $agents = db_get_all_rows_sql( 'SELECT id_agente FROM tagente WHERE id_grupo IN ('.$id_groups.')' ); } else { $agents = db_get_all_rows_sql( 'SELECT id_agente FROM tagente' ); } if ($agents === false) { $agents = []; } $id_agents = []; foreach ($agents as $agent) { $id_agents[] = $agent['id_agente']; } } else { if ($ACL) { $groups = users_get_groups($config['id_user'], 'AW', false); $groups = array_keys($groups); $agents = db_get_all_rows_sql('SELECT id_agente FROM tagente WHERE id_grupo IN ('.implode(',', $groups).')'); if ($agents === false) { $agents = []; } $id_agentsACL = []; foreach ($agents as $agent) { if (array_search($agent['id_agente'], $id_agents) !== false) { $id_agentsACL[] = $agent['id_agente']; } } $id_agents = $id_agentsACL; } } ob_start(); html_print_input_text_extended( $name, $default, 'text-'.$name, '', 30, 100, false, '', ['style' => 'background: url(images/search_module.png) no-repeat right;'] ); html_print_input_hidden($name.'_hidden', $id_agent_module); ui_print_help_tip(__('Type at least two characters to search the module.'), false); $javascript_ajax_page = ui_get_full_url('ajax.php', false, false, false, false); ?> '(GMT-11:00) '.__('Midway Island'), 'US/Samoa' => '(GMT-11:00) '.__('Samoa'), 'US/Hawaii' => '(GMT-10:00) '.__('Hawaii'), 'US/Alaska' => '(GMT-09:00) '.__('Alaska'), 'US/Pacific' => '(GMT-08:00) '.__('Pacific Time (US & Canada)'), 'America/Tijuana' => '(GMT-08:00) '.__('Tijuana'), 'US/Arizona' => '(GMT-07:00) '.__('Arizona'), 'US/Mountain' => '(GMT-07:00) '.__('Mountain Time (US & Canada)'), 'America/Chihuahua' => '(GMT-07:00) '.__('Chihuahua'), 'America/Mazatlan' => '(GMT-07:00) '.__('Mazatlan'), 'America/Mexico_City' => '(GMT-06:00) '.__('Mexico City'), 'America/Monterrey' => '(GMT-06:00) '.__('Monterrey'), 'Canada/Saskatchewan' => '(GMT-06:00) '.__('Saskatchewan'), 'US/Central' => '(GMT-06:00) '.__('Central Time (US & Canada)'), 'US/Eastern' => '(GMT-05:00) '.__('Eastern Time (US & Canada)'), 'US/East-Indiana' => '(GMT-05:00) '.__('Indiana (East)'), 'America/Bogota' => '(GMT-05:00) '.__('Bogota'), 'America/Lima' => '(GMT-05:00) '.__('Lima'), 'America/Caracas' => '(GMT-04:30) '.__('Caracas'), 'Canada/Atlantic' => '(GMT-04:00) '.__('Atlantic Time (Canada)'), 'America/La_Paz' => '(GMT-04:00) '.__('La Paz'), 'America/Santiago' => '(GMT-04:00) '.__('Santiago'), 'Canada/Newfoundland' => '(GMT-03:30) '.__('Newfoundland'), 'America/Buenos_Aires' => '(GMT-03:00) '.__('Buenos Aires'), "Greenland'" => '(GMT-03:00) '.__('Greenland'), 'Atlantic/Stanley' => '(GMT-02:00) '.__('Stanley'), 'Atlantic/Azores' => '(GMT-01:00) '.__('Azores'), 'Atlantic/Cape_Verde' => '(GMT-01:00) '.__('Cape Verde Is.'), 'Africa/Casablanca' => '(GMT+00:00) '.__('Casablanca'), 'Europe/Dublin' => '(GMT+00:00) '.__('Dublin'), 'Europe/Lisbon' => '(GMT+00:00) '.__('Lisbon'), 'Europe/London' => '(GMT+00:00) '.__('London'), 'Africa/Monrovia' => '(GMT+00:00) '.__('Monrovia'), 'Europe/Amsterdam' => '(GMT+01:00) '.__('Amsterdam'), 'Europe/Belgrade' => '(GMT+01:00) '.__('Belgrade'), 'Europe/Berlin' => '(GMT+01:00) '.__('Berlin'), 'Europe/Bratislava' => '(GMT+01:00) '.__('Bratislava'), 'Europe/Brussels' => '(GMT+01:00) '.__('Brussels'), 'Europe/Budapest' => '(GMT+01:00) '.__('Budapest'), 'Europe/Copenhagen' => '(GMT+01:00) '.__('Copenhagen'), 'Europe/Ljubljana' => '(GMT+01:00) '.__('Ljubljana'), 'Europe/Madrid' => '(GMT+01:00) '.__('Madrid'), 'Europe/Paris' => '(GMT+01:00) '.__('Paris'), 'Europe/Prague' => '(GMT+01:00) '.__('Prague'), 'Europe/Rome' => '(GMT+01:00) '.__('Rome'), 'Europe/Sarajevo' => '(GMT+01:00) '.__('Sarajevo'), 'Europe/Skopje' => '(GMT+01:00) '.__('Skopje'), 'Europe/Stockholm' => '(GMT+01:00) '.__('Stockholm'), 'Europe/Vienna' => '(GMT+01:00) '.__('Vienna'), 'Europe/Warsaw' => '(GMT+01:00) '.__('Warsaw'), 'Europe/Zagreb' => '(GMT+01:00) '.__('Zagreb'), 'Europe/Athens' => '(GMT+02:00) '.__('Athens'), 'Europe/Bucharest' => '(GMT+02:00) '.__('Bucharest'), 'Africa/Cairo' => '(GMT+02:00) '.__('Cairo'), 'Africa/Harare' => '(GMT+02:00) '.__('Harare'), 'Europe/Helsinki' => '(GMT+02:00) '.__('Helsinki'), 'Europe/Istanbul' => '(GMT+02:00) '.__('Istanbul'), 'Asia/Jerusalem' => '(GMT+02:00) '.__('Jerusalem'), 'Europe/Kiev' => '(GMT+02:00) '.__('Kyiv'), 'Europe/Minsk' => '(GMT+02:00) '.__('Minsk'), 'Europe/Riga' => '(GMT+02:00) '.__('Riga'), 'Europe/Sofia' => '(GMT+02:00) '.__('Sofia'), 'Europe/Tallinn' => '(GMT+02:00) '.__('Tallinn'), 'Europe/Vilnius' => '(GMT+02:00) '.__('Vilnius'), 'Asia/Baghdad' => '(GMT+03:00) '.__('Baghdad'), 'Asia/Kuwait' => '(GMT+03:00) '.__('Kuwait'), 'Africa/Nairobi' => '(GMT+03:00) '.__('Nairobi'), 'Asia/Riyadh' => '(GMT+03:00) '.__('Riyadh'), 'Europe/Moscow' => '(GMT+03:00) '.__('Moscow'), 'Asia/Tehran' => '(GMT+03:30) '.__('Tehran'), 'Asia/Baku' => '(GMT+04:00) '.__('Baku'), 'Europe/Volgograd' => '(GMT+04:00) '.__('Volgograd'), 'Asia/Muscat' => '(GMT+04:00) '.__('Muscat'), 'Asia/Tbilisi' => '(GMT+04:00) '.__('Tbilisi'), 'Asia/Yerevan' => '(GMT+04:00) '.__('Yerevan'), 'Asia/Kabul' => '(GMT+04:30) '.__('Kabul'), 'Asia/Karachi' => '(GMT+05:00) '.__('Karachi'), 'Asia/Tashkent' => '(GMT+05:00) '.__('Tashkent'), 'Asia/Kolkata' => '(GMT+05:30) '.__('Kolkata'), 'Asia/Kathmandu' => '(GMT+05:45) '.__('Kathmandu'), 'Asia/Yekaterinburg' => '(GMT+06:00) '.__('Ekaterinburg'), 'Asia/Almaty' => '(GMT+06:00) '.__('Almaty'), 'Asia/Dhaka' => '(GMT+06:00) '.__('Dhaka'), 'Asia/Novosibirsk' => '(GMT+07:00) '.__('Novosibirsk'), 'Asia/Bangkok' => '(GMT+07:00) '.__('Bangkok'), 'Asia/Jakarta' => '(GMT+07:00) '.__('Jakarta'), 'Asia/Krasnoyarsk' => '(GMT+08:00) '.__('Krasnoyarsk'), 'Asia/Chongqing' => '(GMT+08:00) '.__('Chongqing'), 'Asia/Hong_Kong' => '(GMT+08:00) '.__('Hong Kong'), 'Asia/Kuala_Lumpur' => '(GMT+08:00) '.__('Kuala Lumpur'), 'Australia/Perth' => '(GMT+08:00) '.__('Perth'), 'Asia/Singapore' => '(GMT+08:00) '.__('Singapore'), 'Asia/Taipei' => '(GMT+08:00) '.__('Taipei'), 'Asia/Ulaanbaatar' => '(GMT+08:00) '.__('Ulaan Bataar'), 'Asia/Urumqi' => '(GMT+08:00) '.__('Urumqi'), 'Asia/Irkutsk' => '(GMT+09:00) '.__('Irkutsk'), 'Asia/Seoul' => '(GMT+09:00) '.__('Seoul'), 'Asia/Tokyo' => '(GMT+09:00) '.__('Tokyo'), 'Australia/Adelaide' => '(GMT+09:30) '.__('Adelaide'), 'Australia/Darwin' => '(GMT+09:30) '.__('Darwin'), 'Asia/Yakutsk' => '(GMT+10:00) '.__('Yakutsk'), 'Australia/Brisbane' => '(GMT+10:00) '.__('Brisbane'), 'Australia/Canberra' => '(GMT+10:00) '.__('Canberra'), 'Pacific/Guam' => '(GMT+10:00) '.__('Guam'), 'Australia/Hobart' => '(GMT+10:00) '.__('Hobart'), 'Australia/Melbourne' => '(GMT+10:00) '.__('Melbourne'), 'Pacific/Port_Moresby' => '(GMT+10:00) '.__('Port Moresby'), 'Australia/Sydney' => '(GMT+10:00) '.__('Sydney'), 'Asia/Vladivostok' => '(GMT+11:00) '.__('Vladivostok'), 'Asia/Magadan' => '(GMT+12:00) '.__('Magadan'), 'Pacific/Auckland' => '(GMT+12:00) '.__('Auckland'), 'Pacific/Fiji' => '(GMT+12:00) '.__('Fiji'), ]; return html_print_select($timezones, $name, $selected, '', __('None'), '', true, false, false); } /** * Enclose a text into a result_div * * @param string Text to enclose * * @return string Text inside the result_div */ function html_print_result_div($text) { $text = preg_replace('//', '>', $text); $text = preg_replace('/\n/i', '
', $text); $text = preg_replace('/\s/i', ' ', $text); $enclose = "
"; $enclose .= $text; $enclose .= '
'; return $enclose; } /** * Print order arrows links * * @param array Base tags to build url * @param string Order key to add to URL * @param string Value to sort ascendent * @param string Value to sort descendent * * @return string HTML code to display both arrows. */ function html_print_sort_arrows($params, $order_tag, $up='up', $down='down') { // Build the queries $params[$order_tag] = $up; $url_up = 'index.php?'.http_build_query($params, '', '&'); $params[$order_tag] = $down; $url_down = 'index.php?'.http_build_query($params, '', '&'); // Build the links return ' '.''.html_print_image('images/sort_up.png', true).''.''.html_print_image('images/sort_down.png', true).''; } /** * Print an input hidden with a new csrf token generated */ function html_print_csrf_hidden() { html_print_input_hidden('csrf_code', generate_csrf_code()); } /** * Print an error if csrf is incorrect */ function html_print_csrf_error() { if (validate_csrf_code()) { return false; } ui_print_error_message( __( '%s cannot verify the origin of the request. Try again, please.', get_product_name() ) ); return true; } /** * Print an swith button * * @param array $atributes. Valid params: * name: Usefull to handle in forms * value: If is checked or not * disabled: Disabled. Cannot be pressed. * id: Optional id for the switch. * class: Additional classes (string). * @return string with HTML of button */ function html_print_switch($attributes=[]) { $html_expand = ''; // Check the load values on status. $html_expand .= (bool) $attributes['value'] ? ' checked' : ''; $html_expand .= (bool) $attributes['disabled'] ? ' disabled' : ''; // Only load the valid attributes. $valid_attrs = [ 'id', 'class', 'name', 'onclick', ]; foreach ($valid_attrs as $va) { if (!isset($attributes[$va])) { continue; } $html_expand .= ' '.$va.'="'.$attributes[$va].'"'; } return ""; }