1 <?php
2 3 4 5 6 7 8
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
47 class ELipsum extends CWidget
48 {
49 50 51 52
53 public $paragraphs=0;
54 55 56 57
58 public $words=0;
59 60 61 62
63 public $loremIpsumFirst=true;
64 65 66 67
68 public $paragraphTag='p';
69
70 71 72
73 public function run()
74 {
75 echo self::paragraphs($this->paragraphs,$this->words,$this->paragraphTag);
76 }
77 78 79 80 81 82 83 84 85
86 public static function paragraphs($count=0,$words=0,$loremIpsumFirst=true,$wrapperTag='p')
87 {
88 $text='';
89 $count=empty($count)?rand(1,10):$count;
90 for($i=0;$i<$count;$i++)
91 {
92 if(!empty($wrapperTag))
93 {
94 $text.=CHtml::tag($wrapperTag,array(),self::words($words,$loremIpsumFirst&&$i==0));
95 }
96 }
97 return $text;
98 }
99 100 101 102 103 104 105
106 public static function words($count=0,$loremIpsumFirst=true)
107 {
108 $library=array(
109 "lorem",'ipsum',"dolor","sit","amet","integer","vut","nunc","risus","a",
110 "sagittis","turpis","nunc","eu","urna","urna","pellentesque","porttitor","est","ut",
111 "augue","cursus","scelerisque","in","hac","habitasse","platea","dictumst","sed","ut",
112 "odio","a","ultricies","dapibus","cum","sociis","natoque","penatibus","et","magnis",
113 "dis","parturient","montes","nascetur","ridiculus","mus","etiam","vel","lacus","magna",
114 "nec","aliquam","augue","lundium","integer","porttitor","porta","in","rhoncus","adipiscing",
115 "diam","ultrices","turpis","auctor","aenean","pulvinar","egestas","ac","placerat","sed",
116 "lectus","mauris","rhoncus","mid","tincidunt","dignissim","elementum","in","odio","duis",
117 "vel","magna","elit","phasellus","tincidunt","nisi","pid","pulvinar","placerat","purus",
118 "augue","aliquet","tortor","et","tristique","turpis","enim","nec","nisi","proin",
119 "facilisis","adipiscing","enim","ac","mattis","arcu","elementum","et","cras","massa",
120 "non","velit","tempor","scelerisque","ac","quis","eros",
121 );
122 $punctuations=array(
123 '.',',','!',
124 );
125
126 $text='';
127 $libraryCount=count($library);
128 $punctuationCount=count($punctuations);
129 $count=empty($count)?rand(5,100):$count;
130 for($i=0,$p=0,$begin=true;$i<$count;$i++)
131 {
132 if($loremIpsumFirst&&$i<5)
133 {
134 $word=$library[$i];
135 }
136 else
137 {
138 $word=$library[rand(1,$libraryCount)-1];
139 }
140 $text.=$begin?ucfirst($word):$word;
141 $punctuation=($i-$p+1)%rand(3,10)==0&&$i+1!=$count?$punctuations[rand(1,$punctuationCount)-1]:false;
142 if($punctuation!==false)
143 {
144 $text.=$punctuation;
145 $p=$i;
146 }
147 $begin=$punctuation!==false&&$punctuation!=',';
148 $text.=$i+1!=$count?' ':'.';
149 }
150 return $text;
151 }
152 }
153