blog->getPosts(array('post_id'=>$post_id)); if ($post->isEmpty()) { $post_id = null; } $post_title = $post->post_title; unset($post); } $file = null; $popup = (integer) !empty($_GET['popup']); $page_url = 'media_item.php?popup='.$popup.'&post_id='.$post_id; $media_page_url = 'media.php?popup='.$popup.'&post_id='.$post_id; $id = !empty($_REQUEST['id']) ? (integer) $_REQUEST['id'] : ''; if ($popup) { $open_f = array('dcPage','openPopup'); $close_f = array('dcPage','closePopup'); } else { $open_f = array('dcPage','open'); $close_f = create_function('',"dcPage::helpBlock('core_media'); dcPage::close();"); } $core_media_writable = false; try { $core->media = new dcMedia($core); if ($id) { $file = $core->media->getFile($id); } if ($file === null) { throw new Exception(__('Not a valid file')); } $core->media->chdir(dirname($file->relname)); $core_media_writable = $core->media->writable(); # Prepare directories combo box $dirs_combo = array(); foreach ($core->media->getDBDirs() as $v) { $dirs_combo['/'.$v] = $v; } # Add parent and direct childs directories if any $core->media->getFSDir(); foreach ($core->media->dir['dirs'] as $k => $v) { $dirs_combo['/'.$v->relname] = $v->relname; } ksort($dirs_combo); } catch (Exception $e) { $core->error->add($e->getMessage()); } # Upload a new file if ($file && !empty($_FILES['upfile']) && $file->editable && $core_media_writable) { try { files::uploadStatus($_FILES['upfile']); $core->media->uploadFile($_FILES['upfile']['tmp_name'],$file->basename,null,false,true); dcPage::addSuccessNotice(__('File has been successfully updated.')); http::redirect($page_url.'&id='.$id); } catch (Exception $e) { $core->error->add($e->getMessage()); } } # Update file if ($file && !empty($_POST['media_file']) && $file->editable && $core_media_writable) { $newFile = clone $file; $newFile->basename = $_POST['media_file']; if ($_POST['media_path']) { $newFile->dir = $_POST['media_path']; $newFile->relname = $_POST['media_path'].'/'.$newFile->basename; } else { $newFile->dir = ''; $newFile->relname = $newFile->basename; } $newFile->media_title = $_POST['media_title']; $newFile->media_dt = strtotime($_POST['media_dt']); $newFile->media_dtstr = $_POST['media_dt']; $newFile->media_priv = !empty($_POST['media_private']); try { $core->media->updateFile($file,$newFile); dcPage::addSuccessNotice(__('File has been successfully updated.')); http::redirect($page_url.'&id='.$id.'&tab=media-details-tab'); } catch (Exception $e) { $core->error->add($e->getMessage()); } } # Update thumbnails if (!empty($_POST['thumbs']) && $file->media_type == 'image' && $file->editable && $core_media_writable) { try { $foo = null; $core->media->mediaFireRecreateEvent($file); dcPage::addSuccessNotice(__('Thumbnails have been successfully updated.')); http::redirect($page_url.'&id='.$id.'&tab=media-details-tab'); } catch (Exception $e) { $core->error->add($e->getMessage()); } } # Unzip file if (!empty($_POST['unzip']) && $file->type == 'application/zip' && $file->editable && $core_media_writable) { try { $unzip_dir = $core->media->inflateZipFile($file,$_POST['inflate_mode'] == 'new'); dcPage::addSuccessNotice(__('Zip file has been successfully extracted.')); http::redirect($media_page_url.'&d='.$unzip_dir); } catch (Exception $e) { $core->error->add($e->getMessage()); } } # Save media insertion settings for the blog if (!empty($_POST['save_blog_prefs'])) { if (!empty($_POST['pref_src'])) { foreach (array_reverse($file->media_thumb) as $s => $v) { if ($v == $_POST['pref_src']) { $core->blog->settings->system->put('media_img_default_size',$s); break; } } } if (!empty($_POST['pref_alignment'])) { $core->blog->settings->system->put('media_img_default_alignment',$_POST['pref_alignment']); } if (!empty($_POST['pref_insertion'])) { $core->blog->settings->system->put('media_img_default_link',($_POST['pref_insertion'] == 'link')); } dcPage::addSuccessNotice(__('Default media insertion settings have been successfully updated.')); http::redirect($page_url.'&id='.$id); } # Function to get image title based on meta function dcGetImageTitle($file,$pattern,$dto_first=false) { $res = array(); $pattern = preg_split('/\s*;;\s*/',$pattern); $sep = ', '; foreach ($pattern as $v) { if ($v == 'Title') { if ($file->media_title != '') { $res[] = $file->media_title; } } elseif ($file->media_meta->{$v}) { if ((string) $file->media_meta->{$v} != '') { $res[] = (string) $file->media_meta->{$v}; } } elseif (preg_match('/^Date\((.+?)\)$/u',$v,$m)) { if ($dto_first && ($file->media_meta->DateTimeOriginal != 0)) { $res[] = dt::dt2str($m[1],(string) $file->media_meta->DateTimeOriginal); } else { $res[] = dt::str($m[1],$file->media_dt); } } elseif (preg_match('/^DateTimeOriginal\((.+?)\)$/u',$v,$m) && $file->media_meta->DateTimeOriginal) { $res[] = dt::dt2str($m[1],(string) $file->media_meta->DateTimeOriginal); } elseif (preg_match('/^separator\((.*?)\)$/u',$v,$m)) { $sep = $m[1]; } } return implode($sep,$res); } /* DISPLAY Main page -------------------------------------------------------- */ $starting_scripts = '". dcPage::jsLoad('js/_media_item.js'); if ($popup) { $starting_scripts .= dcPage::jsLoad('js/jsToolBar/popup_media.js'); } call_user_func($open_f,__('Media manager'), $starting_scripts. dcPage::jsDatePicker(). ($popup ? dcPage::jsPageTabs($tab) : ''), dcPage::breadcrumb( array( html::escapeHTML($core->blog->name) => '', __('Media manager') => html::escapeURL($media_page_url).'&d=', $core->media->breadCrumb(html::escapeURL($media_page_url).'&d=%s').''.$file->basename.'' => '' ), array( 'home_link' => !$popup, 'hl' => false ) ) ); if ($file === null) { call_user_func($close_f); exit; } if (!empty($_GET['fupd']) || !empty($_GET['fupl'])) { dcPage::success(__('File has been successfully updated.')); } if (!empty($_GET['thumbupd'])) { dcPage::success(__('Thumbnails have been successfully updated.')); } if (!empty($_GET['blogprefupd'])) { dcPage::success(__('Default media insertion settings have been successfully updated.')); } # Insertion popup if ($popup) { $media_desc = $file->media_title; echo '