예제 #1
0
 public static function createFromArray($data)
 {
     $Record = new \Model_Record();
     $Record->object_id = $data['object_id'];
     $Record->property = $data['property'];
     $Record->datatype = $data['datatype'];
     $Record->value = $data['value'];
     $Record->save();
     $Record->created_at = $data['created_at'];
     $Record->save();
     return $Record;
 }
예제 #2
0
 public static function saveInteractionStats($system_interaction_id, $interaction, $Model_Interaction_Meta_Instagram = false, $extended = false)
 {
     // reset latest setting
     $query = \DB::update('tracking_log');
     $query->where('object_id', $system_interaction_id);
     $query->where('source', 'instagram');
     $query->value('is_latest', 0);
     $query->execute();
     $stats = array('photos' => 1, 'comment' => $interaction->comments->count, 'like' => $interaction->likes->count);
     if ($extended) {
         // $stats['xxx'] = $interaction->xxx;
     }
     // $VenueRecord = self::getOrCreateVenueRecord($system_interaction_id);
     foreach ($stats as $property => $value) {
         $time_key = date('Y_m_d_H');
         /*
         $record_hash = implode('_', array(
         	'ig',
         	$interaction->id,
         	$property,
         	$time_key
         ));
         */
         try {
             $Record = new \Model_Record();
             // $Record->record_hash = $record_hash;
             $Record->object_id = $system_interaction_id;
             $Record->property = $property;
             $Record->value = $value;
             $Record->datatype = 'absolute';
             $Record->save();
             // $VenueRecord->$property = $value;
         } catch (\Database_Exception $err) {
             // catch error. normally there shouldn't be an error, but in the development phase it's possible to have incomplete data, so errors could occur at this place.
             echo $err;
             exit;
             return $err;
         }
     }
     // $VenueRecord->save();
     // keep track of tracking...
     $Log = new \Model_Tracking_Log();
     $Log->object_id = $system_interaction_id;
     $Log->success = 1;
     $Log->is_latest = 1;
     $Log->source = 'instagram';
     $Log->save();
     if ($Model_Interaction_Meta_Instagram) {
         $Model_Interaction_Meta_Instagram->comments = $interaction->comments->count;
         $Model_Interaction_Meta_Instagram->link = $interaction->link;
         $Model_Interaction_Meta_Instagram->likes = $interaction->likes->count;
         $Model_Interaction_Meta_Instagram->save();
     }
     return $stats;
 }
예제 #3
0
 public static function saveVenueStats($system_venue_id, $venue, $extended = false)
 {
     // reset latest setting
     $query = \DB::update('tracking_log');
     $query->where('object_id', $system_venue_id);
     $query->where('source', 'foursquare');
     $query->value('is_latest', 0);
     $query->execute();
     $stats = array('checkin' => $venue->stats->checkinsCount, 'checkin-unique' => $venue->stats->usersCount, 'review' => $venue->stats->tipCount, 'like' => $venue->likes->count, 'herenow' => isset($venue->herenow) ? $venue->herenow : 0);
     if ($extended) {
         $stats['rating'] = isset($venue->rating) ? $venue->rating * 100 : 0;
         $stats['price'] = isset($venue->price->tier) ? $venue->price->tier : 0;
         $stats['photos'] = $venue->photos->count;
         $stats['specials'] = $venue->specials->count;
         // $stats['herenow'] = $venue->hereNow->count;
         $stats['mayor'] = $venue->mayor->count;
     }
     $VenueRecord = self::getOrCreateVenueRecord($system_venue_id);
     foreach ($stats as $property => $value) {
         $time_key = date('Y_m_d_H');
         /*
         $record_hash = implode('_', array(
         	'4q',
         	$venue->id,
         	$property,
         	$time_key
         ));
         */
         try {
             $Record = new \Model_Record();
             // $Record->record_hash = $record_hash;
             $Record->object_id = $system_venue_id;
             $Record->property = $property;
             $Record->value = $value;
             $Record->datatype = 'absolute';
             $Record->save();
             $VenueRecord->{$property} = $value;
         } catch (\Database_Exception $err) {
             // catch error. normally there shouldn't be an error, but in the development phase it's possible to have incomplete data, so errors could occur at this place.
             return $err;
         }
     }
     $VenueRecord->save();
     // keep track of tracking...
     $Log = new \Model_Tracking_Log();
     $Log->object_id = $system_venue_id;
     $Log->success = 1;
     $Log->is_latest = 1;
     $Log->source = 'foursquare';
     $Log->save();
     return $stats;
 }
예제 #4
0
 public function post_price()
 {
     $system_venue_id = \Input::post('venue_id');
     $price = intval(\Input::post('price'));
     if (!$price || !$system_venue_id) {
         return $this->sendAPIResponse(null, 400, 'Please provide a value both for venue_id and price!');
     }
     $Venue = \Model_Venue::find($system_venue_id);
     if (!$Venue) {
         return $this->sendAPIResponse(null, 400, 'Unkown venue / invalid venue_id!');
     }
     try {
         $Record = new \Model_Record();
         // $Record->record_hash = $record_hash;
         $Record->object_id = $system_venue_id;
         $Record->property = 'price';
         $Record->value = $price;
         $Record->datatype = 'absolute';
         $Record->save();
         if (\Collection\Venue::calculateVenuePriceScore($system_venue_id)) {
             return $this->sendAPIResponse(array('success' => true));
         }
         return $this->sendAPIResponse(null, 400, 'Unkown error');
     } catch (\Database_Exception $err) {
         // catch error. normally there shouldn't be an error, but in the development phase it's possible to have incomplete data, so errors could occur at this place.
         return $this->sendAPIResponse(null, 400, $err);
     }
 }
예제 #5
0
 public function calculateDeltas()
 {
     $query = \DB::select_array();
     $query->from('record');
     $query->where('datatype', 'absolute');
     $query->where('property', 'NOT IN', array('herenow', 'rating'));
     $query->order_by('object_id');
     $query->order_by('property');
     $query->order_by('created_at', 'asc');
     // $query->limit(50);
     $Results = $query->execute();
     $last_value = -1;
     $object_id = -1;
     $data = array();
     foreach ($Results->as_array() as $key => $row) {
         if (!$row['object_id'] || !$row['property']) {
             continue;
         }
         if ($object_id != $row['object_id']) {
             $data = array();
             $property = $row['property'];
             $object_id = $row['object_id'];
             $last_value = -1;
             $this->cliOutput('write', 'object_id: ' . $row['object_id']);
         }
         if ($property != $row['property']) {
             $property = $row['property'];
             $last_value = -1;
         }
         if ($last_value != -1) {
             $Record = new \Model_Record();
             // $Record->record_hash = $row['record_hash'].'r';
             $Record->object_id = $row['object_id'];
             $Record->property = $property;
             $Record->value = $row['value'] - $last_value;
             $Record->datatype = 'relative';
             $Record->save();
             $Record->created_at = $row['created_at'];
             $Record->save();
         }
         $last_value = $row['value'];
     }
 }