Your IP : 216.73.216.63


Current Path : /var/www/ooareogundevinitiative/wp-content/plugins/brizy/admin/cloud/
Upload File :
Current File : /var/www/ooareogundevinitiative/wp-content/plugins/brizy/admin/cloud/font-bridge.php

<?php

/**
 * Class Brizy_Admin_Cloud_FontBridge
 */
class Brizy_Admin_Cloud_FontBridge extends Brizy_Admin_Cloud_AbstractBridge {

	/**
	 * @var Brizy_Admin_Fonts_Manager
	 */
	private $fontManager;

	/**
	 * Brizy_Admin_Cloud_FontBridge constructor.
	 *
	 * @param Brizy_Admin_Cloud_Client $client
	 */
	public function __construct(  $client ) {
		parent::__construct( $client );

		$this->fontManager = new Brizy_Admin_Fonts_Manager();
	}

	/**
	 * @param $fontUid
	 *
	 * @return mixed|void
	 * @throws Exception
	 */
	public function export( $fontUid ) {

		$fontData = $this->fontManager->getFontForExport( $fontUid );

		if ( ! $fontData ) {
			throw new \Exception( "Unable to find font {$fontUid}" );
		}

		if ( ! $this->client->getFont( $fontUid ) ) {
			$this->client->createFont( $fontData );
		}
	}

	/**
	 * @param $fontUid
	 *
	 * @return mixed|void
	 * @throws Exception
	 */
	public function import( $fontUid ) {

		if ( $font = $this->fontManager->getFont( $fontUid ) ) {
			return $font;
		}

		$font = $this->client->getFont( $fontUid );

		$family  = $font['family'];
		$weights = $font['files'];

		$newWeights = array();

		foreach ( $weights as $weight => $weightType ) {
			foreach ( $weightType as $type => $fileUrl ) {
				$newWeights[ $weight ][ $type ] = $this->downloadFileToTemporaryFile( $fileUrl );
			}
		}

		return $this->fontManager->createFont( $fontUid, $family, $newWeights, 'uploaded' );
	}

	private function downloadFileToTemporaryFile( $url ) {
		$filePath = tempnam( sys_get_temp_dir(), basename( $url ) );
		$content  = Brizy_Editor_Asset_StaticFile::get_asset_content( $url );
		$result   = file_put_contents( $filePath, $content );

		if ( $result === false ) {
			Brizy_Logger::instance()->critical( 'Filed to write font content',
				[
					'url'      => $url,
					'filePath' => $filePath
				] );
			throw new Exception( 'Filed to write font content' );
		}

		return array(
			'name'     => basename( $url ),
			'type'     => mime_content_type( $filePath ),
			'tmp_name' => $filePath,
			'error'    => 0,
			'size'     => filesize( $filePath )
		);
	}

	/**
	 * @param $fontUid
	 *
	 * @return mixed|void
	 * @throws Exception
	 */
	public function delete( $fontUid ) {
		throw new Exception( 'Not implemented' );
	}
}