Exemple #1
0
 /**
  * {@inheritdoc}
  */
 public function up(Schema $schema, QueryBag $queries)
 {
     //add attachment extend field
     self::addAvatarToUser($schema, $this->attachmentExtension);
     self::addOwnerToOroFile($schema);
     //save old avatars to new place
     $em = $this->container->get('doctrine.orm.entity_manager');
     $query = "SELECT id, image, createdAt FROM oro_user WHERE image != ''";
     $userImages = $em->getConnection()->executeQuery($query)->fetchAll(\PDO::FETCH_ASSOC);
     if (!empty($userImages)) {
         $maxId = (int) $em->getConnection()->executeQuery('SELECT MAX(id) FROM oro_attachment_file;')->fetchColumn();
         foreach ($userImages as $userData) {
             $filePath = $this->getUploadFileName($userData);
             // file doesn't exists or not readable
             if (false === $filePath || !is_readable($filePath)) {
                 $this->container->get('logger')->addAlert(sprintf('There\'s no image %s for user %d exists.', $userData['image'], $userData['id']));
                 continue;
             }
             try {
                 $this->container->get('oro_attachment.manager')->copyLocalFileToStorage($filePath, $userData['image']);
             } catch (\Exception $e) {
                 $this->container->get('logger')->addError(sprintf('File copy error: %s', $e->getMessage()));
             }
             $maxId++;
             $file = new SymfonyFile($filePath);
             $currentDate = new \DateTime();
             $query = sprintf('INSERT INTO oro_attachment_file
                 (id, filename, extension, mime_type, file_size, original_filename,
                  created_at, updated_at, owner_user_id)
                 values (%s, \'%s\', \'%s\', \'%s\', %s, \'%s\', \'%s\', \'%s\', %s);', $maxId, $file->getFileName(), $file->guessExtension(), $file->getMimeType(), $file->getSize(), $userData['image'], $currentDate->format('Y-m-d'), $currentDate->format('Y-m-d'), $userData['id']);
             $queries->addQuery($query);
             $query = sprintf('UPDATE oro_user set avatar_id = %d WHERE id = %d;', $maxId, $userData['id']);
             $queries->addQuery($query);
             unlink($filePath);
         }
     }
     //delete old avatars field
     $schema->getTable('oro_user')->dropColumn('image');
 }