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); }
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); } }
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'); } } }
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; } }
/** * 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'); } }