XpressEngine Core  1.11.2
 All Classes Namespaces Files Functions Variables Pages
document.admin.controller.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (C) NAVER <http://www.navercorp.com> */
3 
13 {
18  function init()
19  {
20  }
21 
27  {
28  // error appears if no doc is selected
29  $cart = Context::get('cart');
30  if(!$cart) return $this->stop('msg_cart_is_null');
31  $document_srl_list= explode('|@|', $cart);
32  $document_count = count($document_srl_list);
33  if(!$document_count) return $this->stop('msg_cart_is_null');
34  // Delete a doc
35  $oDocumentController = getController('document');
36  for($i=0;$i<$document_count;$i++)
37  {
38  $document_srl = trim($document_srl_list[$i]);
39  if(!$document_srl) continue;
40 
41  $oDocumentController->deleteDocument($document_srl, true);
42  }
43 
44  $this->setMessage(sprintf(Context::getLang('msg_checked_document_is_deleted'), $document_count) );
45  }
46 
54  function moveDocumentModule($document_srl_list, $module_srl, $category_srl)
55  {
56  if(!count($document_srl_list)) return;
57 
58  $oDocumentModel = getModel('document');
59  $oDocumentController = getController('document');
60 
61  $oDB = &DB::getInstance();
62  $oDB->begin();
63 
64  $triggerObj = new stdClass();
65  $triggerObj->document_srls = implode(',',$document_srl_list);
66  $triggerObj->module_srl = $module_srl;
67  $triggerObj->source_module_srl = array();
68  $triggerObj->category_srl = $category_srl;
69 
70  // Call a trigger (before)
71  $output = ModuleHandler::triggerCall('document.moveDocumentModule', 'before', $triggerObj);
72  if(!$output->toBool())
73  {
74  $oDB->rollback();
75  return $output;
76  }
77 
78  for($i=count($document_srl_list)-1;$i>=0;$i--)
79  {
80  $document_srl = $document_srl_list[$i];
81  $oDocument = $oDocumentModel->getDocument($document_srl);
82  if(!$oDocument->isExists()) continue;
83 
84  $triggerObj->source_module_srl[$document_srl] = $oDocument->get('module_srl');
85 
86  $source_category_srl = $oDocument->get('category_srl');
87 
88  unset($obj);
89  $obj = $oDocument->getObjectVars();
90 
91  // ISSUE https://github.com/xpressengine/xe-core/issues/32
92  $args_doc_origin->document_srl = $document_srl;
93  $output_ori = executeQuery('document.getDocument', $args_doc_origin, array('content'));
94  $obj->content = $output_ori->data->content;
95 
96  // Move the attached file if the target module is different
97  if($module_srl != $obj->module_srl && $oDocument->hasUploadedFiles())
98  {
99  $oFileController = getController('file');
100 
101  $files = $oDocument->getUploadedFiles();
102  $delete_file_srls = array();
103  if(is_array($files))
104  {
105  foreach($files as $val)
106  {
107  $file_info = array();
108  $file_info['tmp_name'] = $val->uploaded_filename;
109  $file_info['name'] = $val->source_filename;
110  $inserted_file = $oFileController->insertFile($file_info, $module_srl, $obj->document_srl, $val->download_count, true);
111 
112  if(!$inserted_file->toBool()) {
113  $oDB->rollback();
114  return $inserted_file;
115  }
116 
117  if($inserted_file && $inserted_file->toBool())
118  {
119  // for image/video files
120  if($val->direct_download == 'Y')
121  {
122  $source_filename = substr($val->uploaded_filename,2);
123  $target_filename = substr($inserted_file->get('uploaded_filename'),2);
124  $obj->content = str_replace($source_filename, $target_filename, $obj->content);
125  // For binary files
126  }
127  else
128  {
129  $obj->content = str_replace('file_srl='.$val->file_srl, 'file_srl='.$inserted_file->get('file_srl'), $obj->content);
130  $obj->content = str_replace('sid='.$val->sid, 'sid='.$inserted_file->get('sid'), $obj->content);
131  }
132  }
133  $delete_file_srls[] = $val->file_srl;
134  }
135  // Delete an existing file
136  $oFileController->deleteFile($delete_file_srls);
137  }
138  // Set the all files to be valid
139  $oFileController->setFilesValid($obj->document_srl);
140  }
141 
142  if($module_srl != $obj->module_srl)
143  {
144  $oDocumentController->deleteDocumentAliasByDocument($obj->document_srl);
145  }
146  // Move a module of the article
147  $obj->module_srl = $module_srl;
148  $obj->category_srl = $category_srl;
149  $output = executeQuery('document.updateDocumentModule', $obj);
150  if(!$output->toBool()) {
151  $oDB->rollback();
152  return $output;
153  }
154 
155  //Move a module of the extra vars
156  $output = executeQuery('document.moveDocumentExtraVars', $obj);
157  if(!$output->toBool()) {
158  $oDB->rollback();
159  return $output;
160  }
161  // Set 0 if a new category doesn't exist after catergory change
162  if($source_category_srl != $category_srl)
163  {
164  if($source_category_srl) $oDocumentController->updateCategoryCount($oDocument->get('module_srl'), $source_category_srl);
165  if($category_srl) $oDocumentController->updateCategoryCount($module_srl, $category_srl);
166  }
167  }
168 
169  $args = new stdClass();
170  $args->document_srls = implode(',',$document_srl_list);
171  $args->module_srl = $module_srl;
172  // move the comment
173  $output = executeQuery('comment.updateCommentModule', $args);
174  if(!$output->toBool())
175  {
176  $oDB->rollback();
177  return $output;
178  }
179 
180  $output = executeQuery('comment.updateCommentListModule', $args);
181  if(!$output->toBool())
182  {
183  $oDB->rollback();
184  return $output;
185  }
186 
187  // move the trackback
188  if(getClass('trackback'))
189  {
190  $output = executeQuery('trackback.updateTrackbackModule', $args);
191  if(!$output->toBool())
192  {
193  $oDB->rollback();
194  return $output;
195  }
196  }
197 
198  // Tags
199  $output = executeQuery('tag.updateTagModule', $args);
200  if(!$output->toBool())
201  {
202  $oDB->rollback();
203  return $output;
204  }
205  // Call a trigger (before)
206  $output = ModuleHandler::triggerCall('document.moveDocumentModule', 'after', $triggerObj);
207  if(!$output->toBool())
208  {
209  $oDB->rollback();
210  return $output;
211  }
212 
213  $oDB->commit();
214  //remove from cache
215  $oCacheHandler = CacheHandler::getInstance('object');
216  if($oCacheHandler->isSupport())
217  {
218  foreach($document_srl_list as $document_srl)
219  {
220  $cache_key_item = 'document_item:'. getNumberingPath($document_srl) . $document_srl;
221  $oCacheHandler->delete($cache_key_item);
222  }
223  }
224  return new BaseObject();
225  }
226 
234  function copyDocumentModule($document_srl_list, $module_srl, $category_srl)
235  {
236  if(count($document_srl_list) < 1) return;
237 
238  $oDocumentModel = getModel('document');
239  $oDocumentController = getController('document');
240 
241  $oFileModel = getModel('file');
242 
243  $oDB = &DB::getInstance();
244  $oDB->begin();
245 
246  $triggerObj = new stdClass();
247  $triggerObj->document_srls = implode(',',$document_srl_list);
248  $triggerObj->module_srl = $module_srl;
249  $triggerObj->category_srl = $category_srl;
250  // Call a trigger (before)
251  $output = ModuleHandler::triggerCall('document.copyDocumentModule', 'before', $triggerObj);
252  if(!$output->toBool())
253  {
254  $oDB->rollback();
255  return $output;
256  }
257 
258  $extraVarsList = $oDocumentModel->getDocumentExtraVarsFromDB($document_srl_list);
259  $extraVarsListByDocumentSrl = array();
260  if(is_array($extraVarsList->data))
261  {
262  foreach($extraVarsList->data as $value)
263  {
264  if(!isset($extraVarsListByDocumentSrl[$value->document_srl]))
265  {
266  $extraVarsListByDocumentSrl[$value->document_srl] = array();
267  }
268 
269  $extraVarsListByDocumentSrl[$value->document_srl][] = $value;
270  }
271  }
272 
273  for($i=count($document_srl_list)-1;$i>=0;$i--)
274  {
275  $document_srl = $document_srl_list[$i];
276  $oDocument = $oDocumentModel->getDocument($document_srl);
277  if(!$oDocument->isExists()) continue;
278 
279  $obj = $oDocument->getObjectVars();
280 
281  $extraVars = $extraVarsListByDocumentSrl[$document_srl];
282  if($module_srl == $obj->module_srl)
283  {
284  if(is_array($extraVars))
285  {
286  foreach($extraVars as $extraItem)
287  {
288  if($extraItem->var_idx >= 0) $obj->{'extra_vars'.$extraItem->var_idx} = $extraItem->value;
289  }
290  }
291  }
292  $obj->module_srl = $module_srl;
293  $obj->document_srl = getNextSequence();
294  $obj->category_srl = $category_srl;
295  $obj->password_is_hashed = true;
296  $obj->comment_count = 0;
297  $obj->trackback_count = 0;
298 
299  // Pre-register the attachment
300  if($oDocument->hasUploadedFiles())
301  {
302  $files = $oDocument->getUploadedFiles();
303  foreach($files as $val)
304  {
305  $file_info = array();
306  $file_info['tmp_name'] = $val->uploaded_filename;
307  $file_info['name'] = $val->source_filename;
308  $oFileController = getController('file');
309  $inserted_file = $oFileController->insertFile($file_info, $module_srl, $obj->document_srl, 0, true);
310 
311  if(!$inserted_file->toBool()) {
312  $oDB->rollback();
313  return $inserted_file;
314  }
315 
316  // if image/video files
317  if($val->direct_download == 'Y')
318  {
319  $source_filename = substr($val->uploaded_filename,2);
320  $target_filename = substr($inserted_file->get('uploaded_filename'),2);
321  $obj->content = str_replace($source_filename, $target_filename, $obj->content);
322  // If binary file
323  }
324  else
325  {
326  $obj->content = str_replace('file_srl='.$val->file_srl, 'file_srl='.$inserted_file->get('file_srl'), $obj->content);
327  $obj->content = str_replace('sid='.$val->sid, 'sid='.$inserted_file->get('sid'), $obj->content);
328  }
329  }
330  }
331 
332  // Write a post
333  $output = $oDocumentController->insertDocument($obj, true, true);
334  if(!$output->toBool())
335  {
336  $oDB->rollback();
337  return $output;
338  }
339 
340  // copy multi language contents
341  if(is_array($extraVars))
342  {
343  foreach($extraVars as $value)
344  {
345  if($value->idx >= 0 && $value->lang_code == Context::getLangType())
346  {
347  continue;
348  }
349 
350  if( $value->var_idx < 0 || ($module_srl == $value->module_srl && $value->var_idx >= 0) )
351  {
352  $oDocumentController->insertDocumentExtraVar($value->module_srl, $obj->document_srl, $value->var_idx, $value->value, $value->eid, $value->lang_code);
353  }
354  }
355  }
356 
357  // Move the comments
358  if($oDocument->getCommentCount())
359  {
360  $oCommentModel = getModel('comment');
361  $comment_output = $oCommentModel->getCommentList($document_srl, 0, true, 99999999);
362  $comments = $comment_output->data;
363  if(count($comments) > 0)
364  {
365  $oCommentController = getController('comment');
366  $success_count = 0;
367  $p_comment_srl = array();
368  foreach($comments as $comment_obj)
369  {
370  $comment_srl = getNextSequence();
371  $p_comment_srl[$comment_obj->comment_srl] = $comment_srl;
372 
373  // Pre-register the attachment
374  if($comment_obj->uploaded_count)
375  {
376  $files = $oFileModel->getFiles($comment_obj->comment_srl, true);
377  foreach($files as $val)
378  {
379  $file_info = array();
380  $file_info['tmp_name'] = $val->uploaded_filename;
381  $file_info['name'] = $val->source_filename;
382  $oFileController = getController('file');
383  $inserted_file = $oFileController->insertFile($file_info, $module_srl, $comment_srl, 0, true);
384  // if image/video files
385  if($val->direct_download == 'Y')
386  {
387  $source_filename = substr($val->uploaded_filename,2);
388  $target_filename = substr($inserted_file->get('uploaded_filename'),2);
389  $comment_obj->content = str_replace($source_filename, $target_filename, $comment_obj->content);
390  // If binary file
391  }
392  else
393  {
394  $comment_obj->content = str_replace('file_srl='.$val->file_srl, 'file_srl='.$inserted_file->get('file_srl'), $comment_obj->content);
395  $comment_obj->content = str_replace('sid='.$val->sid, 'sid='.$inserted_file->get('sid'), $comment_obj->content);
396  }
397  }
398  }
399 
400  $comment_obj->module_srl = $obj->module_srl;
401  $comment_obj->document_srl = $obj->document_srl;
402  $comment_obj->comment_srl = $comment_srl;
403 
404  if($comment_obj->parent_srl) $comment_obj->parent_srl = $p_comment_srl[$comment_obj->parent_srl];
405 
406  $output = $oCommentController->insertComment($comment_obj, true);
407  if($output->toBool()) $success_count ++;
408  }
409  $oDocumentController->updateCommentCount($obj->document_srl, $success_count, $comment_obj->nick_name, true);
410  }
411  }
412 
413  // Move the trackbacks
414  $oTrackbackModel = getModel('trackback');
415  if($oTrackbackModel && $oDocument->getTrackbackCount())
416  {
417  $trackbacks = $oTrackbackModel->getTrackbackList($oDocument->document_srl);
418  if(count($trackbacks))
419  {
420  $success_count = 0;
421  foreach($trackbacks as $trackback_obj)
422  {
423  $trackback_obj->trackback_srl = getNextSequence();
424  $trackback_obj->module_srl = $obj->module_srl;
425  $trackback_obj->document_srl = $obj->document_srl;
426  $output = executeQuery('trackback.insertTrackback', $trackback_obj);
427  if($output->toBool()) $success_count++;
428  }
429  // Update the number of trackbacks
430  $oDocumentController->updateTrackbackCount($obj->document_srl, $success_count);
431  }
432  }
433 
434  $copied_srls[$document_srl] = $obj->document_srl;
435  }
436 
437  // Call a trigger (before)
438  $triggerObj->copied_srls = $copied_srls;
439  $output = ModuleHandler::triggerCall('document.copyDocumentModule', 'after', $triggerObj);
440  if(!$output->toBool())
441  {
442  $oDB->rollback();
443  return $output;
444  }
445 
446  $oDB->commit();
447 
448  $output = new BaseObject();
449  $output->add('copied_srls', $copied_srls);
450  return $output;
451  }
452 
459  {
460  $args = new stdClass();
461  $args->module_srl = $module_srl;
462  $oDocumentModel = getModel('document');
463  $args->module_srl = $module_srl;
464  $document_list = $oDocumentModel->getDocumentList($args);
465  $documents = $document_list->data;
466  $output = executeQuery('document.deleteModuleDocument', $args);
467  if(is_array($documents))
468  {
469  foreach ($documents as $oDocument)
470  {
471  $document_srl_list[] = $oDocument->document_srl;
472  }
473  }
474  //remove from cache
475  $oCacheHandler = CacheHandler::getInstance('object');
476  if($oCacheHandler->isSupport())
477  {
478  if(is_array($document_srl_list))
479  {
480  foreach($document_srl_list as $document_srl)
481  {
482  $cache_key_item = 'document_item:'. getNumberingPath($document_srl) . $document_srl;
483  $oCacheHandler->delete($cache_key_item);
484  }
485  }
486  }
487  return $output;
488  }
489 
495  {
496  $oModuleController = getController('module');
497 
498  $config = getModel('document')->getDocumentConfig();
499  $config->icons = Context::get('icons');
500  $config->micons = Context::get('micons');
501  $output = $oModuleController->insertModuleConfig('document',$config);
502  if(!$output->toBool())
503  {
504  return $output;
505  }
506 
507  $this->setMessage('success_updated');
508 
509  $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'module', 'admin', 'act', 'dispDocumentAdminConfig');
510  $this->setRedirectUrl($returnUrl, $output);
511  }
512 
518  {
519  $document_srl = trim(Context::get('document_srl'));
520 
521  if($document_srl)
522  {
523  $args->document_srl = $document_srl;
524  $output = executeQuery('document.deleteDeclaredDocuments', $args);
525  if(!$output->toBool()) return $output;
526  }
527  }
528 
534  {
535  $temp_cache_dir = './files/thumbnails_' . $_SERVER['REQUEST_TIME'];
536  FileHandler::rename('./files/thumbnails', $temp_cache_dir);
537  FileHandler::makeDir('./files/thumbnails');
538 
539  FileHandler::removeDir($temp_cache_dir);
540 
541  $this->setMessage('success_deleted');
542  }
543 
548  function deleteThumbnailFile($path)
549  {
550  $directory = dir($path);
551  while($entry = $directory->read()) {
552  if ($entry != "." && $entry != "..") {
553  if (is_dir($path."/".$entry)) {
554  $this->deleteThumbnailFile($path."/".$entry);
555  } else {
556  if(!preg_match('/^thumbnail_([^\.]*)\.jpg$/i',$entry)) continue;
557  FileHandler::removeFile($path.'/'.$entry);
558  }
559  }
560  }
561  $directory->close();
562  }
563 
569  {
570  $module_srl = Context::get('module_srl');
571  $var_idx = Context::get('var_idx');
572  $name = Context::get('name');
573  $type = Context::get('type');
574  $is_required = Context::get('is_required');
575  $default = Context::get('default');
576  $desc = Context::get('desc') ? Context::get('desc') : '';
577  $search = Context::get('search');
578  $eid = Context::get('eid');
579  $obj = new stdClass();
580 
581  if(!$module_srl || !$name || !$eid) return new BaseObject(-1,'msg_invalid_request');
582  // set the max value if idx is not specified
583  if(!$var_idx)
584  {
585  $obj->module_srl = $module_srl;
586  $output = executeQuery('document.getDocumentMaxExtraKeyIdx', $obj);
587  $var_idx = $output->data->var_idx+1;
588  }
589 
590  // Check if the module name already exists
591  $obj->module_srl = $module_srl;
592  $obj->var_idx = $var_idx;
593  $obj->eid = $eid;
594  $output = executeQuery('document.isExistsExtraKey', $obj);
595  if(!$output->toBool() || $output->data->count)
596  {
597  return new BaseObject(-1, 'msg_extra_name_exists');
598  }
599 
600  // insert or update
601  $oDocumentController = getController('document');
602  $output = $oDocumentController->insertDocumentExtraKey($module_srl, $var_idx, $name, $type, $is_required, $search, $default, $desc, $eid);
603  if(!$output->toBool()) return $output;
604 
605  $this->setMessage('success_registed');
606 
607  $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'module', 'admin', 'act', 'dispDocumentAdminAlias', 'document_srl', $args->document_srl);
608  $this->setRedirectUrl($returnUrl);
609  }
610 
616  {
617  $module_srl = Context::get('module_srl');
618  $var_idx = Context::get('var_idx');
619  if(!$module_srl || !$var_idx) return new BaseObject(-1,'msg_invalid_request');
620 
621  $oDocumentController = getController('document');
622  $output = $oDocumentController->deleteDocumentExtraKeys($module_srl, $var_idx);
623  if(!$output->toBool()) return $output;
624 
625  $this->setMessage('success_deleted');
626  }
627 
633  {
634  $type = Context::get('type');
635  $module_srl = Context::get('module_srl');
636  $var_idx = Context::get('var_idx');
637 
638  if(!$type || !$module_srl || !$var_idx) return new BaseObject(-1,'msg_invalid_request');
639 
640  $oModuleModel = getModel('module');
641  $module_info = $oModuleModel->getModuleInfoByModuleSrl($module_srl);
642  if(!$module_info->module_srl) return new BaseObject(-1,'msg_invalid_request');
643 
644  $oDocumentModel = getModel('document');
645  $extra_keys = $oDocumentModel->getExtraKeys($module_srl);
646  if(!$extra_keys[$var_idx]) return new BaseObject(-1,'msg_invalid_request');
647 
648  if($type == 'up') $new_idx = $var_idx-1;
649  else $new_idx = $var_idx+1;
650  if($new_idx<1) return new BaseObject(-1,'msg_invalid_request');
651 
652  $args = new stdClass();
653  $args->module_srl = $module_srl;
654  $args->var_idx = $new_idx;
655  $output = executeQuery('document.getDocumentExtraKeys', $args);
656  if (!$output->toBool()) return $output;
657  if (!$output->data) return new BaseObject(-1, 'msg_invalid_request');
658  unset($args);
659 
660  // update immediately if there is no idx to change
661  if(!$extra_keys[$new_idx])
662  {
663  $args = new stdClass();
664  $args->module_srl = $module_srl;
665  $args->var_idx = $var_idx;
666  $args->new_idx = $new_idx;
667  $output = executeQuery('document.updateDocumentExtraKeyIdx', $args);
668  if(!$output->toBool()) return $output;
669  $output = executeQuery('document.updateDocumentExtraVarIdx', $args);
670  if(!$output->toBool()) return $output;
671  // replace if exists
672  }
673  else
674  {
675  $args = new stdClass();
676  $args->module_srl = $module_srl;
677  $args->var_idx = $new_idx;
678  $args->new_idx = -10000;
679  $output = executeQuery('document.updateDocumentExtraKeyIdx', $args);
680  if(!$output->toBool()) return $output;
681  $output = executeQuery('document.updateDocumentExtraVarIdx', $args);
682  if(!$output->toBool()) return $output;
683 
684  $args->var_idx = $var_idx;
685  $args->new_idx = $new_idx;
686  $output = executeQuery('document.updateDocumentExtraKeyIdx', $args);
687  if(!$output->toBool()) return $output;
688  $output = executeQuery('document.updateDocumentExtraVarIdx', $args);
689  if(!$output->toBool()) return $output;
690 
691  $args->var_idx = -10000;
692  $args->new_idx = $var_idx;
693  $output = executeQuery('document.updateDocumentExtraKeyIdx', $args);
694  if(!$output->toBool()) return $output;
695  $output = executeQuery('document.updateDocumentExtraVarIdx', $args);
696  if(!$output->toBool()) return $output;
697  }
698 
699  $oCacheHandler = CacheHandler::getInstance('object', NULL, TRUE);
700  if($oCacheHandler->isSupport())
701  {
702  $object_key = 'module_document_extra_keys:'.$module_srl;
703  $cache_key = $oCacheHandler->getGroupKey('site_and_module', $object_key);
704  $oCacheHandler->delete($cache_key);
705  }
706  }
707 
713  {
714  $args = Context::gets('module_srl','document_srl', 'alias_title');
715  $alias_srl = Context::get('alias_srl');
716  if(!$alias_srl)
717  {
718  $args->alias_srl = getNextSequence();
719  $query = "document.insertAlias";
720  }
721  else
722  {
723  $args->alias_srl = $alias_srl;
724  $query = "document.updateAlias";
725  }
726  $output = executeQuery($query, $args);
727 
728  $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'module', 'admin', 'act', 'dispDocumentAdminAlias', 'document_srl', $args->document_srl);
729  return $this->setRedirectUrl($returnUrl, $output);
730  }
731 
737  {
738  $document_srl = Context::get('document_srl');
739  $alias_srl = Context::get('target_srl');
740  $args->alias_srl = $alias_srl;
741  $output = executeQuery("document.deleteAlias", $args);
742 
743  $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'module', 'admin', 'act', 'dispDocumentAdminAlias', 'document_srl', $document_srl);
744  return $this->setRedirectUrl($returnUrl, $output);
745  }
746 
753  {
754  $document_srl = Context::get('document_srl');
755 
756  $oDocumentModel = getModel('document');
757  $oDocumentController = getController('document');
758  $oDocument = $oDocumentModel->getDocument($document_srl, false, false);
759  if(!$oDocument->isGranted()) return $this->stop('msg_not_permitted');
760 
761  $oModuleModel = getModel('module');
762  $module_info = $oModuleModel->getModuleInfoByDocumentSrl($document_srl);
763 
764  $args = new stdClass();
765  $args->description = $message_content;
766  $args->document_srl = $document_srl;
767 
768  $oDocumentController->moveDocumentToTrash($args);
769 
770  $returnUrl = Context::get('success_return_url');
771  if(!$returnUrl)
772  {
773  $arrUrl = parse_url(Context::get('cur_url'));
774  $query = "";
775 
776  if($arrUrl['query'])
777  {
778  parse_str($arrUrl['query'], $arrQuery);
779 
780  // set query
781  if(isset($arrQuery['document_srl']))
782  unset($arrQuery['document_srl']);
783 
784  $searchArgs = new stdClass;
785  foreach($arrQuery as $key=>$val)
786  {
787  $searchArgs->{$key} = $val;
788  }
789 
790  if(!isset($searchArgs->sort_index))
791  $searchArgs->sort_index = $module_info->order_target;
792 
793  foreach($module_info as $key=>$val)
794  {
795  if(!isset($searchArgs->{$key}))
796  $searchArgs->{$key} = $val;
797  }
798 
799  $oDocumentModel = getModel('document');
800  $output = $oDocumentModel->getDocumentList($searchArgs, $module_info->except_notice, TRUE, array('document_srl'));
801 
802  $cur_page = 1;
803  if(isset($arrQuery['page'])) {
804  $cur_page = (int)$arrQuery['page'];
805  }
806 
807 
808  if($cur_page>1 && count($output->data) == 0)
809  $arrQuery['page'] = $cur_page - 1;
810 
811  $query = "?";
812  foreach($arrQuery as $key=>$val)
813  $query .= sprintf("%s=%s&", $key, $val);
814  $query = substr($query, 0, -1);
815  }
816  $returnUrl = $arrUrl['path'] . $query;
817  }
818 
819  $this->add('redirect_url', $returnUrl);
820  }
821 
827  {
828  $trash_srl = Context::get('trash_srl');
829  $this->restoreTrash($trash_srl);
830  }
831 
832  /*function restoreTrash($trash_srl){
833  $oDB = &DB::getInstance();
834  $oDocumentModel = getModel('document');
835 
836  $trash_args->trash_srl = $trash_srl;
837 
838  $output = executeQuery('document.getTrash', $trash_args);
839  if (!$output->toBool()) {
840  return $output;
841  }
842 
843  $document_args->document_srl = $output->data->document_srl;
844  $document_args->module_srl = $output->data->module_srl;
845  $document_args->member_srl = $output->data->member_srl;
846  $document_args->ipaddress = $output->data->ipaddress;
847  $document_args->update_order = $output->data->update_order;
848 
849  $oDocument = $oDocumentModel->getDocument($document_args->document_srl);
850 
851  // begin transaction
852  $oDB->begin();
853 
854  $output = executeQuery('document.updateDocument', $document_args);
855  if (!$output->toBool()) {
856  $oDB->rollback();
857  return $output;
858  }
859 
860  $output = executeQuery('document.deleteTrash', $trash_args);
861  if (!$output->toBool()) {
862  $oDB->rollback();
863  return $output;
864  }
865  // If the post was not temorarily saved, set the attachment's status to be valid
866  if($oDocument->hasUploadedFiles() && $document_args->member_srl != $document_args->module_srl) {
867  $args->upload_target_srl = $oDocument->document_srl;
868  $args->isvalid = 'Y';
869  executeQuery('file.updateFileValid', $args);
870  }
871  // call a trigger (after)
872  if($output->toBool()) {
873  $trigger_output = ModuleHandler::triggerCall('document.restoreTrash', 'after', $document_args);
874  if(!$trigger_output->toBool()) {
875  $oDB->rollback();
876  return $trigger_output;
877  }
878  }
879 
880  // commit
881  $oDB->commit();
882  return $output;
883  }*/
884 
891  function restoreTrash($originObject)
892  {
893  if(is_array($originObject)) $originObject = (object)$originObject;
894 
895  $oDocumentController = getController('document');
896  $oDocumentModel = getModel('document');
897 
898  $oDB = &DB::getInstance();
899  $oDB->begin();
900 
901  //DB restore
902  $output = $oDocumentController->insertDocument($originObject, false, true, false);
903  if(!$output->toBool()) return new BaseObject(-1, $output->getMessage());
904 
905  //FILE restore
906  $oDocument = $oDocumentModel->getDocument($originObject->document_srl);
907  // If the post was not temorarily saved, set the attachment's status to be valid
908  if($oDocument->hasUploadedFiles() && $originObject->member_srl != $originObject->module_srl)
909  {
910  $args = new stdClass();
911  $args->upload_target_srl = $oDocument->document_srl;
912  $args->isvalid = 'Y';
913  $output = executeQuery('file.updateFileValid', $args);
914  }
915 
916  // call a trigger (after)
917  if($output->toBool())
918  {
919  $trigger_output = ModuleHandler::triggerCall('document.restoreTrash', 'after', $originObject);
920  if(!$trigger_output->toBool())
921  {
922  $oDB->rollback();
923  return $trigger_output;
924  }
925  }
926 
927  // commit
928  $oDB->commit();
929  return new BaseObject(0, 'success');
930  }
931 
938  function emptyTrash($originObject)
939  {
940  $originObject = unserialize($originObject);
941  if(is_array($originObject)) $originObject = (object) $originObject;
942 
943  $oDocument = new documentItem();
944  $oDocument->setAttribute($originObject);
945 
946  $oDocumentController = getController('document');
947  $output = $oDocumentController->deleteDocument($oDocument->get('document_srl'), true, true, $oDocument);
948  return $output;
949  }
950 }
951 /* End of file document.admin.controller.php */
952 /* Location: ./modules/document/document.admin.controller.php */
$oModuleModel
Definition: ko.install.php:236
setMessage($message= 'success', $type=NULL)
getController($module_name)
Definition: func.inc.php:90
getNumberingPath($no, $size=3)
Definition: func.inc.php:1081
removeFile($filename)
$obj
Definition: ko.install.php:262
procDocumentAdminMoveToTrash()
move a document to trash.
$output
Definition: ko.install.php:193
$module_info
Definition: ko.install.php:289
& getInstance($target= 'object', $info=null, $always_use_file=false)
getNotEncodedUrl()
Definition: func.inc.php:316
copyDocumentModule($document_srl_list, $module_srl, $category_srl)
$module_srl
integer value to represent a run-time instance of Module (XE Module)
rename($source, $target)
$args
Definition: ko.install.php:185
$document_srl
Definition: ko.install.php:279
$oDocumentModel
Definition: ko.install.php:259
getInstance($db_type=NULL)
Definition: DB.class.php:142
document the module&#39;s high class {
makeDir($path_string)
getLang($code)
$oDocumentController
Definition: ko.install.php:260
getNextSequence()
Definition: func.inc.php:236
getModel($module_name)
Definition: func.inc.php:145
$module_srl
Definition: ko.install.php:254
executeQuery($query_id, $args=NULL, $arg_columns=NULL)
Definition: func.inc.php:203
moveDocumentModule($document_srl_list, $module_srl, $category_srl)
$oModuleController
Definition: ko.install.php:287
triggerCall($trigger_name, $called_position, &$obj)
getClass($module_name)
Definition: func.inc.php:189