Просмотр файла Sticker/migrations/20190211165911_append_to_stickers.php

Размер файла: 1.63Kb
  1. <?php
  2.  
  3. use Phinx\Migration\AbstractMigration;
  4.  
  5. class AppendToStickers extends AbstractMigration
  6. {
  7. /**
  8. * Migrate Up.
  9. */
  10. public function up(): void
  11. {
  12. $categories = array_map('basename', glob(MODULES . '/Sticker/resources/assets/*', GLOB_ONLYDIR));
  13. foreach ($categories as $categoryName) {
  14. $this->execute("INSERT INTO stickers_categories (name, created_at) VALUES ('" . $categoryName . "', " . SITETIME .");");
  15. $lastId = $this->getAdapter()->getConnection()->lastInsertId();
  16.  
  17. $stickers = array_map('basename', glob(MODULES . '/Sticker/resources/assets/' . $categoryName . '/*.{gif,png,jpg,jpeg}', GLOB_BRACE));
  18.  
  19. foreach ($stickers as $stickerName) {
  20. $this->execute("INSERT INTO stickers (category_id, name, code) VALUES (" . $lastId . ", '/assets/modules/stickers/" . $categoryName . "/" . $stickerName . "', ':" . getBodyName($stickerName) . "');");
  21. }
  22. }
  23.  
  24. clearCache('stickers');
  25. }
  26.  
  27. /**
  28. * Migrate Down.
  29. */
  30. public function down(): void
  31. {
  32. $categories = array_map('basename', glob(MODULES . '/Sticker/resources/assets/*', GLOB_ONLYDIR));
  33.  
  34. foreach ($categories as $categoryName) {
  35. $category = $this->fetchRow('SELECT id FROM stickers_categories WHERE name = "' . $categoryName . '" LIMIT 1;');
  36.  
  37. if ($category) {
  38. $this->execute("DELETE FROM stickers_categories WHERE id='" . $category['id'] . "';");
  39. $this->execute("DELETE FROM stickers WHERE category_id='" . $category['id'] . "';");
  40. }
  41. }
  42.  
  43. clearCache('stickers');
  44. }
  45. }