Пример #1
0
 /**
  * Parse the single image shortcode and return all images into an array
  * 
  * @param array $atts
  * @return
  */
 function add_images($atts)
 {
     extract(shortcode_atts(array('id' => 0), $atts));
     // make an array out of the ids (for thumbs shortcode))
     $pids = explode(',', $id);
     // Some error checks
     if (count($pids) == 0) {
         return;
     }
     $images = nggdb::find_images_in_list($pids);
     foreach ($images as $image) {
         $src = $image->imageURL;
         $newimage = array();
         if (!empty($image->title)) {
             $newimage['title'] = $image->title;
         }
         if (!empty($image->alttext)) {
             $newimage['alt'] = $image->alttext;
         }
         $this->images[$src] = $newimage;
     }
     return;
 }
Пример #2
0
 /**
  * Copy images to another gallery
  * 
  * @class nggAdmin
  * @param array|int $pic_ids ID's of the images
  * @param int $dest_gid destination gallery
  * @return void
  */
 function copy_images($pic_ids, $dest_gid)
 {
     require_once NGGALLERY_ABSPATH . '/lib/meta.php';
     $errors = $messages = '';
     if (!is_array($pic_ids)) {
         $pic_ids = array($pic_ids);
     }
     // Get destination gallery
     $destination = nggdb::find_gallery($dest_gid);
     if ($destination == null) {
         nggGallery::show_error(__('The destination gallery does not exist', 'nggallery'));
         return;
     }
     // Check for folder permission
     if (!is_writeable(WINABSPATH . $destination->path)) {
         $message = sprintf(__('Unable to write to directory %s. Is this directory writable by the server?', 'nggallery'), WINABSPATH . $destination->path);
         nggGallery::show_error($message);
         return;
     }
     // Get pictures
     $images = nggdb::find_images_in_list($pic_ids);
     $destination_path = WINABSPATH . $destination->path;
     foreach ($images as $image) {
         // WPMU action
         if (nggWPMU::check_quota()) {
             return;
         }
         $i = 0;
         $tmp_prefix = '';
         $destination_file_name = $image->filename;
         while (file_exists($destination_path . '/' . $destination_file_name)) {
             $tmp_prefix = 'copy_' . $i++ . '_';
             $destination_file_name = $tmp_prefix . $image->filename;
         }
         $destination_file_path = $destination_path . '/' . $destination_file_name;
         $destination_thumb_file_path = $destination_path . '/' . $image->thumbFolder . $image->thumbPrefix . $destination_file_name;
         // Copy files
         if (!@copy($image->imagePath, $destination_file_path)) {
             $errors .= sprintf(__('Failed to copy image %1$s to %2$s', 'nggallery'), $image->filename, $destination_file_path) . '<br />';
             continue;
         }
         // Copy backup file, if possible
         @copy($image->imagePath . '_backup', $destination_file_path . '_backup');
         // Copy the thumbnail if possible
         @copy($image->thumbPath, $destination_thumb_file_path);
         // Create new database entry for the image
         $new_pid = nggdb::insert_image($destination->gid, $destination_file_name, $image->alttext, $image->description, $image->exclude);
         if (!isset($new_pid)) {
             $errors .= sprintf(__('Failed to copy database row for picture %s', 'nggallery'), $image->pid) . '<br />';
             continue;
         }
         // Copy tags
         nggTags::copy_tags($image->pid, $new_pid);
         // Copy meta information
         $meta = new nggMeta($image->pid);
         nggdb::update_image_meta($new_pid, $meta->image->meta_data);
         if ($tmp_prefix != '') {
             $messages .= sprintf(__('Image %1$s (%2$s) copied as image %3$s (%4$s) &raquo; The file already existed in the destination gallery.', 'nggallery'), $image->pid, $image->filename, $new_pid, $destination_file_name) . '<br />';
         } else {
             $messages .= sprintf(__('Image %1$s (%2$s) copied as image %3$s (%4$s)', 'nggallery'), $image->pid, $image->filename, $new_pid, $destination_file_name) . '<br />';
         }
     }
     // Finish by showing errors or success
     if ($errors == '') {
         $link = '<a href="' . admin_url() . 'admin.php?page=nggallery-manage-gallery&mode=edit&gid=' . $destination->gid . '" >' . $destination->title . '</a>';
         $messages .= '<hr />' . sprintf(__('Copied %1$s picture(s) to gallery: %2$s .', 'nggallery'), count($images), $link);
     }
     if ($messages != '') {
         nggGallery::show_message($messages);
     }
     if ($errors != '') {
         nggGallery::show_error($errors);
     }
     return;
 }
Пример #3
0
 /**
  * Function to show a thumbnail or a set of thumbnails with shortcode of type:
  * 
  * [thumb id="1,2,4,5,..." template="filename" /]
  * where 
  * - id is one or more picture ids
  * - template is a name for a gallery template, which is located in themefolder/nggallery or plugins/nextgen-gallery/view
  * 
  * @param array $atts
  * @return the_content
  */
 function show_thumbs($atts)
 {
     extract(shortcode_atts(array('id' => '', 'template' => ''), $atts));
     // make an array out of the ids
     $pids = explode(',', $id);
     // Some error checks
     if (count($pids) == 0) {
         return __('[Pictures not found]', 'nggallery');
     }
     $picturelist = nggdb::find_images_in_list($pids);
     // show gallery
     if (is_array($picturelist)) {
         $out = nggCreateGallery($picturelist, false, $template);
     }
     return $out;
 }
Пример #4
0
 /**
  * nggTags::find_images_for_tags()
  *
  * @param mixed $taglist
  * @param string $mode could be 'ASC' or 'RAND'
  * @return array of images
  */
 function find_images_for_tags($taglist, $mode = "ASC")
 {
     // return the images based on the tag
     global $wpdb;
     // extract it into a array
     $taglist = explode(",", $taglist);
     if (!is_array($taglist)) {
         $taglist = array($taglist);
     }
     $taglist = array_map('trim', $taglist);
     $new_slugarray = array_map('sanitize_title', $taglist);
     $sluglist = "'" . implode("', '", $new_slugarray) . "'";
     //Treat % as a litteral in the database, for unicode support
     $sluglist = str_replace("%", "%%", $sluglist);
     // first get all $term_ids with this tag
     $term_ids = $wpdb->get_col($wpdb->prepare("SELECT term_id FROM {$wpdb->terms} WHERE slug IN ({$sluglist}) ORDER BY term_id ASC ", NULL));
     $picids = get_objects_in_term($term_ids, 'ngg_tag');
     //Now lookup in the database
     if ($mode == 'RAND') {
         $pictures = nggdb::find_images_in_list($picids, true, 'RAND');
     } else {
         $pictures = nggdb::find_images_in_list($picids, true, 'ASC');
     }
     return $pictures;
 }
Пример #5
0
 /**
  * nggTags::find_images_for_tags()
  * 20140120: Mode DESC added.
  * 20140611:Dropped use of wpdb->prepare since single quotes are scaped.
  * @param mixed $taglist
  * @param string $sorting could be 'ASC' or 'RAND' or 'DESC'
  * @return array of images
  */
 static function find_images_for_tags($taglist, $sorting = "ASC")
 {
     // return the images based on the tag
     global $wpdb;
     $modes = array('ASC', 'DESC', 'RAND');
     //Sanitize & standarize list
     $sluglist = self::sanitize_taglist($taglist);
     // first get all $term_ids with this tag
     //Fix for WP 3.9 . See http://make.wordpress.org/core/2012/12/12/php-warning-missing-argument-2-for-wpdb-prepare/
     $prepared = "SELECT term_id FROM {$wpdb->terms} WHERE slug IN ({$sluglist}) ORDER BY term_id ASC ";
     $term_ids = $wpdb->get_col($prepared);
     //Get the objects related with the taxonomy defined by NextCellent
     $picids = get_objects_in_term($term_ids, 'ngg_tag');
     //Now lookup in the database
     $sorting = in_array($sorting, $modes) ? $sorting : 'ASC';
     $pictures = nggdb::find_images_in_list($picids, true, $sorting);
     return $pictures;
 }
Пример #6
0
<?php

//引入图片插件入口文件
require_once './wp-content/plugins/nextgen-gallery/ngg-config.php';
require_once './inc/php/cfg.php';
if (!empty($_GET['tagid'])) {
    $pids = get_objects_in_term($_GET['tagid'], 'ngg_tag');
    $tag = get_term($_GET['tagid'], 'ngg_tag');
    //var_dump($tag);
    $fotos = nggdb::find_images_in_list($pids, false, 'DESC');
    if (empty($fotos)) {
        header('Location: /tags.php');
    }
    //页面title
    $page_title = empty($_GET['tag']) ? $cfg['sitename'] : $_GET['tag'];
    $title = $page_title . $cfg['sitetitle'];
} else {
    header('Location: /tags.php');
}
//输出keywords
$keywords = $_GET['tag'] . ',' . $cfg['keywords'];
//输出description
$description = $cfg['description'];
//输出canonical
$canonical = canonical($tag->term_id, $tag->slug);
require_once './inc/html/head.html';
?>
<div id='main'>
<?php 
foreach ($fotos as $foto) {
    ?>