Changeset 2979 for trunk/wp-admin/image-uploading.php
- Timestamp:
- 11/01/2005 09:28:03 PM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/wp-admin/image-uploading.php
r2967 r2979 6 6 die(__('You do not have permission to edit posts.')); 7 7 8 $wpvarstoreset = array('action', 'post', 'all', 'last', 'link', 'sort', 'start', 'imgtitle', 'descr', 'object' );8 $wpvarstoreset = array('action', 'post', 'all', 'last', 'link', 'sort', 'start', 'imgtitle', 'descr', 'object', 'flickrtag'); 9 9 10 10 for ($i=0; $i<count($wpvarstoreset); $i += 1) { … … 27 27 28 28 function get_udims($width, $height) { 29 if ( $height < 96 && $width <128 )29 if ( $height <= 96 && $width <= 128 ) 30 30 return array($width, $height); 31 31 elseif ( $width / $height > 4 / 3 ) … … 45 45 case 'save': 46 46 47 // Define acceptable image extentions/types here. Tests will apply strtolower(). 48 $exts = array('gif' => IMAGETYPE_GIF, 'jpg' => IMAGETYPE_JPEG, 'png' => IMAGETYPE_PNG); 49 50 // Define the error messages for bad uploads. 51 $upload_err = array(false, 52 __("The uploaded file exceeds the <code>upload_max_filesize</code> directive in <code>php.ini</code>."), 53 __("The uploaded file exceeds the <em>MAX_FILE_SIZE</em> directive that was specified in the HTML form."), 54 __("The uploaded file was only partially uploaded."), 55 __("No file was uploaded."), 56 __("Missing a temporary folder."), 57 __("Failed to write file to disk.")); 58 59 $iuerror = false; 60 61 // Failing any single one of the following tests is fatal. 62 63 // A correct form post will pass this test. 64 if ( !isset($_POST['action']) || $_POST['action'] != 'save' || count($_FILES) != 1 || ! isset($_FILES['image']) || is_array($_FILES['image']['name']) ) 65 $error = __('Invalid form submission. Only submit approved forms.'); 66 67 // A successful upload will pass this test. 68 elseif ( $_FILES['image']['error'] > 0 ) 69 $error = $upload_err[$_FILES['image']['error']]; 70 71 // A non-empty file will pass this test. 72 elseif ( 0 == $_FILES['image']['size'] ) 73 $error = __('File is empty. Please upload something more substantial.'); 74 75 // A correct MIME category will pass this test. Full types are not consistent across browsers. 76 elseif ( ! 'image/' == substr($_FILES['image']['type'], 0, 6) ) 77 $error = __('Bad MIME type submitted by your browser.'); 78 79 // An acceptable file extension will pass this test. 80 elseif ( ! ( ( 0 !== preg_match('#\.?([^\.]*)$#', $_FILES['image']['name'], $matches) ) && ( $ext = strtolower($matches[1]) ) && array_key_exists($ext, $exts) ) ) 81 $error = __('Bad file extension.'); 82 83 // A valid uploaded file will pass this test. 84 elseif ( ! is_uploaded_file($_FILES['image']['tmp_name']) ) 85 $error = __('Bad temp file. Try renaming the file and uploading again.'); 86 87 // A valid image file will pass this test. 88 elseif ( function_exists('exif_imagetype') && $exts[$ext] != $imagetype = exif_imagetype($_FILES['image']['tmp_name']) ) 89 $error = __('Bad image file. Try again, or try recreating it.'); 90 91 // An image with at least one pixel will pass this test. 92 elseif ( ! ( ( $imagesize = getimagesize($_FILES['image']['tmp_name']) ) && $imagesize[0] > 1 && $imagesize[1] > 1 ) ) 93 $error = __('The image has no pixels. Isn\'t that odd?'); 94 95 // A writable uploads dir will pass this test. 96 elseif ( ! ( ( $uploads = wp_upload_dir() ) && false === $uploads['error'] ) ) 97 $error = $uploads['error']; 98 99 if ( $error ) 100 // Something wasn't right. Abort and never touch the temp file again. 101 die("$error <a href='".basename(__FILE__)."?action=upload&post=$post'>Back to Image Uploading</a>"); 102 103 // Increment the file number until we have a unique file to save in $dir 104 $number = ''; 105 $filename = $_FILES['image']['name']; 106 while ( file_exists($uploads['path'] . "/$filename") ) 107 $filename = str_replace("$number.$ext", ++$number . ".$ext", $filename); 108 109 // Move the file to the uploads dir 110 $file = $uploads['path'] . "/$filename"; 111 if ( false === move_uploaded_file($_FILES['image']['tmp_name'], $file) ) 112 die('The uploaded file could not be moved to $file.'); 113 chmod($file, 0666); // FIXME: Need to set this according to rw bits on parent dir. 114 115 // Compute the URL 116 $url = $uploads['url'] . "/$filename"; 47 $overrides = array('action'=>'save'); 48 49 $file = wp_handle_upload($_FILES['image'], $overrides); 50 51 if ( isset($file['error']) ) 52 die($file['error'] . '<a href="' . basename(__FILE__) . '?action=upload&post="' . $post . '">Back to Image Uploading</a>'); 53 54 $url = $file['url']; 55 $file = $file['file']; 56 $filename = basename($file); 117 57 118 58 // Construct the object array … … 142 82 if ( $imagedata['width'] * $imagedata['height'] < 3 * 1024 * 1024 ) { 143 83 if ( $imagedata['width'] > 128 && $imagedata['width'] >= $imagedata['height'] * 4 / 3 ) 144 $error = wp_create_thumbnail($file , 128);84 $error = wp_create_thumbnail($file['file'], 128); 145 85 elseif ( $imagedata['height'] > 96 ) 146 86 $error = wp_create_thumbnail($file, 96); … … 261 201 break; 262 202 203 case 'flickr': 204 205 require_once ABSPATH . WPINC . '/class-snoopy.php'; 206 207 function flickr_api_call($method, $params = '') { 208 $api_key = '7cd7b7dea9c9d3069caf99d12471008e'; // An API key reserved for WordPress 209 $searchurl = 'http://www.flickr.com/services/rest/?method=' . $method . '&api_key=' . $api_key . '&' . $params; 210 $client = new Snoopy(); 211 $client->agent = 'WordPress/Flickr Browser'; 212 $client->read_timeout = 2; 213 $client->use_gzip = true; 214 @$client->fetch($searchurl); 215 return $client->results; 216 } 217 218 // How many images do we show? How many do we query? 219 $num = 5; 220 $double = $num * 2; 221 222 $flickr_user_id = get_user_option('flickr_userid'); 223 if($flickr_user_id == '') { 224 $flickr_username = get_user_option('flickr_username'); 225 $user_xml = flickr_api_call('flickr.people.findByUsername', "username={$flickr_username}"); 226 if(preg_match('/nsid="(.*?)">/', $user_xml, $matches)) { 227 $flickr_user_id = $matches[1]; 228 } 229 else die("Failed to find Flickr ID for '$flickr_username'"); // Oh, dear - no Flickr user_id! 230 231 // Store the found Flickr user_id in usermeta... 232 // Don't forget on the options page to update the user_id along with the username! 233 update_user_option($current_user->id, 'flickr_userid', $flickr_user_id, true); 234 } 235 236 // Fetch photo list from Flickr 237 $ustart = $start + 1; 238 //$photos_xml = flickr_api_call('flickr.photos.search', array('per_page' => $num, 'user_id' => $flickr_user_id)); 239 if($flickrtag == '') { 240 $all = '0'; 241 $photos_xml = flickr_api_call('flickr.people.getPublicPhotos', "per_page={$num}&user_id={$flickr_user_id}&page={$ustart}"); 242 } 243 else { 244 $photos_xml = flickr_api_call('flickr.photos.search', "per_page={$num}&user_id={$flickr_user_id}&page={$ustart}&tags={$flickrtag}"); 245 $all = '0&flickrtag=' . $flickrtag; 246 } 247 //echo "<pre>" . htmlentities($photos_xml) . "</pre>"; // Displays the XML returned by Flickr for the photo list 248 249 //Get Page Count 250 preg_match('/<photos.*pages="([0-9]+)"/', $photos_xml, $page_counta); 251 $page_count = $page_counta[1]; 252 if($page_count == 0) { 253 $back = false; 254 $next = false; 255 break; 256 } 257 if($start < $page_count) $next = $start + 1; else $next = false; 258 if($start > 0) $back = $start - 1; else $back = false; 259 if($last != '') { 260 $photos_xml = flickr_api_call('flickr.people.getPublicPhotos', "per_page={$num}&user_id={$flickr_user_id}&page={$page_count}"); 261 $back = $page_count -1; 262 $next = false; 263 } 264 265 //Get Photos 266 preg_match_all('/<photo.*?id="([0-9]+)".*?secret="([0-9a-f]+)".*?server="([0-9]+)".*?title="([^"]*)".*?\/>/', $photos_xml, $matches, PREG_SET_ORDER); 267 foreach($matches as $match) { 268 $img['post_title'] = $match[4]; 269 270 $sizes_xml = flickr_api_call('flickr.photos.getSizes', "photo_id={$match[1]}"); 271 preg_match_all('/<size.*?label="([^"]+)".*?width="([0-9]+)".*?height="([0-9]+)".*?source="([^"]+)".*?\/>/', $sizes_xml, $sizes, PREG_SET_ORDER); 272 273 $max_size = ''; 274 foreach($sizes as $size) { 275 $img_size[$size[1]]['width'] = $size[2]; 276 $img_size[$size[1]]['height'] = $size[3]; 277 $img_size[$size[1]]['url'] = $size[4]; 278 if($max_size == '' || $img_size[$size[1]]['width'] > $img_size[$max_size]['width']) { 279 $max_size = $size[1]; 280 } 281 } 282 283 $images[] = array( 284 'post_title' => $match[4], 285 'thumbnail' => $img_size['Thumbnail']['url'], 286 'full' => $img_size[$max_size]['url'], 287 'href' => "http://flickr.com/photos/{$flickr_user_id}/{$match[1]}/", 288 'width' => $img_size['Thumbnail']['width'], 289 'height' => $img_size['Thumbnail']['height'], 290 'size_info' => $img_size, 291 ); 292 } 293 294 $current_flickr = ' class="current"'; 295 296 $__use_size = __('Use %s'); 297 $__close = __('CLOSE'); 298 299 $images_script .= "var flickr_src = new Array();\n"; 300 301 $i=0; 302 foreach($images as $image) { 303 list($uwidth, $uheight) = get_udims($image['width'], $image['height']); 304 $xpadding = (128 - $uwidth) / 2; 305 $ypadding = (96 - $uheight) / 2; 306 $height_width = 'height="'.$uheight.'" width="'.$uwidth.'"'; 307 $images_style .= "#target$i img { padding: {$ypadding}px {$xpadding}px; }\n"; 308 $images_html .= " 309 <div id='target$i' class='imagewrap left'> 310 <div id='popup$i' class='popup'> 311 "; 312 313 $images_script .= "flickr_src[$i] = new Array();\n"; 314 foreach($image['size_info'] as $szkey => $size) { 315 $images_script .= "flickr_src[$i]['{$szkey}']= '{$size['url']}';\n"; 316 $use = sprintf($__use_size, $szkey); 317 $prefix = ($szkey == 'Thumbnail') ? '<strong>':''; 318 $postfix = ($szkey == 'Thumbnail') ? '</strong>':''; 319 $images_html .= "<a id=\"I{$i}_{$szkey}\" onclick=\"toggleSize($i,'$szkey');return false;\" href=\"javascript:void();\">{$prefix}{$use}{$postfix}</a>\n"; 320 } 321 $images_html .= " 322 <a onclick=\"popup.style.display='none';return false;\" href=\"javascript:void()\">$__close</a> 323 </div> 324 <a id=\"link$i\" class=\"imagelink\" href=\"{$image['href']}\" onclick=\"imagePopup($i);return false;\" title=\"{$image['post_title']}\"> 325 <img id=\"image$i\" src=\"{$image['thumbnail']}\" alt=\"{$image['post_title']}\" $height_width /> 326 </a> 327 </div> 328 "; 329 $i++; 330 } 331 332 $images_width = ( count($images) * 133 ) + 5; 333 334 break; 335 263 336 default: 264 337 die('This script was not meant to be called directly.'); … … 323 396 } 324 397 } 398 function toggleSize(n,sz) { 399 o = document.getElementById('image'+n); 400 oi = document.getElementById('popup'+n); 401 o.src = flickr_src[n][sz]; 402 if (!document.getElementsByTagName) return; 403 var anchors = document.getElementsByTagName("a"); 404 var re_id = 'I'+n+'_'; // /i[0-9]+_.+/i; 405 var re_strip = /<.*?>/i; 406 for (var i=0; i< anchors.length; i++) { 407 var anchor = anchors[i]; 408 if (anchor.getAttribute("href") && anchor.id.match(re_id)) 409 anchor.innerHTML = anchor.innerHTML.replace(re_strip, ''); 410 } 411 var anchor = document.getElementById('I'+n+'_'+sz); 412 anchor.innerHTML = '<strong>' + anchor.innerHTML + '</strong>'; 413 } 325 414 </script> 326 415 <style type="text/css"> … … 348 437 padding: 5px 15px; 349 438 height: 96px; 439 white-space: nowrap; 350 440 width: <?php echo $images_width; ?>px; 351 441 } … … 356 446 .imagewrap { 357 447 margin-right: 5px; 448 height: 96px; 449 overflow: hidden; 358 450 } 359 451 .imagewrap * { … … 365 457 text-decoration: none; 366 458 float: left; 367 display: block; 459 /*display: block;*/ 368 460 text-align: center; 369 461 } … … 456 548 color: #000; 457 549 } 550 #flickrtags { 551 display: inline; 552 } 553 #flickrtags input { 554 border:0px; 555 } 556 input#flickrtag { 557 background-color: white; 558 color: black; 559 width:65px; 560 } 561 input#flickrsubmit { 562 background-color: #dfe8f1; 563 color: black; 564 } 458 565 </style> 459 566 </head> … … 461 568 <ul id="menu"> 462 569 <li<?php echo $current_1; ?>><a href="image-uploading.php?action=upload&post=<?php echo $post; ?>&all=<?php echo $all; ?>">Upload Photo</a></li> 570 <li<?php echo $current_flickr; ?>><a href="image-uploading.php?action=flickr&post=<?php echo $post; ?>">Browse Flickr</a></li> 463 571 <li<?php echo $current_2; ?>><a href="image-uploading.php?action=view&post=<?php echo $post; ?>">Browse Attached</a></li> 464 572 <li<?php echo $current_3; ?>><a href="image-uploading.php?action=view&post=<?php echo $post; ?>&all=true">Browse All</a></li> 465 573 <li> </li> 466 574 <?php if ( false !== $back ) : ?> 467 <li class="spacer"><a href="image-uploading.php?action= view&post=<?php echo $post; ?>&all=<?php echo $all; ?>&start=0" title="First">|<</a></li>468 <li><a href="image-uploading.php?action= view&post=<?php echo $post; ?>&all=<?php echo $all; ?>&start=<?php echo $back; ?>" title="Back"><<</a></li>575 <li class="spacer"><a href="image-uploading.php?action=<?php echo $action; ?>&post=<?php echo $post; ?>&all=<?php echo $all; ?>&start=0" title="First">|<</a></li> 576 <li><a href="image-uploading.php?action=<?php echo $action; ?>&post=<?php echo $post; ?>&all=<?php echo $all; ?>&start=<?php echo $back; ?>" title="Back"><<</a></li> 469 577 <?php else : ?> 470 578 <li class="inactive spacer">|<</li> 471 579 <li class="inactive"><<</li> 472 580 <?php endif; ?> 581 582 <?php if($action == 'flickr') : ?> 583 <form id="flickrtags" method="get"><?php echo sprintf(__('Tag: %s'), '<input type="text" id="flickrtag" name="flickrtag" value="' . $flickrtag . '" />'); ?><input id="flickrsubmit" type="submit" value="Filter" /><?php 584 parse_str($_SERVER['QUERY_STRING'], $formquery); 585 foreach($formquery as $k=>$v) if($k!='flickrtag') echo "<input type=\"hidden\" name=\"$k\" value=\"$v\" />"; 586 ?></form> 587 <?php endif; ?> 588 473 589 <?php if ( false !== $next ) : ?> 474 <li><a href="image-uploading.php?action= view&post=<?php echo $post; ?>&all=<?php echo $all; ?>&start=<?php echo $next; ?>" title="Next">>></a></li>475 <li><a href="image-uploading.php?action= view&post=<?php echo $post; ?>&all=<?php echo $all; ?>&last=true" title="Last">>|</a></li>590 <li><a href="image-uploading.php?action=<?php echo $action; ?>&post=<?php echo $post; ?>&all=<?php echo $all; ?>&start=<?php echo $next; ?>" title="Next">>></a></li> 591 <li><a href="image-uploading.php?action=<?php echo $action; ?>&post=<?php echo $post; ?>&all=<?php echo $all; ?>&last=true" title="Last">>|</a></li> 476 592 <?php else : ?> 477 593 <li class="inactive">>></li> … … 479 595 <?php endif; ?> 480 596 </ul> 481 <?php if ( $action == 'view' ) : ?>482 <span class="left tip"> Drag and drop photos to post</span>483 <span class="right tip"> Click photos for more options</span>597 <?php if ( $action == 'view' || $action == 'flickr' ) : ?> 598 <span class="left tip"><?php _e('Drag and drop photos to post'); ?></span> 599 <span class="right tip"><?php _e('Click photos for more options'); ?></span> 484 600 <div id="wrap"> 485 601 <div id="images"> … … 487 603 </div> 488 604 </div> 489 <?php elseif ( $action = 'upload' ) : ?>605 <?php elseif ( $action == 'upload' ) : ?> 490 606 <div class="center tip">Duplicated filenames will be numbered (photo.jpg, photo1.jpg, etc.)</div> 491 607 <form enctype="multipart/form-data" id="uploadForm" method="POST" action="image-uploading.php" onsubmit="return validateImageName()"> … … 504 620 </body> 505 621 </html> 622 623 624
Note: See TracChangeset
for help on using the changeset viewer.