Added support for image descriptions and multiple image posts to external services
This commit is contained in:
		
					parent
					
						
							
								a507963c7f
							
						
					
				
			
			
				commit
				
					
						bdc07b4213
					
				
			
		
					 2 changed files with 39 additions and 1 deletions
				
			
		|  | @ -21,6 +21,7 @@ use Friendica\Core\Renderer; | ||||||
| use Friendica\Core\System; | use Friendica\Core\System; | ||||||
| use Friendica\Model\Contact; | use Friendica\Model\Contact; | ||||||
| use Friendica\Model\Event; | use Friendica\Model\Event; | ||||||
|  | use Friendica\Model\Photo; | ||||||
| use Friendica\Network\Probe; | use Friendica\Network\Probe; | ||||||
| use Friendica\Object\Image; | use Friendica\Object\Image; | ||||||
| use Friendica\Util\Map; | use Friendica\Util\Map; | ||||||
|  | @ -238,11 +239,30 @@ class BBCode extends BaseObject | ||||||
| 		$plink = defaults($item, 'plink', ''); | 		$plink = defaults($item, 'plink', ''); | ||||||
| 		$post = self::getAttachmentData($body); | 		$post = self::getAttachmentData($body); | ||||||
| 
 | 
 | ||||||
|  | 		// Get all linked images with alternative image description
 | ||||||
|  | 		if (preg_match_all("/\[img=([^\[\]]*)\]([^\[\]]*)\[\/img\]/Usi", $body, $pictures, PREG_SET_ORDER)) { | ||||||
|  | 			foreach ($pictures as $picture) { | ||||||
|  | 				if (Photo::isLocal($picture[1])) { | ||||||
|  | 					$post['images'][] = ['url' => str_replace('-1.', '-0.', $picture[1]), 'description' => $picture[2]]; | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 			if (!empty($post['images'][0]['description'])) { | ||||||
|  | 				$post['image_description'] = $post['images'][0]['description']; | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		if (preg_match_all("/\[img\]([^\[\]]*)\[\/img\]/Usi", $body, $pictures, PREG_SET_ORDER)) { | ||||||
|  | 			foreach ($pictures as $picture) { | ||||||
|  | 				if (Photo::isLocal($picture[1])) { | ||||||
|  | 					$post['images'][] = ['url' => str_replace('-1.', '-0.', $picture[1]), 'description' => '']; | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
| 		// if nothing is found, it maybe having an image.
 | 		// if nothing is found, it maybe having an image.
 | ||||||
| 		if (!isset($post["type"])) { | 		if (!isset($post["type"])) { | ||||||
| 			// Simplify image codes
 | 			// Simplify image codes
 | ||||||
| 			$body = preg_replace("/\[img\=([0-9]*)x([0-9]*)\](.*?)\[\/img\]/ism", '[img]$3[/img]', $body); | 			$body = preg_replace("/\[img\=([0-9]*)x([0-9]*)\](.*?)\[\/img\]/ism", '[img]$3[/img]', $body); | ||||||
| 
 |  | ||||||
| 			$body = preg_replace("/\[img\=(.*?)\](.*?)\[\/img\]/ism", '[img]$1[/img]', $body); | 			$body = preg_replace("/\[img\=(.*?)\](.*?)\[\/img\]/ism", '[img]$1[/img]', $body); | ||||||
| 
 | 
 | ||||||
| 			if (preg_match_all("(\[url=(.*?)\]\s*\[img\](.*?)\[\/img\]\s*\[\/url\])ism", $body, $pictures, PREG_SET_ORDER)) { | 			if (preg_match_all("(\[url=(.*?)\]\s*\[img\](.*?)\[\/img\]\s*\[\/url\])ism", $body, $pictures, PREG_SET_ORDER)) { | ||||||
|  |  | ||||||
|  | @ -709,4 +709,22 @@ class Photo extends BaseObject | ||||||
| 		$guid = substr($guid, 0, -2); | 		$guid = substr($guid, 0, -2); | ||||||
| 		return $guid; | 		return $guid; | ||||||
| 	} | 	} | ||||||
|  | 
 | ||||||
|  | 	/** | ||||||
|  | 	 * Tests if the picture link points to a locally stored picture | ||||||
|  | 	 * | ||||||
|  | 	 * @param string $name Picture link | ||||||
|  | 	 * @return boolean | ||||||
|  | 	 * @throws \Exception | ||||||
|  | 	 */ | ||||||
|  | 	public static function isLocal($name) | ||||||
|  | 	{ | ||||||
|  | 		$guid = self::getGUID($name); | ||||||
|  | 
 | ||||||
|  | 		if (empty($guid)) { | ||||||
|  | 			return false; | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		return DBA::exists('photo', ['resource-id' => $guid]); | ||||||
|  | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue