*/ /** * admin controller class of the file module * @author NAVER (developers@xpressengine.com) */ class fileAdminController extends file { /** * Initialization * @return void */ function init() { } /** * Delete the attachment of a particular module * * @param int $module_srl Sequence of module to delete files * @return Object */ function deleteModuleFiles($module_srl) { // Get a full list of attachments $args = new stdClass(); $args->module_srl = $module_srl; $columnList = array('file_srl', 'uploaded_filename'); $output = executeQueryArray('file.getModuleFiles',$args, $columnList); if(!$output) return $output; $files = $output->data; // Remove from the DB $args->module_srl = $module_srl; $output = executeQuery('file.deleteModuleFiles', $args); if(!$output->toBool()) return $output; // Remove the file FileHandler::removeDir( sprintf("./files/attach/images/%s/", $module_srl) ) ; FileHandler::removeDir( sprintf("./files/attach/binaries/%s/", $module_srl) ); // Remove the file list obtained from the DB $path = array(); $cnt = count($files); for($i=0;$i<$cnt;$i++) { $uploaded_filename = $files[$i]->uploaded_filename; FileHandler::removeFile($uploaded_filename); $path_info = pathinfo($uploaded_filename); if(!in_array($path_info['dirname'], $path)) $path[] = $path_info['dirname']; } // Remove a file directory of the document for($i=0;$istop('msg_file_cart_is_null'); if(!is_array($cart)) $file_srl_list= explode('|@|', $cart); else $file_srl_list = $cart; $file_count = count($file_srl_list); if(!$file_count) return $this->stop('msg_file_cart_is_null'); $oFileController = getController('file'); // Delete the post for($i=0;$i<$file_count;$i++) { $file_srl = trim($file_srl_list[$i]); if(!$file_srl) continue; $oFileController->deleteFile($file_srl); } $this->setMessage( sprintf(Context::getLang('msg_checked_file_is_deleted'), $file_count) ); $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'module', 'admin', 'act', 'dispFileAdminList'); $this->setRedirectUrl($returnUrl); } /** * Add file information * * @return Object */ function procFileAdminInsertConfig() { // Get configurations (using module model object) $config->allowed_filesize = Context::get('allowed_filesize'); $config->allowed_attach_size = Context::get('allowed_attach_size'); $config->allowed_filetypes = str_replace(' ', '', Context::get('allowed_filetypes')); $config->allow_outlink = Context::get('allow_outlink'); $config->allow_outlink_format = Context::get('allow_outlink_format'); $config->allow_outlink_site = Context::get('allow_outlink_site'); // Create module Controller object $oModuleController = getController('module'); $output = $oModuleController->insertModuleConfig('file',$config); $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'module', 'admin', 'act', 'dispFileAdminConfig'); return $this->setRedirectUrl($returnUrl, $output); } /** * Add file information for each module * * @return void */ function procFileAdminInsertModuleConfig() { // Get variables $module_srl = Context::get('target_module_srl'); // In order to configure multiple modules at once if(preg_match('/^([0-9,]+)$/',$module_srl)) $module_srl = explode(',',$module_srl); else $module_srl = array($module_srl); $download_grant = Context::get('download_grant'); $file_config->allow_outlink = Context::get('allow_outlink'); $file_config->allow_outlink_format = Context::get('allow_outlink_format'); $file_config->allow_outlink_site = Context::get('allow_outlink_site'); $file_config->allowed_filesize = Context::get('allowed_filesize'); $file_config->allowed_attach_size = Context::get('allowed_attach_size'); $file_config->allowed_filetypes = str_replace(' ', '', Context::get('allowed_filetypes')); if(!is_array($download_grant)) $file_config->download_grant = explode('|@|',$download_grant); else $file_config->download_grant = $download_grant; //관리자가 허용한 첨부파일의 사이즈가 php.ini의 값보다 큰지 확인하기 - by ovclas $userFileAllowSize = $this->_changeBytes($file_config->allowed_filesize.'M'); $userAttachAllowSize = $this->_changeBytes($file_config->allowed_attach_size.'M'); $iniPostMaxSize = $this->_changeBytes(ini_get('post_max_size')); $iniUploadMaxSize = $this->_changeBytes(ini_get('upload_max_filesize')); $iniMinSzie = min($iniPostMaxSize, $iniUploadMaxSize); if($userFileAllowSize > $iniMinSzie || $userAttachAllowSize > $iniMinSzie) return new Object(-1, 'input size over than config in php.ini'); $oModuleController = getController('module'); for($i=0;$iinsertModulePartConfig('file',$srl,$file_config); } $this->setError(-1); $this->setMessage('success_updated', 'info'); $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'module', 'admin', 'act', 'dispBoardAdminContent'); $this->setRedirectUrl($returnUrl); } /** * Add to SESSION file srl * * @return Object */ function procFileAdminAddCart() { $file_srl = (int)Context::get('file_srl'); //$fileSrlList = array(500, 502); $oFileModel = getModel('file'); $output = $oFileModel->getFile($file_srl); //$output = $oFileModel->getFile($fileSrlList); if($output->file_srl) { if($_SESSION['file_management'][$output->file_srl]) unset($_SESSION['file_management'][$output->file_srl]); else $_SESSION['file_management'][$output->file_srl] = true; } } /** * Change value from human readable to byte unit * * @param string $size_str Size string * @return int The byte value for input */ function _changeBytes($size_str) { switch (substr ($size_str, -1)) { case 'M': case 'm': return (int)$size_str * 1048576; case 'K': case 'k': return (int)$size_str * 1024; case 'G': case 'g': return (int)$size_str * 1073741824; default: return $size_str; } } } /* End of file file.admin.controller.php */ /* Location: ./modules/file/file.admin.controller.php */