public function do_actions() { global $wpdb, $current_user; if ($this->editable()) { if (isset($_POST['tnb_widget_action']) && isset($_POST['tnb_widget_group_id']) && $_POST['tnb_widget_group_id'] == $this->id) { global $TNBug_Perfil; if ($TNBug_Perfil) { $log_data['_POST'] = $_POST; $log_data['_FILES'] = $_FILES; tnb_log('bug-perfil-container-' . $TNBug_Perfil, $log_data); } switch ($_POST['tnb_widget_action']) { case 'save': global $TNBug, $container_post; $container_post = array(); //_pr($_POST, true); foreach ($this->containers as $container) { $container_post[$container->id] = $_POST[$container->id . '_items']; $widgets_ids = $_POST[$container->id . '_items']; /* * se no lugar da lista de ids existir a string [object Object] significa que houve erro na hora de recuperar a ordem * dos widgets, então estas não serão salvas, o usuário será notificado e será gravado um log as seguintes informações: * * data * * nome do usuário * * posições atuais dos widgets * * navegador e versão * a lista de ids é recuperada em: jQuery('#<?php echo $this->id; ?>_form').submit(function(){ */ if ($widgets_ids == '[object Object]') { $TNBug = true; } else { // para a ordenação funcionar, primeiro crio o array com as chaves sendo o id do widget na ordem certa $ids = explode(',', $widgets_ids); $widgets = array(); foreach ($ids as $id) { $widgets[$id] = null; } $widgets_ids = str_replace(',', "','", $widgets_ids); $widgets_ids = "'{$widgets_ids}'"; $widgets_rows = $wpdb->get_results("SELECT * FROM {$wpdb->usermeta} WHERE meta_key IN ({$widgets_ids})"); foreach ($widgets_rows as $row) { if (is_serialized($row->meta_value)) { $widgets[$row->meta_key] = unserialize($row->meta_value); } else { $widgets[$row->meta_key] = unserialize(base64_decode($row->meta_value)); } } $container->setWidgets($widgets); } $container->save(); } if ($TNBug) { // salva o log $bug_data = null; foreach ($this->containers as $container) { $bug_data[$container->name] = $wpdb->get_var("SELECT meta_value FROM {$wpdb->usermeta} WHERE meta_key='{$container->meta_key}' AND user_id='{$current_user->ID}'"); } $bug_data['USER_AGENT'] = $_SERVER['HTTP_USER_AGENT']; $bug_data['_POST'] = $_POST; tnb_log('bug-perfil-tnbox', $bug_data); } if (isset($_POST['css']) && is_array($_POST['css'])) { if ($_POST['css']['body-background-color'] != $this->css['body-background-color']) { $this->css['body-background-color'] = $_POST['css']['body-background-color']; } if (isset($_POST['remove_background_image'])) { $this->css['body-image-url'] = ''; } $this->css['body-background-image-repeat'] = $_POST['css']['body-background-image-repeat']; $this->css['widget-header-background-color'] = $_POST['css']['widget-header-background-color']; $this->css['widget-header-font-color'] = $_POST['css']['widget-header-font-color']; $this->css['widget-background-color'] = $_POST['css']['widget-background-color']; $this->css['widget-font-color'] = $_POST['css']['widget-font-color']; $this->css['widget-alpha'] = $_POST['css']['widget-alpha']; $this->css['link-color'] = $_POST['css']['link-color']; $this->css['link-hover-color'] = $_POST['css']['link-hover-color']; //_pr($_POST); $changed = true; } // UPLOAD_ERR_CANT_WRITE = 7 // UPLOAD_ERR_EXTENSION = 8 // UPLOAD_ERR_FORM_SIZE = 2 // UPLOAD_ERR_INI_SIZE = 1 // UPLOAD_ERR_NO_FILE = 4 // UPLOAD_ERR_NO_TMP_DIR = 6 // UPLOAD_ERR_OK = 0 // UPLOAD_ERR_PARTIAL = 3 $acceptedFormats = array('image/gif', 'image/png', 'image/jpeg', 'image/pjpeg', 'image/x-png'); if (isset($_FILES['body-background-image']) && $_FILES['body-background-image']['name'] && $_FILES['body-background-image']['error'] == UPLOAD_ERR_OK && in_array($_FILES['body-background-image']['type'], $acceptedFormats)) { require_once ABSPATH . '/wp-admin/includes/file.php'; require_once ABSPATH . '/wp-admin/includes/media.php'; require_once ABSPATH . '/wp-admin/includes/image.php'; $post_data = array('post_author' => $this->user_id, 'post_title' => 'profile_background_image'); $postid = media_handle_upload('body-background-image', null, $post_data); add_post_meta($postid, '_image_type', 'body-background'); $this->css['body-image-url'] = wp_get_attachment_url($postid); $changed = true; } if ($changed) { update_user_meta($this->user_id, "_widgets_{$this->name}_css", $this->css); } break; case 'add_widget': if (isset($this->containers[$_POST['tnb_widget_container_name']])) { $widget = TNB_Widget::do_action(); if ($widget) { $this->containers[$_POST['tnb_widget_container_name']]->addWidget($widget); $this->containers[$_POST['tnb_widget_container_name']]->save(); } } break; } } elseif (isset($_POST['tnb_widget_action']) && $_POST['tnb_widget_action'] == 'delete_widget') { foreach ($this->containers as $container) { if (isset($container->widgets[$_POST['widget_id']])) { //_pr($_POST['widget_id'],true); $widgets = $container->widgets; unset($widgets[$_POST['widget_id']]); delete_user_meta($this->user_id, $_POST['widget_id']); $container->setWidgets($widgets); $container->save(); } } } elseif (isset($_POST['tnb_widget_action']) && $_POST['tnb_widget_action'] == 'update_widget') { $instance = TNB_Widget::do_action(); if ($instance) { foreach ($this->containers as $container) { $container->load(); } } } } }
function log_referer() { session_start(); if (!isset($_SESSION['referer_gravado'])) { $_SESSION['referer_gravado'] = true; $referer = isset($_SERVER["HTTP_REFERER"]) ? $_SERVER["HTTP_REFERER"] : ""; $uri = isset($_SERVER["REQUEST_URI"]) ? $_SERVER["REQUEST_URI"] : ""; tnb_log('referer', addslashes($_SERVER['REMOTE_ADDR'] . ' | ' . "{$referer} => {$uri}")); } }