/** * Image edit functions via AJAX * * @author Alex Rabe * @copyright 2008 - 2010 * * @return void */ function ngg_ajax_operation() { global $wpdb; // if nonce is not correct it returns -1 check_ajax_referer("ngg-ajax"); // check for correct capability if (!is_user_logged_in()) { die('-1'); } // check for correct NextGEN capability if (!current_user_can('NextGEN Upload images') && !current_user_can('NextGEN Manage gallery')) { die('-1'); } // include the ngg function include_once dirname(__FILE__) . '/functions.php'; // Get the image id if (isset($_POST['image'])) { $id = (int) $_POST['image']; // let's get the image data $picture = nggdb::find_image($id); // what do you want to do ? switch ($_POST['operation']) { case 'create_thumbnail': $result = nggAdmin::create_thumbnail($picture); break; case 'resize_image': $result = nggAdmin::resize_image($picture); break; case 'rotate_cw': $result = nggAdmin::rotate_image($picture, 'CW'); nggAdmin::create_thumbnail($picture); break; case 'rotate_ccw': $result = nggAdmin::rotate_image($picture, 'CCW'); nggAdmin::create_thumbnail($picture); break; case 'set_watermark': $result = nggAdmin::set_watermark($picture); break; case 'recover_image': $result = nggAdmin::recover_image($picture); break; case 'import_metadata': $result = nggAdmin::import_MetaData($id); break; case 'get_image_ids': $result = nggAdmin::get_image_ids($id); break; default: do_action('ngg_ajax_' . $_POST['operation']); die('-1'); break; } // A success should return a '1' die($result); } // The script should never stop here die('0'); }
function _save_entity($entity) { // If successfully saved, then import metadata and $retval = $this->call_parent('_save_entity', $entity); if ($retval) { include_once NGGALLERY_ABSPATH . '/admin/functions.php'; $image_id = $this->get_id($entity); nggAdmin::import_MetaData($image_id); C_Photocrati_Cache::flush(); } return $retval; }
function _save_entity($entity) { // If successfully saved, then import metadata and $retval = $this->call_parent('_save_entity', $entity); if ($retval) { include_once NGGALLERY_ABSPATH . '/admin/functions.php'; $image_id = $this->get_id($entity); if (!isset($entity->meta_data['saved'])) { nggAdmin::import_MetaData($image_id); } C_Photocrati_Cache::flush('displayed_gallery_rendering'); } return $retval; }
/** * Add images to database * * @class nggAdmin * @param int $galleryID * @param array $imageslist * @return array $image_ids Id's which are sucessful added */ function add_Images($galleryID, $imageslist) { global $wpdb, $ngg; $image_ids = array(); if (is_array($imageslist)) { foreach ($imageslist as $picture) { // strip off the extension of the filename $path_parts = pathinfo($picture); $alttext = !isset($path_parts['filename']) ? substr($path_parts['basename'], 0, strpos($path_parts['basename'], '.')) : $path_parts['filename']; // save it to the database $pic_id = nggdb::add_image($galleryID, $picture, '', $alttext); if (!empty($pic_id)) { $image_ids[] = $pic_id; } // add the metadata nggAdmin::import_MetaData($pic_id); // auto rotate nggAdmin::rotate_image($pic_id); // Autoresize image if required if ($ngg->options['imgAutoResize']) { $imagetmp = nggdb::find_image($pic_id); $sizetmp = @getimagesize($imagetmp->imagePath); $widthtmp = $ngg->options['imgWidth']; $heighttmp = $ngg->options['imgHeight']; if ($sizetmp[0] > $widthtmp && $widthtmp || $sizetmp[1] > $heighttmp && $heighttmp) { nggAdmin::resize_image($pic_id); } } // action hook for post process after the image is added to the database $image = array('id' => $pic_id, 'filename' => $picture, 'galleryID' => $galleryID); do_action('ngg_added_new_image', $image); } } // is_array // delete dirsize after adding new images delete_transient('dirsize_cache'); do_action('ngg_after_new_images_added', $galleryID, $image_ids); return $image_ids; }
public function reimport_metadata($image_or_id) { // Get the image $image = NULL; if (is_int($image_or_id)) { $image = $this->object->find($image_or_id); } else { $image = $image_or_id; } // Reset all image details that would have normally been imported $image->alttext = ''; $image->description = ''; if (is_array($image->meta_data)) { unset($image->meta_data['saved']); } wp_delete_object_term_relationships($image->{$image->id_field}, 'ngg_tag'); nggAdmin::import_MetaData($image); return $this->object->save($image); }
function add_Images($galleryID, $imageslist) { // add images to database global $wpdb; $image_ids = array(); if (is_array($imageslist)) { foreach ($imageslist as $picture) { $result = $wpdb->query("INSERT INTO {$wpdb->nggpictures} (galleryid, filename, alttext, exclude) VALUES ('{$galleryID}', '{$picture}', '{$picture}', 0) "); $pic_id = (int) $wpdb->insert_id; if ($result) { $image_ids[] = $pic_id; } // add the metadata nggAdmin::import_MetaData($pic_id); } } // is_array return $image_ids; }
function processor() { global $wpdb, $ngg; if ($this->mode == 'delete') { // Delete a gallery check_admin_referer('ngg_editgallery'); // get the path to the gallery $gallerypath = $wpdb->get_var("SELECT path FROM {$wpdb->nggallery} WHERE gid = '{$this->gid}' "); if ($gallerypath) { // delete pictures //TODO:Remove also Tag reference $imagelist = $wpdb->get_col("SELECT filename FROM {$wpdb->nggpictures} WHERE galleryid = '{$this->gid}' "); if ($ngg->options['deleteImg']) { if (is_array($imagelist)) { foreach ($imagelist as $filename) { @unlink(WINABSPATH . $gallerypath . '/thumbs/thumbs_' . $filename); @unlink(WINABSPATH . $gallerypath . '/' . $filename); } } // delete folder @rmdir(WINABSPATH . $gallerypath . '/thumbs'); @rmdir(WINABSPATH . $gallerypath); } } $delete_pic = $wpdb->query("DELETE FROM {$wpdb->nggpictures} WHERE galleryid = {$this->gid}"); $delete_galllery = $wpdb->query("DELETE FROM {$wpdb->nggallery} WHERE gid = {$this->gid}"); if ($delete_galllery) { nggGallery::show_message(__ngettext('Gallery', 'Galleries', 1, 'nggallery') . ' \'' . $this->gid . '\' ' . __('deleted successfully', 'nggallery')); } $this->mode = 'main'; // show mainpage } if ($this->mode == 'delpic') { // Delete a picture //TODO:Remove also Tag reference check_admin_referer('ngg_delpicture'); $filename = $wpdb->get_var("SELECT filename FROM {$wpdb->nggpictures} WHERE pid = '{$this->pid}' "); if ($filename) { $gallerypath = $wpdb->get_var("SELECT path FROM {$wpdb->nggallery} WHERE gid = '{$this->gid}' "); if ($gallerypath) { $thumb_folder = nggGallery::get_thumbnail_folder($gallerypath, FALSE); if ($ngg->options['deleteImg']) { @unlink(WINABSPATH . $gallerypath . '/thumbs/thumbs_' . $filename); @unlink(WINABSPATH . $gallerypath . '/' . $filename); } } $delete_pic = $wpdb->query("DELETE FROM {$wpdb->nggpictures} WHERE pid = {$this->pid}"); } if ($delete_pic) { nggGallery::show_message(__('Picture', 'nggallery') . ' \'' . $this->pid . '\' ' . __('deleted successfully', 'nggallery')); } $this->mode = 'edit'; // show pictures } if (isset($_POST['bulkaction']) && isset($_POST['doaction'])) { // do bulk update check_admin_referer('ngg_updategallery'); $gallerypath = $wpdb->get_var("SELECT path FROM {$wpdb->nggallery} WHERE gid = '{$this->gid}' "); $imageslist = array(); if (is_array($_POST['doaction'])) { foreach ($_POST['doaction'] as $imageID) { $imageslist[] = $wpdb->get_var("SELECT filename FROM {$wpdb->nggpictures} WHERE pid = '{$imageID}' "); } } switch ($_POST['bulkaction']) { case 'no_action': // No action break; case 'set_watermark': // Set watermark nggAdmin::do_ajax_operation('set_watermark', $_POST['doaction'], __('Set watermark', 'nggallery')); break; case 'new_thumbnail': // Create new thumbnails nggAdmin::do_ajax_operation('create_thumbnail', $_POST['doaction'], __('Create new thumbnails', 'nggallery')); break; case 'resize_images': // Resample images nggAdmin::do_ajax_operation('resize_image', $_POST['doaction'], __('Resize images', 'nggallery')); break; case 'delete_images': // Delete images if (is_array($_POST['doaction'])) { if ($gallerypath) { $thumb_folder = nggGallery::get_thumbnail_folder($gallerypath, FALSE); foreach ($_POST['doaction'] as $imageID) { $filename = $wpdb->get_var("SELECT filename FROM {$wpdb->nggpictures} WHERE pid = '{$imageID}' "); if ($ngg->options['deleteImg']) { @unlink(WINABSPATH . $gallerypath . '/' . $thumb_folder . '/' . "thumbs_" . $filename); @unlink(WINABSPATH . $gallerypath . '/' . $filename); } $delete_pic = $wpdb->query("DELETE FROM {$wpdb->nggpictures} WHERE pid = {$imageID}"); } } if ($delete_pic) { nggGallery::show_message(__('Pictures deleted successfully ', "nggallery")); } } break; case 'import_meta': // Import Metadata nggAdmin::import_MetaData($_POST['doaction']); nggGallery::show_message(__('Import metadata finished', "nggallery")); break; } } // will be called after a ajax operation if (isset($_POST['ajax_callback'])) { if ($_POST['ajax_callback'] == 1) { nggGallery::show_message(__('Operation successfull. Please clear your browser cache.', "nggallery")); } $this->mode = 'edit'; } if (isset($_POST['TB_bulkaction']) && isset($_POST['TB_SelectGallery'])) { check_admin_referer('ngg_thickbox_form'); $pic_ids = explode(",", $_POST['TB_imagelist']); $dest_gid = (int) $_POST['dest_gid']; switch ($_POST['TB_bulkaction']) { case 'copy_to': // Copy images nggAdmin::copy_images($pic_ids, $dest_gid); break; case 'move_to': // Move images nggAdmin::move_images($pic_ids, $dest_gid); break; } } if (isset($_POST['TB_bulkaction']) && isset($_POST['TB_EditTags'])) { // do tags update check_admin_referer('ngg_thickbox_form'); // get the images list $pic_ids = explode(",", $_POST['TB_imagelist']); $taglist = explode(",", $_POST['taglist']); $taglist = array_map('trim', $taglist); if (is_array($pic_ids)) { foreach ($pic_ids as $pic_id) { // which action should be performed ? switch ($_POST['TB_bulkaction']) { case 'no_action': // No action break; case 'overwrite_tags': // Overwrite tags wp_set_object_terms($pic_id, $taglist, 'ngg_tag'); break; case 'add_tags': // Add / append tags wp_set_object_terms($pic_id, $taglist, 'ngg_tag', TRUE); break; case 'delte_tags': // Delete tags $oldtags = wp_get_object_terms($pic_id, 'ngg_tag', 'fields=names'); // get the slugs, to vaoid case sensitive problems $slugarray = array_map('sanitize_title', $taglist); $oldtags = array_map('sanitize_title', $oldtags); // compare them and return the diff $newtags = array_diff($oldtags, $slugarray); wp_set_object_terms($pic_id, $newtags, 'ngg_tag'); break; } } nggGallery::show_message(__('Tags changed', "nggallery")); } } if (isset($_POST['updatepictures'])) { // Update pictures check_admin_referer('ngg_updategallery'); $gallery_title = attribute_escape($_POST['title']); $gallery_path = attribute_escape($_POST['path']); $gallery_desc = attribute_escape($_POST['gallerydesc']); $gallery_pageid = (int) $_POST['pageid']; $gallery_preview = (int) $_POST['previewpic']; $wpdb->query("UPDATE {$wpdb->nggallery} SET title= '{$gallery_title}', path= '{$gallery_path}', galdesc = '{$gallery_desc}', pageid = '{$gallery_pageid}', previewpic = '{$gallery_preview}' WHERE gid = '{$this->gid}'"); if (isset($_POST['author'])) { $gallery_author = (int) $_POST['author']; $wpdb->query("UPDATE {$wpdb->nggallery} SET author = '{$gallery_author}' WHERE gid = '{$this->gid}'"); } if ($this->showTags) { $this->update_tags(); } else { $this->update_pictures(); } //hook for other plugin to update the fields do_action('ngg_update_gallery', $this->gid, $_POST); nggGallery::show_message(__('Update successful', "nggallery")); } if (isset($_POST['scanfolder'])) { // Rescan folder check_admin_referer('ngg_updategallery'); $gallerypath = $wpdb->get_var("SELECT path FROM {$wpdb->nggallery} WHERE gid = '{$this->gid}' "); nggAdmin::import_gallery($gallerypath); } if (isset($_POST['addnewpage'])) { // Add a new page check_admin_referer('ngg_updategallery'); $parent_id = attribute_escape($_POST['parent_id']); $gallery_title = attribute_escape($_POST['title']); $gallery_name = $wpdb->get_var("SELECT name FROM {$wpdb->nggallery} WHERE gid = '{$this->gid}' "); // Create a WP page global $user_ID; $page['post_type'] = 'page'; $page['post_content'] = '[nggallery id=' . $this->gid . ']'; $page['post_parent'] = $parent_id; $page['post_author'] = $user_ID; $page['post_status'] = 'publish'; $page['post_title'] = $gallery_title == '' ? $gallery_name : $gallery_title; $gallery_pageid = wp_insert_post($page); if ($gallery_pageid != 0) { $result = $wpdb->query("UPDATE {$wpdb->nggallery} SET title= '{$gallery_title}', pageid = '{$gallery_pageid}' WHERE gid = '{$this->gid}'"); nggGallery::show_message(__('New gallery page ID', 'nggallery') . ' ' . $pageid . ' -> <strong>' . $gallery_title . '</strong> ' . __('created', 'nggallery')); } } if (isset($_POST['backToGallery'])) { $this->mode = 'edit'; } // show sort order if (isset($_POST['sortGallery'])) { $this->mode = 'sort'; } }
/** * Add images to database * * @class nggAdmin * @param int $galleryID * @param array $imageslist * @return array $image_ids Id's which are sucessful added */ function add_Images($galleryID, $imageslist) { global $wpdb; $image_ids = array(); if (is_array($imageslist)) { foreach ($imageslist as $picture) { // strip off the extension of the filename $path_parts = pathinfo($picture); $alttext = !isset($path_parts['filename']) ? substr($path_parts['basename'], 0, strpos($path_parts['basename'], '.')) : $path_parts['filename']; // save it to the database $result = $wpdb->query($wpdb->prepare("INSERT INTO {$wpdb->nggpictures} (galleryid, filename, alttext, exclude) VALUES (%s, %s, %s, 0)", $galleryID, $picture, $alttext)); // and give me the new id $pic_id = (int) $wpdb->insert_id; if ($result) { $image_ids[] = $pic_id; } // add the metadata nggAdmin::import_MetaData($pic_id); // auto rotate nggAdmin::rotate_image($pic_id); // action hook for post process after the image is added to the database $image = array('id' => $pic_id, 'filename' => $picture, 'galleryID' => $galleryID); do_action('ngg_added_new_image', $image); } } // is_array return $image_ids; }