/** * Shows the HTML form to add/edit properties of uploaded media items * * @param array Associative array holding an array('image_id', 'target', 'created_thumbnail') that points to the uploaded media * @param int How many keyword checkboxes to display next to each other? * @param boolean Can existing data be modified? * @return boolean * */ function serendipity_showPropertyForm(&$new_media, $keywordsPerBlock = 3, $is_edit = true) { global $serendipity; if (!is_array($new_media) || count($new_media) < 1) { return true; } $mirror = array(); serendipity_checkPropertyAccess($new_media, $mirror, 'read'); $editform_hidden = ''; if (isset($GLOBALS['image_selector_addvars']) && is_array($GLOBALS['image_selector_addvars'])) { // These variables may come from serendipity_admin_image_selector.php to show embedded upload form foreach ($GLOBALS['image_selector_addvars'] as $imgsel_key => $imgsel_val) { $editform_hidden .= ' <input type="hidden" name="serendipity[' . htmlspecialchars($imgsel_key) . ']" value="' . htmlspecialchars($imgsel_val) . '" />' . "\n"; } } $dprops = explode(';', $serendipity['mediaProperties']); $keywords = explode(';', $serendipity['mediaKeywords']); $now = serendipity_serverOffsetHour(); $show = array(); foreach ($new_media as $idx => $media) { $props =& serendipity_fetchMediaProperties($media['image_id']); $show[$idx] =& $media['internal']; $show[$idx]['image_id'] = $media['image_id']; serendipity_prepareMedia($show[$idx]); if (!is_array($props['base_metadata'])) { $show[$idx]['metadata'] =& serendipity_getMetaData($show[$idx]['realfile'], $show[$idx]['header']); } else { $show[$idx]['metadata'] = $props['base_metadata']; serendipity_plugin_api::hook_event('media_getproperties_cached', $show[$idx]['metadata'], $show[$idx]['realfile']); } serendipity_parseMediaProperties($dprops, $keywords, $show[$idx], $props, $keywordsPerBlock, $is_edit); } $smarty_vars = array('is_edit' => $is_edit, 'editform_hidden' => $editform_hidden, 'keywordsPerBlock' => $keywordsPerBlock, 'keywords' => $keywords, 'dprops' => $dprops); return serendipity_showMedia($show, $mirror, $url, false, 1, false, $smarty_vars); }
break; case 'thumb': $showfile = $file['location']; break; } if (!empty($showfile) && file_exists($showfile)) { header('Content-Type: ' . $file['displaymime']); header('Content-Length: ' . filesize($showfile)); header('Content-Disposition: ' . ($serendipity['GET']['disposition'] == 'attachment' ? 'attachment' : 'inline') . '; filename=' . basename($showfile)); $fp = fopen($showfile, 'rb'); fpassthru($fp); exit; } $media['file']['props'] =& serendipity_fetchMediaProperties((int) $serendipity['GET']['image']); serendipity_plugin_api::hook_event('media_getproperties_cached', $media['file']['props']['base_metadata'], $media['file']['realfile']); serendipity_parseMediaProperties($keywords, $dprops, $media['file'], $media['file']['props'], 0, false); serendipity_plugin_api::hook_event('frontend_media_showitem', $media); if ($media['perm_denied']) { unset($media['file']); unset($file); } $showFile = 'admin/media_showitem.tpl'; break; case 'start': $media['case'] = 'start'; break; case 'default': default: if (!empty($serendipity['GET']['adminAction']) && $serendipity['GET']['adminModule'] == 'images' && $serendipity['GET']['adminAction'] != 'default') { // Might need to set $serendipity['adminFile_redirect'] here. $serendipity['adminFile'] = 'serendipity_admin_image_selector.php';