/** * Increases counters in a database after unlocking content. * * @since 1.0.0 * @return void */ function opanda_statistics() { global $wpdb; $statsItem = isset($_POST['opandaStats']) ? $_POST['opandaStats'] : array(); $contextData = isset($_POST['opandaContext']) ? $_POST['opandaContext'] : array(); // event name $eventName = isset($statsItem['eventName']) ? $statsItem['eventName'] : null; $eventName = opanda_normilize_value($eventName); // sender type $eventType = isset($statsItem['eventType']) ? $statsItem['eventType'] : null; $eventType = opanda_normilize_value($eventType); // context data $context = isset($_POST['opandaContext']) ? $_POST['opandaContext'] : array(); $context = opanda_normilize_values($context); $itemId = isset($context['itemId']) ? $context['itemId'] : null; $postId = isset($context['postId']) ? $context['postId'] : null; if (empty($itemId)) { echo json_encode(array('error' => __('Item ID is not specified.', 'bizpanda'))); exit; } // counts the stats include_once OPANDA_BIZPANDA_DIR . '/admin/includes/stats.php'; OPanda_Stats::processEvent($itemId, $postId, $eventName, $eventType); echo json_encode(array('success' => true)); exit; }
/** * Inserts or updates a lead in the database. * * @since 1.0.7 * @param objecy $lead A lead to update. * @param string[] $identity An array of the identity data. * @param string[] $context An array of the context data. * @param bool $confirmed Has a lead confirmed one's email address? * @return int A lead ID. */ public static function save($lead = null, $identity = array(), $context = array(), $emailConfirmed = false, $subscriptionConfirmed = false) { global $wpdb; $email = isset($identity['email']) ? $identity['email'] : false; if (isset($identity['social'])) { $emailConfirmed = true; } $itemId = isset($context['itemId']) ? intval($context['itemId']) : 0; $postId = isset($context['postId']) ? intval($context['postId']) : null; $item = get_post($itemId); $itemTitle = !empty($item) ? $item->post_title : null; $postTitle = self::extract('postTitle', $context); $postUrl = self::extract('postUrl', $context); $name = self::extract('name', $identity); $family = self::extract('family', $identity); $displayName = self::extract('displayName', $identity); if (empty($displayName)) { if (!empty($name) && !empty($family)) { $displayName = $name . ' ' . $family; } elseif (!empty($name)) { $displayName = $name; } else { $displayName = $family; } } $leadId = empty($lead) ? null : $lead->ID; // counts the number of confirmed emails (subscription) if ($subscriptionConfirmed && $leadId && !$lead->lead_subscription_confirmed) { require_once OPANDA_BIZPANDA_DIR . '/admin/includes/stats.php'; OPanda_Stats::countMetrict($itemId, $postId, 'email-confirmed'); } if (!$leadId) { // counts the number of new recivied emails OPanda_Stats::countMetrict($itemId, $postId, 'email-received'); $data = array('lead_display_name' => $displayName, 'lead_name' => $name, 'lead_family' => $family, 'lead_email' => $email, 'lead_date' => time(), 'lead_item_id' => $itemId, 'lead_post_id' => $postId, 'lead_item_title' => $itemTitle, 'lead_post_title' => $postTitle, 'lead_referer' => $postUrl, 'lead_email_confirmed' => $emailConfirmed ? 1 : 0, 'lead_subscription_confirmed' => $subscriptionConfirmed ? 1 : 0, 'lead_ip' => self::getIP()); // else inserts a new lead $result = $wpdb->insert($wpdb->prefix . 'opanda_leads', $data, array('%s', '%s', '%s', '%s', '%d', '%d', '%d', '%s', '%s', '%s', '%d', '%s')); if ($result) { $leadId = $wpdb->insert_id; } } else { $data = array('lead_display_name' => $displayName, 'lead_name' => $name, 'lead_family' => $family, 'lead_email_confirmed' => $emailConfirmed ? 1 : 0, 'lead_subscription_confirmed' => $subscriptionConfirmed ? 1 : 0); $formats = array('lead_display_name' => '%s', 'lead_name' => '%s', 'lead_family' => '%s', 'lead_email_confirmed' => '%d', 'lead_subscription_confirmed' => '%d'); if (empty($displayName)) { unset($data['lead_display_name']); unset($formats['lead_display_name']); } if (empty($name)) { unset($data['lead_display_name']); unset($formats['lead_display_name']); } if (empty($family)) { unset($data['lead_display_name']); unset($formats['lead_display_name']); } if (!$emailConfirmed || $lead->lead_email_confirmed) { unset($data['lead_email_confirmed']); unset($formats['lead_email_confirmed']); } if (!$subscriptionConfirmed || $lead->lead_subscription_confirmed) { unset($data['lead_subscription_confirmed']); unset($formats['lead_subscription_confirmed']); } if (!empty($data)) { $where = array('lead_email' => $email); $wpdb->update($wpdb->prefix . 'opanda_leads', $data, $where, array_values($formats), array('%s')); } } // saving extra fields $fields = array(); foreach ($identity as $itemName => $itemValue) { if (in_array($itemName, array('email', 'name', 'family', 'displayName'))) { continue; } if ('image' === $itemName) { $itemName = 'externalImage'; } $fields[trim($itemName, '{}')] = array('value' => $itemValue, 'custom' => strpos($itemName, '{') === 0 ? 1 : 0); } foreach ($fields as $fieldName => $fieldData) { $sql = $wpdb->prepare("\n INSERT INTO {$wpdb->prefix}opanda_leads_fields\n ( lead_id, field_name, field_value, field_custom )\n VALUES ( %d, %s, %s, %d ) ON DUPLICATE KEY UPDATE field_value = VALUES(field_value)\n ", $leadId, $fieldName, $fieldData['value'], $fieldData['custom']); $wpdb->query($sql); } return $leadId; }
public function getTable($options) { require_once OPANDA_BIZPANDA_DIR . '/admin/includes/stats.php'; $tableData = OPanda_Stats::getViewTable($options); return new $this->options['tableClass']($this, $tableData); }
/** * Calls when a new user places a tweet. */ function opanda_tweet_posted($context = array()) { require_once OPANDA_BIZPANDA_DIR . '/admin/includes/stats.php'; $itemId = isset($context['itemId']) ? intval($context['itemId']) : 0; $postId = isset($context['postId']) ? intval($context['postId']) : null; OPanda_Stats::countMetrict($itemId, $postId, 'tweet-posted'); }
/** * A helper method to return a current date in the MySQL format. */ public static function getCurrentMySqlDate() { if (self::$_currentMySqlDate) { return self::$_currentMySqlDate; } $hrsOffset = get_option('gmt_offset'); if (strpos($hrsOffset, '-') !== 0) { $hrsOffset = '+' . $hrsOffset; } $hrsOffset .= ' hours'; $time = strtotime($hrsOffset, time()); self::$_currentMySqlDate = date("Y-m-d", $time); return self::$_currentMySqlDate; }