/** * Determines whether or not this condition passes * * @param string $route * @param unknown $options */ public function passes(\Modules\Models\Modules $module, $route = null, $options = array()) { // if this ruleset is ignored, return null if (!in_array($module->{'assignment.activity-visits.method'}, array('include'))) { return null; } $actor = \Activity\Models\Actors::fetch(); if (empty($actor->id)) { return null; } $visits = \Activity\Models\Actions::collection()->count(array('actor_id' => $actor->id, 'action' => 'Visited Site')); $return = null; switch ($module->{'assignment.activity-visits.has_visited'}) { case "1": if ($visits > 1) { $return = true; } else { $return = false; } break; case "0": if ($visits > 1) { $return = false; } else { $return = true; } break; } return $return; }
public function track() { $action = $this->input->get('action', null, 'string'); $properties = $this->input->get('properties', null, 'string'); if (!empty($properties) && is_string($properties)) { $properties = json_decode($properties); } if (!empty($action)) { \Activity\Models\Actions::track($action, $properties); } }
public static function trackActor($email, $action, $properties = array()) { if (class_exists('\\Activity\\Models\\Actions')) { \Activity\Models\Actions::trackActor($email, $action, $properties); } if (class_exists('\\Admin\\Models\\Settings') && class_exists('\\KM')) { $settings = \Admin\Models\Settings::fetch(); if ($settings->enabledIntegration('kissmetrics') && $settings->{'integration.kissmetrics.key'}) { \KM::init($settings->{'integration.kissmetrics.key'}); \KM::identify($email); \KM::record($action, $properties); } } return null; }
public function identified() { $time = time(); $filename = \Base::instance()->get('PATH_ROOT') . 'tmp/' . $time . '.csv'; $writer = (new \Ddeboer\DataImport\Writer\CsvWriter(","))->setStream(fopen($filename, 'w')); // Write column headers: $writer->writeItem(array('created', 'actor_name', 'action', 'properties')); $key = new \MongoRegex('/@/i'); // write items $cursor = (new \Activity\Models\Actions())->collection()->find(array('actor_name' => $key), array('_id' => 0, 'created' => 1, 'actor_name' => 1, 'action' => 1, 'properties' => 1))->sort(array('created' => -1)); foreach ($cursor as $doc) { $writer->writeItem(array(date('Y-m-d H:i:s', $doc['created']), $doc['actor_name'], $doc['action'], \Activity\Models\Actions::displayValue($doc['properties'], 'raw'))); } \Web::instance()->send($filename, null, 0, true); }
protected function postSite() { parent::postSite(); if (!\Audit::instance()->isbot()) { $actor = \Activity\Models\Actors::fetch(); $app = \Base::instance(); // Track the site visit if it hasn't been done today for this actor if (empty($actor->last_visit) || $actor->last_visit < date('Y-m-d', strtotime('today'))) { \Activity\Models\Actions::track('Visited Site'); $actor->set('last_visit', date('Y-m-d', strtotime('today')))->set('visited', time())->save(); } if ($this->input->get('ping', null, 'int') != 1) { $actor->markActive(!empty($this->auth->getIdentity()->id)); } } }
/** * Actually returns total visitors. * TODO Rename function * * @param string $start * @param string $end * @return multitype:number */ public function fetchTotal($start = null, $end = null) { $conditions = array('action' => 'Visited Site'); if (!empty($start)) { $conditions['created'] = array('$gte' => strtotime($start)); } if (!empty($end)) { if (empty($conditions['created'])) { $conditions['created'] = array('$lt' => strtotime($end)); } else { $conditions['created']['$lt'] = strtotime($end); } } $return = \Activity\Models\Actions::collection()->count($conditions); return $return; }
/** * */ public function actionCount() { if (empty($this->action_count) || empty($this->action_count_last_checked) || $this->action_count_last_checked < time() - 15 * 60) { $this->action_count = \Activity\Models\Actions::collection()->count(array('actor_id' => $this->id)); if (!empty($this->id)) { $this->action_count_last_checked = time(); $this->store(); } } return $this->action_count; }