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']); $plugin_id = isset($_REQUEST['plugin_id']) ? html::sanitizeURL($_REQUEST['plugin_id']) : ''; $page_url_params = array('popup' => $popup,'post_id' => $post_id); $media_page_url_params = array('popup' => $popup,'post_id' => $post_id); if ($plugin_id != '') { $page_url_params['plugin_id'] = $plugin_id; $media_page_url_params['plugin_id'] = $plugin_id; } $id = !empty($_REQUEST['id']) ? (integer) $_REQUEST['id'] : ''; if ($id != '') { $page_url_params ['id'] = $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.')); $core->adminurl->redirect('admin.media.item',$page_url_params); } 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.')); $page_url_params['tab'] = 'media-details-tab'; $core->adminurl->redirect('admin.media.item',$page_url_params); } 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.')); $page_url_params['tab'] = 'media-details-tab'; $core->adminurl->redirect('admin.media.item',$page_url_params); } 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.')); $media_page_url_params['d'] = $unzip_dir; $core->adminurl->redirect('admin.media',$media_page_url_params); } 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.')); $core->adminurl->redirect('admin.media.item',$page_url_params); } # Function to get image title based on meta function dcGetImageTitle($file,$pattern,$dto_first=false,$no_date_alone=false) { $res = array(); $pattern = preg_split('/\s*;;\s*/',$pattern); $sep = ', '; $dates = 0; $items = 0; foreach ($pattern as $v) { if ($v == 'Title') { if ($file->media_title != '') { $res[] = $file->media_title; } $items++; } elseif ($file->media_meta->{$v}) { if ((string) $file->media_meta->{$v} != '') { $res[] = (string) $file->media_meta->{$v}; } $items++; } 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); } $items++; $dates++; } elseif (preg_match('/^DateTimeOriginal\((.+?)\)$/u',$v,$m) && $file->media_meta->DateTimeOriginal) { $res[] = dt::dt2str($m[1],(string) $file->media_meta->DateTimeOriginal); $items++; $dates++; } elseif (preg_match('/^separator\((.*?)\)$/u',$v,$m)) { $sep = $m[1]; } } if ($no_date_alone && $dates == count($res) && $dates < $items) { // On ne laisse pas les dates seules, sauf si ce sont les seuls items du pattern (hors séparateur) return ''; } return implode($sep,$res); } /* DISPLAY Main page -------------------------------------------------------- */ $starting_scripts = '". dcPage::jsLoad('js/_media_item.js'); if ($popup && !empty($plugin_id)) { $starting_scripts .= $core->callBehavior('adminPopupMedia', $plugin_id); } $temp_params = $media_page_url_params; $temp_params['d']='%s'; $bc_template = $core->adminurl->get('admin.media',$temp_params,'&',true); $temp_params['d']=''; $home_url=$core->adminurl->get('admin.media',$temp_params); 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') => $home_url, $core->media->breadCrumb($bc_template).''.$file->basename.'' => '' ), array( 'home_link' => !$popup, 'hl' => false ) ) ); if ($popup) { // Display notices echo dcPage::notices(); } 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.')); } # Get major file type (first part of mime type) $file_type = explode('/',$file->type); # Insertion popup if ($popup) { $media_desc = $file->media_title; echo '