Example #1
0
 function load_options()
 {
     include_once dirname(__FILE__) . '/config/setup.php';
     // Load the options
     $default_options = gmedia_default_options();
     $db_options = get_option('gmediaOptions');
     if (!is_array($db_options)) {
         $db_options = array();
     }
     $this->options = array_merge($default_options, $db_options);
 }
Example #2
0
function gmedia_quite_update()
{
    global $gmDB, $gmCore, $gmGallery;
    $current_version = get_option('gmediaVersion', null);
    //$current_db_version = get_option( 'gmediaDbVersion', null );
    if (null !== $current_version) {
        $options = get_option('gmediaOptions');
        require_once dirname(__FILE__) . '/setup.php';
        $default_options = gmedia_default_options();
        if (version_compare($current_version, '0.9.23', '<')) {
            if (isset($options['license_name'])) {
                $default_options['license_name'] = $options['license_name'];
                $default_options['license_key'] = $options['license_key'];
                $default_options['license_key2'] = $options['license_key2'];
            } elseif (isset($options['product_name'])) {
                $default_options['license_name'] = $options['product_name'];
                $default_options['license_key'] = $options['gmedia_key'];
                $default_options['license_key2'] = $options['gmedia_key2'];
            }
            update_option('gmediaOptions', $default_options);
        } else {
            $new_options = $gmCore->array_diff_key_recursive($default_options, $options);
            $gmGallery->options = $gmCore->array_replace_recursive($options, $new_options);
            update_option('gmediaOptions', $gmGallery->options);
        }
        if (version_compare($current_version, '1.2.0', '<')) {
            gmedia_capabilities();
        }
        if (version_compare($current_version, '1.4.4', '<')) {
            if (!get_option('GmediaHashID_salt')) {
                $ustr = wp_generate_password(12, false);
                add_option('GmediaHashID_salt', $ustr);
            }
        }
        if (version_compare($current_version, '1.6.01', '<')) {
            $gmDB->set_capability('administrator', 'gmedia_filter_manage');
        }
        $gmCore->delete_folder($gmCore->upload['path'] . '/module/afflux');
        $gmCore->delete_folder($gmCore->upload['path'] . '/module/jq-mplayer');
        $gmCore->delete_folder($gmCore->upload['path'] . '/module/minima');
        $gmCore->delete_folder($gmCore->upload['path'] . '/module/phantom');
        $gmCore->delete_folder($gmCore->upload['path'] . '/module/wp-videoplayer');
        update_option("gmediaVersion", GMEDIA_VERSION);
    }
}
Example #3
0
function gmedia_quite_update()
{
    global $wpdb, $gmDB, $gmCore, $gmGallery;
    $current_version = get_option('gmediaVersion', null);
    //$current_db_version = get_option( 'gmediaDbVersion', null );
    if (null !== $current_version) {
        $options = get_option('gmediaOptions');
        if (!is_array($options)) {
            $options = array();
        }
        require_once dirname(__FILE__) . '/setup.php';
        $default_options = gmedia_default_options();
        if (!get_option('gmediaInstallDate')) {
            $date = $wpdb->get_var("SELECT {$wpdb->prefix}gmedia.date FROM {$wpdb->prefix}gmedia ORDER BY ID ASC");
            if (!$date) {
                $date = '1 month ago';
            }
            $installDate = strtotime($date);
            add_option('gmediaInstallDate', $installDate);
        }
        if (version_compare($current_version, '0.9.23', '<')) {
            if (isset($options['license_name'])) {
                $default_options['license_name'] = $options['license_name'];
                $default_options['license_key'] = $options['license_key'];
                $default_options['license_key2'] = $options['license_key2'];
            } elseif (isset($options['product_name'])) {
                $default_options['license_name'] = $options['product_name'];
                $default_options['license_key'] = $options['gmedia_key'];
                $default_options['license_key2'] = $options['gmedia_key2'];
            }
        }
        if (version_compare($current_version, '1.2.0', '<')) {
            gmedia_capabilities();
        }
        if (version_compare($current_version, '1.4.4', '<')) {
            if (!get_option('GmediaHashID_salt')) {
                $ustr = wp_generate_password(12, false);
                add_option('GmediaHashID_salt', $ustr);
            }
        }
        if (version_compare($current_version, '1.6.3', '<')) {
            $wpdb->update($wpdb->prefix . 'gmedia_meta', array('meta_key' => '_cover'), array('meta_key' => 'cover'));
            $wpdb->update($wpdb->prefix . 'gmedia_meta', array('meta_key' => '_rating'), array('meta_key' => 'rating'));
        }
        if (version_compare($current_version, '1.6.5', '<')) {
            $wpdb->update($wpdb->prefix . 'gmedia_term_meta', array('meta_key' => '_edited'), array('meta_key' => 'edited'));
            $wpdb->update($wpdb->prefix . 'gmedia_term_meta', array('meta_key' => '_settings'), array('meta_key' => 'settings'));
            $wpdb->update($wpdb->prefix . 'gmedia_term_meta', array('meta_key' => '_query'), array('meta_key' => 'query'));
            $wpdb->update($wpdb->prefix . 'gmedia_term_meta', array('meta_key' => '_module'), array('meta_key' => 'module'));
            $wpdb->update($wpdb->prefix . 'gmedia_term_meta', array('meta_key' => '_order'), array('meta_key' => 'order'));
            $wpdb->update($wpdb->prefix . 'gmedia_term_meta', array('meta_key' => '_orderby'), array('meta_key' => 'orderby'));
        }
        if (version_compare($current_version, '1.6.6', '<')) {
            $wpdb->update($wpdb->prefix . 'gmedia_term_meta', array('meta_value' => 'ID'), array('meta_key' => '_orderby', 'meta_value' => ''));
            $wpdb->update($wpdb->prefix . 'gmedia_term_meta', array('meta_value' => 'DESC'), array('meta_key' => '_order', 'meta_value' => ''));
            $wpdb->update($wpdb->prefix . 'gmedia_term_meta', array('meta_value' => 'title'), array('meta_key' => '_orderby', 'meta_value' => 'title ID'));
            $wpdb->update($wpdb->prefix . 'gmedia_term_meta', array('meta_value' => 'date'), array('meta_key' => '_orderby', 'meta_value' => 'date ID'));
            $wpdb->update($wpdb->prefix . 'gmedia_term_meta', array('meta_value' => 'modified'), array('meta_key' => '_orderby', 'meta_value' => 'modified ID'));
        }
        if (version_compare($current_version, '1.7.1', '<')) {
            $gmedia_ids = $gmDB->get_gmedias(array('mime_type' => 'audio', 'fields' => 'ids'));
            foreach ($gmedia_ids as $id) {
                $gmDB->update_metadata($meta_type = 'gmedia', $id, $meta_key = '_metadata', $gmDB->generate_gmedia_metadata($id));
            }
        }
        if (version_compare($current_version, '1.7.20', '<')) {
            gmedia_restore_original_images();
        }
        if (version_compare($current_version, '1.8.08', '<')) {
            if (is_file($gmCore->upload['path'] . '/module/mosaic/js/mosaic.min.js')) {
                @unlink($gmCore->upload['path'] . '/module/mosaic/js/jquery.prettyPhoto-min.js');
                @unlink($gmCore->upload['path'] . '/module/mosaic/js/mosaic.js');
            }
        }
        if (version_compare($current_version, '1.8.12', '<')) {
            $categories = $gmDB->get_terms('gmedia_category');
            if (!empty($categories)) {
                $cats = array('abstract' => __('Abstract', 'grand-media'), 'animals' => __('Animals', 'grand-media'), 'black-and-white' => __('Black and White', 'grand-media'), 'celebrities' => __('Celebrities', 'grand-media'), 'city-and-architecture' => __('City & Architecture', 'grand-media'), 'commercial' => __('Commercial', 'grand-media'), 'concert' => __('Concert', 'grand-media'), 'family' => __('Family', 'grand-media'), 'fashion' => __('Fashion', 'grand-media'), 'film' => __('Film', 'grand-media'), 'fine-art' => __('Fine Art', 'grand-media'), 'food' => __('Food', 'grand-media'), 'journalism' => __('Journalism', 'grand-media'), 'landscapes' => __('Landscapes', 'grand-media'), 'macro' => __('Macro', 'grand-media'), 'nature' => __('Nature', 'grand-media'), 'nude' => __('Nude', 'grand-media'), 'people' => __('People', 'grand-media'), 'performing-arts' => __('Performing Arts', 'grand-media'), 'sport' => __('Sport', 'grand-media'), 'still-life' => __('Still Life', 'grand-media'), 'street' => __('Street', 'grand-media'), 'transportation' => __('Transportation', 'grand-media'), 'travel' => __('Travel', 'grand-media'), 'underwater' => __('Underwater', 'grand-media'), 'urban-exploration' => __('Urban Exploration', 'grand-media'), 'wedding' => __('Wedding', 'grand-media'));
                foreach ($categories as $c) {
                    if (isset($cats[$c->name])) {
                        $wpdb->update($wpdb->prefix . 'gmedia_term', array('name' => $cats[$c->name]), array('term_id' => $c->term_id));
                        $gmDB->clean_term_cache($c->term_id, 'gmedia_category');
                    }
                }
            }
            $role = $gmDB->get_role('gmedia_tag_manage');
            $gmDB->set_capability($role, 'gmedia_category_manage');
        }
        if (version_compare($current_version, '1.8.20', '<')) {
            $queries = $wpdb->get_results("SELECT meta_id, meta_key, meta_value FROM {$wpdb->prefix}gmedia_term_meta WHERE meta_key = '_query'", ARRAY_A);
            if (!empty($queries)) {
                foreach ($queries as $query) {
                    $query['meta_value'] = maybe_unserialize($query['meta_value']);
                    $gmCore->replace_array_keys($query['meta_value'], array('album__in' => 'gmedia_album', 'tag__in' => 'gmedia_tag', 'category__in' => 'gmedia_category'));
                    foreach ($query['meta_value'] as $key => $value) {
                        if ('gmedia_filter' == $key) {
                            $new_query = array();
                            foreach ($value as $filter_id) {
                                $filter_query = $gmDB->get_metadata('gmedia_term', $filter_id, '_query', true);
                                $new_query = array_merge($filter_query, $new_query);
                            }
                            foreach ($new_query as $new_key => $new_val) {
                                if (is_array($new_val)) {
                                    $new_query[$new_key] = implode(',', $new_val);
                                }
                            }
                            $query['meta_value'] = $new_query;
                        } else {
                            if (is_array($value)) {
                                $query['meta_value'][$key] = implode(',', $value);
                            }
                        }
                    }
                    $gmDB->update_metadata_by_mid($meta_type = 'gmedia_term', $query['meta_id'], $query['meta_value']);
                }
            }
            $filters = $gmDB->get_terms('gmedia_filter');
            if (!empty($filters)) {
                foreach ($filters as $filter) {
                    $gmDB->delete_term($filter->term_id);
                }
            }
        }
        if (version_compare($current_version, '1.8.22', '<')) {
            $queries = $wpdb->get_results("SELECT meta_id, meta_key, meta_value FROM {$wpdb->prefix}gmedia_term_meta WHERE meta_key = '_query'", ARRAY_A);
            if (!empty($queries)) {
                foreach ($queries as $query) {
                    $query['meta_value'] = maybe_unserialize($query['meta_value']);
                    if (isset($query['meta_value']['gmedia__in'])) {
                        $query['meta_value'] = $query['meta_value'] + array('order' => 'ASC', 'orderby' => 'gmedia__in');
                        $gmDB->update_metadata_by_mid($meta_type = 'gmedia_term', $query['meta_id'], $query['meta_value']);
                    }
                }
            }
        }
        if (version_compare($current_version, '1.8.55', '<')) {
            $wpdb->query("CREATE INDEX `_hash` ON {$wpdb->prefix}gmedia_meta ( meta_value(32) );");
            $ajax_operations = get_option('gmedia_ajax_long_operations', array());
            $ajax_operations['gmedia_hash_files'] = 'gmedia_hash_files';
            update_option('gmedia_ajax_long_operations', $ajax_operations);
        }
        if (version_compare($current_version, '1.8.63', '<')) {
            $default_options['purchase_key'] = $options['license_key'];
        }
        if (version_compare($current_version, '1.8.85', '<')) {
            foreach ($_COOKIE as $key => $value) {
                if ('gmuser' === substr($key, 0, 6)) {
                    setcookie($key, '', time() - 3600);
                }
            }
        }
        $new_options = $gmCore->array_diff_key_recursive($default_options, $options);
        $gmGallery->options = $gmCore->array_replace_recursive($options, $new_options);
        update_option('gmediaOptions', $gmGallery->options);
        $gmCore->delete_folder($gmCore->upload['path'] . '/module/afflux');
        $gmCore->delete_folder($gmCore->upload['path'] . '/module/jq-mplayer');
        $gmCore->delete_folder($gmCore->upload['path'] . '/module/minima');
        $gmCore->delete_folder($gmCore->upload['path'] . '/module/phantom');
        $gmCore->delete_folder($gmCore->upload['path'] . '/module/wp-videoplayer');
        update_option("gmediaVersion", GMEDIA_VERSION);
        if ((int) $gmGallery->options['mobile_app']) {
            $gmCore->app_service('app_updatecron');
        }
    }
}
Example #4
0
 function processor()
 {
     global $gmCore, $gmDB, $gmGallery, $user_ID;
     if (!$this->page || strpos($this->page, 'GrandMedia') === false) {
         return;
     }
     auth_redirect();
     switch ($this->page) {
         case 'GrandMedia':
             if (!$gmCore->caps['gmedia_library']) {
                 wp_die(__('You are not allowed to be here', 'gmLang'));
             }
             if (isset($_POST['quick_gallery'])) {
                 check_admin_referer('gmedia_modal');
                 do {
                     if (!$gmCore->caps['gmedia_gallery_manage']) {
                         $this->error[] = __('You are not allowed to manage galleries', 'gmLang');
                         break;
                     }
                     $gallery = $gmCore->_post('gallery');
                     $gallery['name'] = trim($gallery['name']);
                     if (empty($gallery['name'])) {
                         $this->error[] = __('Gallery Name is not specified', 'gmLang');
                         break;
                     }
                     if ($gmCore->is_digit($gallery['name'])) {
                         $this->error[] = __("Gallery name can't be only digits", 'gmLang');
                         break;
                     }
                     if (empty($gallery['query']['gmedia__in'])) {
                         $this->error[] = __('Choose gmedia from library for quick gallery', 'gmLang');
                         break;
                     }
                     $taxonomy = 'gmedia_gallery';
                     if ($term_id = $gmDB->term_exists($gallery['name'], $taxonomy)) {
                         $this->error[] = __('A term with the name provided already exists', 'gmLang');
                         break;
                     }
                     $term_id = $gmDB->insert_term($gallery['name'], $taxonomy);
                     if (is_wp_error($term_id)) {
                         $this->error[] = $term_id->get_error_message();
                         break;
                     }
                     $gallery_meta = array('edited' => gmdate('Y-m-d H:i:s'), 'module' => $gallery['module'], 'query' => array('gmedia__in' => $gallery['query']['gmedia__in']), 'settings' => array($gallery['module'] => array()));
                     foreach ($gallery_meta as $key => $value) {
                         $gmDB->add_metadata('gmedia_term', $term_id, $key, $value);
                     }
                     $this->msg[] = sprintf(__('Gallery "%s" successfuly saved. Shortcode: [gmedia id=%d]', 'gmLang'), esc_attr($gallery['name']), $term_id);
                 } while (0);
             }
             if (isset($_POST['filter_categories'])) {
                 if ($term = $gmCore->_post('cat')) {
                     $location = add_query_arg(array('page' => $this->page, 'mode' => $this->mode, 'category__in' => implode(',', $term)), admin_url('admin.php'));
                     wp_redirect($location);
                     exit;
                 }
             }
             if (isset($_POST['filter_albums'])) {
                 if ($term = $gmCore->_post('alb')) {
                     $location = add_query_arg(array('page' => $this->page, 'mode' => $this->mode, 'album__in' => implode(',', $term)), admin_url('admin.php'));
                     wp_redirect($location);
                     exit;
                 }
             }
             if (isset($_POST['filter_tags'])) {
                 if ($term = $gmCore->_post('tag_ids')) {
                     $location = add_query_arg(array('page' => $this->page, 'mode' => $this->mode, 'tag__in' => $term), admin_url('admin.php'));
                     wp_redirect($location);
                     exit;
                 }
             }
             if (isset($_POST['custom_filters'])) {
                 if ($term = $gmCore->_post('custom_filter')) {
                     $location = add_query_arg(array('page' => $this->page, 'mode' => $this->mode, 'custom_filter' => $term), admin_url('admin.php'));
                     wp_redirect($location);
                     exit;
                 }
             }
             if (isset($_POST['filter_authors'])) {
                 $authors = $gmCore->_post('author_ids');
                 $location = add_query_arg(array('page' => $this->page, 'mode' => $this->mode, 'author' => (int) $authors), admin_url('admin.php'));
                 wp_redirect($location);
                 exit;
             }
             if (!empty($this->selected_items)) {
                 if (isset($_POST['assign_category'])) {
                     check_admin_referer('gmedia_modal');
                     if ($gmCore->caps['gmedia_terms']) {
                         if (!$gmCore->caps['gmedia_edit_others_media']) {
                             $selected_items = $gmDB->get_gmedias(array('fields' => 'ids', 'author' => $user_ID, 'gmedia__in' => $this->selected_items));
                             if (count($selected_items) < count($this->selected_items)) {
                                 $this->error[] = __('You are not allowed to edit others media', 'gmLang');
                             }
                         } else {
                             $selected_items = $this->selected_items;
                         }
                         $term = $gmCore->_post('cat');
                         if (false !== $term && ($count = count($selected_items))) {
                             if ('0' == $term) {
                                 foreach ($selected_items as $item) {
                                     $gmDB->delete_gmedia_term_relationships($item, 'gmedia_category');
                                 }
                                 $this->msg[] = sprintf(__('%d item(s) was uncategorized', 'gmLang'), $count);
                             } else {
                                 foreach ($selected_items as $item) {
                                     $result = $gmDB->set_gmedia_terms($item, $term, 'gmedia_category', $append = 0);
                                     if (is_wp_error($result)) {
                                         $this->error[] = $result;
                                         $count--;
                                     } elseif (!$result) {
                                         $count--;
                                     }
                                 }
                                 if (isset($gmGallery->options['taxonomies']['gmedia_category'][$term])) {
                                     $cat_name = $gmGallery->options['taxonomies']['gmedia_category'][$term];
                                     $this->msg[] = sprintf(__("Category `%s` assigned to %d image(s).", 'gmLang'), esc_html($cat_name), $count);
                                 } else {
                                     $this->error[] = sprintf(__("Category `%s` can't be assigned.", 'gmLang'), $term);
                                 }
                             }
                         }
                     } else {
                         $this->error[] = __('You are not allowed to assign terms', 'gmLang');
                     }
                 }
                 if (isset($_POST['assign_album'])) {
                     check_admin_referer('gmedia_modal');
                     if ($gmCore->caps['gmedia_terms']) {
                         if (!$gmCore->caps['gmedia_edit_others_media']) {
                             $selected_items = $gmDB->get_gmedias(array('fields' => 'ids', 'author' => $user_ID, 'gmedia__in' => $this->selected_items));
                             if (count($selected_items) < count($this->selected_items)) {
                                 $this->error[] = __('You are not allowed to edit others media', 'gmLang');
                             }
                         } else {
                             $selected_items = $this->selected_items;
                         }
                         $term = $gmCore->_post('alb');
                         if (false !== $term && ($count = count($selected_items))) {
                             if (empty($term)) {
                                 foreach ($selected_items as $item) {
                                     $gmDB->delete_gmedia_term_relationships($item, 'gmedia_album');
                                 }
                                 $this->msg[] = sprintf(__('%d item(s) updated with "No Album"', 'gmLang'), $count);
                             } else {
                                 $term_ids = array();
                                 foreach ($selected_items as $item) {
                                     $result = $gmDB->set_gmedia_terms($item, $term, 'gmedia_album', $append = 0);
                                     if (is_wp_error($result)) {
                                         $this->error[] = $result;
                                     } elseif ($result) {
                                         foreach ($result as $t_id) {
                                             $term_ids[$t_id][] = $item;
                                         }
                                     }
                                 }
                                 if (!empty($term_ids)) {
                                     global $wpdb;
                                     foreach ($term_ids as $term_id => $item_ids) {
                                         $term = $gmDB->get_term($term_id, 'gmedia_album');
                                         if (isset($_POST['status_global'])) {
                                             $values = array();
                                             foreach ($selected_items as $item) {
                                                 $values[] = $wpdb->prepare("%d", $item);
                                             }
                                             if ($values) {
                                                 $status = esc_sql($term->status);
                                                 if (false === $wpdb->query("UPDATE {$wpdb->prefix}gmedia SET status = '{$status}' WHERE ID IN (" . join(',', $values) . ")")) {
                                                     $this->error[] = __('Could not update statuses for gmedia items in the database');
                                                 }
                                             }
                                         }
                                         $this->msg[] = sprintf(__('Album `%s` assigned to %d item(s)', 'gmLang'), esc_html($term->name), count($item_ids));
                                     }
                                 }
                             }
                         }
                     } else {
                         $this->error[] = __('You are not allowed to assign terms', 'gmLang');
                     }
                 }
                 if (isset($_POST['add_tags'])) {
                     check_admin_referer('gmedia_modal');
                     if (!$gmCore->caps['gmedia_terms']) {
                         $this->error[] = __('You are not allowed to assign terms', 'gmLang');
                     } else {
                         $term = $gmCore->_post('tag_names');
                         $iptc_tags = $gmCore->_post('iptc_tags');
                         if ($term || $iptc_tags) {
                             if (!$gmCore->caps['gmedia_edit_others_media']) {
                                 $selected_items = $gmDB->get_gmedias(array('fields' => 'ids', 'author' => $user_ID, 'gmedia__in' => $this->selected_items));
                                 if (count($selected_items) < count($this->selected_items)) {
                                     $this->error[] = __('You are not allowed to edit others media', 'gmLang');
                                 }
                             } else {
                                 $selected_items = $this->selected_items;
                             }
                             $term = explode(',', $term);
                             if ($count = count($selected_items)) {
                                 foreach ($selected_items as $item) {
                                     $_term = $term;
                                     if ($iptc_tags) {
                                         $_metadata = $gmDB->get_metadata('gmedia', $item, '_metadata', true);
                                         if (isset($_metadata['image_meta']['keywords']) && is_array($_metadata['image_meta']['keywords'])) {
                                             $_term = array_merge($_metadata['image_meta']['keywords'], $term);
                                         }
                                     }
                                     $result = $gmDB->set_gmedia_terms($item, $_term, 'gmedia_tag', $append = 1);
                                     if (is_wp_error($result)) {
                                         $this->error[] = $result;
                                         $count--;
                                     } elseif (!$result) {
                                         $count--;
                                     }
                                 }
                                 $this->msg[] = sprintf(__('Tags added to %d item(s)', 'gmLang'), count($term), $count);
                             }
                         } else {
                             $this->error[] = __('No tags specified', 'gmLang');
                         }
                     }
                 }
                 if (isset($_POST['delete_tags'])) {
                     check_admin_referer('gmedia_modal');
                     if (($term = $gmCore->_post('tag_id')) && $gmCore->caps['gmedia_terms']) {
                         if (!$gmCore->caps['gmedia_edit_others_media']) {
                             $selected_items = $gmDB->get_gmedias(array('fields' => 'ids', 'author' => $user_ID, 'gmedia__in' => $this->selected_items));
                             if (count($selected_items) < count($this->selected_items)) {
                                 $this->error[] = __('You are not allowed to edit others media', 'gmLang');
                             }
                         } else {
                             $selected_items = $this->selected_items;
                         }
                         $term = array_map('intval', $term);
                         if ($count = count($selected_items)) {
                             foreach ($selected_items as $item) {
                                 $result = $gmDB->set_gmedia_terms($item, $term, 'gmedia_tag', $append = -1);
                                 if (is_wp_error($result)) {
                                     $this->error[] = $result;
                                     $count--;
                                 } elseif (!$result) {
                                     $count--;
                                 }
                             }
                             $this->msg[] = sprintf(__('%d tag(s) deleted from %d item(s)', 'gmLang'), count($term), $count);
                         }
                     } else {
                         $this->error[] = __('You are not allowed to assign terms', 'gmLang');
                     }
                 }
                 if (isset($_POST['batch_edit'])) {
                     check_admin_referer('gmedia_modal');
                     if ($gmCore->caps['gmedia_edit_media']) {
                         if (!$gmCore->caps['gmedia_edit_others_media']) {
                             $selected_items = $gmDB->get_gmedias(array('fields' => 'ids', 'author' => $user_ID, 'gmedia__in' => $this->selected_items));
                             if (count($selected_items) < count($this->selected_items)) {
                                 $this->error[] = __('You are not allowed to edit others media', 'gmLang');
                             }
                         } else {
                             $selected_items = $this->selected_items;
                         }
                         if ($count = count($selected_items)) {
                             $batch_data = array();
                             $batch_data['modified'] = current_time('mysql');
                             $b_title = $gmCore->_post('batch_title');
                             $b_description = $gmCore->_post('batch_description');
                             $b_link = $gmCore->_post('batch_link');
                             $b_status = $gmCore->_post('batch_status');
                             if ($b_status) {
                                 $batch_data['status'] = $b_status;
                             }
                             $b_author = $gmCore->_post('batch_author');
                             if ($b_author) {
                                 $batch_data['author'] = $b_author;
                             }
                             foreach ($selected_items as $item) {
                                 $id = (int) $item;
                                 $gmedia = $gmDB->get_gmedia($id, ARRAY_A);
                                 switch ($b_title) {
                                     case 'empty':
                                         $batch_data['title'] = '';
                                         break;
                                     case 'filename':
                                         $title = pathinfo($gmedia['gmuid'], PATHINFO_FILENAME);
                                         $batch_data['title'] = ucwords(str_replace('_', ' ', $title));
                                         break;
                                     case 'custom':
                                         $title_custom = $gmCore->_post('batch_title_custom');
                                         if (false !== $title_custom) {
                                             $batch_data['title'] = $title_custom;
                                         }
                                         break;
                                 }
                                 switch ($b_description) {
                                     case 'empty':
                                         $batch_data['description'] = '';
                                         break;
                                     case 'metadata':
                                         $metatext = $gmCore->metadata_text($id);
                                         if ($gmedia['description']) {
                                             $gmedia['description'] .= "\n";
                                         }
                                         $batch_data['description'] = $gmedia['description'] . $metatext;
                                         break;
                                     case 'custom':
                                         $description_custom = $gmCore->_post('batch_description_custom');
                                         if (false !== $description_custom) {
                                             $what_description_custom = $gmCore->_post('what_description_custom');
                                             if ('replace' == $what_description_custom) {
                                                 $batch_data['description'] = $description_custom;
                                             } elseif ('append' == $what_description_custom) {
                                                 $batch_data['description'] = $gmedia['description'] . $description_custom;
                                             } elseif ('prepend' == $what_description_custom) {
                                                 $batch_data['description'] = $description_custom . $gmedia['description'];
                                             }
                                         }
                                         break;
                                 }
                                 switch ($b_link) {
                                     case 'empty':
                                         $batch_data['link'] = '';
                                         break;
                                     case 'self':
                                         $fileinfo = $gmCore->fileinfo($gmedia['gmuid'], false);
                                         $batch_data['link'] = $fileinfo['fileurl_original'];
                                         break;
                                     case 'custom':
                                         $link_custom = $gmCore->_post('batch_link_custom');
                                         if (false !== $link_custom) {
                                             $batch_data['link'] = $link_custom;
                                         }
                                         break;
                                 }
                                 //$gmedia_data = array_replace($gmedia, $batch_data);
                                 $gmedia_data = array_merge($gmedia, $batch_data);
                                 $gmDB->insert_gmedia($gmedia_data);
                             }
                             $this->msg[] = sprintf(__('%d item(s) updated successfuly', 'gmLang'), $count);
                         }
                     } else {
                         $this->error[] = __('You are not allowed to edit media', 'gmLang');
                     }
                 }
                 if ('selected' == $gmCore->_get('update_meta')) {
                     check_admin_referer('gmedia_update_meta');
                     if ($gmCore->caps['gmedia_edit_media']) {
                         $count = count($this->selected_items);
                         if ($count) {
                             foreach ($this->selected_items as $item) {
                                 $id = (int) $item;
                                 $gmDB->update_metadata($meta_type = 'gmedia', $id, $meta_key = '_metadata', $gmDB->generate_gmedia_metadata($id));
                             }
                             $this->msg[] = sprintf(__('%d item(s) updated successfuly', 'gmLang'), $count);
                         }
                     } else {
                         $this->error[] = __('You are not allowed to edit media', 'gmLang');
                     }
                 }
             }
             if ($delete_gmedia = $gmCore->_get('delete')) {
                 check_admin_referer('gmedia_delete');
                 if ($gmCore->caps['gmedia_delete_media']) {
                     if ('selected' == $delete_gmedia) {
                         $selected_items = $this->selected_items;
                     } else {
                         $selected_items = wp_parse_id_list($delete_gmedia);
                     }
                     if (!empty($selected_items)) {
                         if (!$gmCore->caps['gmedia_delete_others_media']) {
                             $delete_items = $gmDB->get_gmedias(array('fields' => 'ids', 'author' => $user_ID, 'gmedia__in' => $selected_items));
                             if (count($delete_items) < count($selected_items)) {
                                 $this->error[] = __('You are not allowed to delete others media', 'gmLang');
                             }
                             $selected_items = $delete_items;
                         }
                         if ($count = count($selected_items)) {
                             $delete_original_file = intval($gmCore->_get('save_original_file')) ? false : true;
                             foreach ($selected_items as $item) {
                                 if (!$gmDB->delete_gmedia((int) $item, $delete_original_file)) {
                                     $this->error[] = "#{$item}: " . __('Error in deleting...', 'gmLang');
                                     $count--;
                                 }
                             }
                             if ($count) {
                                 if ($delete_original_file) {
                                     $this->msg[] = sprintf(__('%d item(s) deleted successfuly', 'gmLang'), $count);
                                 } else {
                                     $this->msg[] = sprintf(__('%d record(s) deleted from database successfuly. Original file(s) safe', 'gmLang'), $count);
                                 }
                             }
                             $this->selected_items = array_diff($this->selected_items, $selected_items);
                             if (empty($this->selected_items)) {
                                 setcookie("gmuser_{$user_ID}_library", '', time() - 3600);
                                 unset($_COOKIE["gmuser_{$user_ID}_library"]);
                                 $this->selected_items = array();
                             } else {
                                 setcookie("gmuser_{$user_ID}_library", implode(',', $this->selected_items));
                             }
                         }
                     }
                 } else {
                     $this->error[] = __('You are not allowed to delete files', 'gmLang');
                 }
             }
             break;
         case 'GrandMedia_AddMedia':
             if (!$gmCore->caps['gmedia_upload']) {
                 wp_die(__('You are not allowed to be here', 'gmLang'));
             }
             break;
         case 'GrandMedia_Terms':
             if (!$gmCore->caps['gmedia_library']) {
                 wp_die(__('You are not allowed to be here', 'gmLang'));
             }
             $taxonomy = $gmCore->_get('term', 'gmedia_album');
             if ($delete = $gmCore->_get('delete')) {
                 check_admin_referer('gmedia_delete');
                 if ($gmCore->caps['gmedia_terms_delete']) {
                     if ('selected' == $gmCore->_get('delete')) {
                         $selected_items = $this->selected_items;
                     } else {
                         $selected_items = wp_parse_id_list($delete);
                     }
                     if (!$gmCore->caps['gmedia_delete_others_media']) {
                         $_selected_items = array();
                         if ('gmedia_album' == $taxonomy) {
                             $_selected_items = $gmDB->get_terms($taxonomy, array('fields' => 'ids', 'global' => $user_ID, 'include' => $selected_items));
                         }
                         if (count($_selected_items) < count($selected_items)) {
                             $this->error[] = __('You are not allowed to delete others media', 'gmLang');
                         }
                         $selected_items = $_selected_items;
                     }
                     if ($count = count($selected_items)) {
                         foreach ($selected_items as $item) {
                             $delete = $gmDB->delete_term($item, $taxonomy);
                             if (!$delete) {
                                 $count--;
                             } elseif (is_wp_error($delete)) {
                                 $this->error[] = $delete->get_error_message();
                                 $count--;
                             }
                         }
                         if ($count) {
                             $this->msg[] = sprintf(__('%d item(s) deleted successfuly', 'gmLang'), $count);
                         }
                         setcookie("gmuser_{$user_ID}_{$taxonomy}", '', time() - 3600);
                         unset($_COOKIE["gmuser_{$user_ID}_{$taxonomy}"]);
                         $this->selected_items = array();
                     }
                 } else {
                     $this->error[] = __('You are not allowed to delete terms', 'gmLang');
                 }
             } elseif (isset($_GET['edit_filter'])) {
                 if (isset($_POST['select_author'])) {
                     $authors = $gmCore->_post('author_ids');
                     $location = $gmCore->get_admin_url(array('author' => (int) $authors));
                     wp_redirect($location);
                     exit;
                 }
                 if (isset($_POST['gmedia_filter_save'])) {
                     check_admin_referer('GmediaTerms', 'term_save_wpnonce');
                     $edit_term = (int) $gmCore->_get('edit_filter');
                     do {
                         if (!$gmCore->caps['gmedia_filter_manage']) {
                             $this->error[] = __('You are not allowed to manage filters', 'gmLang');
                             break;
                         }
                         $term = $gmCore->_post('term');
                         if ((int) $term['global'] != $user_ID && !$gmCore->caps['gmedia_edit_others_media']) {
                             $this->error[] = __('You are not allowed to edit others media', 'gmLang');
                             break;
                         }
                         $term['name'] = trim($term['name']);
                         if (empty($term['name'])) {
                             $this->error[] = __('Filter Name is not specified', 'gmLang');
                             break;
                         }
                         if ($gmCore->is_digit($term['name'])) {
                             $this->error[] = __("Filter name can't be only digits", 'gmLang');
                             break;
                         }
                         $taxonomy = 'gmedia_filter';
                         if ($edit_term && !$gmDB->term_exists($edit_term, $taxonomy)) {
                             $this->error[] = __('A term with the id provided do not exists', 'gmLang');
                             $edit_term = false;
                         }
                         if ($term_id = $gmDB->term_exists($term['name'], $taxonomy, $term['global'])) {
                             if ($term_id != $edit_term) {
                                 $this->error[] = __('A term with the name provided already exists', 'gmLang');
                                 break;
                             }
                         }
                         if ($edit_term) {
                             $term_id = $gmDB->update_term($edit_term, $taxonomy, $term);
                         } else {
                             $term_id = $gmDB->insert_term($term['name'], $taxonomy, $term);
                         }
                         if (is_wp_error($term_id)) {
                             $this->error[] = $term_id->get_error_message();
                             break;
                         }
                         $filter_settings = array();
                         $_filter_settings = $gmCore->_post('gmedia_filter', array());
                         $other_data = $gmCore->_post('filter_data', array());
                         if (!$gmCore->caps['gmedia_show_others_media']) {
                             $filter_settings['author__in'] = array($user_ID);
                         } elseif (!empty($other_data['author_id'])) {
                             $filter_settings[$other_data['author_id__condition']] = $other_data['author_id'];
                         }
                         if (!empty($other_data['gmedia_id'])) {
                             $filter_settings[$other_data['gmedia_id__condition']] = $other_data['gmedia_id'];
                         }
                         if (isset($other_data['gmedia_album'])) {
                             $filter_settings[$other_data['album__condition']] = $other_data['gmedia_album'];
                         }
                         if (isset($other_data['gmedia_category'])) {
                             $filter_settings[$other_data['category__condition']] = $other_data['gmedia_category'];
                         }
                         if (isset($other_data['gmedia_tag'])) {
                             $filter_settings[$other_data['tag__condition']] = $other_data['gmedia_tag'];
                         }
                         $filter_settings = array_merge($filter_settings, $_filter_settings);
                         if (isset($filter_settings['meta_query']) && is_array($filter_settings['meta_query'])) {
                             foreach ($filter_settings['meta_query'] as $i => $meta_query) {
                                 if (empty($meta_query['key'])) {
                                     unset($filter_settings['meta_query'][$i]);
                                 }
                             }
                             if (empty($filter_settings['meta_query'])) {
                                 unset($filter_settings['meta_query']);
                             }
                         }
                         $filter_settings = array_filter($filter_settings);
                         if ($edit_term) {
                             $gmDB->update_metadata('gmedia_term', $term_id, 'query', $filter_settings);
                             $this->msg[] = sprintf(__('Filter #%d successfuly saved', 'gmLang'), $term_id);
                         } else {
                             $gmDB->add_metadata('gmedia_term', $term_id, 'query', $filter_settings);
                             $location = add_query_arg(array('page' => $this->page, 'edit_filter' => $term_id, 'message' => 'save'), admin_url('admin.php'));
                             set_transient('gmedia_new_filter_id', $term_id, 60);
                             wp_redirect($location);
                             exit;
                         }
                     } while (0);
                 }
                 if ('save' == $gmCore->_get('message') && ($term_id = $gmCore->_get('edit_filter'))) {
                     if (get_transient('gmedia_new_filter_id')) {
                         delete_transient('gmedia_new_filter_id');
                         $this->msg[] = sprintf(__('Filter #%d successfuly saved', 'gmLang'), $term_id);
                     }
                 }
             } elseif (isset($_POST['gmedia_album_save'])) {
                 check_admin_referer('GmediaTerms', 'term_save_wpnonce');
                 $edit_term = (int) $gmCore->_get('edit_album');
                 do {
                     if (!$gmCore->caps['gmedia_album_manage']) {
                         $this->error[] = __('You are not allowed to manage albums', 'gmLang');
                         break;
                     }
                     $term = $gmCore->_post('term');
                     $term['name'] = trim($term['name']);
                     if (empty($term['name'])) {
                         $this->error[] = __('Term Name is not specified', 'gmLang');
                         break;
                     }
                     if ($gmCore->is_digit($term['name'])) {
                         $this->error[] = __("Term Name can't be only digits", 'gmLang');
                         break;
                     }
                     $taxonomy = 'gmedia_album';
                     if ($edit_term && !$gmDB->term_exists($edit_term, $taxonomy)) {
                         $this->error[] = __('A term with the id provided do not exists', 'gmLang');
                         $edit_term = false;
                     }
                     if ($term_id = $gmDB->term_exists($term['name'], $taxonomy, $term['global'])) {
                         if ($term_id != $edit_term) {
                             $this->error[] = __('A term with the name provided already exists', 'gmLang');
                             break;
                         }
                     }
                     if ($edit_term) {
                         $_term = $gmDB->get_term($edit_term, $taxonomy);
                         if ((int) $_term->global != (int) $user_ID && !current_user_can('gmedia_edit_others_media')) {
                             $this->error[] = __('You are not allowed to edit others media', 'gmLang');
                             break;
                         }
                         $term_id = $gmDB->update_term($edit_term, $term['taxonomy'], $term);
                     } else {
                         $term_id = $gmDB->insert_term($term['name'], $term['taxonomy'], $term);
                         if (is_int($term_id)) {
                             $term_meta = array('orderby' => $term['orderby'], 'order' => $term['order']);
                             foreach ($term_meta as $key => $value) {
                                 $gmDB->add_metadata('gmedia_term', $term_id, $key, $value);
                             }
                         }
                     }
                     if (is_wp_error($term_id)) {
                         $this->error[] = $term_id->get_error_message();
                         break;
                     }
                     $this->msg[] = sprintf(__('Album `%s` successfuly saved', 'gmLang'), $term['name']);
                 } while (0);
             } elseif (isset($_POST['gmedia_term_sort_save'])) {
                 check_admin_referer('GmediaTerms', 'term_save_wpnonce');
                 do {
                     if (!$gmCore->caps['gmedia_album_manage']) {
                         $this->error[] = __('You are not allowed to manage albums', 'gmLang');
                         break;
                     }
                     $term_data = $gmCore->_post('term');
                     $taxonomy = 'gmedia_album';
                     if (!($term_id = $gmDB->term_exists($term_data['term_id'], $taxonomy))) {
                         $this->error[] = __('A term with the id provided do not exists', 'gmLang');
                         break;
                     } else {
                         $_term = $gmDB->get_term($term_id, $taxonomy);
                         if ((int) $_term->global != (int) $user_ID && !current_user_can('gmedia_edit_others_media')) {
                             $this->error[] = __('You are not allowed to edit others media', 'gmLang');
                             break;
                         }
                         $term_id = $gmDB->update_term_sortorder($term_id, $taxonomy, $term_data);
                         if (is_wp_error($term_id)) {
                             $this->error[] = $term_id->get_error_message();
                             break;
                         }
                         $this->msg[] = sprintf(__('Album `%s` successfuly saved', 'gmLang'), $_term->name);
                     }
                 } while (0);
             } elseif (isset($_POST['gmedia_tag_add'])) {
                 if ($gmCore->caps['gmedia_tag_manage']) {
                     check_admin_referer('GmediaTerms', 'term_save_wpnonce');
                     $term = $gmCore->_post('term');
                     $terms = array_filter(array_map('trim', explode(',', $term['name'])));
                     $terms_added = 0;
                     $terms_qty = count($terms);
                     foreach ($terms as $term_name) {
                         if ($gmCore->is_digit($term_name)) {
                             $this->error['tag_name_digit'] = __("Term Name can't be only digits", 'gmLang');
                             continue;
                         }
                         if (!$gmDB->term_exists($term_name, $term['taxonomy'])) {
                             $term_id = $gmDB->insert_term($term_name, $term['taxonomy']);
                             if (is_wp_error($term_id)) {
                                 $this->error[] = $term_id->get_error_message();
                             } else {
                                 $this->msg['tag_add'] = sprintf(__('%d of %d tags successfuly added', 'gmLang'), ++$terms_added, $terms_qty);
                             }
                         } else {
                             $this->error['tag_add'] = __('Some of provided tags are already exists', 'gmLang');
                         }
                     }
                 } else {
                     $this->error[] = __('You are not allowed to manage tags', 'gmLang');
                 }
             }
             break;
         case 'GrandMedia_Galleries':
             if (!$gmCore->caps['gmedia_gallery_manage']) {
                 wp_die(__('You are not allowed to manage gmedia galleries', 'gmLang'));
             }
             if (isset($_POST['select_author'])) {
                 $authors = $gmCore->_post('author_ids');
                 $location = $gmCore->get_admin_url(array('author' => (int) $authors));
                 wp_redirect($location);
                 exit;
             }
             if (isset($_POST['gmedia_gallery_save'])) {
                 check_admin_referer('GmediaGallery');
                 $edit_gallery = (int) $gmCore->_get('edit_gallery');
                 do {
                     $gallery = $gmCore->_post('gallery');
                     if ((int) $gallery['global'] != $user_ID && !$gmCore->caps['gmedia_edit_others_media']) {
                         $this->error[] = __('You are not allowed to edit others media', 'gmLang');
                         break;
                     }
                     $gallery['name'] = trim($gallery['name']);
                     if (empty($gallery['name'])) {
                         $this->error[] = __('Gallery Name is not specified', 'gmLang');
                         break;
                     }
                     if ($gmCore->is_digit($gallery['name'])) {
                         $this->error[] = __("Gallery name can't be only digits", 'gmLang');
                         break;
                     }
                     if (empty($gallery['module'])) {
                         $this->error[] = __('Something goes wrong... Choose module, please', 'gmLang');
                         break;
                     }
                     $term = $gallery['term'];
                     if (!isset($gallery['query'][$term]) || empty($gallery['query'][$term])) {
                         $this->error[] = __('Choose gallery source, please (tags, albums, categories...)', 'gmLang');
                         break;
                     }
                     $taxonomy = 'gmedia_gallery';
                     if ($edit_gallery && !$gmDB->term_exists($edit_gallery, $taxonomy)) {
                         $this->error[] = __('A term with the id provided do not exists', 'gmLang');
                         $edit_gallery = false;
                     }
                     if ($term_id = $gmDB->term_exists($gallery['name'], $taxonomy, $gallery['global'])) {
                         if ($term_id != $edit_gallery) {
                             $this->error[] = __('A term with the name provided already exists', 'gmLang');
                             break;
                         }
                     }
                     if ($edit_gallery) {
                         $term_id = $gmDB->update_term($edit_gallery, $taxonomy, $gallery);
                     } else {
                         $term_id = $gmDB->insert_term($gallery['name'], $taxonomy, $gallery);
                     }
                     if (is_wp_error($term_id)) {
                         $this->error[] = $term_id->get_error_message();
                         break;
                     }
                     $module_settings = $gmCore->_post('module', array());
                     $module_path = $gmCore->get_module_path($gallery['module']);
                     $default_options = array();
                     if (file_exists($module_path['path'] . '/settings.php')) {
                         include $module_path['path'] . '/settings.php';
                     } else {
                         $this->error[] = sprintf(__('Can\'t load data from `%s` module'), $gallery['module']);
                         break;
                     }
                     $module_settings = $gmCore->array_replace_recursive($default_options, $module_settings);
                     $gallery_meta = array('edited' => gmdate('Y-m-d H:i:s'), 'module' => $gallery['module'], 'query' => array($term => $gallery['query'][$term]), 'settings' => array($gallery['module'] => $module_settings));
                     foreach ($gallery_meta as $key => $value) {
                         if ($edit_gallery) {
                             $gmDB->update_metadata('gmedia_term', $term_id, $key, $value);
                         } else {
                             $gmDB->add_metadata('gmedia_term', $term_id, $key, $value);
                         }
                     }
                     if ($edit_gallery) {
                         $this->msg[] = sprintf(__('Gallery #%d successfuly saved', 'gmLang'), $term_id);
                     } else {
                         $location = add_query_arg(array('page' => $this->page, 'edit_gallery' => $term_id, 'message' => 'save'), admin_url('admin.php'));
                         set_transient('gmedia_new_gallery_id', $term_id, 60);
                         wp_redirect($location);
                         exit;
                     }
                 } while (0);
             }
             if ('save' == $gmCore->_get('message') && ($term_id = $gmCore->_get('edit_gallery'))) {
                 $gmedia_new_gallery_id = get_transient('gmedia_new_gallery_id');
                 if ($gmedia_new_gallery_id) {
                     delete_transient('gmedia_new_gallery_id');
                     $this->msg[] = sprintf(__('Gallery #%d successfuly saved', 'gmLang'), $term_id);
                 }
             }
             if (isset($_POST['module_preset_restore_original'])) {
                 $preset_id = intval($gmCore->_post('preset_default', 0));
                 $gmDB->delete_term($preset_id, 'gmedia_module');
                 $this->msg[] = __('Original module settings restored. Click "Reset to default" button to save original module settings for gallery', 'gmLang');
             }
             if (isset($_POST['gmedia_gallery_reset'])) {
                 check_admin_referer('GmediaGallery');
                 $edit_gallery = (int) $gmCore->_get('edit_gallery');
                 do {
                     $taxonomy = 'gmedia_gallery';
                     if (!$gmDB->term_exists($edit_gallery, $taxonomy)) {
                         $this->error[] = __('A term with the id provided do not exists', 'gmLang');
                         break;
                     }
                     if (!$gmCore->caps['gmedia_edit_others_media']) {
                         $gallery = $gmDB->get_term($edit_gallery, $taxonomy);
                         if ($gallery->global != $user_ID) {
                             $this->error[] = __('You are not allowed to edit others media', 'gmLang');
                             break;
                         }
                     }
                     $gallery_settings = $gmDB->get_metadata('gmedia_term', $edit_gallery, 'settings', true);
                     reset($gallery_settings);
                     $gallery_module = key($gallery_settings);
                     $module_path = $gmCore->get_module_path($gallery_module);
                     /**
                      * @var $default_options
                      */
                     if (file_exists($module_path['path'] . '/settings.php')) {
                         include $module_path['path'] . '/settings.php';
                         $preset = $gmDB->get_term('[' . $gallery_module . ']', 'gmedia_module');
                         if ($preset) {
                             $default_preset = maybe_unserialize($preset->description);
                             $default_options = $gmCore->array_replace_recursive($default_options, $default_preset);
                         }
                     } else {
                         $this->error[] = sprintf(__('Can\'t load data from `%s` module'), $gallery_module);
                         break;
                     }
                     $gallery_meta = array('edited' => gmdate('Y-m-d H:i:s'), 'settings' => array($gallery_module => $default_options));
                     foreach ($gallery_meta as $key => $value) {
                         $gmDB->update_metadata('gmedia_term', $edit_gallery, $key, $value);
                     }
                     $this->msg[] = sprintf(__('Gallery settings are reset', 'gmLang'));
                 } while (0);
             }
             if (isset($_POST['module_preset_save_as']) || isset($_POST['module_preset_save_default'])) {
                 check_admin_referer('GmediaGallery');
                 do {
                     $gallery = $gmCore->_post('gallery');
                     if (empty($gallery['module'])) {
                         $this->error[] = __('Something goes wrong... Choose module, please', 'gmLang');
                         break;
                     }
                     $module_settings = $gmCore->_post('module', array());
                     $module_path = $gmCore->get_module_path($gallery['module']);
                     $default_options = array();
                     if (file_exists($module_path['path'] . '/settings.php')) {
                         include $module_path['path'] . '/settings.php';
                     } else {
                         $this->error[] = sprintf(__('Can\'t load data from `%s` module'), $gallery['module']);
                         break;
                     }
                     $module_settings = $gmCore->array_replace_recursive($default_options, $module_settings);
                     $preset_name = $gmCore->_post('module_preset_name', '');
                     if (isset($_POST['module_preset_save_default'])) {
                         $preset_name = '[' . $gallery['module'] . ']';
                     } else {
                         $preset_name = trim($preset_name);
                         if (empty($preset_name)) {
                             $this->error[] = __('Preset name is not specified', 'gmLang');
                             break;
                         }
                         $preset_name = '[' . $gallery['module'] . '] ' . $preset_name;
                     }
                     $args = array();
                     $args['description'] = $module_settings;
                     $args['status'] = $gallery['module'];
                     $args['global'] = $user_ID;
                     $taxonomy = 'gmedia_module';
                     $term_id = $gmDB->term_exists($preset_name, $taxonomy, $user_ID);
                     if ($term_id) {
                         $term_id = $gmDB->update_term($term_id, $taxonomy, $args);
                     } else {
                         $term_id = $gmDB->insert_term($preset_name, $taxonomy, $args);
                     }
                     if (is_wp_error($term_id)) {
                         $this->error[] = $term_id->get_error_message();
                         break;
                     } else {
                         $this->msg[] = sprintf(__('Preset `%s` successfuly saved', 'gmLang'), $preset_name);
                     }
                 } while (0);
             }
             if ($delete = $gmCore->_get('delete')) {
                 check_admin_referer('gmedia_delete');
                 $taxonomy = 'gmedia_gallery';
                 if ('selected' == $delete) {
                     $selected_items = $this->selected_items;
                 } else {
                     $selected_items = wp_parse_id_list($delete);
                 }
                 if (!$gmCore->caps['gmedia_delete_others_media']) {
                     $_selected_items = $gmDB->get_terms($taxonomy, array('fields' => 'ids', 'global' => $user_ID, 'include' => $selected_items));
                     if (count($_selected_items) < count($selected_items)) {
                         $this->error[] = __('You are not allowed to delete others media', 'gmLang');
                     }
                     $selected_items = $_selected_items;
                 }
                 if ($count = count($selected_items)) {
                     foreach ($selected_items as $item) {
                         $delete = $gmDB->delete_term($item, $taxonomy);
                         if (!$delete) {
                             $this->error[] = sprintf(__('Error while delete gallery #%d', 'gmLang'), $item);
                             $count--;
                         } elseif (is_wp_error($delete)) {
                             $this->error[] = $delete->get_error_message();
                             $count--;
                         }
                     }
                     if ($count) {
                         $this->msg[] = sprintf(__('%d item(s) deleted successfuly', 'gmLang'), $count);
                     }
                     setcookie("gmuser_{$user_ID}_{$taxonomy}", '', time() - 3600);
                     unset($_COOKIE["gmuser_{$user_ID}_{$taxonomy}"]);
                     $this->selected_items = array();
                 }
             }
             break;
         case 'GrandMedia_Modules':
             if (!$gmCore->caps['gmedia_gallery_manage']) {
                 wp_die(__('You are not allowed to manage gmedia galleries', 'gmLang'));
             }
             if (!$gmCore->caps['gmedia_module_manage']) {
                 wp_die(__('You are not allowed to manage gmedia modules', 'gmLang'));
             }
             if (isset($_FILES['modulezip']['tmp_name'])) {
                 if (!empty($_FILES['modulezip']['tmp_name'])) {
                     check_admin_referer('GmediaModule');
                     if (!current_user_can('manage_options')) {
                         wp_die(__('You are not allowed to install module ZIP', 'gmLang'));
                     }
                     $to_folder = $gmCore->upload['path'] . '/' . $gmGallery->options['folder']['module'] . '/';
                     if (!wp_mkdir_p($to_folder)) {
                         $this->error[] = sprintf(__('Unable to create directory %s. Is its parent directory writable by the server?', 'gmLang'), $to_folder);
                         break;
                     }
                     if (!is_writable($to_folder)) {
                         @chmod($to_folder, 0755);
                         if (!is_writable($to_folder)) {
                             //@unlink( $_FILES['modulezip']['tmp_name'] );
                             $this->error[] = sprintf(__('Directory %s is not writable by the server.', 'gmLang'), $to_folder);
                             break;
                         }
                     }
                     $filename = wp_unique_filename($to_folder, $_FILES['modulezip']['name']);
                     // Move the file to the modules dir
                     if (false === @move_uploaded_file($_FILES['modulezip']['tmp_name'], $to_folder . $filename)) {
                         $this->error[] = sprintf(__('The uploaded file could not be moved to %s', 'flag'), $to_folder . $filename);
                     } else {
                         global $wp_filesystem;
                         // Is a filesystem accessor setup?
                         if (!$wp_filesystem || !is_object($wp_filesystem)) {
                             require_once ABSPATH . 'wp-admin/includes/file.php';
                             WP_Filesystem();
                         }
                         if (!is_object($wp_filesystem)) {
                             $result = new WP_Error('fs_unavailable', __('Could not access filesystem.', 'flag'));
                         } elseif ($wp_filesystem->errors->get_error_code()) {
                             $result = new WP_Error('fs_error', __('Filesystem error', 'flag'), $wp_filesystem->errors);
                         } else {
                             $result = unzip_file($to_folder . $filename, $to_folder);
                         }
                         // Once extracted, delete the package
                         unlink($to_folder . $filename);
                         if (is_wp_error($result)) {
                             $this->error[] = $result->get_error_message();
                         } else {
                             $this->msg[] = sprintf(__("The `%s` file unzipped to module's directory", 'flag'), $filename);
                         }
                     }
                 } else {
                     $this->error[] = __('No file specified', 'gmLang');
                 }
             }
             break;
         case 'GrandMedia_Settings':
             if (!$gmCore->caps['gmedia_settings']) {
                 wp_die(__('You are not allowed to change gmedia settings', 'gmLang'));
             }
             $lk_check = isset($_POST['license-key-activate']);
             if (isset($_POST['gmedia_settings_save'])) {
                 check_admin_referer('GmediaSettings');
                 $set = $gmCore->_post('set', array());
                 if (!empty($set['license_key']) && empty($set['license_key2'])) {
                     $lk_check = true;
                 }
                 if (empty($set['license_key']) && !empty($set['license_key2'])) {
                     $set['license_name'] = '';
                     $set['license_key'] = '';
                     $set['license_key2'] = '';
                     $this->error[] = __('License Key deactivated', 'gmLang');
                 }
                 $flush_rewrite_rules = false;
                 if (empty($set['endpoint'])) {
                     $set['endpoint'] = 'gmedia';
                 }
                 if ($set['endpoint'] !== $gmGallery->options['endpoint']) {
                     $flush_rewrite_rules = true;
                 }
                 foreach ($set as $key => $val) {
                     $gmGallery->options[$key] = $val;
                 }
                 $capabilities = $gmCore->_post('capability', array());
                 if (!empty($capabilities) && current_user_can('manage_options')) {
                     global $wp_roles;
                     $_roles = $wp_roles->roles;
                     $_roles = array_keys(apply_filters('editable_roles', $_roles));
                     $roles = array_flip($_roles);
                     // upload cap.
                     if ($roles[$capabilities['gmedia_upload']] < $roles[$capabilities['gmedia_import']]) {
                         $capabilities['gmedia_import'] = $capabilities['gmedia_upload'];
                     }
                     // edit/delete cap.
                     if ($roles[$capabilities['gmedia_edit_media']] < $roles[$capabilities['gmedia_edit_others_media']]) {
                         $capabilities['gmedia_edit_others_media'] = $capabilities['gmedia_edit_media'];
                     }
                     if ($roles[$capabilities['gmedia_edit_media']] < $roles[$capabilities['gmedia_delete_media']]) {
                         $capabilities['gmedia_delete_media'] = $capabilities['gmedia_edit_media'];
                     }
                     if ($roles[$capabilities['gmedia_delete_media']] < $roles[$capabilities['gmedia_delete_others_media']]) {
                         $capabilities['gmedia_delete_others_media'] = $capabilities['gmedia_delete_media'];
                     }
                     if ($roles[$capabilities['gmedia_edit_others_media']] < $roles[$capabilities['gmedia_delete_others_media']]) {
                         $capabilities['gmedia_delete_others_media'] = $capabilities['gmedia_edit_others_media'];
                     }
                     if ($roles[$capabilities['gmedia_show_others_media']] < $roles[$capabilities['gmedia_edit_others_media']]) {
                         $capabilities['gmedia_edit_others_media'] = $capabilities['gmedia_show_others_media'];
                     }
                     if ($roles[$capabilities['gmedia_show_others_media']] < $roles[$capabilities['gmedia_delete_others_media']]) {
                         $capabilities['gmedia_delete_others_media'] = $capabilities['gmedia_show_others_media'];
                     }
                     // terms cap.
                     if ($roles[$capabilities['gmedia_terms']] < $roles[$capabilities['gmedia_album_manage']]) {
                         $capabilities['gmedia_album_manage'] = $capabilities['gmedia_terms'];
                     }
                     if ($roles[$capabilities['gmedia_terms']] < $roles[$capabilities['gmedia_tag_manage']]) {
                         $capabilities['gmedia_tag_manage'] = $capabilities['gmedia_terms'];
                     }
                     if ($roles[$capabilities['gmedia_terms']] < $roles[$capabilities['gmedia_filter_manage']]) {
                         $capabilities['gmedia_filter_manage'] = $capabilities['gmedia_terms'];
                     }
                     if ($roles[$capabilities['gmedia_terms']] < $roles[$capabilities['gmedia_terms_delete']]) {
                         $capabilities['gmedia_terms_delete'] = $capabilities['gmedia_terms'];
                     } else {
                         $rolekey = max($roles[$capabilities['gmedia_album_manage']], $roles[$capabilities['gmedia_tag_manage']]);
                         $role = $_roles[$rolekey];
                         if ($role < $roles[$capabilities['gmedia_terms_delete']]) {
                             $capabilities['gmedia_terms_delete'] = $role;
                         }
                     }
                     foreach ($capabilities as $key => $val) {
                         $gmDB->set_capability($val, $key);
                     }
                 }
                 update_option('gmediaOptions', $gmGallery->options);
                 if (isset($_POST['GmediaHashID_salt'])) {
                     update_option('GmediaHashID_salt', (string) $_POST['GmediaHashID_salt']);
                 }
                 if ($flush_rewrite_rules) {
                     flush_rewrite_rules(false);
                 }
                 $this->msg[] .= __('Settings saved', 'gmLang');
             }
             if ($lk_check) {
                 check_admin_referer('GmediaSettings');
                 $license_key = $gmCore->_post('set');
                 if (!empty($license_key['license_key'])) {
                     global $wp_version;
                     $gmedia_ua = "WordPress/{$wp_version} | ";
                     $gmedia_ua .= 'Gmedia/' . constant('GMEDIA_VERSION');
                     $response = wp_remote_post('http://codeasily.com/rest/gmedia-key.php', array('body' => array('key' => $license_key['license_key'], 'site' => site_url()), 'headers' => array('Content-Type' => 'application/x-www-form-urlencoded; ' . 'charset=' . get_option('blog_charset'), 'Host' => 'codeasily.com', 'User-Agent' => $gmedia_ua), 'httpversion' => '1.0', 'timeout' => 10));
                     if (is_wp_error($response)) {
                         $this->error[] = $response->get_error_message();
                     } else {
                         $result = json_decode($response['body']);
                         if ($result->error->code == 200) {
                             $gmGallery->options['license_name'] = $result->content;
                             $gmGallery->options['license_key'] = $result->key;
                             $gmGallery->options['license_key2'] = $result->key2;
                             $this->msg[] = __('License Key activated successfully', 'gmLang');
                         } else {
                             $gmGallery->options['license_name'] = '';
                             $gmGallery->options['license_key'] = '';
                             $gmGallery->options['license_key2'] = '';
                             $this->error[] = __('Error', 'gmLang') . ': ' . $result->error->message;
                         }
                         update_option('gmediaOptions', $gmGallery->options);
                     }
                 } else {
                     $this->error[] = __('Empty License Key', 'gmLang');
                 }
             }
             if (isset($_POST['gmedia_settings_reset'])) {
                 check_admin_referer('GmediaSettings');
                 include_once dirname(dirname(__FILE__)) . '/setup.php';
                 $_temp_options = $gmGallery->options;
                 $gmGallery->options = gmedia_default_options();
                 $gmGallery->options['license_name'] = $_temp_options['license_name'];
                 $gmGallery->options['license_key'] = $_temp_options['license_key'];
                 $gmGallery->options['license_key2'] = $_temp_options['license_key2'];
                 delete_metadata('user', 0, 'gm_screen_options', '', true);
                 update_option('gmediaOptions', $gmGallery->options);
                 if ($gmCore->_post('capability') && current_user_can('manage_options')) {
                     $capabilities = gmedia_plugin_capabilities();
                     $capabilities = apply_filters('gmedia_capabilities', $capabilities);
                     //$role = get_role('administrator');
                     foreach ($capabilities as $cap) {
                         $gmDB->set_capability('administrator', $cap);
                     }
                 }
                 $this->msg[] .= __('All settings set to default', 'gmLang');
             }
             break;
         case 'GrandMedia_WordpressLibrary':
             if (!$gmCore->caps['gmedia_import']) {
                 wp_die(__('You are not allowed to import media in Gmedia Library', 'gmLang'));
             }
             break;
         default:
             break;
     }
 }
Example #5
0
/**
 * creates all tables for the plugin
 * called during register_activation hook
 * @access internal
 * @return void
 **/
function gmedia_install()
{
    /** @var $wpdb wpdb */
    global $wpdb, $gmGallery, $gmCore;
    // Check for capability
    if (!current_user_can('activate_plugins')) {
        return;
    }
    gmedia_capabilities();
    // upgrade function changed in WordPress 2.3
    require_once ABSPATH . 'wp-admin/includes/upgrade.php';
    // add charset & collate like wp core
    $charset_collate = '';
    if ($wpdb->has_cap('collation')) {
        if (!empty($wpdb->charset)) {
            $charset_collate = "DEFAULT CHARACTER SET {$wpdb->charset}";
        }
        if (!empty($wpdb->collate)) {
            $charset_collate .= " COLLATE {$wpdb->collate}";
        }
    }
    $charset_collate .= ' ROW_FORMAT=DYNAMIC';
    $gmedia = $wpdb->prefix . 'gmedia';
    $gmedia_meta = $wpdb->prefix . 'gmedia_meta';
    $gmedia_term = $wpdb->prefix . 'gmedia_term';
    $gmedia_term_meta = $wpdb->prefix . 'gmedia_term_meta';
    $gmedia_term_relationships = $wpdb->prefix . 'gmedia_term_relationships';
    if ($wpdb->get_var("show tables like '{$gmedia}'") != $gmedia) {
        $sql = "SET GLOBAL innodb_file_format = Barracuda, innodb_large_prefix = ON;";
        $sql .= "CREATE TABLE {$gmedia} (\n\t\t\tID BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\tauthor BIGINT(20) UNSIGNED NOT NULL DEFAULT '0',\n\t\t\tdate DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',\n\t\t\tdescription LONGTEXT NOT NULL,\n\t\t\ttitle TEXT NOT NULL,\n\t\t\tgmuid VARCHAR(255) NOT NULL DEFAULT '',\n\t\t\tlink VARCHAR(255) NOT NULL DEFAULT '',\n\t\t\tmodified DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',\n\t\t\tmime_type VARCHAR(100) NOT NULL DEFAULT '',\n\t\t\tstatus VARCHAR(20) NOT NULL DEFAULT 'publish',\n\t\t\tpost_id BIGINT(20) UNSIGNED DEFAULT NULL,\n\t\t\tPRIMARY KEY  (ID),\n\t\t\tKEY gmuid (gmuid),\n\t\t\tKEY type_status_date (mime_type,status,date,ID),\n\t\t\tKEY author (author),\n\t\t\tKEY post_id (post_id)\n\t\t) {$charset_collate}";
        dbDelta($sql);
    }
    if ($wpdb->get_var("show tables like '{$gmedia_meta}'") != $gmedia_meta) {
        $sql = "SET GLOBAL innodb_file_format = Barracuda, innodb_large_prefix = ON;";
        $sql .= "CREATE TABLE {$gmedia_meta} (\n\t\t\tmeta_id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\tgmedia_id BIGINT(20) UNSIGNED NOT NULL DEFAULT '0',\n\t\t\tmeta_key VARCHAR(255) DEFAULT NULL,\n\t\t\tmeta_value LONGTEXT,\n\t\t\tPRIMARY KEY  (meta_id),\n\t\t\tKEY gmedia_id (gmedia_id),\n\t\t\tKEY meta_key (meta_key),\n\t\t\tINDEX `_hash` (meta_value(32))\n\t\t) {$charset_collate}";
        dbDelta($sql);
    }
    if ($wpdb->get_var("show tables like '{$gmedia_term}'") != $gmedia_term) {
        $sql = "SET GLOBAL innodb_file_format = Barracuda, innodb_large_prefix = ON;";
        $sql .= "CREATE TABLE {$gmedia_term} (\n\t\t\tterm_id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\tname VARCHAR(200) NOT NULL DEFAULT '',\n\t\t\ttaxonomy VARCHAR(32) NOT NULL DEFAULT '',\n\t\t\tdescription LONGTEXT NOT NULL,\n\t\t\tglobal BIGINT(20) UNSIGNED NOT NULL DEFAULT '0',\n\t\t\tcount BIGINT(20) NOT NULL DEFAULT '0',\n\t\t\tstatus VARCHAR(20) NOT NULL DEFAULT 'publish',\n\t\t\tPRIMARY KEY  (term_id),\n\t\t\tKEY taxonomy (taxonomy),\n\t\t\tKEY name (name)\n\t\t) {$charset_collate}";
        dbDelta($sql);
    }
    if ($wpdb->get_var("show tables like '{$gmedia_term_meta}'") != $gmedia_term_meta) {
        $sql = "SET GLOBAL innodb_file_format = Barracuda, innodb_large_prefix = ON;";
        $sql .= "CREATE TABLE {$gmedia_term_meta} (\n\t\t\tmeta_id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\tgmedia_term_id BIGINT(20) UNSIGNED NOT NULL DEFAULT '0',\n\t\t\tmeta_key VARCHAR(255) DEFAULT NULL,\n\t\t\tmeta_value LONGTEXT,\n\t\t\tPRIMARY KEY  (meta_id),\n\t\t\tKEY gmedia_term_id (gmedia_term_id),\n\t\t\tKEY meta_key (meta_key)\n\t\t) {$charset_collate}";
        dbDelta($sql);
    }
    if ($wpdb->get_var("show tables like '{$gmedia_term_relationships}'") != $gmedia_term_relationships) {
        $sql = "SET GLOBAL innodb_file_format = Barracuda, innodb_large_prefix = ON;";
        $sql .= "CREATE TABLE {$gmedia_term_relationships} (\n\t\t\tgmedia_id BIGINT(20) UNSIGNED NOT NULL DEFAULT '0',\n\t\t\tgmedia_term_id BIGINT(20) UNSIGNED NOT NULL DEFAULT '0',\n\t\t\tterm_order INT(11) NOT NULL DEFAULT '0',\n\t\t\tgmedia_order INT(11) NOT NULL DEFAULT '0',\n\t\t\tPRIMARY KEY  (gmedia_id,gmedia_term_id),\n\t\t\tKEY gmedia_term_id (gmedia_term_id)\n\t\t) {$charset_collate}";
        dbDelta($sql);
    }
    // check one table again, to be sure
    if ($wpdb->get_var("show tables like '{$gmedia}'") != $gmedia) {
        update_option("gmediaInitCheck", __('GmediaGallery: Tables could not created, please check your database settings', 'grand-media'));
        return;
    }
    if (!get_option('GmediaHashID_salt')) {
        $ustr = wp_generate_password(12, false);
        add_option('GmediaHashID_salt', $ustr);
    }
    // set the default settings, if we didn't upgrade
    if (empty($gmGallery->options)) {
        $gmGallery->options = gmedia_default_options();
        // Set installation date
        if (!get_option('gmediaInstallDate')) {
            $installDate = time();
            add_option('gmediaInstallDate', $installDate);
        }
        update_option('gmediaOptions', $gmGallery->options);
    } else {
        $default_options = gmedia_default_options();
        unset($gmGallery->options['folder'], $gmGallery->options['taxonomies']);
        $new_options = $gmCore->array_diff_key_recursive($default_options, $gmGallery->options);
        $gmGallery->options = $gmCore->array_replace_recursive($gmGallery->options, $new_options);
        update_option('gmediaOptions', $gmGallery->options);
    }
    // try to make gallery dirs if not exists
    foreach ($gmGallery->options['folder'] as $folder) {
        wp_mkdir_p($gmCore->upload['path'] . '/' . $folder);
    }
    wp_clear_scheduled_hook('gmedia_app_cronjob');
    wp_schedule_event(time(), 'gmedia_app', 'gmedia_app_cronjob');
    add_option('gmediaActivated', time());
}
 protected function processor()
 {
     global $gmCore, $gmGallery, $gmDB;
     if (!$gmCore->caps['gmedia_settings']) {
         wp_die(__('You are not allowed to change gmedia settings', 'grand-media'));
     }
     $lk_check = isset($_POST['license-key-activate']);
     if (isset($_POST['gmedia_settings_save'])) {
         check_admin_referer('GmediaSettings');
         $set = $gmCore->_post('set', array());
         if (!empty($set['purchase_key']) && (empty($set['license_key']) || empty($set['license_key2']))) {
             $lk_check = true;
         }
         if (empty($set['purchase_key']) && (!empty($set['license_key']) || !empty($set['license_key2']))) {
             $set['license_name'] = '';
             $set['purchase_key'] = '';
             $set['license_key'] = '';
             $set['license_key2'] = '';
             $this->error[] = __('License Key empty...', 'grand-media');
         }
         $flush_rewrite_rules = false;
         if (empty($set['endpoint'])) {
             $set['endpoint'] = 'gmedia';
         }
         if ($set['endpoint'] !== $gmGallery->options['endpoint'] || $set['gmedia_post_slug'] !== $gmGallery->options['gmedia_post_slug'] || $set['gmedia_album_post_slug'] !== $gmGallery->options['gmedia_album_post_slug'] || $set['gmedia_gallery_post_slug'] !== $gmGallery->options['gmedia_gallery_post_slug']) {
             $flush_rewrite_rules = true;
         }
         foreach ($set as $key => $val) {
             $gmGallery->options[$key] = $val;
         }
         $capabilities = $gmCore->_post('capability', array());
         if (!empty($capabilities) && current_user_can('manage_options')) {
             global $wp_roles;
             $_roles = $wp_roles->roles;
             $_roles = array_keys(apply_filters('editable_roles', $_roles));
             $roles = array_flip($_roles);
             // upload cap.
             if ($roles[$capabilities['gmedia_upload']] < $roles[$capabilities['gmedia_import']]) {
                 $capabilities['gmedia_import'] = $capabilities['gmedia_upload'];
             }
             // edit/delete cap.
             if ($roles[$capabilities['gmedia_edit_media']] < $roles[$capabilities['gmedia_edit_others_media']]) {
                 $capabilities['gmedia_edit_others_media'] = $capabilities['gmedia_edit_media'];
             }
             if ($roles[$capabilities['gmedia_edit_media']] < $roles[$capabilities['gmedia_delete_media']]) {
                 $capabilities['gmedia_delete_media'] = $capabilities['gmedia_edit_media'];
             }
             if ($roles[$capabilities['gmedia_delete_media']] < $roles[$capabilities['gmedia_delete_others_media']]) {
                 $capabilities['gmedia_delete_others_media'] = $capabilities['gmedia_delete_media'];
             }
             if ($roles[$capabilities['gmedia_edit_others_media']] < $roles[$capabilities['gmedia_delete_others_media']]) {
                 $capabilities['gmedia_delete_others_media'] = $capabilities['gmedia_edit_others_media'];
             }
             if ($roles[$capabilities['gmedia_show_others_media']] < $roles[$capabilities['gmedia_edit_others_media']]) {
                 $capabilities['gmedia_edit_others_media'] = $capabilities['gmedia_show_others_media'];
             }
             if ($roles[$capabilities['gmedia_show_others_media']] < $roles[$capabilities['gmedia_delete_others_media']]) {
                 $capabilities['gmedia_delete_others_media'] = $capabilities['gmedia_show_others_media'];
             }
             // terms cap.
             if ($roles[$capabilities['gmedia_terms']] < $roles[$capabilities['gmedia_album_manage']]) {
                 $capabilities['gmedia_album_manage'] = $capabilities['gmedia_terms'];
             }
             if ($roles[$capabilities['gmedia_terms']] < $roles[$capabilities['gmedia_category_manage']]) {
                 $capabilities['gmedia_category_manage'] = $capabilities['gmedia_terms'];
             }
             if ($roles[$capabilities['gmedia_terms']] < $roles[$capabilities['gmedia_tag_manage']]) {
                 $capabilities['gmedia_tag_manage'] = $capabilities['gmedia_terms'];
             }
             if ($roles[$capabilities['gmedia_terms']] < $roles[$capabilities['gmedia_terms_delete']]) {
                 $capabilities['gmedia_terms_delete'] = $capabilities['gmedia_terms'];
             } else {
                 $rolekey = max($roles[$capabilities['gmedia_album_manage']], $roles[$capabilities['gmedia_tag_manage']]);
                 $role = $_roles[$rolekey];
                 if ($role < $roles[$capabilities['gmedia_terms_delete']]) {
                     $capabilities['gmedia_terms_delete'] = $role;
                 }
             }
             foreach ($capabilities as $key => $val) {
                 $gmDB->set_capability($val, $key);
             }
         }
         if (isset($set['delete_originals']) && (int) $set['delete_originals']) {
             //                if (($handle = opendir($gmCore->upload['path'] . '/' . $gmGallery->options['folder']['image_original']))) {
             //                    while (false !== ($file = readdir($handle))) {
             //                        // do something with the file
             //                        // note that '.' and '..' is returned even
             //                        @unlink($file);
             //                    }
             //                    closedir($handle);
             //                }
             $files = glob($gmCore->upload['path'] . '/' . $gmGallery->options['folder']['image_original'] . '/*', GLOB_NOSORT);
             if (!empty($files)) {
                 foreach ($files as $file) {
                     @unlink($file);
                 }
             }
         }
         update_option('gmediaOptions', $gmGallery->options);
         if (isset($_POST['GmediaHashID_salt'])) {
             update_option('GmediaHashID_salt', (string) $_POST['GmediaHashID_salt']);
         }
         if ($flush_rewrite_rules) {
             flush_rewrite_rules(false);
         }
         $this->msg[] .= __('Settings saved', 'grand-media');
     }
     if ($lk_check) {
         check_admin_referer('GmediaSettings');
         $license_key = $gmCore->_post('set');
         if (!empty($license_key['purchase_key'])) {
             global $wp_version;
             $gmedia_ua = "WordPress/{$wp_version} | ";
             $gmedia_ua .= 'Gmedia/' . constant('GMEDIA_VERSION');
             $response = wp_remote_post('http://codeasily.com/rest/gmedia-key.php', array('body' => array('key' => $license_key['purchase_key'], 'site' => site_url()), 'headers' => array('Content-Type' => 'application/x-www-form-urlencoded; ' . 'charset=' . get_option('blog_charset'), 'Host' => 'codeasily.com', 'User-Agent' => $gmedia_ua), 'httpversion' => '1.0', 'timeout' => 45));
             if (is_wp_error($response)) {
                 $this->error[] = $response->get_error_message();
                 $this->error[] = __('Use Help Screen (top right button) for more info', 'grand-media');
             } else {
                 $result = json_decode($response['body']);
                 if (isset($result->error)) {
                     if ($result && $result->error->code == 200) {
                         $gmGallery->options['license_name'] = $result->content;
                         $gmGallery->options['purchase_key'] = $result->dkey;
                         $gmGallery->options['license_key'] = $result->key;
                         $gmGallery->options['license_key2'] = $result->key2;
                         $this->msg[] = sprintf(__('License Key activated successfully. You can see all activated websites with this key on your account page %s', 'grand-media'), '<a href="http://codeasily.com/my-account/" target="_blank">http://codeasily.com/my-account/</a>');
                     } else {
                         $gmGallery->options['license_name'] = '';
                         $gmGallery->options['purchase_key'] = '';
                         $gmGallery->options['license_key'] = '';
                         $gmGallery->options['license_key2'] = '';
                         $this->error[] = __('Error', 'grand-media') . ': ' . $result->error->message;
                     }
                     update_option('gmediaOptions', $gmGallery->options);
                 } else {
                     $this->error[] = __('Something went wrong.. Try again later or use Help Screen (top right button) for more info', 'grand-media');
                 }
             }
         } else {
             $this->error[] = __('Empty License Key', 'grand-media');
         }
     }
     if (isset($_POST['gmedia_settings_reset'])) {
         check_admin_referer('GmediaSettings');
         include_once GMEDIA_ABSPATH . 'config/setup.php';
         $_temp_options = $gmGallery->options;
         $gmGallery->options = gmedia_default_options();
         // don't reset license
         $gmGallery->options['license_name'] = $_temp_options['license_name'];
         $gmGallery->options['purchase_key'] = $_temp_options['purchase_key'];
         $gmGallery->options['license_key'] = $_temp_options['license_key'];
         $gmGallery->options['license_key2'] = $_temp_options['license_key2'];
         // don't reset mobile app
         $gmGallery->options['site_email'] = $_temp_options['site_email'];
         $gmGallery->options['site_ID'] = $_temp_options['site_ID'];
         $gmGallery->options['mobile_app'] = $_temp_options['mobile_app'];
         delete_metadata('user', 0, 'gm_screen_options', '', true);
         update_option('gmediaOptions', $gmGallery->options);
         if ($gmCore->_post('capability') && current_user_can('manage_options')) {
             $capabilities = $gmCore->plugin_capabilities();
             $capabilities = apply_filters('gmedia_capabilities', $capabilities);
             //$role = get_role('administrator');
             foreach ($capabilities as $cap) {
                 $gmDB->set_capability('administrator', $cap);
             }
         }
         $this->msg[] .= __('All settings set to default', 'grand-media');
     }
 }