PageRenderTime 44ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 1ms

/protected/modules/image/ImageModule.php

https://gitlab.com/RonLab1987/YupePlusClear
PHP | 400 lines | 257 code | 35 blank | 108 comment | 7 complexity | 1a95061bc3089771b04b243b5f0f9f9f MD5 | raw file
  1. <?php
  2. /**
  3. * ImageModule основной класс модуля image
  4. *
  5. * @author yupe team <team@yupe.ru>
  6. * @link http://yupe.ru
  7. * @copyright 2009-2013 amyLabs && Yupe! team
  8. * @package yupe.modules.image
  9. * @since 0.1
  10. *
  11. */
  12. use yupe\components\WebModule;
  13. /**
  14. * Class ImageModule
  15. */
  16. class ImageModule extends WebModule
  17. {
  18. /**
  19. *
  20. */
  21. const VERSION = '1.0';
  22. /**
  23. * @var string
  24. */
  25. public $uploadPath = 'image';
  26. /**
  27. * @var
  28. */
  29. public $documentRoot;
  30. /**
  31. * @var string
  32. */
  33. public $allowedExtensions = 'jpg,jpeg,png,gif';
  34. /**
  35. * @var int
  36. */
  37. public $minSize = 0;
  38. /**
  39. * @var int
  40. */
  41. public $maxSize = 5242880; /* 5 MB */
  42. /**
  43. * @var int
  44. */
  45. public $maxFiles = 1;
  46. /**
  47. * @var
  48. */
  49. public $types;
  50. /**
  51. * @var string
  52. */
  53. public $mimeTypes = 'image/gif, image/jpeg, image/png';
  54. /**
  55. * @var int
  56. */
  57. public $width = 950;
  58. /**
  59. * @var int
  60. */
  61. public $height = 950;
  62. /**
  63. * @return string
  64. */
  65. public function getUploadPath()
  66. {
  67. return Yii::app()->uploadManager->getBasePath().DIRECTORY_SEPARATOR.$this->uploadPath;
  68. }
  69. /**
  70. * @return bool
  71. */
  72. public function getInstall()
  73. {
  74. if (parent::getInstall()) {
  75. @mkdir($this->getUploadPath(), 0755);
  76. }
  77. return false;
  78. }
  79. /**
  80. * @return array
  81. */
  82. public function getDependencies()
  83. {
  84. return [
  85. 'category',
  86. ];
  87. }
  88. /**
  89. * @return string
  90. */
  91. public function getVersion()
  92. {
  93. return self::VERSION;
  94. }
  95. /**
  96. * @return string
  97. */
  98. public function getIcon()
  99. {
  100. return 'fa fa-fw fa-picture-o';
  101. }
  102. /**
  103. * @return array
  104. */
  105. public function getParamsLabels()
  106. {
  107. return [
  108. 'mainCategory' => Yii::t('ImageModule.image', 'Main images category'),
  109. 'uploadPath' => Yii::t('ImageModule.image', 'Directory for uploading images'),
  110. 'allowedExtensions' => Yii::t('ImageModule.image', 'Allowed extensions (separated by comma)'),
  111. 'minSize' => Yii::t('ImageModule.image', 'Minimum size (in bytes)'),
  112. 'maxSize' => Yii::t('ImageModule.image', 'Maximum size (in bytes)'),
  113. 'mimeTypes' => Yii::t('ImageModule.image', 'Mime types'),
  114. 'width' => Yii::t('ImageModule.image', 'Image width'),
  115. 'height' => Yii::t('ImageModule.image', 'Image height'),
  116. ];
  117. }
  118. /**
  119. * @return array
  120. */
  121. public function getEditableParams()
  122. {
  123. return [
  124. 'uploadPath',
  125. 'allowedExtensions',
  126. 'minSize',
  127. 'maxSize',
  128. 'mainCategory' => CHtml::listData($this->getCategoryList(), 'id', 'name'),
  129. 'mimeTypes',
  130. 'width',
  131. 'height',
  132. ];
  133. }
  134. /**
  135. * @return array
  136. */
  137. public function getEditableParamsGroups()
  138. {
  139. return [
  140. '0.main' => [
  141. 'label' => Yii::t('ImageModule.image', 'Download settings'),
  142. 'items' => [
  143. 'allowedExtensions',
  144. 'mimeTypes',
  145. 'minSize',
  146. 'maxSize',
  147. 'uploadPath',
  148. 'mainCategory',
  149. ],
  150. ],
  151. '1.main' => [
  152. 'label' => Yii::t('ImageModule.image', 'Resize settings'),
  153. 'items' => [
  154. 'width',
  155. 'height',
  156. ],
  157. ],
  158. ];
  159. }
  160. /**
  161. * @return array|bool
  162. */
  163. public function checkSelf()
  164. {
  165. $messages = [];
  166. $uploadPath = Yii::app()->uploadManager->getBasePath().DIRECTORY_SEPARATOR.$this->uploadPath;
  167. if (!$uploadPath) {
  168. $messages[WebModule::CHECK_ERROR][] = [
  169. 'type' => WebModule::CHECK_ERROR,
  170. 'message' => Yii::t(
  171. 'ImageModule.image',
  172. 'Please, choose catalog for images! {link}',
  173. [
  174. '{link}' => CHtml::link(
  175. Yii::t('ImageModule.image', 'Change module settings'),
  176. [
  177. '/yupe/backend/modulesettings/',
  178. 'module' => $this->id,
  179. ]
  180. ),
  181. ]
  182. ),
  183. ];
  184. }
  185. if (!is_dir($uploadPath) || !is_writable($uploadPath)) {
  186. $messages[WebModule::CHECK_ERROR][] = [
  187. 'type' => WebModule::CHECK_ERROR,
  188. 'message' => Yii::t(
  189. 'ImageModule.image',
  190. 'Directory "{dir}" is not accessible for writing ot not exists! {link}',
  191. [
  192. '{dir}' => $uploadPath,
  193. '{link}' => CHtml::link(
  194. Yii::t('ImageModule.image', 'Change module settings'),
  195. [
  196. '/yupe/backend/modulesettings/',
  197. 'module' => $this->id,
  198. ]
  199. ),
  200. ]
  201. ),
  202. ];
  203. }
  204. if (!$this->maxSize || $this->maxSize <= 0) {
  205. $messages[WebModule::CHECK_ERROR][] = [
  206. 'type' => WebModule::CHECK_ERROR,
  207. 'message' => Yii::t(
  208. 'ImageModule.image',
  209. 'Set maximum images size {link}',
  210. [
  211. '{link}' => CHtml::link(
  212. Yii::t('ImageModule.image', 'Change module settings'),
  213. [
  214. '/yupe/backend/modulesettings/',
  215. 'module' => $this->id,
  216. ]
  217. ),
  218. ]
  219. ),
  220. ];
  221. }
  222. return (isset($messages[WebModule::CHECK_ERROR])) ? $messages : true;
  223. }
  224. /**
  225. * @return string
  226. */
  227. public function getCategory()
  228. {
  229. return Yii::t('ImageModule.image', 'Content');
  230. }
  231. /**
  232. * @return string
  233. */
  234. public function getName()
  235. {
  236. return Yii::t('ImageModule.image', 'Images');
  237. }
  238. /**
  239. * @return string
  240. */
  241. public function getDescription()
  242. {
  243. return Yii::t('ImageModule.image', 'Module for images management');
  244. }
  245. /**
  246. * @return string
  247. */
  248. public function getAuthor()
  249. {
  250. return Yii::t('ImageModule.image', 'yupe team');
  251. }
  252. /**
  253. * @return string
  254. */
  255. public function getAuthorEmail()
  256. {
  257. return Yii::t('ImageModule.image', 'team@yupe.ru');
  258. }
  259. /**
  260. * @return string
  261. */
  262. public function getUrl()
  263. {
  264. return Yii::t('ImageModule.image', 'http://yupe.ru');
  265. }
  266. /**
  267. *
  268. */
  269. public function init()
  270. {
  271. parent::init();
  272. $this->documentRoot = $_SERVER['DOCUMENT_ROOT'];
  273. $forImport = [];
  274. if (Yii::app()->hasModule('gallery')) {
  275. $forImport[] = 'gallery.models.*';
  276. }
  277. $this->setImport(
  278. array_merge(
  279. [
  280. 'image.models.*',
  281. ],
  282. $forImport
  283. )
  284. );
  285. }
  286. /**
  287. * @return array
  288. */
  289. public function getNavigation()
  290. {
  291. return [
  292. [
  293. 'icon' => 'fa fa-fw fa-list-alt',
  294. 'label' => Yii::t('ImageModule.image', 'Images list'),
  295. 'url' => ['/image/imageBackend/index'],
  296. ],
  297. [
  298. 'icon' => 'fa fa-fw fa-plus-square',
  299. 'label' => Yii::t('ImageModule.image', 'Add image'),
  300. 'url' => ['/image/imageBackend/create'],
  301. ],
  302. [
  303. 'icon' => 'fa fa-fw fa-folder-open',
  304. 'label' => Yii::t('ImageModule.image', 'Images categories'),
  305. 'url' => ['/category/categoryBackend/index', 'Category[parent_id]' => (int)$this->mainCategory],
  306. ],
  307. ];
  308. }
  309. /**
  310. * @return string
  311. */
  312. public function getAdminPageLink()
  313. {
  314. return '/image/imageBackend/index';
  315. }
  316. /**
  317. * Получаем разрешённые форматы:
  318. *
  319. * @return array of allowed extensions
  320. **/
  321. public function allowedExtensions()
  322. {
  323. return explode(',', $this->allowedExtensions);
  324. }
  325. /**
  326. * @return array
  327. */
  328. public function getAuthItems()
  329. {
  330. return [
  331. [
  332. 'name' => 'Image.ImageManager',
  333. 'description' => Yii::t('ImageModule.image', 'Manage images'),
  334. 'type' => AuthItem::TYPE_TASK,
  335. 'items' => [
  336. [
  337. 'type' => AuthItem::TYPE_OPERATION,
  338. 'name' => 'Image.ImageBackend.Create',
  339. 'description' => Yii::t('ImageModule.image', 'Creating image'),
  340. ],
  341. [
  342. 'type' => AuthItem::TYPE_OPERATION,
  343. 'name' => 'Image.ImageBackend.Delete',
  344. 'description' => Yii::t('ImageModule.image', 'Removing image'),
  345. ],
  346. [
  347. 'type' => AuthItem::TYPE_OPERATION,
  348. 'name' => 'Image.ImageBackend.Index',
  349. 'description' => Yii::t('ImageModule.image', 'List of images'),
  350. ],
  351. [
  352. 'type' => AuthItem::TYPE_OPERATION,
  353. 'name' => 'Image.ImageBackend.Update',
  354. 'description' => Yii::t('ImageModule.image', 'Editing images'),
  355. ],
  356. [
  357. 'type' => AuthItem::TYPE_OPERATION,
  358. 'name' => 'Image.ImageBackend.View',
  359. 'description' => Yii::t('ImageModule.image', 'Viewing images'),
  360. ],
  361. ],
  362. ],
  363. ];
  364. }
  365. }