diff options
Diffstat (limited to 'modules/gallery_unit_test/vendor')
| -rw-r--r-- | modules/gallery_unit_test/vendor/LoremIpsum.class.php | 461 | 
1 files changed, 461 insertions, 0 deletions
| diff --git a/modules/gallery_unit_test/vendor/LoremIpsum.class.php b/modules/gallery_unit_test/vendor/LoremIpsum.class.php new file mode 100644 index 00000000..07050fe5 --- /dev/null +++ b/modules/gallery_unit_test/vendor/LoremIpsum.class.php @@ -0,0 +1,461 @@ +<?php defined("SYSPATH") or die("No direct script access."); +class LoremIpsumGenerator { +	/** +	*	Copyright (c) 2009, Mathew Tinsley (tinsley@tinsology.net) +	*	All rights reserved. +	* +	*	Redistribution and use in source and binary forms, with or without +	*	modification, are permitted provided that the following conditions are met: +	*		* Redistributions of source code must retain the above copyright +	*		  notice, this list of conditions and the following disclaimer. +	*		* Redistributions in binary form must reproduce the above copyright +	*		  notice, this list of conditions and the following disclaimer in the +	*		  documentation and/or other materials provided with the distribution. +	*		* Neither the name of the organization nor the +	*		  names of its contributors may be used to endorse or promote products +	*		  derived from this software without specific prior written permission. +	* +	*	THIS SOFTWARE IS PROVIDED BY MATHEW TINSLEY ''AS IS'' AND ANY +	*	EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +	*	WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +	*	DISCLAIMED. IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY +	*	DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +	*	(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +	*	LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +	*	ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +	*	(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +	*	SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +	*/ +	 +	private $words, $wordsPerParagraph, $wordsPerSentence; +	 +	function __construct($wordsPer = 100) +	{ +		$this->wordsPerParagraph = $wordsPer; +		$this->wordsPerSentence = 24.460; +		$this->words = array( +		'lorem', +		'ipsum', +		'dolor', +		'sit', +		'amet', +		'consectetur', +		'adipiscing', +		'elit', +		'curabitur', +		'vel', +		'hendrerit', +		'libero', +		'eleifend', +		'blandit', +		'nunc', +		'ornare', +		'odio', +		'ut', +		'orci', +		'gravida', +		'imperdiet', +		'nullam', +		'purus', +		'lacinia', +		'a', +		'pretium', +		'quis', +		'congue', +		'praesent', +		'sagittis', +		'laoreet', +		'auctor', +		'mauris', +		'non', +		'velit', +		'eros', +		'dictum', +		'proin', +		'accumsan', +		'sapien', +		'nec', +		'massa', +		'volutpat', +		'venenatis', +		'sed', +		'eu', +		'molestie', +		'lacus', +		'quisque', +		'porttitor', +		'ligula', +		'dui', +		'mollis', +		'tempus', +		'at', +		'magna', +		'vestibulum', +		'turpis', +		'ac', +		'diam', +		'tincidunt', +		'id', +		'condimentum', +		'enim', +		'sodales', +		'in', +		'hac', +		'habitasse', +		'platea', +		'dictumst', +		'aenean', +		'neque', +		'fusce', +		'augue', +		'leo', +		'eget', +		'semper', +		'mattis', +		'tortor', +		'scelerisque', +		'nulla', +		'interdum', +		'tellus', +		'malesuada', +		'rhoncus', +		'porta', +		'sem', +		'aliquet', +		'et', +		'nam', +		'suspendisse', +		'potenti', +		'vivamus', +		'luctus', +		'fringilla', +		'erat', +		'donec', +		'justo', +		'vehicula', +		'ultricies', +		'varius', +		'ante', +		'primis', +		'faucibus', +		'ultrices', +		'posuere', +		'cubilia', +		'curae', +		'etiam', +		'cursus', +		'aliquam', +		'quam', +		'dapibus', +		'nisl', +		'feugiat', +		'egestas', +		'class', +		'aptent', +		'taciti', +		'sociosqu', +		'ad', +		'litora', +		'torquent', +		'per', +		'conubia', +		'nostra', +		'inceptos', +		'himenaeos', +		'phasellus', +		'nibh', +		'pulvinar', +		'vitae', +		'urna', +		'iaculis', +		'lobortis', +		'nisi', +		'viverra', +		'arcu', +		'morbi', +		'pellentesque', +		'metus', +		'commodo', +		'ut', +		'facilisis', +		'felis', +		'tristique', +		'ullamcorper', +		'placerat', +		'aenean', +		'convallis', +		'sollicitudin', +		'integer', +		'rutrum', +		'duis', +		'est', +		'etiam', +		'bibendum', +		'donec', +		'pharetra', +		'vulputate', +		'maecenas', +		'mi', +		'fermentum', +		'consequat', +		'suscipit', +		'aliquam', +		'habitant', +		'senectus', +		'netus', +		'fames', +		'quisque', +		'euismod', +		'curabitur', +		'lectus', +		'elementum', +		'tempor', +		'risus', +		'cras' ); +	} +		 +	function getContent($count, $format = 'html', $loremipsum = true) +	{ +		$format = strtolower($format); +		 +		if($count <= 0) +			return ''; + +		switch($format) +		{ +			case 'txt': +				return $this->getText($count, $loremipsum); +			case 'plain': +				return $this->getPlain($count, $loremipsum); +			default: +				return $this->getHTML($count, $loremipsum); +		} +	} +	 +	private function getWords(&$arr, $count, $loremipsum) +	{ +		$i = 0; +		if($loremipsum) +		{ +			$i = 2; +			$arr[0] = 'lorem'; +			$arr[1] = 'ipsum'; +		} +		 +		for($i; $i < $count; $i++) +		{ +			$index = array_rand($this->words); +			$word = $this->words[$index]; +			//echo $index . '=>' . $word . '<br />'; +			 +			if($i > 0 && $arr[$i - 1] == $word) +				$i--; +			else +				$arr[$i] = $word; +		} +	} +	 +	private function getPlain($count, $loremipsum, $returnStr = true) +	{ +		$words = array(); +		$this->getWords($words, $count, $loremipsum); +		//print_r($words); +		 +		$delta = $count; +		$curr = 0; +		$sentences = array(); +		while($delta > 0) +		{ +			$senSize = $this->gaussianSentence(); +			//echo $curr . '<br />'; +			if(($delta - $senSize) < 4) +				$senSize = $delta; + +			$delta -= $senSize; +			 +			$sentence = array(); +			for($i = $curr; $i < ($curr + $senSize); $i++) +				$sentence[] = $words[$i]; + +			$this->punctuate($sentence); +			$curr = $curr + $senSize; +			$sentences[] = $sentence; +		} +		 +		if($returnStr) +		{ +			$output = ''; +			foreach($sentences as $s) +				foreach($s as $w) +					$output .= $w . ' '; +					 +			return $output; +		} +		else +			return $sentences; +	} +	 +	private function getText($count, $loremipsum) +	{ +		$sentences = $this->getPlain($count, $loremipsum, false); +		$paragraphs = $this->getParagraphArr($sentences); +		 +		$paragraphStr = array(); +		foreach($paragraphs as $p) +		{ +			$paragraphStr[] = $this->paragraphToString($p); +		} +		 +		$paragraphStr[0] = "\t" . $paragraphStr[0]; +		return implode("\n\n\t", $paragraphStr); +	} +	 +	private function getParagraphArr($sentences) +	{ +		$wordsPer = $this->wordsPerParagraph; +		$sentenceAvg = $this->wordsPerSentence; +		$total = count($sentences); +		 +		$paragraphs = array(); +		$pCount = 0; +		$currCount = 0; +		$curr = array(); +		 +		for($i = 0; $i < $total; $i++) +		{ +			$s = $sentences[$i]; +			$currCount += count($s); +			$curr[] = $s; +			if($currCount >= ($wordsPer - round($sentenceAvg / 2.00)) || $i == $total - 1) +			{ +				$currCount = 0; +				$paragraphs[] = $curr; +				$curr = array(); +				//print_r($paragraphs); +			} +			//print_r($paragraphs); +		} +		 +		return $paragraphs; +	} +	 +	private function getHTML($count, $loremipsum) +	{ +		$sentences = $this->getPlain($count, $loremipsum, false); +		$paragraphs = $this->getParagraphArr($sentences); +		//print_r($paragraphs); +		 +		$paragraphStr = array(); +		foreach($paragraphs as $p) +		{ +			$paragraphStr[] = "<p>\n" . $this->paragraphToString($p, true) . '</p>'; +		} +		 +		//add new lines for the sake of clean code +		return implode("\n", $paragraphStr); +	} +	 +	private function paragraphToString($paragraph, $htmlCleanCode = false) +	{ +		$paragraphStr = ''; +		foreach($paragraph as $sentence) +		{ +			foreach($sentence as $word) +				$paragraphStr .= $word . ' '; +				 +			if($htmlCleanCode) +				$paragraphStr .= "\n"; +		}		 +		return $paragraphStr; +	} +	 +	/* +	* Inserts commas and periods in the given +	* word array. +	*/ +	private function punctuate(& $sentence) +	{ +		$count = count($sentence); +		$sentence[$count - 1] = $sentence[$count - 1] . '.'; +		 +		if($count < 4) +			return $sentence; +		 +		$commas = $this->numberOfCommas($count); +		 +		for($i = 1; $i <= $commas; $i++) +		{ +			$index = (int) round($i * $count / ($commas + 1)); +			 +			if($index < ($count - 1) && $index > 0) +			{ +				$sentence[$index] = $sentence[$index] . ','; +			} +		} +	} +	 +	/* +	* Determines the number of commas for a +	* sentence of the given length. Average and +	* standard deviation are determined superficially +	*/ +	private function numberOfCommas($len) +	{ +		$avg = (float) log($len, 6); +		$stdDev = (float) $avg / 6.000; +		 +		return (int) round($this->gauss_ms($avg, $stdDev)); +	} +	 +	/* +	* Returns a number on a gaussian distribution +	* based on the average word length of an english +	* sentence. +	* Statistics Source: +	*	http://hearle.nahoo.net/Academic/Maths/Sentence.html +	*	Average: 24.46 +	*	Standard Deviation: 5.08 +	*/ +	private function gaussianSentence() +	{ +		$avg = (float) 24.460; +		$stdDev = (float) 5.080; +		 +		return (int) round($this->gauss_ms($avg, $stdDev)); +	} +	 +	/* +	* The following three functions are used to +	* compute numbers with a guassian distrobution +	* Source: +	* 	http://us.php.net/manual/en/function.rand.php#53784 +	*/ +	private function gauss() +	{   // N(0,1) +		// returns random number with normal distribution: +		//   mean=0 +		//   std dev=1 +		 +		// auxilary vars +		$x=$this->random_0_1(); +		$y=$this->random_0_1(); +		 +		// two independent variables with normal distribution N(0,1) +		$u=sqrt(-2*log($x))*cos(2*pi()*$y); +		$v=sqrt(-2*log($x))*sin(2*pi()*$y); +		 +		// i will return only one, couse only one needed +		return $u; +	} + +	private function gauss_ms($m=0.0,$s=1.0) +	{ +		return $this->gauss()*$s+$m; +	} + +	private function random_0_1() +	{ +		return (float)rand()/(float)getrandmax(); +	} + +}
\ No newline at end of file | 
