comments + images
This commit is contained in:
133
inc/spot.php
133
inc/spot.php
@@ -12,6 +12,9 @@ class Spot extends Main
|
||||
const MSG_TABLE = 'messages';
|
||||
const FEED_TABLE = 'feeds';
|
||||
const SPOT_TABLE = 'spots';
|
||||
const POST_TABLE = 'posts';
|
||||
|
||||
const FORMAT_TIME = 'd/m/Y à H:i';
|
||||
|
||||
public function __construct($oClassManagement, $sProcessPage)
|
||||
{
|
||||
@@ -35,7 +38,8 @@ class Spot extends Main
|
||||
(
|
||||
self::MSG_TABLE => array('ref_msg_id', MySqlManager::getId(self::FEED_TABLE), 'type', 'latitude', 'longitude', 'timestamp', 'unix_timestamp', 'content', 'battery_state'),
|
||||
self::FEED_TABLE => array('ref_feed_id', MySqlManager::getId(self::SPOT_TABLE), 'name', 'description', 'status'),
|
||||
self::SPOT_TABLE => array('ref_spot_id', 'name', 'model')
|
||||
self::SPOT_TABLE => array('ref_spot_id', 'name', 'model'),
|
||||
self::POST_TABLE => array('name', 'content')
|
||||
),
|
||||
'types' => array
|
||||
(
|
||||
@@ -52,7 +56,7 @@ class Spot extends Main
|
||||
'model' => "VARCHAR(20)",
|
||||
'ref_feed_id' => "VARCHAR(40)",
|
||||
'description' => "VARCHAR(100)",
|
||||
'status' => "VARCHAR(10)"
|
||||
'status' => "VARCHAR(10)",
|
||||
),
|
||||
'constraints' => array
|
||||
(
|
||||
@@ -80,8 +84,8 @@ class Spot extends Main
|
||||
private function getFeed($sRefFeedId=self::FEED_ID)
|
||||
{
|
||||
$sUrl = self::FEED_HOOK.$sRefFeedId.self::FEED_TYPE_JSON;
|
||||
$sContent = file_get_contents($sUrl);
|
||||
//$sContent = '{"response":{"feedMessageResponse":{"count":1,"feed":{"id":"0Y5LrvigElWeAieBGnFol0KBEuOTkFJmm","name":"Te Araroa","description":"Te Araroa","status":"ACTIVE","usage":0,"daysRange":7,"detailedMessageShown":false},"totalCount":1,"activityCount":0,"messages":{"message":{"@clientUnixTime":"0","id":477259564,"messengerId":"0-2489517","messengerName":"Francois","unixTime":1449002345,"messageType":"OK","latitude":48.85129,"longitude":2.40491,"modelId":"SPOT3","showCustomMsg":"N","dateTime":"2015-12-01T20:39:05+0000","messageDetail":"","batteryState":"GOOD","hidden":0,"messageContent":"Jusque là , tout va bien ! Click sur le lien en dessous pour voir où je suis :)\r\n\r\n@Clara: <3"}}}}}';
|
||||
//$sContent = file_get_contents($sUrl);
|
||||
$sContent = '{"response":{"feedMessageResponse":{"count":1,"feed":{"id":"0Y5LrvigElWeAieBGnFol0KBEuOTkFJmm","name":"Te Araroa","description":"Te Araroa","status":"ACTIVE","usage":0,"daysRange":7,"detailedMessageShown":false},"totalCount":1,"activityCount":0,"messages":{"message":{"@clientUnixTime":"0","id":477259564,"messengerId":"0-2489517","messengerName":"Francois","unixTime":1449002345,"messageType":"OK","latitude":48.85129,"longitude":2.40491,"modelId":"SPOT3","showCustomMsg":"N","dateTime":"2015-12-01T20:39:05+0000","messageDetail":"","batteryState":"GOOD","hidden":0,"messageContent":"Jusque là , tout va bien ! Click sur le lien en dessous pour voir où je suis :)\r\n\r\n@Clara: <3"}}}}}';
|
||||
return json_decode($sContent, true);
|
||||
}
|
||||
|
||||
@@ -91,8 +95,6 @@ class Spot extends Main
|
||||
$asMsgs = $asData['response']['feedMessageResponse']['messages'];
|
||||
$asFeed = $asData['response']['feedMessageResponse']['feed'];
|
||||
|
||||
$this->oMySql->setTrace(true);
|
||||
|
||||
if(!empty($asMsgs))
|
||||
{
|
||||
//Update Spot Info
|
||||
@@ -138,35 +140,83 @@ class Spot extends Main
|
||||
$this->oMySql->insertUpdateRow(self::MSG_TABLE, $test, array('ref_msg_id'));
|
||||
*/
|
||||
|
||||
$bSuccess = true;
|
||||
$sDesc = '';
|
||||
|
||||
//Check last message & update feed if necessary (max once a day)
|
||||
$sLastMsg = $this->oMySql->selectValue(self::FEED_TABLE, 'led', array('ref_feed_id'=>$sRefFeedId));
|
||||
if(mb_substr($sLastMsg, 0, 10) != date('Y-m-d'))
|
||||
{
|
||||
$this->updateFeed($sRefFeedId);
|
||||
}
|
||||
|
||||
$asMessages = $this->oMySql->selectRows(array('from'=>self::MSG_TABLE));
|
||||
if(empty($asMessages))
|
||||
{
|
||||
$bSuccess = false;
|
||||
$sDesc = self::NO_DATA;
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach($asMessages as $iKey=>$asMessage)
|
||||
{
|
||||
$iUnixTimeStamp = strtotime($asMessage['timestamp']);
|
||||
$asMessages[$iKey]['relative_time'] = Toolbox::getDateTimeDesc($iUnixTimeStamp);
|
||||
$asMessages[$iKey]['formatted_time'] = date('d/m/Y à H:i', $iUnixTimeStamp);
|
||||
}
|
||||
}
|
||||
if(mb_substr($sLastMsg, 0, 10) != date('Y-m-d')) $this->updateFeed($sRefFeedId);
|
||||
|
||||
//Extract messages
|
||||
$asMessages = $this->getSpotMessages();
|
||||
$bSuccess = !empty($asMessages);
|
||||
$sDesc = $bSuccess?'':self::NO_DATA;
|
||||
|
||||
return self::getJsonResult($bSuccess, $sDesc, $asMessages);
|
||||
}
|
||||
|
||||
private function getSpotMessages()
|
||||
{
|
||||
$asMessages = $this->oMySql->selectRows(array('from'=>self::MSG_TABLE));
|
||||
foreach($asMessages as $iKey=>$asMessage)
|
||||
{
|
||||
$iUnixTimeStamp = strtotime($asMessage['timestamp']);
|
||||
$asMessages[$iKey]['relative_time'] = Toolbox::getDateTimeDesc($iUnixTimeStamp);
|
||||
$asMessages[$iKey]['formatted_time'] = date(self::FORMAT_TIME, $iUnixTimeStamp);
|
||||
}
|
||||
return $asMessages;
|
||||
}
|
||||
|
||||
public function getNewsFeed()
|
||||
{
|
||||
$asFeed = array();
|
||||
|
||||
//Messages
|
||||
$asMessages = $this->getSpotMessages();
|
||||
foreach($asMessages as $asMessage)
|
||||
{
|
||||
$iId = $asMessage['unix_timestamp'] * -1;
|
||||
$asFeed[$iId] = $asMessage;// array('type'=>'message', 'time'=>$asMessage['relative_time'], 'text'=>$asMessage['relative_time']);
|
||||
$asFeed[$iId]['type'] = 'message';
|
||||
$asFeed[$iId]['id'] = $asMessage[MySqlManager::getId(self::MSG_TABLE)];
|
||||
}
|
||||
|
||||
//Pictures
|
||||
$asPicPaths = glob('files/*.*');
|
||||
foreach($asPicPaths as $iKey=>$sPicPath)
|
||||
{
|
||||
//Finding picture timestamp
|
||||
$asPicInfo = self::getPicInfo($sPicPath);
|
||||
$iPicTimeStamp = $asPicInfo['timestamp'];
|
||||
|
||||
//Preparing pictures sorting key and related info
|
||||
$asFeed[$iPicTimeStamp*-1] = array( 'type' => 'picture',
|
||||
'id' => $iKey,
|
||||
'path' => $sPicPath,
|
||||
'rotate' => $asPicInfo['rotate'],
|
||||
'formatted_time'=> date(self::FORMAT_TIME, $iPicTimeStamp),
|
||||
'relative_time' => Toolbox::getDateTimeDesc($iPicTimeStamp));
|
||||
}
|
||||
|
||||
//Post
|
||||
$asPosts = $this->oMySql->selectRows(array('from'=>self::POST_TABLE));
|
||||
foreach($asPosts as $iKey=>$asPost)
|
||||
{
|
||||
$iUnixTimeStamp = strtotime($asPost['led']);
|
||||
$iId = $iUnixTimeStamp * -1;
|
||||
$asFeed[$iId] = array('name'=>Toolbox::mb_ucwords($asPost['name']), 'post'=>$asPost['content'], 'type'=>'post');;
|
||||
$asFeed[$iId]['relative_time'] = Toolbox::getDateTimeDesc($iUnixTimeStamp);
|
||||
$asFeed[$iId]['formatted_time'] = date(self::FORMAT_TIME, $iUnixTimeStamp);
|
||||
}
|
||||
|
||||
ksort($asFeed);
|
||||
return self::getJsonResult(true, '', $asFeed);
|
||||
}
|
||||
|
||||
public function addPost($sName, $sPost)
|
||||
{
|
||||
$asData = array('name'=>mb_strtolower(trim($sName)), 'content'=>trim($sPost));
|
||||
$iPostId = $this->oMySql->insertRow(self::POST_TABLE, $asData);
|
||||
return self::getJsonResult(($iPostId > 0), '');
|
||||
}
|
||||
|
||||
public function upload()
|
||||
{
|
||||
$this->oClassManagement->incClass('uploader', true);
|
||||
@@ -174,6 +224,31 @@ class Spot extends Main
|
||||
$oUploader->init();
|
||||
return $oUploader->getBody();
|
||||
}
|
||||
|
||||
public static function getPicInfo($sPicPath)
|
||||
{
|
||||
$iPicTimeStamp = 0;
|
||||
$asExif = exif_read_data($sPicPath, 0, true);
|
||||
|
||||
//Timestamp
|
||||
if(array_key_exists('DateTimeOriginal', $asExif['EXIF'])) $iPicTimeStamp = strtotime($asExif['EXIF']['DateTimeOriginal']);
|
||||
else $iPicTimeStamp = $asExif['FILE']['FileDateTime'];
|
||||
|
||||
//Time Zone
|
||||
//if($iPicTimeStamp >= self::HONEYMOON_DATE_BEG && $iPicTimeStamp <= self::HONEYMOON_DATE_END) $iPicTimeStamp -= 60*60*(12+1); //timezone + daylight saving
|
||||
|
||||
//Orientation
|
||||
switch($asExif['IFD0']['Orientation'])
|
||||
{
|
||||
case 1: $sRotate = '0'; break; //None
|
||||
case 3: $sRotate = '180'; break; //Flip over
|
||||
case 6: $sRotate = '90'; break; //Clockwise
|
||||
case 8: $sRotate = '-90'; break; //Trigo
|
||||
default: $sRotate = $asExif['IFD0']['Orientation'];
|
||||
}
|
||||
|
||||
return array('timestamp'=>$iPicTimeStamp, 'rotate'=>$sRotate);
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
Reference in New Issue
Block a user