1: <?PHP
2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31:
32:
33:
34: interface bmmFileManagerImpl {
35:
36: function initialize();
37: function getPluginAppId();
38: function enableObject($enable = true);
39: function getAppMainViewItem();
40: function registerHttpRequestObjects(&$apphandler);
41: function registerAppMenuHandler(&$obj);
42: function setAppMainView(&$pagewrap,&$apphandler,&$baseui,$db,$params_arr);
43: function handleFileOperation(&$mainhandler,$params);
44: function setFileManagerView(&$pagewrap,&$mainhandler,&$baseui,$params_arr = null);
45: }
46:
47: class bmmFileManager implements bmmFileManagerImpl {
48:
49: private $PLUGIN_APP_ID = PROJECT_APP;
50: private $instance;
51: private $enabled;
52: private $menuhandler;
53: private $config_dir = '../lib/class/plugins/config/bmm_erp_file_manager';
54:
55: private $board_progression_arr = array();
56:
57: public function __construct (){
58: if (!file_exists($this->config_dir)) mkdir($this->config_dir,0770,true);
59: $this->instance = $this;
60: $this->enabled = true;
61: $this->handler = 'project';
62: $this->appview = 'bmm_erp_file_manager';
63: $this->initialize();
64: }
65:
66: public function initialize(){
67: global $STATUS_LIST;
68: }
69:
70: public function getPluginAppId(){
71: return $this->PLUGIN_APP_ID;
72: }
73:
74: public function enableObject($enable = true){
75: $this->enabled = $enable;
76: }
77:
78: public function getObjectStatus(){
79: return $this->enabled;
80: }
81:
82: public function getAppMainViewItem(){
83: return $this->appview;
84: }
85:
86: public function registerHttpRequestObjects(&$apphandler){
87: $apphandler->registerHttpRequestObjects(array(get_class($this->instance),$this->appview,"bmm_erp_file_manager","handleFileOperation",$this->PLUGIN_APP_ID));
88: }
89:
90: public function registerAppMenuHandler(&$obj){
91:
92: $obj->setMenuObject($this->appview,"files",$this->handler,null,false,'WRITE');
93: }
94:
95: public function setAppMainView(&$pagewrap,&$mainhandler,&$baseui,$db,$params_arr){
96: $this->initialize();
97: $actionhandler = $params_arr['actionhandler'];
98: $mainhandler->setReadOnlyActions(get_class($actionhandler),get_class($this),array('get_file_list'));
99: $this->setFileManagerView($pagewrap,$mainhandler,$baseui,$params_arr);
100: }
101:
102:
103: public function handleFileOperation(&$mainhandler,$params){
104: $action = isset($params['action']) ? $params['action'] : null;
105: $folder_id = isset($params['folder_id']) ? intval($params['folder_id']) : null;
106: switch($action){
107:
108: case 'fm_file_delete':
109: try {
110: $id = $params['sbid'];
111: $type = $params['type'];
112: if ($type == 'folder'){
113: $data_arr = $mainhandler->filehandler->searchAttachmentData(
114: $mainhandler,
115: $id,
116: null,
117: null,
118: $null,
119: $mainhandler->getAppId(),
120: $mainhandler->getAppTargetId(),
121: 0,
122: 1000);
123:
124: if (count($data_arr) > 0)
125: throw new Exception('folder_not_empty');
126:
127: }
128: $mainhandler->filehandler->syncStorageRemove($id,$mainhandler);
129: return json_encode(array('success'=>true,'folder_id'=>$folder_id));
130: }catch(Exception $e){
131: return json_encode(array('success'=>false));
132: }
133: break;
134:
135: case 'folder':
136: $perms_arr = $mainhandler->getAppAccessPermList();
137: $ownerid = isset($postdata_arr['ownerid']) ? intval($postdata_arr['ownerid']) : null;
138: $app_id = $mainhandler->getAppId();
139: $app_target_id = isset($postdata_arr['app_target_id']) ? intval($postdata_arr['app_target_id']) : null;
140: $parent_id = isset($params['folder_id']) && intval($params['folder_id']) ? intval($params['folder_id']) : $mainhandler->filehandler->getOwnerFolderId($app_id,$app_target_id,$perms_arr,null,'project');
141: $mainhandler->filehandler->insertFolder($parent_id,$params['folder_name'],$mainhandler);
142: return json_encode(array('success'=>true,'folder_id'=>$parent_id));
143: break;
144:
145: case 'file_upload':
146: $progress = 100;
147: $reqid = $params['request_id'];
148: if (function_exists('apc_fetch')){
149: $status = apc_fetch("upload_$reqid");
150: $progress = $status['current']/$status['total']*100;
151: }
152: return json_encode(array('status'=>round($progress)));
153: break;
154:
155: default:
156: return $this->getFileListData($mainhandler,$folder_id);
157: break;
158: }
159: }
160:
161: public function setFileManagerView(&$pagewrap,&$mainhandler,&$baseui,$params_arr = null){
162: global $STATUS_LIST;
163: $handler = $params_arr['actionhandler']->getActionParam('handler');
164: $dataobj = $params_arr['actionhandler']->getDataObject();
165: $upload_uid = md5(uniqid(rand()));
166: echo
167: "
168: <script type=\"text/javascript\">
169: bmm_hide_edit_section();
170: $('fitems').disabled = true;
171: bmm_erp_file_manager.editwin = \"{$pagewrap->getHttpUri()}?ptype=dialog&page=filedetails&xwidth=0\";
172: bmm_erp_file_manager.openwin =\"{$pagewrap->getHttpUri()}?ptype=dialog&page=fileopener&contype=stream&appnr={$mainhandler->getAppId()}\";
173: bmm_erp_file_manager.posturi =\"{$pagewrap->getHttpUri()}\";
174: bmm_erp_file_manager.upload_uid = \"$upload_uid\";
175: bmm_erp_file_manager.upload_handler = \"$handler\";
176:
177: bmm_erp_file_manager.lang_item['delete_file'] = '{$mainhandler->translator->translate('delete_file','u')}';
178: bmm_erp_file_manager.lang_item['new_folder'] = '{$mainhandler->translator->translate('new_folder','u')}';
179: bmm_erp_file_manager.lang_item['file'] = '{$mainhandler->translator->translate('file','u')}';
180: bmm_erp_file_manager.lang_item['save'] = '{$mainhandler->translator->translate('save','u')}';
181: bmm_erp_file_manager.lang_item['upload'] = '{$mainhandler->translator->translate('file','u')}';
182: bmm_erp_file_manager.lang_item['filename'] = '{$mainhandler->translator->translate('name','u')}';
183: bmm_erp_file_manager.lang_item['type'] = '{$mainhandler->translator->translate('type','u')}';
184: bmm_erp_file_manager.lang_item['date'] = '{$mainhandler->translator->translate('date','u')}';
185: bmm_erp_file_manager.lang_item['size'] = '{$mainhandler->translator->translate('size','u')}';
186: bmm_erp_file_manager.active_folder_id = 0;
187: bmm_erp_file_manager.get_file_list_data(0,false);
188: </script>";
189: }
190:
191: private function getFileListData(&$mainhandler,$folder_id){
192: $perms_arr = $mainhandler->getAppAccessPermList();
193: $ownerid = isset($postdata_arr['ownerid']) ? intval($postdata_arr['ownerid']) : null;
194: $app_id = $mainhandler->getAppId();
195: $app_target_id = $mainhandler->getAppTargetId();
196: $folder_id = intval($folder_id) ? intval($folder_id) : $mainhandler->filehandler->getOwnerFolderId($app_id,$app_target_id,$perms_arr,null,'project',false);
197: $data_arr = $mainhandler->filehandler->searchAttachmentData(
198: $mainhandler,
199: $folder_id,
200: null,
201: null,
202: $ownerid,
203: $app_id,
204: $app_target_id,
205: 0,
206: 1000);
207: $privacy = null;
208: $properties = true;
209: $fid = 0;
210: $filelistdata_arr = array();
211: array_push($filelistdata_arr,array($folder_id));
212: if (!is_array($data_arr)) $data_arr = array();
213:
214: foreach ($data_arr as $data){
215: $fid = $data[8];
216:
217: $icon = null;
218: $file_id = $data[8];
219: $file_options = array("permission"=>null,"class"=>null);
220:
221:
222: $filehandler = $mainhandler->filehandler;
223: $filehandler->initializeById($file_id);
224:
225: $permission = $mainhandler->getFileAccessPermission($file_id,$mainhandler->getUserId());
226: $perms_arr = $mainhandler->getAppAccessPermList();
227: $icon = null;
228: switch ($filehandler->getAttType()){
229: case "folder":
230: $icon = "
231: <img src=\"img/folder.gif\" />";
232: break;
233: }
234:
235: $filedata_arr = array();
236: array_push($filedata_arr,$file_id);
237: if ($privacy == 'sub_item')
238: array_push($filedata_arr,
239: "<a style=\"color:#0018cd\" href=\"{$pagewrap->getProtocol()}{$pagewrap->getUrl()}/?page=manage&handler=product&appnr=".PRODUCT_APP."&sbid={$filehandler->getAttachmentAppSubOwnerId()}&action=retrieve\">{$filehandler->getAttName()}</a>");
240: else
241: array_push($filedata_arr,
242: "<a style=\"color:#0018cd\" href=\"javascript:bmm_erp_file_manager.file_ops('$file_id','{$filehandler->getAttType()}','open')\">{$filehandler->getAttName()}</a>");
243: array_push($filedata_arr,"<img src=\"../img/$icon\" />"+substr($filehandler->getAttType(),0,5));
244: array_push($filedata_arr,"{$filehandler->getAttDate()}");
245: array_push($filedata_arr,"{$filehandler->getAttSize()}");
246: array_push($filedata_arr,"$icon{$filehandler->getAttType()}");
247:
248: if ( $permission == $perms_arr['WRITE'])
249: array_push($filedata_arr,
250: "<a href=\"javascript: bmm_erp_file_manager.file_ops($file_id,'{$filehandler->getAttType()}','fm_file_delete')\"><img style=\"border:0px\" src=\"../img/delete.gif\" /></a>");
251: else
252: array_push($filedata_arr,
253: "<img style=\"border:0px\" src=\"../img/delete.gif\" />");
254: 255: 256: 257: 258: 259: 260:
261:
262: array_push($filelistdata_arr,$filedata_arr);
263: }
264: return json_encode($filelistdata_arr);
265: }
266:
267: }?>
268: