Completed
Push — master ( add22c...fb4c0b )
by Mike
02:33
created

TestContent::timezone()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 21
Code Lines 16

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 21
rs 9.3142
cc 1
eloc 16
nc 1
nop 0
1
<?php
2
namespace testContent;
3
4
/**
5
 * Test Content
6
 *
7
 * Class to create test content on the fly for multiple situations.
8
 *
9
 * Run any of the methods in this class to get random data of a particular type.
10
 * All methods are static and can be called indepenently of the type of data
11
 * you're trying to create (i.e. posts, cpts, or even cutom table data).
12
 *
13
 * @package    WordPress
14
 * @subpackage Evans
15
 * @author     Old Town Media
16
 */
17
class TestContent{
18
19
	/**
20
	 * Title function.
21
	 *
22
	 * Builds a short random title.
23
	 *
24
	 * @see substr
25
	 *
26
	 * @param int $num_words Number of words to return.
27
	 * @return string Random title string.
28
	 */
29
	public static function title( $num_words = '' ){
30
31
		$title = '';
32
33
		$random_words = array(
34
			'lorem',
35
			'ipsum',
36
			'dolor',
37
			'sit',
38
			'amet',
39
			'consectetur',
40
			'adipiscing',
41
			'elit',
42
			'sed',
43
			'porttitor',
44
			'augue',
45
			'vitae',
46
			'ante',
47
			'posuere',
48
			'aecenas',
49
			'ultricies',
50
			'neque',
51
			'ut',
52
			'enim',
53
			'pharetra',
54
			'sodales',
55
			'pellentesque',
56
			'gravida',
57
			'mauris',
58
			'pellentesque',
59
			'cum',
60
			'sociis',
61
			'natoque',
62
			'penatibus',
63
			'et',
64
			'magnis',
65
			'dis'
66
67
		);
68
69
		// If we didn't choose a count, make one
70
		if ( empty( $num_words ) ){
71
			$num_words = rand( 2, 10 );
72
		}
73
74
		// Pull random words
75
		for( $i = 1; $i <= $num_words; $i++ ){
76
			$title .= $random_words[ rand( 0, 31 ) ] . " ";
77
		}
78
79
		return apply_filters( "tc_title_data", substr( $title, 0, -1 ) );
80
81
	}
82
83
84
	/**
85
	 * Paragraphs full of random tags.
86
	 *
87
	 * Returns full TinyMCE-compatible paragraphs with random content such
88
	 * as tables, images, quotes, etc.
89
	 *
90
	 * @return string Paragraph(s) of text.
91
	 */
92
	public static function paragraphs(){
93
94
		$content = '';
95
96
		$random_content_types = array(
97
			"<p>OK, so images can get quite complicated as we have a few variables to work with! For example the image below has had a caption entered in the WordPress image upload dialog box, this creates a [caption] shortcode which then in turn wraps the whole thing in a <code>div</code> with inline styling! Maybe one day they'll be able to use the <code>figure</code> and <code>figcaption</code> elements for all this. Additionally, images can be wrapped in links which, if you're using anything other than <code>color</code> or <code>text-decoration</code> to style your links can be problematic.</p>",
98
			'<div id="attachment_28" class="wp-caption alignnone" style="width: 510px"><a href="#"><img src="http://www.wpfill.me.s3-website-us-east-1.amazonaws.com/img/img_large.png" alt="Your Alt Tag" title="bmxisbest" width="500" height="300" class="size-large wp-image-28"></a><p class="wp-caption-text">This is the optional caption.</p></div>',
99
			"<p>The next issue we face is image alignment, users get the option of <em>None</em>, <em>Left</em>, <em>Right</em> &amp; <em>Center</em>. On top of this, they also get the options of <em>Thumbnail</em>, <em>Medium</em>, <em>Large</em> &amp; <em>Fullsize</em>. You'll probably want to add floats to style the image position so important to remember to clear these to stop images popping below the bottom of your articles.</p>",
100
			"<table>
101
<thead>
102
<tr>
103
<th>Table Head Column One</th>
104
<th>Table Head Column Two</th>
105
<th>Table Head Column Three</th>
106
</tr>
107
</thead>
108
<tfoot>
109
<tr>
110
<td>Table Footer Column One</td>
111
<td>Table Footer Column Two</td>
112
<td>Table Footer Column Three</td>
113
</tr>
114
</tfoot>
115
<tbody>
116
<tr>
117
<td>Table Row Column One</td>
118
<td>Short Text</td>
119
<td>Testing a table cell with a longer amount of text to see what happens, you're not using tables for site layouts are you?</td>
120
</tr>
121
<tr>
122
<td>Table Row Column One</td>
123
<td>Table Row Column Two</td>
124
<td>Table Row Column Three</td>
125
</tr>
126
<tr>
127
<td>Table Row Column One</td>
128
<td>Table Row Column Two</td>
129
<td>Table Row Column Three</td>
130
</tr>
131
<tr>
132
<td>Table Row Column One</td>
133
<td>Table Row Column Two</td>
134
<td>Table Row Column Three</td>
135
</tr>
136
<tr>
137
<td>Table Row Column One</td>
138
<td>Table Row Column Two</td>
139
<td>Table Row Column Three</td>
140
</tr>
141
</tbody>
142
</table>",
143
			'<ol>
144
<li>Ordered list item one.</li>
145
<li>Ordered list item two.</li>
146
<li>Ordered list item three.</li>
147
<li>Ordered list item four.
148
	<ol>
149
		<li>Ordered list item one.</li>
150
		<li>Ordered list item two.
151
			<ol>
152
				<li>Ordered list item one.</li>
153
				<li>Ordered list item two.</li>
154
				<li>Ordered list item three.</li>
155
				<li>Ordered list item four.</li>
156
			</ol>
157
		</li>
158
		<li>Ordered list item three.</li>
159
		<li>Ordered list item four.</li>
160
	</ol>
161
</li>
162
<li>By the way, Wordpress does not let you create nested lists through the visual editor.</li>
163
</ol>
164
',
165
			'<ul>
166
<li>Unordered list item one.</li>
167
<li>Unordered list item two.</li>
168
	<ul>
169
		<li>Ordered list item one.</li>
170
		<li>Ordered list item two.
171
			<ul>
172
				<li>Ordered list item one.</li>
173
				<li>Ordered list item two.</li>
174
				<li>Ordered list item three.</li>
175
				<li>Ordered list item four.</li>
176
			</ul>
177
		</li>
178
		<li>Ordered list item three.</li>
179
		<li>Ordered list item four.</li>
180
	</ul>
181
<li>Unordered list item three.</li>
182
<li>Unordered list item four.</li>
183
<li>By the way, Wordpress does not let you create nested lists through the visual editor.</li>
184
</ul>',
185
			"<blockquote>
186
Currently WordPress blockquotes are just wrapped in blockquote tags and have no clear way for the user to define a source. Maybe one day they'll be more semantic (and easier to style) like the version below.
187
</blockquote>
188
<blockquote cite='http://html5doctor.com/blockquote-q-cite/'>
189
<p>HTML5 comes to our rescue with the footer element, allowing us to add semantically separate information about the quote.</p>
190
<footer>
191
<cite>
192
<a href='http://html5doctor.com/blockquote-q-cite/'>Oli Studholme, HTML5doctor.com</a>
193
</cite>
194
</footer>
195
</blockquote>",
196
			'<h1>Level One Heading</h1>
197
<h2>Level Two Heading</h2>
198
<h3>Level Three Heading</h3>
199
<h4>Level Four Heading</h4>
200
<h5>Level Five Heading</h5>
201
<h6>Level Six Heading</h6>',
202
			"<p>This is a standard paragraph created using the WordPress TinyMCE text editor. It has a <strong>strong tag</strong>, an <em>em tag</em> and a <del>strikethrough</del> which is actually just the del element. There are a few more inline elements which are not in the WordPress admin but we should check for incase your users get busy with the copy and paste. These include <cite>citations</cite>, <abbr title='abbreviation'>abbr</abbr>, bits of <code>code</code> and <var>variables</var>, <q>inline quotations</q>, <ins datetime='2011-12-08T20:19:53+00:00'>inserted text</ins>, text that is <s>no longer accurate</s> or something <mark>so important</mark> you might want to mark it. We can also style subscript and superscript characters like C0<sub>2</sub>, here is our 2<sup>nd</sup> example. If they are feeling non-semantic they might even use <b>bold</b>, <i>italic</i>, <big>big</big> or <small>small</small> elements too.&nbsp;Incidentally, these HTML4.01 tags have been given new life and semantic meaning in HTML5, you may be interested in reading this <a title='HTML5 Semantics' href='http://csswizardry.com/2011/01/html5-and-text-level-semantics'>article by Harry Roberts</a> which gives a nice excuse to test a link.&nbsp;&nbsp;It is also worth noting in the 'kitchen sink' view you can also add <span style='text-decoration: underline;'>underline</span>&nbsp;styling and set <span style='color: #ff0000;'>text color</span> with pesky inline CSS.</p>
203
<p style='text-align: left;'>Additionally, WordPress also sets text alignment with inline styles, like this left aligned paragraph.&nbsp;Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Cras mattis consectetur purus sit amet fermentum.</p>
204
<p style='text-align: right;'>This is a right aligned paragraph.&nbsp;Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Cras mattis consectetur purus sit amet fermentum.</p>
205
<p style='text-align: justify;'>This is a justified paragraph.&nbsp;Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Cras mattis consectetur purus sit amet fermentum.</p>
206
<p style='padding-left: 30px;'>Finally, you also have the option of an indented paragraph.&nbsp;Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Cras mattis consectetur purus sit amet fermentum.</p> <p>And last, and by no means least, users can also apply the <code>Address</code> tag to text like this:</p> <address>123 Example Street,
207
Testville,
208
West Madeupsburg,
209
CSSland,
210
1234</address> <p>...so there you have it, all our text elements</p>",
211
			'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean tincidunt luctus eros, a tincidunt massa aliquet sit amet. Sed faucibus, eros non lacinia porttitor, risus odio efficitur sapien, id porta urna massa ac est. Cras efficitur lacinia magna eget tempus. Fusce ex felis, finibus consectetur mi at, finibus rhoncus augue. In ut tortor lacinia, rutrum mauris vel, maximus tortor. Praesent ac arcu nec eros pharetra tristique. Morbi congue leo sed ipsum fermentum vulputate. Ut nulla eros, porta varius pulvinar eget, bibendum quis dolor. Morbi sed diam eu dui semper ornare nec quis nisl.',
212
			'Sed porttitor augue vitae ante posuere sodales iaculis nec neque. Etiam dapibus nulla id vulputate tempus. Quisque tempus nisi dui, a commodo nulla sodales ut. Nulla nec odio tempus, sodales diam quis, feugiat odio. Nulla tincidunt tincidunt turpis, eget cursus felis tempor lacinia. Aenean molestie libero ut erat luctus aliquam. Sed vel enim quis nisl lacinia posuere. Ut fringilla ligula ligula, nec rhoncus mi suscipit id. Praesent volutpat blandit felis, et suscipit elit vulputate sit amet. Morbi sit amet justo quis sem rutrum euismod. Pellentesque at dictum sem, sed condimentum ex. Vivamus massa nisi, convallis in semper sit amet, venenatis convallis lectus. Nunc tristique, ex ac rutrum vehicula, arcu ex efficitur justo, sed euismod ligula nulla ut purus.',
213
			'<table>
214
<tbody>
215
<tr>
216
<td>!</td>
217
<td>"</td>
218
<td>#</td>
219
<td>$</td>
220
<td>%</td>
221
<td>&amp;</td>
222
<td>\'</td>
223
<td>(</td>
224
<td>)</td>
225
<td>*</td>
226
</tr>
227
<tr>
228
<td>+</td>
229
<td>,</td>
230
<td>-</td>
231
<td>.</td>
232
<td>/</td>
233
<td>0</td>
234
<td>1</td>
235
<td>2</td>
236
<td>3</td>
237
<td>4</td>
238
</tr>
239
<tr>
240
<td>5</td>
241
<td>6</td>
242
<td>7</td>
243
<td>8</td>
244
<td>9</td>
245
<td>:</td>
246
<td>;</td>
247
<td>&gt;</td>
248
<td>=</td>
249
<td>&lt;</td>
250
</tr>
251
<tr>
252
<td>?</td>
253
<td>@</td>
254
<td>A</td>
255
<td>B</td>
256
<td>C</td>
257
<td>D</td>
258
<td>E</td>
259
<td>F</td>
260
<td>G</td>
261
<td>H</td>
262
</tr>
263
<tr>
264
<td>I</td>
265
<td>J</td>
266
<td>K</td>
267
<td>L</td>
268
<td>M</td>
269
<td>N</td>
270
<td>O</td>
271
<td>P</td>
272
<td>Q</td>
273
<td>R</td>
274
</tr>
275
<tr>
276
<td>S</td>
277
<td>T</td>
278
<td>U</td>
279
<td>V</td>
280
<td>W</td>
281
<td>X</td>
282
<td>Y</td>
283
<td>Z</td>
284
<td>[</td>
285
<td></td>
286
</tr>
287
<tr>
288
<td>]</td>
289
<td>^</td>
290
<td>_</td>
291
<td>`</td>
292
<td>a</td>
293
<td>b</td>
294
<td>c</td>
295
<td>d</td>
296
<td>e</td>
297
<td>f</td>
298
</tr>
299
<tr>
300
<td>g</td>
301
<td>h</td>
302
<td>i</td>
303
<td>j</td>
304
<td>k</td>
305
<td>l</td>
306
<td>m</td>
307
<td>n</td>
308
<td>o</td>
309
<td>p</td>
310
</tr>
311
<tr>
312
<td>q</td>
313
<td>r</td>
314
<td>s</td>
315
<td>t</td>
316
<td>u</td>
317
<td>v</td>
318
<td>w</td>
319
<td>x</td>
320
<td>y</td>
321
<td>z</td>
322
</tr>
323
<tr>
324
<td>{</td>
325
<td>|</td>
326
<td>}</td>
327
<td>~</td>
328
<td></td>
329
<td></td>
330
<td></td>
331
<td></td>
332
<td></td>
333
<td></td>
334
</tr>
335
</tbody>
336
</table>',
337
			'<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean tincidunt luctus eros, a tincidunt massa aliquet sit amet. Sed faucibus, eros non lacinia porttitor, risus odio efficitur sapien, id porta urna massa ac est. Cras efficitur lacinia magna eget tempus. Fusce ex felis, finibus consectetur mi at, finibus rhoncus augue. In ut tortor lacinia, rutrum mauris vel, maximus tortor. Praesent ac arcu nec eros pharetra tristique. Morbi congue leo sed ipsum fermentum vulputate. Ut nulla eros, porta varius pulvinar eget, bibendum quis dolor. Morbi sed diam eu dui semper ornare nec quis nisl.</p>
338
339
<p>Pellentesque gravida, mauris pellentesque facilisis viverra, odio quam auctor nunc, in lacinia odio ex vitae erat. Quisque posuere aliquet mi, id aliquet nulla malesuada ut. Nulla facilisi. Integer bibendum augue eget dapibus aliquam. In tempor, mauris in pharetra euismod, nunc metus fringilla metus, nec tincidunt lectus orci id justo. Nam semper risus a odio hendrerit suscipit. Curabitur dignissim, odio sed fringilla auctor, risus libero ullamcorper felis, et vestibulum neque ex a dolor. Suspendisse eu ullamcorper orci, id bibendum lacus. In at est sed ligula ullamcorper venenatis at vel ipsum. Integer libero justo, fermentum nec nisl non, bibendum bibendum tortor. Proin venenatis odio nec nisi facilisis, nec condimentum massa mollis. Donec efficitur libero quis congue aliquam. Duis sollicitudin vitae quam vitae pharetra.</p>
340
341
<p>Maecenas ultricies neque ut enim pharetra sodales. Etiam dolor sapien, commodo sed sollicitudin eget, porttitor quis lorem. Praesent euismod eros sed tortor sagittis, ut pretium ex vehicula. Nam ut magna et nunc vestibulum pulvinar. Vivamus tempor, ex eu cursus aliquam, tellus eros semper orci, id ultrices dui tellus commodo mauris. In mauris odio, lobortis id lectus in, tincidunt malesuada sem. Proin eu posuere metus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nulla auctor, odio ut euismod luctus, metus dolor molestie urna, iaculis rutrum nulla massa ac erat. Fusce suscipit eget odio ut tincidunt. Morbi vulputate aliquet placerat. Vivamus imperdiet posuere vehicula.</p>
342
343
<p>Nulla eu vestibulum metus. In leo lacus, vehicula at commodo eget, imperdiet vitae diam. Aliquam rutrum, massa eget pellentesque euismod, orci risus lobortis quam, et sollicitudin lectus augue quis nisi. Sed non justo at tellus mattis facilisis. Etiam feugiat sodales neque, at gravida lorem laoreet et. Donec convallis rhoncus sodales. Morbi erat mi, pulvinar quis ultrices a, luctus vel mauris. Aliquam vitae iaculis metus. Fusce tincidunt placerat nibh. Suspendisse lobortis libero massa, sit amet dapibus quam sodales eu.</p>
344
345
<p>In rhoncus mollis purus vitae ornare. Pellentesque nisi mauris, sodales vitae tortor sed, malesuada placerat massa. Integer eleifend imperdiet dolor at luctus. Donec ullamcorper dolor id auctor suscipit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc sed ligula ipsum. Ut pulvinar iaculis volutpat. Phasellus dictum lorem non nulla pharetra, eget tincidunt justo ornare. Nulla dolor ligula, finibus id lectus vel, ornare porttitor diam. Nunc vehicula finibus commodo. Aliquam in commodo metus, a sodales libero. Donec vel dolor sed dolor ullamcorper fringilla in eu sapien. Phasellus lacinia lacus quis quam vestibulum, quis fringilla justo auctor. Integer quis ipsum porta, accumsan eros eget, pretium purus. Vestibulum eget leo tincidunt, porttitor urna a, vestibulum risus. Duis finibus neque sit amet nisi viverra, et vestibulum urna tincidunt.</p>
346
347
<p>Curabitur ligula magna, tempus eget ex sed, fringilla viverra justo. Nullam elit lacus, faucibus eget mi eget, posuere sagittis nisl. Sed tincidunt placerat tellus in porta. Morbi eu nibh ac lorem vehicula finibus vel a nunc. Donec iaculis leo quam, ac mattis massa ullamcorper quis. Suspendisse elementum sollicitudin augue ornare sollicitudin. Aenean laoreet orci non lectus hendrerit, ut pellentesque justo tempor. In hac habitasse platea dictumst. Ut et nibh et leo condimentum tempor. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Pellentesque sodales sed nulla at rutrum. Suspendisse quis pulvinar neque. Donec vestibulum, nunc id hendrerit placerat, nisl libero tristique nunc, sed semper mi nisl quis sapien. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Duis hendrerit fringilla tortor, interdum sodales sapien pharetra quis.</p>
348
349
<p>Vivamus sed neque molestie, lobortis elit in, laoreet augue. Etiam tincidunt sodales bibendum. Quisque ultrices, ante sed maximus dignissim, ex elit pharetra ex, a sagittis massa nisi eget massa. Aliquam dolor risus, tincidunt eu urna tincidunt, consectetur porttitor lacus. Fusce feugiat dolor ut efficitur elementum. Morbi auctor maximus rutrum. Pellentesque cursus est sed lacus consequat, vestibulum mattis urna imperdiet. Duis quis porta lectus. Quisque pulvinar ex at lacus mattis sollicitudin. Morbi gravida, leo et blandit fringilla, neque risus gravida elit, vel maximus sem magna id sapien.</p>',
350
351
		);
352
353
		$used_keys = array();
354
		for( $i = 1; $i < 7; $i++ ){
355
356
			// Pull a new random key and make sure we're not repeating any elements
357
			$key = rand( 0, 12 );
358
			while( in_array( $key, $used_keys ) ){
359
				$key = rand( 0, 12 );
360
			}
361
362
			$content .= $random_content_types[$key];
363
364
			$used_keys[] = $key;
365
		}
366
367
		return apply_filters( "tc_paragraphs_data", $content );
368
369
	}
370
371
372
	/**
373
	 * Plain text.
374
	 *
375
	 * Returns paragraphs of plain text.
376
	 *
377
	 * @return string Plain text paragraphs.
378
	 */
379
	public static function plain_text(){
380
381
		$paragraphs = array(
382
			'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean tincidunt luctus eros, a tincidunt massa aliquet sit amet. Sed faucibus, eros non lacinia porttitor, risus odio efficitur sapien, id porta urna massa ac est. Cras efficitur lacinia magna eget tempus. Fusce ex felis, finibus consectetur mi at, finibus rhoncus augue. In ut tortor lacinia, rutrum mauris vel, maximus tortor. Praesent ac arcu nec eros pharetra tristique. Morbi congue leo sed ipsum fermentum vulputate. Ut nulla eros, porta varius pulvinar eget, bibendum quis dolor. Morbi sed diam eu dui semper ornare nec quis nisl.',
383
			'Sed porttitor augue vitae ante posuere sodales iaculis nec neque. Etiam dapibus nulla id vulputate tempus. Quisque tempus nisi dui, a commodo nulla sodales ut. Nulla nec odio tempus, sodales diam quis, feugiat odio. Nulla tincidunt tincidunt turpis, eget cursus felis tempor lacinia. Aenean molestie libero ut erat luctus aliquam. Sed vel enim quis nisl lacinia posuere. Ut fringilla ligula ligula, nec rhoncus mi suscipit id. Praesent volutpat blandit felis, et suscipit elit vulputate sit amet. Morbi sit amet justo quis sem rutrum euismod. Pellentesque at dictum sem, sed condimentum ex. Vivamus massa nisi, convallis in semper sit amet, venenatis convallis lectus. Nunc tristique, ex ac rutrum vehicula, arcu ex efficitur justo, sed euismod ligula nulla ut purus.',
384
			'Maecenas ultricies neque ut enim pharetra sodales. Etiam dolor sapien, commodo sed sollicitudin eget, porttitor quis lorem. Praesent euismod eros sed tortor sagittis, ut pretium ex vehicula. Nam ut magna et nunc vestibulum pulvinar. Vivamus tempor, ex eu cursus aliquam, tellus eros semper orci, id ultrices dui tellus commodo mauris. In mauris odio, lobortis id lectus in, tincidunt malesuada sem. Proin eu posuere metus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nulla auctor, odio ut euismod luctus, metus dolor molestie urna, iaculis rutrum nulla massa ac erat. Fusce suscipit eget odio ut tincidunt. Morbi vulputate aliquet placerat. Vivamus imperdiet posuere vehicula.',
385
			'Pellentesque gravida, mauris pellentesque facilisis viverra, odio quam auctor nunc, in lacinia odio ex vitae erat. Quisque posuere aliquet mi, id aliquet nulla malesuada ut. Nulla facilisi. Integer bibendum augue eget dapibus aliquam. In tempor, mauris in pharetra euismod, nunc metus fringilla metus, nec tincidunt lectus orci id justo. Nam semper risus a odio hendrerit suscipit. Curabitur dignissim, odio sed fringilla auctor, risus libero ullamcorper felis, et vestibulum neque ex a dolor. Suspendisse eu ullamcorper orci, id bibendum lacus. In at est sed ligula ullamcorper venenatis at vel ipsum. Integer libero justo, fermentum nec nisl non, bibendum bibendum tortor. Proin venenatis odio nec nisi facilisis, nec condimentum massa mollis. Donec efficitur libero quis congue aliquam. Duis sollicitudin vitae quam vitae pharetra.',
386
			'Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nam fringilla, est ac pulvinar pharetra, justo erat semper ante, sit amet blandit orci nibh nec nunc. Nam purus nibh, auctor lacinia imperdiet eget, bibendum et tellus. Fusce venenatis odio id nunc ultrices porta sed ut lorem. Aenean mollis neque quis nunc venenatis, sit amet tristique libero vulputate. Proin molestie dignissim ultricies. Aenean in iaculis ligula. Nunc sollicitudin, nisl non cursus suscipit, tortor nibh congue odio, quis facilisis leo ipsum auctor velit. In tincidunt imperdiet orci in vehicula. Nam tempus scelerisque sem quis aliquet. Pellentesque ipsum libero, dictum at leo eu, vulputate condimentum metus. Phasellus tincidunt nunc vel sem posuere placerat. Curabitur nec dolor et dui egestas pulvinar non vitae mauris. Sed convallis pellentesque sapien, sit amet tempus ex. Maecenas fringilla lobortis cursus.',
387
			'Nulla eu vestibulum metus. In leo lacus, vehicula at commodo eget, imperdiet vitae diam. Aliquam rutrum, massa eget pellentesque euismod, orci risus lobortis quam, et sollicitudin lectus augue quis nisi. Sed non justo at tellus mattis facilisis. Etiam feugiat sodales neque, at gravida lorem laoreet et. Donec convallis rhoncus sodales. Morbi erat mi, pulvinar quis ultrices a, luctus vel mauris. Aliquam vitae iaculis metus. Fusce tincidunt placerat nibh. Suspendisse lobortis libero massa, sit amet dapibus quam sodales eu.',
388
			'In rhoncus mollis purus vitae ornare. Pellentesque nisi mauris, sodales vitae tortor sed, malesuada placerat massa. Integer eleifend imperdiet dolor at luctus. Donec ullamcorper dolor id auctor suscipit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc sed ligula ipsum. Ut pulvinar iaculis volutpat. Phasellus dictum lorem non nulla pharetra, eget tincidunt justo ornare. Nulla dolor ligula, finibus id lectus vel, ornare porttitor diam. Nunc vehicula finibus commodo. Aliquam in commodo metus, a sodales libero. Donec vel dolor sed dolor ullamcorper fringilla in eu sapien. Phasellus lacinia lacus quis quam vestibulum, quis fringilla justo auctor. Integer quis ipsum porta, accumsan eros eget, pretium purus. Vestibulum eget leo tincidunt, porttitor urna a, vestibulum risus. Duis finibus neque sit amet nisi viverra, et vestibulum urna tincidunt.',
389
			'Curabitur ligula magna, tempus eget ex sed, fringilla viverra justo. Nullam elit lacus, faucibus eget mi eget, posuere sagittis nisl. Sed tincidunt placerat tellus in porta. Morbi eu nibh ac lorem vehicula finibus vel a nunc. Donec iaculis leo quam, ac mattis massa ullamcorper quis. Suspendisse elementum sollicitudin augue ornare sollicitudin. Aenean laoreet orci non lectus hendrerit, ut pellentesque justo tempor. In hac habitasse platea dictumst. Ut et nibh et leo condimentum tempor. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Pellentesque sodales sed nulla at rutrum. Suspendisse quis pulvinar neque. Donec vestibulum, nunc id hendrerit placerat, nisl libero tristique nunc, sed semper mi nisl quis sapien. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Duis hendrerit fringilla tortor, interdum sodales sapien pharetra quis.',
390
			'Vivamus sed neque molestie, lobortis elit in, laoreet augue. Etiam tincidunt sodales bibendum. Quisque ultrices, ante sed maximus dignissim, ex elit pharetra ex, a sagittis massa nisi eget massa. Aliquam dolor risus, tincidunt eu urna tincidunt, consectetur porttitor lacus. Fusce feugiat dolor ut efficitur elementum. Morbi auctor maximus rutrum. Pellentesque cursus est sed lacus consequat, vestibulum mattis urna imperdiet. Duis quis porta lectus. Quisque pulvinar ex at lacus mattis sollicitudin. Morbi gravida, leo et blandit fringilla, neque risus gravida elit, vel maximus sem magna id sapien.',
391
			'Fusce semper erat tortor, at pulvinar risus luctus suscipit. Phasellus quis enim nisl. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas semper dapibus odio, nec pellentesque sem laoreet sit amet. Maecenas ut enim tellus. Fusce malesuada mattis sem, porta interdum ex fermentum quis. Ut eget quam mi. In molestie volutpat feugiat. Nulla vel viverra nunc. Integer lobortis nisl vitae placerat egestas. Curabitur tristique nulla at libero blandit, a eleifend augue tempus.',
392
		);
393
394
		return apply_filters( "tc_plain_text_data", $paragraphs[ rand( 0, 9 ) ] );
395
396
	}
397
398
399
	/**
400
	 * Image.
401
	 *
402
	 * Fetch a random image, make sure it is formatted right, download it, and
403
	 * put it in the media library.
404
	 *
405
	 * @see $this::get_image_link(), download_url, media_handle_sideload
406
	 *
407
	 * @param int $post_id Post ID.
408
	 * @return mixed Attachment ID or WP Error.
409
	 */
410
	public static function image( $post_id ){
411
		$file_array = array();
412
413
		// Get the image from the API
414
		$url = self::get_image_link();
415
416
		// If the returned string is empty or it's not a string, try again.
417
		if ( empty( $url ) || !is_string( $url ) ){
418
419
			// Try again
420
			$url = self::get_image_link();
421
422
			// If it fails again, just give up
423
			if ( empty( $url ) || !is_string( $url ) ){
424
				return;
425
			}
426
427
		}
428
429
		// Download the file
430
	    $tmp = \download_url( $url );
431
432
	    preg_match( '/[^\?]+\.(jpg|JPG|jpe|JPE|jpeg|JPEG|gif|GIF|png|PNG)/', $url, $matches );
433
434
        $file_array['name'] = basename( $matches[0] );
435
        $file_array['tmp_name'] = $tmp;
436
437
	    // Check for download errors
438
	    if ( is_wp_error( $tmp ) ) {
439
	        unlink( $file_array[ 'tmp_name' ] );
440
	        error_log( $tmp->get_error_message() );
441
	    }
442
443
		// Pull the image into the media library
444
	    $image_id = media_handle_sideload( $file_array, $post_id );
445
446
	    // Check for handle sideload errors.
447
	    if ( is_wp_error( $image_id ) ) {
448
	        unlink( $file_array['tmp_name'] );
449
	        error_log( $image_id->get_error_message() );
450
	    }
451
452
	    return apply_filters( "tc_image_data", $image_id );
453
454
	}
455
456
457
	/**
458
	 * Fetch an image url from the splashbase API.
459
	 *
460
	 * @see cURL functions, preg_match
461
	 *
462
	 * @return string Image URL.
463
	 */
464
	private static function get_image_link(){
465
466
		// cURL an image API for a completely random photo
467
		$curl = curl_init( "http://www.splashbase.co/api/v1/images/random?images_only=true" );
468
469
		curl_setopt( $curl, CURLOPT_RETURNTRANSFER, TRUE );
470
471
		$curl_response = curl_exec( $curl );
472
473
		// If our cURL failed
474
		if ( $curl_response === false ) {
475
		    $info = curl_getinfo( $curl );
476
		    curl_close( $curl );
477
		    die( 'error occured during curl exec. Additional info: ' . var_export( $info ) );
478
		}
479
480
		curl_close( $curl );
481
482
		// Decode the data
483
		$response = json_decode( $curl_response, true );
484
485
		// Check to make sure that the return contains a valid image extensions
486
		preg_match('/[^\?]+\.(jpg|JPG|jpe|JPE|jpeg|JPEG|gif|GIF|png|PNG)/', $response['url'], $matches);
487
488
		if ( !empty( $matches ) ){
489
			return $response['url'];
490
		}
491
492
	}
493
494
495
	/**
496
	 * Date.
497
	 *
498
	 * Returns a date in the future (up to 60 days out) in the format prescribed.
499
	 *
500
	 * @param string $format PHP Date format.
501
	 * @return mixed Date in the format requested.
502
	 */
503
	public static function date( $format ){
504
505
		$num_days = rand( 1, 60 );
506
		$date = date( $format, strtotime( " +$num_days days" ) );
507
508
		return apply_filters( "tc_date_data", $date );
509
510
	}
511
512
513
	/**
514
	 * Time.
515
	 *
516
	 * Returns a random time in various formats
517
	 *
518
	 * @return string Time string
519
	 */
520
	public static function time(){
521
522
		$times = array(
523
			'8:00 am',
524
			'5:00PM',
525
			'13:00',
526
			'2015',
527
			date( 'G:i', strtotime( " +".rand( 4, 24 )." hours" ) ),
528
			date( 'g:i', strtotime( " +".rand( 4, 24 )." hours" ) ),
529
			date( 'G:i A', strtotime( " +".rand( 4, 24 )." hours" ) )
530
		);
531
532
		return apply_filters( "tc_time_data", $times[ rand( 0, 6 ) ] );
533
534
	}
535
536
537
	/**
538
	 * Timezone.
539
	 *
540
	 * Returns a random timezone from a subset of available options.
541
	 *
542
	 * @return string Timezone
543
	 */
544
	public static function timezone(){
545
546
		$timezones = array(
547
			'America/Denver',
548
			'America/New_York',
549
			'America/Los_Angeles',
550
			'Europe/London',
551
			'Europe/Paris',
552
			'Europe/Zurich',
553
			'Europe/Dublin',
554
			'Atlantic/Reykjavik',
555
			'Australia/Brisbane',
556
			'UTC+0',
557
			'UTC+7',
558
			'UTC-1',
559
			'UTC'
560
		);
561
562
		return apply_filters( "tc_timezone_data", $timezones[ rand( 0, 12 ) ] );
563
564
	}
565
566
567
568
	/**
569
	 * Phone.
570
	 *
571
	 * Returns a random phone # in multiple international formats.
572
	 *
573
	 * @return string Phone #.
574
	 */
575
	public static function phone(){
576
577
		$phone_numbers = array(
578
			'7203893101',
579
			'303-555-1251',
580
			'(720) 895 0969',
581
			'(303)-278-2078',
582
			'1-907-486-1102',
583
			'011-44-871-789-3642',
584
			'1-800-437-7950',
585
			'1-503-254-1000',
586
			'1-845-354-9912',
587
			'+1 253-243-3381',
588
			'+43 780 0047112'
589
		);
590
591
		return apply_filters( "tc_phone_data", $phone_numbers[ rand( 0, 10 ) ] );
592
593
	}
594
595
596
	/**
597
	 * Email.
598
	 *
599
	 * Returns a random email address in random lengths/formats.
600
	 *
601
	 * @return string Email address.
602
	 */
603
	public static function email( $superrandom = false ){
604
605
		// In certain situations we need to ensure that the email is never
606
		// duplicated, like in creating new users.
607
		if ( $superrandom !== false ){
608
			$user = $domain = '';
609
610
			$tlds = array(
611
				"com",
612
				"net",
613
				"gov",
614
				"org",
615
				"edu",
616
				"biz",
617
				"info"
618
			);
619
620
			$char = "0123456789abcdefghijklmnopqrstuvwxyz";
621
622
			$user_length = mt_rand( 5, 20 );
623
		    $domain_length = mt_rand( 7, 12 );
624
625 View Code Duplication
			for ( $i = 1; $i <= $user_length; $i++ ){
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
626
				$user .= substr( $char, mt_rand( 0, strlen( $char ) ), 1 );
627
			}
628
629 View Code Duplication
			for ( $i = 1; $i <= $domain_length; $i++ ){
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
630
				$domain .= substr( $char, mt_rand( 0, strlen( $char ) ), 1 );
631
			}
632
633
			$tld = $tlds[ mt_rand( 0, ( sizeof( $tlds ) - 1 ) ) ];
634
635
			$email = $user . "@" . $domain . '.' . $tld;
636
637
		} else {
638
639
			$email_addresses = array(
640
				'[email protected]',
641
				'[email protected]',
642
				'[email protected]+15',
643
				'[email protected]',
644
				'[email protected]',
645
				'[email protected]',
646
				'[email protected]',
647
				'[email protected]'
648
			);
649
650
			$email = $email_addresses[ rand( 0, 7 ) ];
651
652
		}
653
654
655
		return apply_filters( "tc_email_data", $email );
656
657
	}
658
659
660
	/**
661
	 * Link.
662
	 *
663
	 * Returns link in a completely random format.
664
	 *
665
	 * @see site_url
666
	 *
667
	 * @return string URL.
668
	 */
669
	public static function link(){
670
671
		$links = array(
672
			'http://google.com',
673
			'https://www.twitter.com',
674
			site_url( '/?iam=anextravariable' ),
675
			'github.com',
676
			'http://filebase.com',
677
			'www.oldtownmediainc.com',
678
			'http://facebook.com',
679
			'https://www.eff.org'
680
		);
681
682
		return apply_filters( "tc_link_data", $links[ rand( 0, 7 ) ] );
683
684
	}
685
686
	/**
687
	 * Oembed.
688
	 *
689
	 * Returns a random oembed-compatible link.
690
	 *
691
	 * @return string URL.
692
	 */
693
	public static function oembed(){
694
695
		$links = array(
696
			'https://www.youtube.com/watch?v=A85-YQsm6pY',
697
			'https://vimeo.com/140327103',
698
			'https://twitter.com/WordPress/status/664594697093009408',
699
			'https://embed-ssl.ted.com/talks/regina_hartley_why_the_best_hire_might_not_have_the_perfect_resume.html',
700
			'http://www.slideshare.net/laurengalanter/choose-your-own-career-adventure',
701
			'https://www.instagram.com/p/-eyLo0RMfX',
702
		);
703
704
		return apply_filters( "tc_oembed_data", $links[ rand( 0, 5 ) ] );
705
706
	}
707
708
709
	/**
710
	 * Video Link.
711
	 *
712
	 * Returns a video link from the service of your choice (if that service is
713
	 * YouTube or Vimeo :) ).
714
	 *
715
	 * @param	string $type Video service to get link from
716
	 * @return	string URL.
717
	 */
718
	public static function video( $type ){
719
720
		// Switch through our video types. Expecting to add more in the future
721
		switch( $type ){
722
723
			// YouTube videos
724
			case 'youtube' :
725
				$links = array(
726
					'https://www.youtube.com/watch?v=tntOCGkgt98',
727
					'https://www.youtube.com/watch?v=O1KW3ZkLtuo',
728
					'https://www.youtube.com/watch?v=G8KpPw303PY',
729
					'https://www.youtube.com/watch?v=HxM46vRJMZs',
730
					'https://www.youtube.com/watch?v=nRzsgCp60YU',
731
					'https://www.youtube.com/watch?v=25OUFtdno8U',
732
					'https://www.youtube.com/watch?v=PHAc3_MEjgQ',
733
					'https://www.youtube.com/watch?v=9bZkp7q19f0',
734
					'https://www.youtube.com/watch?v=_OBlgSz8sSM',
735
				);
736
737
				break;
738
739
			// Vimeo videos
740
			case 'vimeo' :
741
				$links = array(
742
					'https://vimeo.com/156161909',
743
					'https://vimeo.com/156045670',
744
					'https://vimeo.com/144698619',
745
					'https://vimeo.com/151799633',
746
					'https://vimeo.com/149224063',
747
					'https://vimeo.com/154915431',
748
					'https://vimeo.com/155404383',
749
					'https://vimeo.com/149478317',
750
					'https://vimeo.com/154698227',
751
				);
752
753
				break;
754
755
			// Fallback
756
			default:
757
758
				$links = array();
759
760
		}
761
762
		return apply_filters( "tc_video_data", $links[ rand( 0, 8 ) ] );
763
764
	}
765
766
	/**
767
	 * Name function.
768
	 *
769
	 * Makes a random name.
770
	 *
771
	 * @return array Randomly strung together name.
772
	 */
773
	public static function name(){
774
775
		$first_names = array(
776
			'Jacqui',
777
			'Buffy',
778
			'Teddy',
779
			'Cindie',
780
			'Carroll',
781
			'Karly',
782
			'Maricela',
783
			'Kittie',
784
			'Jetta',
785
			'Denise',
786
			'Guillermo',
787
			'Domingo',
788
			'Benjamin',
789
			'Olga',
790
			'Shane',
791
			'Bessie',
792
			'Jose',
793
			'Damon',
794
			'Rodolfo',
795
			'George',
796
		);
797
798
		$last_names = array(
799
			'Henley',
800
			'Trask',
801
			'Dick',
802
			'Irby',
803
			'Raley',
804
			'Bland',
805
			'Rossi',
806
			'Gunther',
807
			'Mchenry',
808
			'Isaacs',
809
			'Romero',
810
			'Mcbride',
811
			'Armstrong',
812
			'Mccoy',
813
			'Evans',
814
			'Dennis',
815
			'Swanson',
816
			'Estrada',
817
			'Johnston',
818
			'Graves',
819
		);
820
821
		$name = array(
822
			'first'	=> $first_names[ rand( 0, 19 ) ],
823
			'last'	=> $last_names[ rand( 0, 19 ) ]
824
		);
825
826
		return apply_filters( "tc_name_data", $name );
827
828
	}
829
830
}
831