Beispiel #1
0
/**
 * 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;
}
Beispiel #2
0
 /**
  * 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);
 }
Beispiel #4
0
/**
 * 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');
}
Beispiel #5
0
 /**
  * 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;
 }