48 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace Plugin\ActivityStreamsTwo\Util\Model\AS2ToEntity;
 | 
						|
 | 
						|
use App\Core\Event;
 | 
						|
use App\Entity\Actor;
 | 
						|
use App\Entity\Note;
 | 
						|
use App\Util\Formatting;
 | 
						|
use DateTime;
 | 
						|
 | 
						|
abstract class AS2ToNote
 | 
						|
{
 | 
						|
    /**
 | 
						|
     * @param array $args
 | 
						|
     *
 | 
						|
     * @throws \Exception
 | 
						|
     *
 | 
						|
     * @return Note
 | 
						|
     */
 | 
						|
    public static function translate(array $args, ?string $source = null): Note
 | 
						|
    {
 | 
						|
        $map = [
 | 
						|
            'isLocal'      => false,
 | 
						|
            'created'      => new DateTime($args['published'] ?? 'now'),
 | 
						|
            'content'      => $args['content'] ?? null,
 | 
						|
            'content_type' => 'text/html',
 | 
						|
            'rendered'     => null,
 | 
						|
            'modified'     => new DateTime(),
 | 
						|
            'source'       => $source,
 | 
						|
        ];
 | 
						|
        if ($map['content'] !== null) {
 | 
						|
            Event::handle('RenderNoteContent', [
 | 
						|
                $map['content'],
 | 
						|
                $map['content_type'],
 | 
						|
                &$map['rendered'],
 | 
						|
                Actor::getFromId(1), // just for testing
 | 
						|
                null, // reply to
 | 
						|
            ]);
 | 
						|
        }
 | 
						|
 | 
						|
        $obj = new Note();
 | 
						|
        foreach ($map as $prop => $val) {
 | 
						|
            $set = Formatting::snakeCaseToCamelCase("set_{$prop}");
 | 
						|
            $obj->{$set}($val);
 | 
						|
        }
 | 
						|
        return $obj;
 | 
						|
    }
 | 
						|
} |