2015-02-23 11:44:12 +01:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace level2;
|
|
|
|
|
|
|
|
use Silex\Application;
|
|
|
|
|
|
|
|
class Level2 {
|
|
|
|
|
2015-03-01 22:20:42 +01:00
|
|
|
static public $imageMatch = 'https?:\/\/[^ ]+?(?:\.jpg|\.png|\.gif)';
|
|
|
|
static public $urlMatch = '\b(?:(?:https?|ftp|file):\/\/|www\.|ftp\.)[-A-Z0-9+&@#\/%=~_|$\(\)?!:,.]*[A-Z0-9+&@#\/%=~_|$]';
|
2015-02-23 11:44:12 +01:00
|
|
|
|
2015-02-26 21:58:46 +01:00
|
|
|
static public function getStatus ( $app ) {
|
|
|
|
|
|
|
|
$spaceAPI = Helpers::spaceAPI( $app );
|
2015-02-23 11:44:12 +01:00
|
|
|
|
2015-03-01 02:17:00 +01:00
|
|
|
$Level2[ 'open' ] = $spaceAPI[ 'state' ][ 'open' ];
|
|
|
|
$Level2[ 'lastchange' ] = $spaceAPI[ 'state' ][ 'lastchange' ];
|
|
|
|
$Level2[ 'people' ] = $spaceAPI[ 'sensors' ][ 'people_now_present' ][ 0 ][ 'value' ];
|
|
|
|
$Level2[ 'address' ] = $spaceAPI[ 'location' ][ 'address' ];
|
|
|
|
$Level2[ 'phone' ] = $spaceAPI[ 'contact' ][ 'phone' ];
|
|
|
|
$Level2[ 'logo' ] = $spaceAPI[ 'logo' ];
|
2015-02-23 11:44:12 +01:00
|
|
|
|
|
|
|
return $Level2;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2015-02-26 21:58:46 +01:00
|
|
|
static public function getJSONCalendar ( $app ) {
|
2015-02-23 15:45:47 +01:00
|
|
|
|
|
|
|
$googleCalendarJson = 'https://www.googleapis.com/calendar/v3/calendars/'
|
|
|
|
. $app[ 'google' ][ 'calendar_id' ] . '/events'
|
|
|
|
. '?singleEvents=true'
|
|
|
|
. '&orderBy=startTime'
|
2015-02-26 21:58:46 +01:00
|
|
|
. '&timeMin=' . date( 'Y-m-d' ) . 'T' . date( 'H' ) . '%3A' . date( 'i' ) . '%3A' . date( 's' ) . '%2B01%3A00'
|
2015-02-23 15:45:47 +01:00
|
|
|
. '&fields=description%2Citems(description%2Crecurrence%2Csummary%2Clocation%2Cstart%2Cend)%2Csummary'
|
|
|
|
. '&key=' . $app[ 'google' ][ 'api_key' ];
|
|
|
|
|
2015-02-26 21:58:46 +01:00
|
|
|
return Helpers::JSON2Array( $googleCalendarJson );
|
2015-02-23 15:45:47 +01:00
|
|
|
|
2015-02-26 21:58:46 +01:00
|
|
|
}
|
2015-02-23 15:45:47 +01:00
|
|
|
|
2015-02-26 21:58:46 +01:00
|
|
|
static public function getEventDateTime ( $googleEvent ) {
|
2015-02-23 23:34:54 +01:00
|
|
|
|
2015-02-26 21:58:46 +01:00
|
|
|
if ( array_key_exists( 'dateTime' , $googleEvent[ 'start' ] ) ){
|
|
|
|
$event[ 'start' ] = strtotime( $googleEvent[ 'start' ][ 'dateTime' ] );
|
|
|
|
$event[ 'end' ] = strtotime( $googleEvent[ 'end' ][ 'dateTime' ] );
|
|
|
|
|
|
|
|
$event[ 'date' ] = date( 'l, j. M G:i', $event[ 'start' ] );
|
|
|
|
|
|
|
|
} else {
|
|
|
|
$event[ 'start' ] = strtotime( $googleEvent[ 'start' ][ 'date' ] );
|
|
|
|
$event[ 'end' ] = strtotime( $googleEvent[ 'end' ][ 'date' ] );
|
|
|
|
|
|
|
|
$event[ 'date' ] = date( 'l, j. M', $event[ 'start' ] );
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return $event;
|
|
|
|
|
|
|
|
}
|
2015-02-23 15:45:47 +01:00
|
|
|
|
2015-02-26 21:58:46 +01:00
|
|
|
static public function getImages( $googleEvent ) {
|
2015-02-23 21:18:41 +01:00
|
|
|
|
2015-03-01 22:20:42 +01:00
|
|
|
preg_match_all( '/' . self::$imageMatch . '/i', $googleEvent[ 'description' ], $image, PREG_PATTERN_ORDER );
|
2015-02-26 21:58:46 +01:00
|
|
|
|
|
|
|
if ( sizeof( $image[ 0 ] ) > 0 ) {
|
|
|
|
|
|
|
|
if ( $image[ 0 ][ 0 ] != '' ) {
|
|
|
|
|
|
|
|
return $image[ 0 ][ 0 ];
|
2015-02-23 15:45:47 +01:00
|
|
|
|
|
|
|
} else {
|
2015-02-23 21:18:41 +01:00
|
|
|
|
2015-02-26 21:58:46 +01:00
|
|
|
return false;
|
2015-02-23 21:18:41 +01:00
|
|
|
|
2015-02-23 15:45:47 +01:00
|
|
|
}
|
|
|
|
|
2015-02-26 21:58:46 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
static public function getURLs( $googleEvent ) {
|
|
|
|
|
2015-03-01 22:20:42 +01:00
|
|
|
preg_match_all( '/' . self::$urlMatch . '/i', $googleEvent[ 'description' ], $url, PREG_PATTERN_ORDER );
|
2015-02-26 21:58:46 +01:00
|
|
|
|
|
|
|
if ( sizeof( $url[ 0 ] ) > 0 ) {
|
|
|
|
|
|
|
|
if ( $url[ 0 ][ 0 ] != '' ) {
|
|
|
|
|
|
|
|
return $url[ 0 ][ 0 ];
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
2015-02-23 15:45:47 +01:00
|
|
|
}
|
|
|
|
|
2015-02-26 21:58:46 +01:00
|
|
|
}
|
2015-02-23 21:18:41 +01:00
|
|
|
|
2015-02-26 21:58:46 +01:00
|
|
|
}
|
2015-02-23 15:45:47 +01:00
|
|
|
|
2015-02-26 21:58:46 +01:00
|
|
|
static public function removeImages( $googleEvent ) {
|
2015-02-23 21:18:41 +01:00
|
|
|
|
2015-03-15 22:18:21 +01:00
|
|
|
preg_match_all( '/' . self::$imageMatch . '/i', $googleEvent[ 'description' ], $image, PREG_PATTERN_ORDER );
|
2015-02-23 21:18:41 +01:00
|
|
|
|
2015-02-26 21:58:46 +01:00
|
|
|
return preg_replace(
|
2015-03-01 22:20:42 +01:00
|
|
|
'/\n' . self::$imageMatch . '/i',
|
2015-02-26 21:58:46 +01:00
|
|
|
'',
|
|
|
|
$googleEvent[ 'description' ]
|
|
|
|
);
|
2015-02-23 21:18:41 +01:00
|
|
|
|
2015-02-26 21:58:46 +01:00
|
|
|
}
|
2015-02-23 21:18:41 +01:00
|
|
|
|
2015-02-26 21:58:46 +01:00
|
|
|
static public function removeURLs( $googleEvent ) {
|
|
|
|
|
2015-03-15 22:18:21 +01:00
|
|
|
preg_match_all( '/' . self::$urlMatch . '/i', $googleEvent[ 'description' ], $url, PREG_PATTERN_ORDER );
|
2015-02-23 21:18:41 +01:00
|
|
|
|
2015-02-26 21:58:46 +01:00
|
|
|
return preg_replace(
|
2015-03-01 22:20:42 +01:00
|
|
|
'/\n' . self::$urlMatch . '/i',
|
2015-02-26 21:58:46 +01:00
|
|
|
'',
|
|
|
|
$googleEvent[ 'description' ]
|
|
|
|
);
|
2015-02-23 21:18:41 +01:00
|
|
|
|
2015-02-26 21:58:46 +01:00
|
|
|
}
|
2015-02-23 21:18:41 +01:00
|
|
|
|
2015-02-26 21:58:46 +01:00
|
|
|
static public function getEvents ( $app ) {
|
|
|
|
|
2015-02-26 23:10:22 +01:00
|
|
|
$googleCalendar = Helpers::JSON2Array( $app[ 'cache' ][ 'calendar' ][ 'json' ] );
|
2015-02-26 21:58:46 +01:00
|
|
|
|
|
|
|
foreach( $googleCalendar[ 'items' ] as $googleEvent ) {
|
2015-02-23 15:45:47 +01:00
|
|
|
|
2015-02-26 21:58:46 +01:00
|
|
|
unset( $event );
|
|
|
|
|
|
|
|
$event = self::getEventDateTime( $googleEvent );
|
|
|
|
|
|
|
|
$event[ 'name' ] = $googleEvent[ 'summary' ];
|
|
|
|
|
|
|
|
if ( array_key_exists( 'location' , $googleEvent ) ){
|
2015-02-26 23:38:33 +01:00
|
|
|
$event[ 'location' ] = $googleEvent[ 'location' ];
|
2015-02-26 21:58:46 +01:00
|
|
|
}
|
|
|
|
|
2015-02-26 23:38:33 +01:00
|
|
|
$event[ 'image' ] = false;
|
|
|
|
$event[ 'url' ] = false;
|
|
|
|
|
2015-02-26 21:58:46 +01:00
|
|
|
if ( array_key_exists( 'description' , $googleEvent ) ){
|
|
|
|
|
|
|
|
$event[ 'description' ] = $googleEvent[ 'description' ];
|
|
|
|
|
|
|
|
$event[ 'image' ] = self::getImages( $event );
|
|
|
|
$event[ 'description' ] = self::removeImages( $event );
|
|
|
|
$event[ 'url' ] = self::getURLs( $event );
|
|
|
|
$event[ 'description' ] = self::removeURLs( $event );
|
|
|
|
$event[ 'description' ] = nl2br( $event[ 'description' ] );
|
2015-02-23 15:45:47 +01:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
$events[] = $event;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return $events;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2015-02-27 01:24:08 +01:00
|
|
|
static public function getEventsByMonth( $events, $year, $month ) {
|
|
|
|
|
2015-03-23 15:48:00 +01:00
|
|
|
$year = (int) $year;
|
|
|
|
$month = (int) $month;
|
|
|
|
|
2015-04-24 13:07:38 +02:00
|
|
|
$eventsInMonth = array();
|
2015-02-27 01:43:03 +01:00
|
|
|
|
2015-02-27 01:24:08 +01:00
|
|
|
foreach( $events as $event ) {
|
|
|
|
|
|
|
|
if ( ( date( 'Y', $event[ 'start' ] ) == $year ) && ( date( 'm', $event[ 'start' ] ) == $month ) ) {
|
|
|
|
|
|
|
|
$eventsInMonth[] = $event;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return $eventsInMonth;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2015-04-24 12:04:24 +02:00
|
|
|
static public function getEventsByDay( $events, $year, $month, $day ) {
|
|
|
|
|
|
|
|
$year = (int) $year;
|
|
|
|
$month = (int) $month;
|
|
|
|
$day = (int) $day;
|
|
|
|
|
2015-04-24 13:07:38 +02:00
|
|
|
$eventsInDay = array();
|
2015-04-24 12:04:24 +02:00
|
|
|
|
|
|
|
foreach( $events as $event ) {
|
|
|
|
|
|
|
|
if ( ( date( 'Y', $event[ 'start' ] ) == $year ) && ( date( 'm', $event[ 'start' ] ) == $month ) && ( date( 'd', $event[ 'start' ] ) == $day ) ) {
|
|
|
|
|
|
|
|
$eventsInDay[] = $event;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return $eventsInDay;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2015-03-01 15:23:38 +01:00
|
|
|
static public function getChartData( $app ) {
|
|
|
|
|
|
|
|
$dowMap = array( 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun' );
|
|
|
|
|
|
|
|
$chartDataQuery = 'SELECT ROUND( AVG( people ) )
|
|
|
|
FROM state
|
2015-03-07 15:06:13 +01:00
|
|
|
WHERE datetime >= curdate() - INTERVAL 312 Hour
|
2015-03-01 15:23:38 +01:00
|
|
|
AND WEEKDAY( datetime ) = ?
|
|
|
|
AND HOUR ( datetime ) = ?';
|
|
|
|
|
|
|
|
for( $dow = 0; $dow < 7; $dow++ ) {
|
|
|
|
|
|
|
|
$chartDataByDay[ 'name' ] = $dowMap[ $dow ];
|
|
|
|
|
|
|
|
for( $hod = 0; $hod < 24; $hod++ ) {
|
|
|
|
|
|
|
|
$chartDataByDay[ 'data' ][ $hod ] = $app[ 'db' ]->fetchColumn(
|
|
|
|
$chartDataQuery,
|
|
|
|
array(
|
|
|
|
$dow,
|
|
|
|
$hod
|
|
|
|
)
|
|
|
|
);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
$chart[ $dow ] = $chartDataByDay;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return $chart;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2015-02-23 11:44:12 +01:00
|
|
|
}
|