/php/component/importer.class.php

https://bitbucket.org/chamilo/chamilo-ext-repo-box-dev/ · PHP · 73 lines · 64 code · 9 blank · 0 comment · 4 complexity · e9e15125f38bde1fd82cf232350ce9ff MD5 · raw file

  1. <?php
  2. namespace common\extensions\external_repository_manager\implementation\box;
  3. use common\libraries\Utilities;
  4. use common\libraries\Translation;
  5. use common\libraries\StringUtilities;
  6. use common\libraries\PlatformSetting;
  7. use common\libraries\Filesystem;
  8. use common\libraries\Application;
  9. use repository\RepositoryManager;
  10. use repository\ContentObject;
  11. use repository\ExternalSync;
  12. use repository\content_object\document\Document;
  13. use common\extensions\external_repository_manager\ExternalRepositoryManager;
  14. use common\extensions\external_repository_manager\ExternalRepositoryComponent;
  15. class BoxExternalRepositoryManagerImporterComponent extends BoxExternalRepositoryManager
  16. {
  17. function run()
  18. {
  19. ExternalRepositoryComponent :: launch($this);
  20. }
  21. function import_external_repository_object($external_object)
  22. {
  23. if ($external_object->is_importable())
  24. {
  25. $file = ContentObject :: factory(Document :: get_type_name());
  26. $file->set_title($external_object->get_title());
  27. if (PlatformSetting :: get('description_required', 'repository') && StringUtilities :: is_null_or_empty($external_object->get_description()))
  28. {
  29. $file->set_description('-');
  30. }
  31. else
  32. {
  33. $file->set_description($external_object->get_description());
  34. }
  35. $file->set_owner_id($this->get_user_id());
  36. $file->set_filename(Filesystem :: create_safe_name($external_object->get_title()));
  37. $file->set_in_memory_file($external_object->get_content_data($external_object->get_id()));
  38. if ($file->create())
  39. {
  40. ExternalSync :: quicksave($file, $external_object, $this->get_external_repository()->get_id());
  41. $parameters = $this->get_parameters();
  42. $parameters[Application :: PARAM_ACTION] = RepositoryManager :: ACTION_BROWSE_CONTENT_OBJECTS;
  43. $this->redirect(Translation :: get('ObjectImported', null, Utilities :: COMMON_LIBRARIES), false, $parameters, array(
  44. ExternalRepositoryManager :: PARAM_EXTERNAL_REPOSITORY,
  45. ExternalRepositoryManager :: PARAM_EXTERNAL_REPOSITORY_MANAGER_ACTION));
  46. }
  47. else
  48. {
  49. $parameters = $this->get_parameters();
  50. $parameters[ExternalRepositoryManager :: PARAM_EXTERNAL_REPOSITORY_MANAGER_ACTION] = ExternalRepositoryManager :: ACTION_VIEW_EXTERNAL_REPOSITORY;
  51. $parameters[ExternalRepositoryManager :: PARAM_EXTERNAL_REPOSITORY_ID] = $external_object->get_id();
  52. $this->redirect(Translation :: get('ObjectFailedImported', null, Utilities :: COMMON_LIBRARIES), true, $parameters);
  53. }
  54. }
  55. else
  56. {
  57. $parameters = $this->get_parameters();
  58. $parameters[ExternalRepositoryManager :: PARAM_EXTERNAL_REPOSITORY_MANAGER_ACTION] = ExternalRepositoryManager :: ACTION_VIEW_EXTERNAL_REPOSITORY;
  59. $parameters[ExternalRepositoryManager :: PARAM_EXTERNAL_REPOSITORY_ID] = $external_object->get_id();
  60. $this->redirect(null, false, $parameters);
  61. }
  62. }
  63. }
  64. ?>