/**
  * Mock a file search using AssetAdmin
  *
  * @param string $name
  * @param string $from Created from date
  * @param string $to Createi to date
  * @param string $category
  * @return SS_List
  */
 protected function getResultsForSearch($name = '', $from = '', $to = '', $category = '')
 {
     $request = new SS_HTTPRequest(null, 'admin/assets/show', array('q' => array('Name' => $name, 'CreatedFrom' => $from, 'CreatedTo' => $to, 'AppCategory' => $category), 'action_doSearch' => 'Apply Filter'));
     $admin = new AssetAdmin();
     $admin->setRequest($request);
     return $admin->getList();
 }
 /**
  * Gets the form used for viewing a time log
  */
 public function getEditForm($id = null, $fields = null)
 {
     $record = $this->currentPage();
     if ($this->action == 'view' && $record) {
         $fields = new FieldList(new HeaderField('LogHeader', _t('KapostBridgeLogViewer.VIEWING_ENTRY', '_Viewing Log Entry: {datetime}', array('datetime' => $record->dbObject('Created')->FormatFromSettings())), 3), new ReadonlyField('UserAgent', _t('KapostBridgeLogViewer.USER_AGENT', '_Requestor User Agent')), new ReadonlyField('Method', _t('KapostBridgeLogViewer.METHOD', '_Method')), ToggleCompositeField::create('RequestData', _t('KapostBridgeLogViewer.KAPOST_REQUEST', '_Kapost Request'), new FieldList(ReadonlyField::create('RequestFormatted', '')->setTemplate('KapostBridgeLogField')->addExtraClass('log-contents cms-panel-layout')))->setHeadingLevel(3), ToggleCompositeField::create('ResponseData', _t('KapostBridgeLogViewer.SILVERSTRIPE_RESPONSE', '_SilverStripe Response'), new FieldList(ReadonlyField::create('ResponseFormatted', '')->setTemplate('KapostBridgeLogField')->addExtraClass('log-contents cms-panel-layout')))->setHeadingLevel(3));
         $refObj = $record->ReferenceObject;
         if (!empty($refObj) && $refObj !== false && $refObj->exists()) {
             if (method_exists($refObj, 'CMSEditLink')) {
                 $fields->insertBefore(new KapostLogLinkField('CMSEditLink', _t('KapostBridgeLogViewer.REFERENCED_OBJECT', '_Referenced Object'), $refObj->CMSEditLink(), _t('KapostBridgeLogViewer.VIEW_REFERENCED_OBJECT', '_View Referenced Object')), 'RequestData');
             } else {
                 if ($refObj instanceof File) {
                     $refObjLink = Controller::join_links(LeftAndMain::config()->url_base, AssetAdmin::config()->url_segment, 'EditForm/field/File/item', $refObj->ID, 'edit');
                     $fields->insertBefore(new KapostLogLinkField('CMSEditLink', _t('KapostBridgeLogViewer.REFERENCED_OBJECT', '_Referenced Object'), $refObjLink, _t('KapostBridgeLogViewer.VIEW_REFERENCED_OBJECT', '_View Referenced Object')), 'RequestData');
                 }
             }
         }
     } else {
         $fields = new FieldList();
     }
     $form = new CMSForm($this, 'EditForm', $fields, new FieldList());
     $form->setResponseNegotiator($this->getResponseNegotiator());
     $form->addExtraClass('cms-edit-form center');
     $form->setAttribute('data-layout-type', 'border');
     $form->setTemplate($this->getTemplatesWithSuffix('_EditForm'));
     $form->setAttribute('data-pjax-fragment', 'CurrentForm');
     $form->setHTMLID('Form_EditForm');
     if ($record) {
         $form->loadDataFrom($record);
     }
     return $form;
 }
<?php

/**
 * Secure Files Module Configuration
 *
 * @package securefiles
 * @author Hamish Campbell <*****@*****.**>
 * @copyright copyright (c) 2010, Hamish Campbell
 */
define('MODULE_SECUREFILES_PATH', basename(dirname(__FILE__)));
Director::addRules(50, array(ASSETS_DIR . '/$Action' => 'SecureFileController'));
AssetAdmin::require_css(MODULE_SECUREFILES_PATH . '/css/SecureFiles.css');
// -------------------------------
/**
 *  Apply optional permission methods here. Include them in the reverse
 *  order that you would like them to appear in the CMS.
 */
// Assign file security by individual member:
// DataObject::add_extension('File', 'SecureFileMemberPermissionDecorator');
// Assign file security by member group:
// DataObject::add_extension('File', 'SecureFileGroupPermissionDecorator');
// Create time-limited access tokens:
// DataObject::add_extension('File', 'SecureFileTokenPermissionDecorator');
// -------------------------------
DataObject::add_extension('File', 'SecureFileDecorator');
/**
 * For large files or heavily trafficed sites use x-sendfile headers to by-pass
 * file handling in PHP. Supported in lighttpd and in Apache with mod_xsendfile
 * available at http://tn123.ath.cx/mod_xsendfile/
 */
// SecureFileController::use_x_sendfile_method();
 protected function getFileEditForm()
 {
     $admin = new AssetAdmin();
     $folder = Controller::join_links($admin->Link(), 'show', $this->folder->ID);
     $file = Controller::join_links($admin->Link(), 'EditForm/field/File/item', $this->file->ID, 'edit');
     $this->get($folder);
     $this->get($file);
 }
<?php

/**
 * The subsites module modifies the behaviour of the CMS - in the SiteTree and Group databases - to store information
 * about a number of sub-sites, rather than a single site.
 */
SiteTree::add_extension('SiteTreeSubsites');
ContentController::add_extension('ControllerSubsites');
CMSPageAddController::add_extension('CMSPageAddControllerExtension');
LeftAndMain::add_extension('LeftAndMainSubsites');
LeftAndMain::add_extension('ControllerSubsites');
Group::add_extension('GroupSubsites');
File::add_extension('FileSubsites');
ErrorPage::add_extension('ErrorPageSubsite');
SiteConfig::add_extension('SiteConfigSubsites');
SS_Report::add_excluded_reports('SubsiteReportWrapper');
//Display in cms menu
AssetAdmin::add_extension('SubsiteMenuExtension');
SecurityAdmin::add_extension('SubsiteMenuExtension');
CMSMain::add_extension('SubsiteMenuExtension');
CMSPagesController::add_extension('SubsiteMenuExtension');
SubsiteAdmin::add_extension('SubsiteMenuExtension');
CMSSettingsController::add_extension('SubsiteMenuExtension');
 /**
  * 
  * {@inheritdoc}
  * 
  * @param SS_HTTPRequest $request
  * @return HTMLText
  */
 public function addfolder($request)
 {
     $parentId = SecuredFilesystem::get_numeric_identifier($this, 'ParentID');
     $folder = DataObject::get_by_id("Folder", $parentId);
     if ($folder && $folder->exists()) {
         if (!$folder->Secured) {
             $message = _t('SecuredFilesystem.messages.ERROR_ACCESS_ONLY_IN_FILES');
             return SecuredFilesystem::show_access_message($this, $message);
         }
         return parent::addfolder($request);
     } else {
         $message = _t('SecuredFilesystem.messages.ERROR_FOLDER_NOT_EXISTS');
         return SecuredFilesystem::show_access_message($this, $message);
     }
 }
 /**
  * Exercises SecuredFilesystem::get_numeric_identifier() with both types of expected controller
  * Ensures expected outputs given a variety of inputs
  *
  * @todo Add 'ParentID' ensure this works as expected
  * @todo  Test with "unexpected" class, assert exedcption or error thrown as expecced (Zero is returned)
  */
 public function testGetNumericIdentifierPost()
 {
     $controller = $this->getTestController(array('ID' => '40'), 'POST', AssetAdmin::create());
     $result = SecuredFilesystem::get_numeric_identifier($controller, 'ID');
     $this->assertInternalType('integer', $result);
     $this->assertEquals(40, $result);
     $controller = $this->getTestController(array('ID' => '40'), 'POST', CMSFileAddController::create());
     $result = SecuredFilesystem::get_numeric_identifier($controller, 'ID');
     $this->assertInternalType('integer', $result);
     $this->assertEquals(40, $result);
     $controller = $this->getTestController(array('ID' => '0'), 'POST', AssetAdmin::create());
     $result = SecuredFilesystem::get_numeric_identifier($controller, 'ID');
     $this->assertInternalType('integer', $result);
     $this->assertEquals(0, $result);
     $controller = $this->getTestController(array('ID' => '0'), 'POST', CMSFileAddController::create());
     $result = SecuredFilesystem::get_numeric_identifier($controller, 'ID');
     $this->assertInternalType('integer', $result);
     $this->assertEquals(0, $result);
     $controller = $this->getTestController(array('ParentID' => '40'), 'POST', AssetAdmin::create());
     $result = SecuredFilesystem::get_numeric_identifier($controller, 'ParentID');
     $this->assertInternalType('integer', $result);
     $this->assertEquals(40, $result);
     $controller = $this->getTestController(array('ParentID' => '40'), 'POST', CMSFileAddController::create());
     $result = SecuredFilesystem::get_numeric_identifier($controller, 'ParentID');
     $this->assertInternalType('integer', $result);
     $this->assertEquals(40, $result);
     $controller = $this->getTestController(array('ParentID' => '0'), 'POST', AssetAdmin::create());
     $result = SecuredFilesystem::get_numeric_identifier($controller, 'ParentID');
     $this->assertInternalType('integer', $result);
     $this->assertEquals(0, $result);
     $controller = $this->getTestController(array('ParentID' => '0'), 'POST', CMSFileAddController::create());
     $result = SecuredFilesystem::get_numeric_identifier($controller, 'ParentID');
     $this->assertInternalType('integer', $result);
     $this->assertEquals(0, $result);
     $controller = $this->getTestController(array('DUMMY' => '40'), 'POST', AssetAdmin::create());
     $result = SecuredFilesystem::get_numeric_identifier($controller, 'ID');
     $this->assertInternalType('integer', $result);
     $this->assertEquals(0, $result);
     $controller = $this->getTestController(array('DUMMY' => '40'), 'POST', CMSFileAddController::create());
     $result = SecuredFilesystem::get_numeric_identifier($controller, 'ID');
     $this->assertInternalType('integer', $result);
     $this->assertEquals(0, $result);
     $controller = $this->getTestController(array('ID' => '40'), 'POST', Controller::create());
     $result = SecuredFilesystem::get_numeric_identifier($controller, 'ID');
     $this->assertInternalType('integer', $result);
     $this->assertEquals(0, $result);
 }