/php/photobucket_external_repository_manager.class.php

https://bitbucket.org/chamilo/chamilo-ext-repo-photobucket-dev/ · PHP · 199 lines · 113 code · 27 blank · 59 comment · 4 complexity · 7f33f24fec2ef8f748cbd2e795d379d1 MD5 · raw file

  1. <?php
  2. namespace common\extensions\external_repository_manager\implementation\photobucket;
  3. use common\libraries\Translation;
  4. use common\libraries\Request;
  5. use common\libraries\Path;
  6. use common\libraries\ActionBarSearchForm;
  7. use common\libraries\PatternMatchCondition;
  8. use common\libraries\OrCondition;
  9. use common\libraries\Utilities;
  10. use common\extensions\external_repository_manager\ExternalRepositoryManager;
  11. use common\extensions\external_repository_manager\ExternalRepositoryObject;
  12. use common\extensions\external_repository_manager\ExternalRepositoryObjectRenderer;
  13. use common\extensions\external_repository_manager\ExternalRepositoryObjectDisplay;
  14. use repository\ExternalSetting;
  15. use repository\content_object\document\Document;
  16. /**
  17. *
  18. * @author magali.gillard
  19. *
  20. */
  21. class PhotobucketExternalRepositoryManager extends ExternalRepositoryManager
  22. {
  23. const REPOSITORY_TYPE = 'photobucket';
  24. const PARAM_FEED_TYPE = 'feed';
  25. const PARAM_FEED_IDENTIFIER = 'identifier';
  26. const FEED_TYPE_GENERAL = 1;
  27. const FEED_TYPE_MY_PHOTOS = 2;
  28. /**
  29. * @param Application $application
  30. */
  31. function __construct($external_repository, $application)
  32. {
  33. parent :: __construct($external_repository, $application);
  34. $this->set_parameter(self :: PARAM_FEED_TYPE, Request :: get(self :: PARAM_FEED_TYPE));
  35. }
  36. /* (non-PHPdoc)
  37. * @see application/common/external_repository_manager/ExternalRepositoryManager#get_application_component_path()
  38. */
  39. function get_application_component_path()
  40. {
  41. return Path :: get_common_extensions_path() . 'external_repository_manager/implementation/photobucket/php/component/';
  42. }
  43. /* (non-PHPdoc)
  44. * @see application/common/external_repository_manager/ExternalRepositoryManager#validate_settings()
  45. */
  46. function validate_settings($external_repository)
  47. {
  48. $key = ExternalSetting :: get('consumer_key', $external_repository->get_id());
  49. $secret = ExternalSetting :: get('consumer_secret', $external_repository->get_id());
  50. if (! $key || ! $secret)
  51. {
  52. return false;
  53. }
  54. return true;
  55. }
  56. /* (non-PHPdoc)
  57. * @see application/common/external_repository_manager/ExternalRepositoryManager#support_sorting_direction()
  58. */
  59. function support_sorting_direction()
  60. {
  61. return true;
  62. }
  63. /**
  64. * @param ExternalRepositoryObject $object
  65. * @return string
  66. */
  67. function get_external_repository_object_viewing_url(ExternalRepositoryObject $object)
  68. {
  69. $parameters = array();
  70. $parameters[self :: PARAM_EXTERNAL_REPOSITORY_MANAGER_ACTION] = self :: ACTION_VIEW_EXTERNAL_REPOSITORY;
  71. $parameters[self :: PARAM_EXTERNAL_REPOSITORY_ID] = $object->get_id();
  72. return $this->get_url($parameters);
  73. }
  74. /* (non-PHPdoc)
  75. * @see application/common/external_repository_manager/ExternalRepositoryManager#get_menu_items()
  76. */
  77. function get_menu_items()
  78. {
  79. $menu_items = array();
  80. $my_photos = array();
  81. $my_photos['title'] = Translation :: get('MyPhotos');
  82. $my_photos['url'] = $this->get_url(array(self :: PARAM_FEED_TYPE => self :: FEED_TYPE_MY_PHOTOS), array(
  83. ActionBarSearchForm :: PARAM_SIMPLE_SEARCH_QUERY));
  84. $my_photos['class'] = 'user';
  85. $menu_items[] = $my_photos;
  86. $general = array();
  87. $general['title'] = Translation :: get('Public');
  88. $general['url'] = $this->get_url(array(self :: PARAM_FEED_TYPE => self :: FEED_TYPE_GENERAL), array(
  89. ActionBarSearchForm :: PARAM_SIMPLE_SEARCH_QUERY));
  90. $general['class'] = 'home';
  91. $menu_items[] = $general;
  92. return $menu_items;
  93. }
  94. /* (non-PHPdoc)
  95. * @see application/common/external_repository_manager/ExternalRepositoryManager#is_ready_to_be_used()
  96. */
  97. function is_ready_to_be_used()
  98. {
  99. return false;
  100. }
  101. /* (non-PHPdoc)
  102. * @see application/common/external_repository_manager/ExternalRepositoryManager#get_external_repository_actions()
  103. */
  104. function get_external_repository_actions()
  105. {
  106. $actions = array(self :: ACTION_BROWSE_EXTERNAL_REPOSITORY, self :: ACTION_UPLOAD_EXTERNAL_REPOSITORY,
  107. self :: ACTION_EXPORT_EXTERNAL_REPOSITORY);
  108. $is_platform = $this->get_user()->is_platform_admin() && (count(ExternalSetting :: get_all($this->get_external_repository()->get_id())) > 0);
  109. if ($is_platform)
  110. {
  111. $actions[] = self :: ACTION_CONFIGURE_EXTERNAL_REPOSITORY;
  112. }
  113. return $actions;
  114. }
  115. /* (non-PHPdoc)
  116. * @see application/common/external_repository_manager/ExternalRepositoryManager#get_available_renderers()
  117. */
  118. function get_available_renderers()
  119. {
  120. return array(ExternalRepositoryObjectRenderer :: TYPE_GALLERY,
  121. ExternalRepositoryObjectRenderer :: TYPE_SLIDESHOW, ExternalRepositoryObjectRenderer :: TYPE_TABLE);
  122. }
  123. /* (non-PHPdoc)
  124. * @see application/common/external_repository_manager/ExternalRepositoryManager#get_content_object_type_conditions()
  125. */
  126. function get_content_object_type_conditions()
  127. {
  128. $image_types = Document :: get_image_types();
  129. $image_conditions = array();
  130. foreach ($image_types as $image_type)
  131. {
  132. $image_conditions[] = new PatternMatchCondition(Document :: PROPERTY_FILENAME, '*.' . $image_type, Document :: get_type_name());
  133. }
  134. return new OrCondition($image_conditions);
  135. }
  136. /**
  137. * @return string
  138. */
  139. function get_repository_type()
  140. {
  141. return self :: REPOSITORY_TYPE;
  142. }
  143. /**
  144. * Helper function for the SubManager class,
  145. * pending access to class constants via variables in PHP 5.3
  146. * e.g. $name = $class :: DEFAULT_ACTION
  147. *
  148. * DO NOT USE IN THIS SUBMANAGER'S CONTEXT
  149. * Instead use:
  150. * - self :: DEFAULT_ACTION in the context of this class
  151. * - YourSubManager :: DEFAULT_ACTION in all other application classes
  152. */
  153. static function get_default_action()
  154. {
  155. return self :: DEFAULT_ACTION;
  156. }
  157. /**
  158. * Helper function for the SubManager class,
  159. * pending access to class constants via variables in PHP 5.3
  160. * e.g. $name = $class :: PARAM_ACTION
  161. *
  162. * DO NOT USE IN THIS SUBMANAGER'S CONTEXT
  163. * Instead use:
  164. * - self :: PARAM_ACTION in the context of this class
  165. * - YourSubManager :: PARAM_ACTION in all other application classes
  166. */
  167. static function get_action_parameter()
  168. {
  169. return self :: PARAM_EXTERNAL_REPOSITORY_MANAGER_ACTION;
  170. }
  171. }
  172. ?>