diff --git a/code/AssetAdmin.php b/code/AssetAdmin.php index 24ef7156..0a3e8d9a 100755 --- a/code/AssetAdmin.php +++ b/code/AssetAdmin.php @@ -14,7 +14,7 @@ class AssetAdmin extends LeftAndMain { static $menu_title = 'Files & Images'; - public static $tree_class = "File"; + public static $tree_class = 'File'; /** * @see Upload->allowedMaxFileSize @@ -150,7 +150,6 @@ class AssetAdmin extends LeftAndMain { $form->disableSecurityToken(); return $form; - } /** @@ -218,7 +217,6 @@ class AssetAdmin extends LeftAndMain { $status = ""; } - $fileIDs = array(); $fileNames = array(); foreach($newFiles as $newFile) { @@ -244,11 +242,6 @@ class AssetAdmin extends LeftAndMain { HTML; } - /** - * Needs to be overridden to make sure an ID with value "0" is still valid (rootfolder) - */ - - /** * Return the form that displays the details of a folder, including a file list and fields for editing the folder name. */ @@ -261,11 +254,10 @@ HTML; if($record) { $fields = $record->getCMSFields(); - $actions = new FieldSet(); // Only show save button if not 'assets' folder - if( $record->canEdit() && $id != "root") { + if($record->canEdit() && $id != 'root') { $actions = new FieldSet( new FormAction('save',_t('AssetAdmin.SAVEFOLDERNAME','Save folder name')) ); @@ -281,11 +273,11 @@ HTML; )); } - if( !$record->canEdit() ) + if(!$record->canEdit()) { $form->makeReadonly(); + } return $form; - } } @@ -304,8 +296,8 @@ HTML; if($files) { foreach($files as $file) { if($file instanceof Image) { - $file->deleteFormattedImages(); - } + $file->deleteFormattedImages(); + } $file->ParentID = $destFolderID; $file->write(); $numFiles++; @@ -316,11 +308,13 @@ HTML; } $message = sprintf(_t('AssetAdmin.MOVEDX','Moved %s files'),$numFiles); + FormResponse::status_message($message, "good"); FormResponse::add("$('Form_EditForm').getPageFromServer($('Form_EditForm_ID').value)"); + return FormResponse::respond(); } else { - user_error("Bad data: $_REQUEST[DestFolderID]", E_USER_ERROR); + user_error('Bad data:' . $_REQUEST['DestFolderID'], E_USER_ERROR); } } @@ -329,54 +323,53 @@ HTML; * Called and returns in same way as 'save' function */ public function deletemarked($urlParams, $form) { - $fileList = "'" . ereg_replace(' *, *',"','",trim(addslashes($_REQUEST['FileIDs']))) . "'"; - $numFiles = 0; - $folderID = 0; - $deleteList = ''; - $brokenPageList = ''; - - if($fileList != "''") { - $files = DataObject::get("File", "`File`.ID IN ($fileList)"); - if($files) { - foreach($files as $file) { - if($file instanceof Image) { - $file->deleteFormattedImages(); - } - if( !$folderID ) - $folderID = $file->ParentID; - - // $deleteList .= "\$('Form_EditForm_Files').removeById($file->ID);\n"; - $file->delete(); - $numFiles++; + $fileList = "'" . ereg_replace(' *, *',"','",trim(addslashes($_REQUEST['FileIDs']))) . "'"; + $numFiles = 0; + $folderID = 0; + $deleteList = ''; + $brokenPageList = ''; + + if($fileList != "''") { + $files = DataObject::get('File', "`File`.ID IN ($fileList)"); + if($files) { + foreach($files as $file) { + if($file instanceof Image) { + $file->deleteFormattedImages(); } - if($brokenPages = Notifications::getItems("BrokenLink")) { - $brokenPageList = " ". _t('AssetAdmin.NOWBROKEN',"These pages now have broken links:").""; - foreach($brokenPages as $brokenPage) { - $brokenPageList .= "
  • " . $brokenPage->Breadcrumbs(3, true) . "
  • "; - } - $brokenPageList .= ""; - Notifications::notifyByEmail("BrokenLink", "Page_BrokenLinkEmail"); - } else { - $brokenPageList = ''; + if(!$folderID) { + $folderID = $file->ParentID; } - - $deleteList = ''; - if( $folderID ) { - $remaining = DB::query("SELECT COUNT(*) FROM `File` WHERE `ParentID`=$folderID")->value(); - - if( !$remaining ) - $deleteList .= "Element.removeClassName(\$('sitetree').getTreeNodeByIdx( '$folderID' ).getElementsByTagName('a')[0],'contents');"; - } - - } else { - user_error("No files in $fileList could be found!", E_USER_ERROR); + $file->delete(); + $numFiles++; } + if($brokenPages = Notifications::getItems('BrokenLink')) { + $brokenPageList = " ". _t('AssetAdmin.NOWBROKEN', 'These pages now have broken links:') . ''; + foreach($brokenPages as $brokenPage) { + $brokenPageList .= "
  • " . $brokenPage->Breadcrumbs(3, true) . '
  • '; + } + $brokenPageList .= ''; + Notifications::notifyByEmail("BrokenLink", "Page_BrokenLinkEmail"); + } else { + $brokenPageList = ''; + } + + $deleteList = ''; + if($folderID) { + $remaining = DB::query("SELECT COUNT(*) FROM `File` WHERE `ParentID`=$folderID")->value(); + if(!$remaining) $deleteList .= "Element.removeClassName(\$('sitetree').getTreeNodeByIdx('$folderID').getElementsByTagName('a')[0],'contents');"; + } + } else { + user_error("No files in $fileList could be found!", E_USER_ERROR); } - $message = sprintf(_t('AssetAdmin.DELETEDX',"Deleted %s files.%s"),$numFiles,$brokenPageList) ; - FormResponse::add($deleteList); - FormResponse::status_message($message, "good"); - FormResponse::add("$('Form_EditForm').getPageFromServer($('Form_EditForm_ID').value)"); - return FormResponse::respond(); + } + + $message = sprintf(_t('AssetAdmin.DELETEDX',"Deleted %s files.%s"),$numFiles,$brokenPageList) ; + + FormResponse::add($deleteList); + FormResponse::status_message($message, "good"); + FormResponse::add("$('Form_EditForm').getPageFromServer($('Form_EditForm_ID').value)"); + + return FormResponse::respond(); } @@ -518,21 +511,15 @@ JS; */ public function returnItemToUser($p) { if($_REQUEST['ajax']) { - $parentID = (int)$p->ParentID; + $parentID = (int) $p->ParentID; return <<ID, "$p->Title", "$p->class"); - tree.getTreeNodeByIdx($parentID).appendTreeNode(newNode); - newNode.selectTreeNode(); JS; - } else { - Director::redirectBack(); - } } @@ -546,90 +533,35 @@ JS; foreach($ids as $id) { if(is_numeric($id)) { - $record = DataObject::get_by_id($this->stat('tree_class'), $id); - -if(!$record) - + if(!$record) { Debug::message( "Record appears to be null" ); - - - - /*if($record->hasMethod('BackLinkTracking')) { - $brokenPages = $record->BackLinkTracking(); - - foreach($brokenPages as $brokenPage) { - - $brokenPageList .= "
  • " . $brokenPage->Breadcrumbs(3, true) . "
  • "; - - $brokenPage->HasBrokenLink = true; - - $notifications[$brokenPage->OwnerID][] = $brokenPage; - - $brokenPage->write(); - - } - - }*/ - + } $record->delete(); $record->destroy(); - - - // DataObject::delete_by_id($this->stat('tree_class'), $id); - $script .= $this->deleteTreeNodeJS($record); - } - } - - - -/*if($notifications) foreach($notifications as $memberID => $pages) { - - $email = new Page_BrokenLinkEmail(); - - $email->populateTemplate(new ArrayData(array( - - "Recipient" => DataObject::get_by_id("Member", $memberID), - - "BrokenPages" => new DataObjectSet($pages), - - ))); - - $email->debug(); - - $email->send(); - - }*/ - - - /* - $s = (sizeof($ids) > 1) ? "s" :""; - - $message = sizeof($ids) . " folder$s deleted."; - // - if(isset($brokenPageList)) $message .= " The following pages now have broken links:Their owners have been emailed and they will fix up those pages."; - */ $size = sizeof($ids); - if($size > 1) + if($size > 1) { $message = $size.' '._t('AssetAdmin.FOLDERSDELETED', 'folders deleted.'); - else + } else { $message = $size.' '._t('AssetAdmin.FOLDERDELETED', 'folder deleted.'); + } - if(isset($brokenPageList)) + if(isset($brokenPageList)) { $message .= ' '._t('AssetAdmin.NOWBROKEN', 'The following pages now have broken links:').''. _t('AssetAdmin.NOWBROKEN2', 'Their owners have been emailed and they will fix up those pages.'); + } $script .= "statusMessage('$message');"; echo $script; } public function removefile(){ - if($fileID = $this->urlParams['ID']){ + if($fileID = $this->urlParams['ID']) { $file = DataObject::get_by_id('File', $fileID); // Delete the temp verions of this file in assets/_resampled if($file instanceof Image) { @@ -643,10 +575,10 @@ if(!$record) $('Form_EditForm_Files').removeFile($fileID); statusMessage('removed file', 'good'); JS; - }else{ + } else { Director::redirectBack(); } - }else{ + } else { user_error("AssetAdmin::removefile: Bad parameters: File=$fileID", E_USER_ERROR); } } @@ -654,11 +586,10 @@ JS; public function save($urlParams, $form) { // Don't save the root folder - there's no database record if($_REQUEST['ID'] == 'root') { - FormResponse::status_message("Saved", "good"); + FormResponse::status_message('Saved', 'good'); return FormResponse::respond(); } - $form->dataFieldByName('Title')->value = $form->dataFieldByName('Name')->value; return parent::save($urlParams, $form); @@ -671,11 +602,8 @@ JS; */ /** - * Removes all unused thumbnails, and echos status message to user. - * - * @returns null - */ - + * Removes all unused thumbnails, and echos status message to user. + */ public function deleteUnusedThumbnails() { foreach($this->getUnusedThumbnailsArray() as $file) { unlink(ASSETS_PATH . "/" . $file); @@ -684,50 +612,57 @@ JS; } /** - * Creates array containg all unused thumbnails. - * Array is created in three steps: - * 1.Scan assets folder and retrieve all thumbnails - * 2.Scan all HTMLField in system and retrieve thumbnails from them. - * 3.Count difference between two sets (array_diff) - * - * @returns Array - */ - - private function getUnusedThumbnailsArray() { - $allThumbnails = array(); - $dirIterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator(ASSETS_PATH)); - foreach ($dirIterator as $file) { - if($file->isFile()) { - if(strpos($file->getPathname(),"_resampled") !== false) { - $pathInfo = pathinfo($file->getPathname()); - if(in_array(strtolower($pathInfo['extension']),array('jpeg','jpg','jpe','png','gif'))) { - $path = str_replace('\\','/',$file->getPathname()); - $allThumbnails[] = substr($path,strpos($path,'/assets/')+8); - } - } - } - } - $classes = ClassInfo::subclassesFor('SiteTree'); - $usedThumbnails = array(); - foreach($classes as $className) { - $sng = singleton($className); - $objects = DataObject::get($className); - if($objects !== NULL) { - foreach($objects as $object) { - foreach($sng->db() as $fieldName => $fieldType) { - if($fieldType == 'HTMLText') { - $url1 = HTTP::findByTagAndAttribute($object->$fieldName,array("img" => "src")); - if($url1 != NULL) $usedThumbnails[] = substr($url1[0],strpos($url1[0],'/assets/')+8); - if($object->latestPublished > 0) { - $object = Versioned::get_latest_version($className, $object->ID); - $url2 = HTTP::findByTagAndAttribute($object->$fieldName,array("img" => "src")); - if($url2 != NULL) $usedThumbnails[] = substr($url2[0],strpos($url2[0],'/assets/')+8); - } - } - } - } - } - } - return array_diff($allThumbnails,$usedThumbnails); - } + * Creates array containg all unused thumbnails. + * + * Array is created in three steps: + * 1.Scan assets folder and retrieve all thumbnails + * 2.Scan all HTMLField in system and retrieve thumbnails from them. + * 3.Count difference between two sets (array_diff) + * + * @return array + */ + private function getUnusedThumbnailsArray() { + $allThumbnails = array(); + $usedThumbnails = array(); + $dirIterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator(ASSETS_PATH)); + + foreach($dirIterator as $file) { + if($file->isFile()) { + if(strpos($file->getPathname(),"_resampled") !== false) { + $pathInfo = pathinfo($file->getPathname()); + if(in_array(strtolower($pathInfo['extension']), array('jpeg', 'jpg', 'jpe', 'png', 'gif'))) { + $path = str_replace('\\','/', $file->getPathname()); + $allThumbnails[] = substr($path, strpos($path, '/assets/') + 8); + } + } + } + } + + $classes = ClassInfo::subclassesFor('SiteTree'); + + foreach($classes as $className) { + $sng = singleton($className); + $objects = DataObject::get($className); + if($objects !== NULL) { + foreach($objects as $object) { + foreach($sng->db() as $fieldName => $fieldType) { + if($fieldType == 'HTMLText') { + $url1 = HTTP::findByTagAndAttribute($object->$fieldName,array("img" => "src")); + if($url1 != NULL) $usedThumbnails[] = substr($url1[0],strpos($url1[0],'/assets/')+8); + if($object->latestPublished > 0) { + $object = Versioned::get_latest_version($className, $object->ID); + $url2 = HTTP::findByTagAndAttribute($object->$fieldName,array("img" => "src")); + if($url2 != NULL) $usedThumbnails[] = substr($url2[0],strpos($url2[0],'/assets/')+8); + } + } + } + } + } + } + + return array_diff($allThumbnails,$usedThumbnails); + } + } + +?> \ No newline at end of file