Completed
Push — master ( 0a28e3...0c8547 )
by mains
03:05
created

index.php (40 issues)

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
error_reporting(-1);
3
4
include 'php/jodel-web.php';
5
6
	$config = parse_ini_file('config/config.ini.php');
7
8
9
	$location = new Location();
10
	$location->setLat($config['default_lat']);
11
	$location->setLng($config['default_lng']);
12
	$location->setCityName($config['default_location']);
13
14
	$accessToken;
15
	$accessToken_forId1;
16
	$deviceUid;
17
	$isSpider = FALSE;
18
19
	//What is dude doing with my Server?
20
	if($_SERVER['REMOTE_ADDR'] == '94.231.103.52')
21
	{
22
		echo('You are flooting my Server! Pls enable Cookies in your script and contact me: [email protected]');
23
		die();
24
	}
25
26
27
	//Check if it's a Spider or Google Bot
28
	if(botDeviceUidIsSet($config) && isUserBot())
29
	{
30
		$isSpider = TRUE;
31
		error_log('Spider or Bot checked in!');
32
		
33
		$deviceUid = $config['botDeviceUid'];
34
		$config = NULL;
0 ignored issues
show
Equals sign not aligned with surrounding assignments; expected 4 spaces but found 1 space

This check looks for multiple assignments in successive lines of code. It will report an issue if the operators are not in a straight line.

To visualize

$a = "a";
$ab = "ab";
$abc = "abc";

will produce issues in the first and second line, while this second example

$a   = "a";
$ab  = "ab";
$abc = "abc";

will produce no issues.

Loading history...
35
	}
36
	else
37
	{
38
		$config = NULL;
39
		if(!isset($_COOKIE['JodelDeviceId']) || !isDeviceUidInDatabase($db->real_escape_string($_COOKIE['JodelDeviceId'])))
40
		{
41
			$deviceUid = createAccount();
42
			setcookie('JodelDeviceId', $deviceUid, time()+60*60*24*365*10);
43
			error_log('Created account with JodelDeviceId:' . $deviceUid .  ' for [' . $_SERVER ['HTTP_USER_AGENT'] . ']');
44
			
45
		}
46
		else
47
		{
48
			$deviceUid = $db->real_escape_string($_COOKIE['JodelDeviceId']);
49
		}
50
	}
51
52
	$location = getLocationByDeviceUid($deviceUid);
0 ignored issues
show
Equals sign not aligned with surrounding assignments; expected 10 spaces but found 1 space

This check looks for multiple assignments in successive lines of code. It will report an issue if the operators are not in a straight line.

To visualize

$a = "a";
$ab = "ab";
$abc = "abc";

will produce issues in the first and second line, while this second example

$a   = "a";
$ab  = "ab";
$abc = "abc";

will produce no issues.

Loading history...
53
	$newPositionStatus = $location->getCityName();
54
	$accessToken = isTokenFreshByDeviceUid($location, $deviceUid);
0 ignored issues
show
Equals sign not aligned with surrounding assignments; expected 7 spaces but found 1 space

This check looks for multiple assignments in successive lines of code. It will report an issue if the operators are not in a straight line.

To visualize

$a = "a";
$ab = "ab";
$abc = "abc";

will produce issues in the first and second line, while this second example

$a   = "a";
$ab  = "ab";
$abc = "abc";

will produce no issues.

Loading history...
55
	//Acc is fresh. token and location is set
56
57
	$accessToken_forId1 = isTokenFresh($location);
58
	$deviceUid_forId1 = getDeviceUidByAccessToken($accessToken_forId1);
0 ignored issues
show
Equals sign not aligned with surrounding assignments; expected 3 spaces but found 1 space

This check looks for multiple assignments in successive lines of code. It will report an issue if the operators are not in a straight line.

To visualize

$a = "a";
$ab = "ab";
$abc = "abc";

will produce issues in the first and second line, while this second example

$a   = "a";
$ab  = "ab";
$abc = "abc";

will produce no issues.

Loading history...
59
60
61
	//Set View
62 View Code Duplication
	if(isset($_GET['view']))
0 ignored issues
show
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...
63
	{
64
		switch ($_GET['view']) {
65
			case 'comment':
66
				$view = 'comment';
67
				break;
68
			
69
			case 'upVote':
70
				$view = 'upVote';
71
				break;
72
73
			default:
74
				$view = 'time';
75
				break;
76
		}
77
	}
78
	else
79
	{
80
		$view = 'time';
81
	}
82
	
83
	//Set Location
84
	if(isset($_GET['city'])) {
85
		$url = 'https://maps.googleapis.com/maps/api/geocode/json?address=' . htmlspecialchars($_GET['city']) . '&key=AIzaSyCwhnja-or07012HqrhPW7prHEDuSvFT4w';
0 ignored issues
show
Equals sign not aligned with surrounding assignments; expected 4 spaces but found 1 space

This check looks for multiple assignments in successive lines of code. It will report an issue if the operators are not in a straight line.

To visualize

$a = "a";
$ab = "ab";
$abc = "abc";

will produce issues in the first and second line, while this second example

$a   = "a";
$ab  = "ab";
$abc = "abc";

will produce no issues.

Loading history...
This line exceeds maximum limit of 120 characters; contains 153 characters

Overly long lines are hard to read on any screen. Most code styles therefor impose a maximum limit on the number of characters in a line.

Loading history...
86
		$result = Requests::post($url);
87
		if(json_decode($result->body, true)['status'] == 'ZERO_RESULTS' || json_decode($result->body, true)['status'] == 'INVALID_REQUEST')
0 ignored issues
show
This line exceeds maximum limit of 120 characters; contains 133 characters

Overly long lines are hard to read on any screen. Most code styles therefor impose a maximum limit on the number of characters in a line.

Loading history...
88
		{
89
			$newPositionStatus = "0 results";
0 ignored issues
show
Coding Style Comprehensibility introduced by
The string literal 0 results does not require double quotes, as per coding-style, please use single quotes.

PHP provides two ways to mark string literals. Either with single quotes 'literal' or with double quotes "literal". The difference between these is that string literals in double quotes may contain variables with are evaluated at run-time as well as escape sequences.

String literals in single quotes on the other hand are evaluated very literally and the only two characters that needs escaping in the literal are the single quote itself (\') and the backslash (\\). Every other character is displayed as is.

Double quoted string literals may contain other variables or more complex escape sequences.

<?php

$singleQuoted = 'Value';
$doubleQuoted = "\tSingle is $singleQuoted";

print $doubleQuoted;

will print an indented: Single is Value

If your string literal does not contain variables or escape sequences, it should be defined using single quotes to make that fact clear.

For more information on PHP string literals and available escape sequences see the PHP core documentation.

Loading history...
90
		}
91
		else
92
		{
93
			$name = json_decode($result->body, true)['results']['0']['address_components']['0']['long_name'];
94
			$lat = json_decode($result->body, true)['results']['0']['geometry']['location']['lat'];
0 ignored issues
show
Equals sign not aligned with surrounding assignments; expected 2 spaces but found 1 space

This check looks for multiple assignments in successive lines of code. It will report an issue if the operators are not in a straight line.

To visualize

$a = "a";
$ab = "ab";
$abc = "abc";

will produce issues in the first and second line, while this second example

$a   = "a";
$ab  = "ab";
$abc = "abc";

will produce no issues.

Loading history...
95
			$lng = json_decode($result->body, true)['results']['0']['geometry']['location']['lng'];
0 ignored issues
show
Equals sign not aligned with surrounding assignments; expected 2 spaces but found 1 space

This check looks for multiple assignments in successive lines of code. It will report an issue if the operators are not in a straight line.

To visualize

$a = "a";
$ab = "ab";
$abc = "abc";

will produce issues in the first and second line, while this second example

$a   = "a";
$ab  = "ab";
$abc = "abc";

will produce no issues.

Loading history...
96
97
			$location = new Location();
98
			$location->setLat($lat);
99
			$location->setLng($lng);
100
			$location->setCityName($name);
101
			$accountCreator = new UpdateLocation();
102
			$accountCreator->setLocation($location);
103
			$accountCreator->setAccessToken($accessToken);
104
			$data = $accountCreator->execute();
105
106
			//safe location to db
107
			if($data == 'Success')
108
			{
109
				$result = $db->query("UPDATE accounts 
110
						SET name='" . $name . "',
111
							lat='" . $lat . "',
112
							lng='" . $lng . "'
113
						WHERE access_token='" . $accessToken . "'");
114
115
				if($result === false)
116
				{
117
						echo "Updating location failed: (" . $db->errno . ") " . $db->error;
0 ignored issues
show
Coding Style Comprehensibility introduced by
The string literal Updating location failed: ( does not require double quotes, as per coding-style, please use single quotes.

PHP provides two ways to mark string literals. Either with single quotes 'literal' or with double quotes "literal". The difference between these is that string literals in double quotes may contain variables with are evaluated at run-time as well as escape sequences.

String literals in single quotes on the other hand are evaluated very literally and the only two characters that needs escaping in the literal are the single quote itself (\') and the backslash (\\). Every other character is displayed as is.

Double quoted string literals may contain other variables or more complex escape sequences.

<?php

$singleQuoted = 'Value';
$doubleQuoted = "\tSingle is $singleQuoted";

print $doubleQuoted;

will print an indented: Single is Value

If your string literal does not contain variables or escape sequences, it should be defined using single quotes to make that fact clear.

For more information on PHP string literals and available escape sequences see the PHP core documentation.

Loading history...
Coding Style Comprehensibility introduced by
The string literal ) does not require double quotes, as per coding-style, please use single quotes.

PHP provides two ways to mark string literals. Either with single quotes 'literal' or with double quotes "literal". The difference between these is that string literals in double quotes may contain variables with are evaluated at run-time as well as escape sequences.

String literals in single quotes on the other hand are evaluated very literally and the only two characters that needs escaping in the literal are the single quote itself (\') and the backslash (\\). Every other character is displayed as is.

Double quoted string literals may contain other variables or more complex escape sequences.

<?php

$singleQuoted = 'Value';
$doubleQuoted = "\tSingle is $singleQuoted";

print $doubleQuoted;

will print an indented: Single is Value

If your string literal does not contain variables or escape sequences, it should be defined using single quotes to make that fact clear.

For more information on PHP string literals and available escape sequences see the PHP core documentation.

Loading history...
118
				}
119
				else
120
				{
121
					$newPositionStatus = $name;
122
					error_log('User with JodelDeviceId:' . $deviceUid .  ' [' . $_SERVER['REMOTE_ADDR'] . '][' . $_SERVER ['HTTP_USER_AGENT'] . '] changed to Location: ' . $name);
0 ignored issues
show
This line exceeds maximum limit of 120 characters; contains 164 characters

Overly long lines are hard to read on any screen. Most code styles therefor impose a maximum limit on the number of characters in a line.

Loading history...
123
				}
124
			}
125
		}
126
	}
127
	
128
	//Vote
129
	if(isset($_GET['vote']) && isset($_GET['postID']))
130
	{
131
		if(!deviceUidHasVotedThisPostId($deviceUid_forId1, $_GET['postID']))
132
		{
133 View Code Duplication
			if($_GET['vote'] == "up")
0 ignored issues
show
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...
Coding Style Comprehensibility introduced by
The string literal up does not require double quotes, as per coding-style, please use single quotes.

PHP provides two ways to mark string literals. Either with single quotes 'literal' or with double quotes "literal". The difference between these is that string literals in double quotes may contain variables with are evaluated at run-time as well as escape sequences.

String literals in single quotes on the other hand are evaluated very literally and the only two characters that needs escaping in the literal are the single quote itself (\') and the backslash (\\). Every other character is displayed as is.

Double quoted string literals may contain other variables or more complex escape sequences.

<?php

$singleQuoted = 'Value';
$doubleQuoted = "\tSingle is $singleQuoted";

print $doubleQuoted;

will print an indented: Single is Value

If your string literal does not contain variables or escape sequences, it should be defined using single quotes to make that fact clear.

For more information on PHP string literals and available escape sequences see the PHP core documentation.

Loading history...
134
			{
135
				$accountCreator = new Upvote();
136
			}
137
			else if($_GET['vote'] == "down")
0 ignored issues
show
Coding Style Comprehensibility introduced by
The string literal down does not require double quotes, as per coding-style, please use single quotes.

PHP provides two ways to mark string literals. Either with single quotes 'literal' or with double quotes "literal". The difference between these is that string literals in double quotes may contain variables with are evaluated at run-time as well as escape sequences.

String literals in single quotes on the other hand are evaluated very literally and the only two characters that needs escaping in the literal are the single quote itself (\') and the backslash (\\). Every other character is displayed as is.

Double quoted string literals may contain other variables or more complex escape sequences.

<?php

$singleQuoted = 'Value';
$doubleQuoted = "\tSingle is $singleQuoted";

print $doubleQuoted;

will print an indented: Single is Value

If your string literal does not contain variables or escape sequences, it should be defined using single quotes to make that fact clear.

For more information on PHP string literals and available escape sequences see the PHP core documentation.

Loading history...
138
			{
139
				$accountCreator = new Downvote();
140
			}
141
			$accountCreator->setAccessToken($accessToken_forId1);
142
			$accountCreator->postId = htmlspecialchars($_GET['postID']);
143
			$data = $accountCreator->execute();
0 ignored issues
show
Equals sign not aligned with surrounding assignments; expected 19 spaces but found 1 space

This check looks for multiple assignments in successive lines of code. It will report an issue if the operators are not in a straight line.

To visualize

$a = "a";
$ab = "ab";
$abc = "abc";

will produce issues in the first and second line, while this second example

$a   = "a";
$ab  = "ab";
$abc = "abc";

will produce no issues.

Loading history...
144
145
146
			addVoteWithPostIdAndTypeToDeviceUid($_GET['postID'], $_GET['vote'], $deviceUid_forId1);
147
		}
148
149
		
150
		if(isset($_GET['getPostDetails']) && isset($_GET['getPostDetails']))
151
		{
152
			header('Location: index.php?getPostDetails=true&postID=' . htmlspecialchars($_GET['postID_parent']) . '#postId-' . htmlspecialchars($_GET['postID']));
0 ignored issues
show
This line exceeds maximum limit of 120 characters; contains 153 characters

Overly long lines are hard to read on any screen. Most code styles therefor impose a maximum limit on the number of characters in a line.

Loading history...
153
		}
154
		else
155
		{
156
			header("Location: index.php#postId-" . htmlspecialchars($_GET['postID']));
0 ignored issues
show
Coding Style Comprehensibility introduced by
The string literal Location: index.php#postId- does not require double quotes, as per coding-style, please use single quotes.

PHP provides two ways to mark string literals. Either with single quotes 'literal' or with double quotes "literal". The difference between these is that string literals in double quotes may contain variables with are evaluated at run-time as well as escape sequences.

String literals in single quotes on the other hand are evaluated very literally and the only two characters that needs escaping in the literal are the single quote itself (\') and the backslash (\\). Every other character is displayed as is.

Double quoted string literals may contain other variables or more complex escape sequences.

<?php

$singleQuoted = 'Value';
$doubleQuoted = "\tSingle is $singleQuoted";

print $doubleQuoted;

will print an indented: Single is Value

If your string literal does not contain variables or escape sequences, it should be defined using single quotes to make that fact clear.

For more information on PHP string literals and available escape sequences see the PHP core documentation.

Loading history...
157
		}	
158
		die();
159
	}
160
	
161
	
162
	//SendJodel
163
	if(isset($_POST['message']))
164
	{
165
		$accountCreator = new SendJodel();
166
167
		if(isset($_POST['ancestor']))
168
		{
169
			$ancestor = $_POST['ancestor'];
0 ignored issues
show
Equals sign not aligned with surrounding assignments; expected 17 spaces but found 1 space

This check looks for multiple assignments in successive lines of code. It will report an issue if the operators are not in a straight line.

To visualize

$a = "a";
$ab = "ab";
$abc = "abc";

will produce issues in the first and second line, while this second example

$a   = "a";
$ab  = "ab";
$abc = "abc";

will produce no issues.

Loading history...
170
			$accountCreator->ancestor = $ancestor;
171
		}
172
		if(isset($_POST['color']))
173
		{
174
			$color = $_POST['color'];
175
			switch ($color) {
176
				case '8ABDB0':
177
					$color = '8ABDB0';
178
					break;
179
				case '9EC41C':
180
					$color = '9EC41C';
181
					break;
182
				case '06A3CB':
183
					$color = '06A3CB';
184
					break;
185
				case 'FFBA00':
186
					$color = 'FFBA00';
187
					break;
188
				case 'DD5F5F':
189
					$color = 'DD5F5F';
190
					break;
191
				case 'FF9908':
192
					$color = 'FF9908';
193
					break;
194
				
195
				default:
196
					$color = '8ABDB0';
197
					break;
198
			}
199
			$accountCreator->color = $color;
200
		}
201
202
		$accountCreatorLocation = new UpdateLocation();
203
		$accountCreatorLocation->setLocation($location);
204
		$accountCreatorLocation->setAccessToken($accessToken_forId1);
205
		$data = $accountCreatorLocation->execute();
206
		
207
		$accountCreator->location = $location;
208
		
209
		$accountCreator->setAccessToken($accessToken_forId1);
210
		$data = $accountCreator->execute();
211
212
		if(isset($_POST['ancestor']))
213
		{
214
			$actual_link = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
215
			header('Location: ' . $actual_link . '#postId-' . htmlspecialchars($data['post_id']));
216
			exit;
217
		}
218
		else
219
		{
220
			header('Location: ./#');
221
			exit;
222
		}
223
	}
224
225
226
	$posts;
227
228
	//Get Post Details
229
	if(isset($_GET['postID']) && isset($_GET['getPostDetails']))
230
	{
231
		$userHandleBuffer = [];
232
233
		$accountCreator = new GetPostDetails();
234
		$accountCreator->setAccessToken($accessToken);
235
		$data = $accountCreator->execute();
236
		
237
		$posts[0] = $data;
238
		if(array_key_exists('children', $data)) {
239
			foreach($data['children'] as $key => $child)
240
			{
241
				
242
				if(!$child["parent_creator"] == 1)
0 ignored issues
show
Coding Style Comprehensibility introduced by
The string literal parent_creator does not require double quotes, as per coding-style, please use single quotes.

PHP provides two ways to mark string literals. Either with single quotes 'literal' or with double quotes "literal". The difference between these is that string literals in double quotes may contain variables with are evaluated at run-time as well as escape sequences.

String literals in single quotes on the other hand are evaluated very literally and the only two characters that needs escaping in the literal are the single quote itself (\') and the backslash (\\). Every other character is displayed as is.

Double quoted string literals may contain other variables or more complex escape sequences.

<?php

$singleQuoted = 'Value';
$doubleQuoted = "\tSingle is $singleQuoted";

print $doubleQuoted;

will print an indented: Single is Value

If your string literal does not contain variables or escape sequences, it should be defined using single quotes to make that fact clear.

For more information on PHP string literals and available escape sequences see the PHP core documentation.

Loading history...
243
				{
244
					$numberForUser = array_search($child['user_handle'], $userHandleBuffer);
245
					if($numberForUser === FALSE)
246
					{
247
						array_push($userHandleBuffer, $child['user_handle']);
248
						$data['children'][$key]['user_handle'] = count($userHandleBuffer);
249
					}
250
					else
251
					{
252
						$data['children'][$key]['user_handle'] = $numberForUser + 1;
253
					}
254
				}
255
256
				array_push($posts, $data['children'][$key]);
257
			}
258
			$loops = $data['child_count'] + 1;
259
		}
260
		else
261
		{
262
			$loops = 1;
263
		}
264
		$isDetailedView = TRUE;
265
	}
266
	//Get Posts
267
	else
268
	{
269
		$version = 'v2';
270
		if($view=='comment')
271
		{
272
			$url = "/v2/posts/location/discussed/";
0 ignored issues
show
Coding Style Comprehensibility introduced by
The string literal /v2/posts/location/discussed/ does not require double quotes, as per coding-style, please use single quotes.

PHP provides two ways to mark string literals. Either with single quotes 'literal' or with double quotes "literal". The difference between these is that string literals in double quotes may contain variables with are evaluated at run-time as well as escape sequences.

String literals in single quotes on the other hand are evaluated very literally and the only two characters that needs escaping in the literal are the single quote itself (\') and the backslash (\\). Every other character is displayed as is.

Double quoted string literals may contain other variables or more complex escape sequences.

<?php

$singleQuoted = 'Value';
$doubleQuoted = "\tSingle is $singleQuoted";

print $doubleQuoted;

will print an indented: Single is Value

If your string literal does not contain variables or escape sequences, it should be defined using single quotes to make that fact clear.

For more information on PHP string literals and available escape sequences see the PHP core documentation.

Loading history...
273
		}
274
		else
275
		{
276
			if($view=='upVote')
277
			{
278
				$url = "/v2/posts/location/popular/";
0 ignored issues
show
Coding Style Comprehensibility introduced by
The string literal /v2/posts/location/popular/ does not require double quotes, as per coding-style, please use single quotes.

PHP provides two ways to mark string literals. Either with single quotes 'literal' or with double quotes "literal". The difference between these is that string literals in double quotes may contain variables with are evaluated at run-time as well as escape sequences.

String literals in single quotes on the other hand are evaluated very literally and the only two characters that needs escaping in the literal are the single quote itself (\') and the backslash (\\). Every other character is displayed as is.

Double quoted string literals may contain other variables or more complex escape sequences.

<?php

$singleQuoted = 'Value';
$doubleQuoted = "\tSingle is $singleQuoted";

print $doubleQuoted;

will print an indented: Single is Value

If your string literal does not contain variables or escape sequences, it should be defined using single quotes to make that fact clear.

For more information on PHP string literals and available escape sequences see the PHP core documentation.

Loading history...
279
			}
280
			else
281
			{
282
				$url = "/v3/posts/location/combo/";
0 ignored issues
show
Equals sign not aligned with surrounding assignments; expected 5 spaces but found 1 space

This check looks for multiple assignments in successive lines of code. It will report an issue if the operators are not in a straight line.

To visualize

$a = "a";
$ab = "ab";
$abc = "abc";

will produce issues in the first and second line, while this second example

$a   = "a";
$ab  = "ab";
$abc = "abc";

will produce no issues.

Loading history...
Coding Style Comprehensibility introduced by
The string literal /v3/posts/location/combo/ does not require double quotes, as per coding-style, please use single quotes.

PHP provides two ways to mark string literals. Either with single quotes 'literal' or with double quotes "literal". The difference between these is that string literals in double quotes may contain variables with are evaluated at run-time as well as escape sequences.

String literals in single quotes on the other hand are evaluated very literally and the only two characters that needs escaping in the literal are the single quote itself (\') and the backslash (\\). Every other character is displayed as is.

Double quoted string literals may contain other variables or more complex escape sequences.

<?php

$singleQuoted = 'Value';
$doubleQuoted = "\tSingle is $singleQuoted";

print $doubleQuoted;

will print an indented: Single is Value

If your string literal does not contain variables or escape sequences, it should be defined using single quotes to make that fact clear.

For more information on PHP string literals and available escape sequences see the PHP core documentation.

Loading history...
283
				$version = 'v3';
284
			}
285
		}
286
287
		if($version == 'v3')
288
		{
289
			$posts = getPosts($lastPostId, $accessToken, $url, $version)['recent'];
290
		}
291
		else
292
		{
293
			$posts = getPosts($lastPostId, $accessToken, $url, $version)['posts'];
294
		}
295
		$loops = 29;
0 ignored issues
show
Equals sign not aligned with surrounding assignments; expected 10 spaces but found 1 space

This check looks for multiple assignments in successive lines of code. It will report an issue if the operators are not in a straight line.

To visualize

$a = "a";
$ab = "ab";
$abc = "abc";

will produce issues in the first and second line, while this second example

$a   = "a";
$ab  = "ab";
$abc = "abc";

will produce no issues.

Loading history...
296
		$isDetailedView = FALSE;
297
	}
298
?>
299
<!DOCTYPE html>
300
<html lang="en">
301
	<head>
302
		<title><?php echo getTitle($posts[0], $view, $isDetailedView);?></title>
303
		
304
		<meta charset="utf-8">
305
		<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
306
		<meta http-equiv="x-ua-compatible" content="ie=edge">
307
		
308
		<meta name="description" content="<?php echo getMetaDescription($posts[0], $view, $isDetailedView);?>">
309
		<meta name="keywords" content="jodelblue, jodel, blue, webclient, web, client, web-app, browser, app">
310
		
311
		<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.5/css/bootstrap.min.css" integrity="sha384-AysaV+vQoT3kOAXZkl02PThvDr8HYKPZhNT5h/CXfBThSRXQ6jW5DO2ekP5ViFdi" crossorigin="anonymous">
0 ignored issues
show
This line exceeds maximum limit of 120 characters; contains 218 characters

Overly long lines are hard to read on any screen. Most code styles therefor impose a maximum limit on the number of characters in a line.

Loading history...
312
		<link rel="stylesheet" href="css/font-awesome.min.css">
313
		<link rel="stylesheet" href="style.css" type="text/css">
314
		
315
		<link rel="shortcut icon" type="image/x-icon" href="./img/favicon/favicon.ico">
316
		<link rel="icon" type="image/x-icon" href="./img/favicon/favicon.ico">
317
		<link rel="icon" type="image/gif" href="./img/favicon/favicon.gif">
318
		<link rel="icon" type="image/png" href="./img/favicon/favicon.png">
319
		<link rel="apple-touch-icon" href="./img/favicon/apple-touch-icon.png">
320
		<link rel="apple-touch-icon" href="./img/favicon/apple-touch-icon-57x57.png" sizes="57x57">
321
		<link rel="apple-touch-icon" href="./img/favicon/apple-touch-icon-60x60.png" sizes="60x60">
322
		<link rel="apple-touch-icon" href="./img/favicon/apple-touch-icon-72x72.png" sizes="72x72">
323
		<link rel="apple-touch-icon" href="./img/favicon/apple-touch-icon-76x76.png" sizes="76x76">
324
		<link rel="apple-touch-icon" href="./img/favicon/apple-touch-icon-114x114.png" sizes="114x114">
325
		<link rel="apple-touch-icon" href="./img/favicon/apple-touch-icon-120x120.png" sizes="120x120">
326
		<link rel="apple-touch-icon" href="./img/favicon/apple-touch-icon-128x128.png" sizes="128x128">
327
		<link rel="apple-touch-icon" href="./img/favicon/apple-touch-icon-144x144.png" sizes="144x144">
328
		<link rel="apple-touch-icon" href="./img/favicon/apple-touch-icon-152x152.png" sizes="152x152">
329
		<link rel="apple-touch-icon" href="./img/favicon/apple-touch-icon-180x180.png" sizes="180x180">
330
		<link rel="apple-touch-icon" href="./img/favicon/apple-touch-icon-precomposed.png">
331
		<link rel="icon" type="image/png" href="./img/favicon/favicon-16x16.png" sizes="16x16">
332
		<link rel="icon" type="image/png" href="./img/favicon/favicon-32x32.png" sizes="32x32">
333
		<link rel="icon" type="image/png" href="./img/favicon/favicon-96x96.png" sizes="96x96">
334
		<link rel="icon" type="image/png" href="./img/favicon/favicon-160x160.png" sizes="160x160">
335
		<link rel="icon" type="image/png" href="./img/favicon/favicon-192x192.png" sizes="192x192">
336
		<link rel="icon" type="image/png" href="./img/favicon/favicon-196x196.png" sizes="196x196">
337
		<meta name="msapplication-TileImage" content="./img/favicon/win8-tile-144x144.png"> 
338
		<meta name="msapplication-TileColor" content="#5682a3"> 
339
		<meta name="msapplication-navbutton-color" content="#5682a3"> 
340
		<meta name="application-name" content="JodelBlue"/> 
341
		<meta name="msapplication-tooltip" content="JodelBlue"/> 
342
		<meta name="apple-mobile-web-app-title" content="JodelBlue"/> 
343
		<meta name="msapplication-square70x70logo" content="./img/favicon/win8-tile-70x70.png"> 
344
		<meta name="msapplication-square144x144logo" content="./img/favicon/win8-tile-144x144.png"> 
345
		<meta name="msapplication-square150x150logo" content="./img/favicon/win8-tile-150x150.png"> 
346
		<meta name="msapplication-wide310x150logo" content="./img/favicon/win8-tile-310x150.png"> 
347
		<meta name="msapplication-square310x310logo" content="./img/favicon/win8-tile-310x310.png"> 
348
	</head>
349
	
350
	<body>
351
		<header>
352
			<nav class="navbar navbar-full navbar-dark navbar-fixed-top">
353
				<div class="container">					
354
						<?php
355
							if(isset($_GET['postID']) && isset($_GET['getPostDetails']))
356
							{
357
								echo '<a id="comment-back" href="index.php?view=' . $view . '#postId-' . htmlspecialchars($_GET['postID']) . '">';
0 ignored issues
show
This line exceeds maximum limit of 120 characters; contains 122 characters

Overly long lines are hard to read on any screen. Most code styles therefor impose a maximum limit on the number of characters in a line.

Loading history...
358
								echo '<i class="fa fa-angle-left fa-3x"></i>';
359
								echo '</a>';
360
								echo '<h1>';
361
								echo '<a href="index.php?getPostDetails=' . htmlspecialchars($_GET['getPostDetails']) . '&postID=' . htmlspecialchars($_GET['postID']) . '" class="spinnable">';
0 ignored issues
show
This line exceeds maximum limit of 120 characters; contains 168 characters

Overly long lines are hard to read on any screen. Most code styles therefor impose a maximum limit on the number of characters in a line.

Loading history...
362
							}
363
							else
364
							{
365
								echo '<h1>';	
366
								echo '<a href="./" class="spinnable">';
367
							}
368
						?>
369
						JodelBlue <i class="fa fa-refresh fa-1x"></i></a>
370
					</h1>
371
372
					<div id="location_mobile" class="hidden-sm-up">
373
						<form method="get">
374
							<input type="text" id="city_mobile" name="city" placeholder="<?php if(isset($newPositionStatus)) echo $newPositionStatus; ?>" required>
0 ignored issues
show
This line exceeds maximum limit of 120 characters; contains 142 characters

Overly long lines are hard to read on any screen. Most code styles therefor impose a maximum limit on the number of characters in a line.

Loading history...
375
376
							<input type="submit" id="submit_mobile" class="fa" value="&#xf0ac;" />
377
						</form>
378
					</div>
379
				</div>
380
			</nav>
381
		</header>
382
		
383
		<div class="mainContent container">		
384
			<div class="content row">
385
				<article class="topContent col-sm-8">
386
387
					<content id="posts">
388
						<?php
389
							for($i = 0; $i<$loops; $i++)
390
							{
391
								if(array_key_exists($i, $posts) && array_key_exists('post_id', $posts[$i]) && isset($posts[$i]['post_id']))
392
								{
393
									$lastPostId = $posts[$i]['post_id'];
394
395
									jodelToHtml($posts[$i], $view, $isDetailedView);
396
								}
397
							} ?>
398
399
					</content>
400
					
401
					<?php if(!isset($_GET['postID']) && !isset($_GET['getPostDetails'])) { ?>
402
						<p id="loading">
403
							Loading…
404
						</p>
405
					<?php } ?>
406
				</article>
407
			
408
				<aside class="topSidebar col-sm-4 sidebar-outer">
409
					<div class="fixed">
410
						<article>
411
							<div>
412
								<h2>Position</h2>
413
								<form method="get">
414
									<input type="text" id="city" name="city" placeholder="<?php if(isset($newPositionStatus)) echo $newPositionStatus; ?>" required>
0 ignored issues
show
This line exceeds maximum limit of 120 characters; contains 137 characters

Overly long lines are hard to read on any screen. Most code styles therefor impose a maximum limit on the number of characters in a line.

Loading history...
415
416
									<input type="submit" value="Set Location" /> 
417
								</form>
418
							</div>
419
						</article>
420
421
						<article>
422
							<div>
423
								<h2>Karma</h2>
424
								<?php echo getKarma($accessToken_forId1); ?>
425
							</div>
426
						</article>
427
428
						<article>
429
							<div>
430
								<?php if(isset($_GET['postID']) && isset($_GET['getPostDetails'])) { ?>
431
								<h2>Comment on Jodel</h2>
432
								<form method="POST">				
433
										<input type="hidden" name="ancestor" value="<?php echo htmlspecialchars($_GET['postID']);?>" />
434
										<textarea id="message" name="message" placeholder="Send a comment on a Jodel to all students within 10km" required></textarea> 
0 ignored issues
show
This line exceeds maximum limit of 120 characters; contains 137 characters

Overly long lines are hard to read on any screen. Most code styles therefor impose a maximum limit on the number of characters in a line.

Loading history...
435
									<br />
436
									<input type="submit" value="SEND" /> 
437
								</form>
438
									<?php } else { ?>
439
								<h2>New Jodel</h2>
440
								<form method="POST">
441
									<textarea id="message" name="message" placeholder="Send a Jodel to all students within 10km" required></textarea> 
0 ignored issues
show
This line exceeds maximum limit of 120 characters; contains 123 characters

Overly long lines are hard to read on any screen. Most code styles therefor impose a maximum limit on the number of characters in a line.

Loading history...
442
									<br />
443
									<select id="postColorPicker" name="color">
444
										<option value="06A3CB">Blue</option>
445
										<option value="8ABDB0">Teal</option>
446
										<option value="9EC41C">Green</option>
447
										<option value="FFBA00">Yellow</option>
448
										<option value="DD5F5F">Red</option>
449
										<option value="FF9908">Orange</option>
450
									</select> 
451
									<br />
452
									<input type="submit" value="SEND" /> 
453
								</form>
454
								<?php } ?>
455
							</div>
456
						</article>
457
							
458
						<article>
459
							<div>
460
								<h2>Login</h2>
461
							</div>
462
						</article>
463
					</div>
464
				</aside>
465
			</div>
466
			<div id="sortJodelBy" class="row">
467
				<div class="col-xs-12">
468
					<div class="row">
469
						<div class="col-xs-3">
470
							<a href="index.php" <?php if($view=='time') echo 'class="active"';?>><i class="fa fa-clock-o fa-3x"></i></a>
471
						</div>
472
						<div class="col-xs-3">
473
							<a href="index.php?view=comment" <?php if($view=='comment') echo 'class="active"';?>><i class="fa fa-commenting-o fa-3x"></i></a>
0 ignored issues
show
This line exceeds maximum limit of 120 characters; contains 136 characters

Overly long lines are hard to read on any screen. Most code styles therefor impose a maximum limit on the number of characters in a line.

Loading history...
474
						</div>
475
						<div class="col-xs-3">
476
							<a href="index.php?view=upVote" <?php if($view=='upVote') echo 'class="active"';?>><i class="fa fa-angle-up fa-3x"></i></a>
0 ignored issues
show
This line exceeds maximum limit of 120 characters; contains 130 characters

Overly long lines are hard to read on any screen. Most code styles therefor impose a maximum limit on the number of characters in a line.

Loading history...
477
						</div>
478
						<div class="col-xs-3">
479
							<nav>
480
								<a href="./about-us.html">about us</a>
481
							</nav>
482
						</div>
483
					</div>
484
				</div>	
485
			</div>
486
		</div>
487
		
488
		
489
		<!-- jQuery, Tether, Bootstrap JS and own-->
490
		<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js" integrity="sha384-3ceskX3iaEnIogmQchP8opvBy3Mi7Ce34nWjpBIwVTHfGYWQS9jwHDVRnpKKHJg7" crossorigin="anonymous"></script>
0 ignored issues
show
This line exceeds maximum limit of 120 characters; contains 198 characters

Overly long lines are hard to read on any screen. Most code styles therefor impose a maximum limit on the number of characters in a line.

Loading history...
491
    	<script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.3.7/js/tether.min.js" integrity="sha384-XTs3FgkjiBgo8qjEjBk0tGmf3wPrWtA6coPfQDfFEY8AnYJwjalXCiosYRBIBZX8" crossorigin="anonymous"></script>
0 ignored issues
show
This line exceeds maximum limit of 120 characters; contains 205 characters

Overly long lines are hard to read on any screen. Most code styles therefor impose a maximum limit on the number of characters in a line.

Loading history...
492
    	<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.5/js/bootstrap.min.js" integrity="sha384-BLiI7JTZm+JWlgKa0M0kGRpJbF2J8q+qreVrKBC47e3K6BW78kGLrCkeRX6I9RoK" crossorigin="anonymous"></script>
0 ignored issues
show
This line exceeds maximum limit of 120 characters; contains 212 characters

Overly long lines are hard to read on any screen. Most code styles therefor impose a maximum limit on the number of characters in a line.

Loading history...
493
    	<script src="js/jQueryEmoji_un.js"></script>
494
495
		<script>
496
			//BackButton
497
			function goBack()
498
			{
499
				window.history.back();
500
			}
501
502
			$(document).ready(function()
503
			{
504
				//Transform UTF-8 Emoji to img
505
				$('.jodel > content').Emoji();
506
507
				$('a').on('click', function(){
508
				    $('a').removeClass('selected');
509
				    $(this).addClass('selected');
510
				});
511
512
				function scrollToAnchor(aid){
513
				    var aTag = $("article[id='"+ aid +"']");
514
				    $('html,body').animate({scrollTop: aTag.offset().top-90},'slow');
515
				}
516
517
				<?php if(!isset($_GET['postID']) && !isset($_GET['getPostDetails'])) { ?>
518
519
				
520
521
522
523
				var win = $(window);
524
				var lastPostId = "<?php echo $lastPostId; ?>";
525
				var view = "<?php echo $view; ?>"
526
				var old_lastPostId = "";
527
				var morePostsAvailable = true;
528
529
				if(window.location.hash)
530
				{
531
					var hash = window.location.hash.slice(1);
532
533
					if(!$("article[id='"+ hash +"']").length)
534
					{
535
						for (var i = 5; i >= 0; i--)
536
						{
537
							if(!$("article[id='"+ hash +"']").length)
538
							{
539
								$.ajax({
540
									url: 'get-posts-ajax.php?lastPostId=' + lastPostId + '&view=' + view,
541
									dataType: 'html',
542
									async: false,
543
									success: function(html) {
544
										var div = document.createElement('div');
545
										div.innerHTML = html;
546
										var elements = div.childNodes;
547
										old_lastPostId = lastPostId;
548
										lastPostId = elements[3].textContent;
549
										lastPostId = lastPostId.replace(/\s+/g, '');
550
										//alert('Neu: ' + lastPostId + " Alt: " + old_lastPostId);
551
										if(lastPostId == old_lastPostId) {
552
											
553
											//morePostsAvailable = false;
554
										}
555
										else {
556
											//alert(elements[3].textContent);
557
											$('#posts').append(elements[1].innerHTML);
558
											$('#posts').hide().show(0);
559
										}
560
										$('#loading').hide();
561
									}
562
								});
563
564
								$('.jodel > content').Emoji();
565
							}
566
							
567
						}
568
						scrollToAnchor(hash);
569
570
					}						
571
				}
572
573
				// Each time the user scrolls
574
				win.scroll(function() {
575
576
577
					// End of the document reached?
578
					if ($(window).scrollTop() + $(window).height() > $(document).height() - 100 && morePostsAvailable)
579
					{
580
						$('#loading').show();
581
582
						$.ajax({
583
							url: 'get-posts-ajax.php?lastPostId=' + lastPostId + '&view=' + view,
584
							dataType: 'html',
585
							async: false,
586
							success: function(html) {
587
								var div = document.createElement('div');
588
								div.innerHTML = html;
589
								var elements = div.childNodes;
590
								old_lastPostId = lastPostId;
591
								lastPostId = elements[3].textContent;
592
								lastPostId = lastPostId.replace(/\s+/g, '');
593
								//alert('Neu: ' + lastPostId + " Alt: " + old_lastPostId);
594
								if(lastPostId == old_lastPostId)
595
								{
596
									
597
									//morePostsAvailable = false;
598
								}
599
								else
600
								{
601
									//alert(elements[3].textContent);
602
									$('#posts').append(elements[1].innerHTML);
603
								}
604
								$('#loading').hide();
605
							}
606
						});
607
608
						$('.jodel > content').Emoji();
609
					}
610
				});
611
			<?php } ?>
612
			});	
613
614
		</script>
615
616
		<?php  
617
			if(is_file('./piwik-script.html'))
618
			{
619
			    require_once('./piwik-script.html');
620
			}
621
		?>
622
623
	</body>
624
</html>
625
0 ignored issues
show
As per coding style, files should not end with a newline character.

This check marks files that end in a newline character, i.e. an empy line.

Loading history...
626