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();
                 }
             }
         }
     }
 }
Exemplo n.º 2
0
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}"));
    }
}