Adding `Stats` Class to PHP Client of Utopian API


Github: https://github.com/DoctorLai/utopian-api-php-client

The project PHP Client of Utopian API wraps the Utopian APIs. And here are the previous contributions:

Technology Stack

PHP 7.0

How to Use?

Initializing the Stats object is simple:

1
2
require('class.stats.php');
$stats = new Stats();
require('class.stats.php');
$stats = new Stats();

Reload the Data (Stats)

This will re-fetch the data from Utopian API.

1
$stats->Reload();
$stats->Reload();

Get Raw Data (Stats)

1
$stats->GetRawData();
$stats->GetRawData();

Get a list of all cateogries

1
print_r($stats->GetCategories());
print_r($stats->GetCategories());

Get data for a category

1
2
3
4
$blog = $stats->GetCategory('blog');
if ($blog) {
   echo $blog->total_images;
}
$blog = $stats->GetCategory('blog');
if ($blog) {
   echo $blog->total_images;
}

Get attribute

Possible values:
_id, total_paid_rewards, total_pending_rewards, total_paid_authors, total_paid_curators, __v, stats_moderator_shares_last_check, stats_sponsors_shares_last_check, stats_total_pending_last_check, stats_total_paid_last_check, stats_paid_moderators_last_check, stats_paid_sponsors_last_check, stats_categories_last_check, stats_last_updated_posts, bot_is_voting, last_limit_comment_benefactor, stats_total_pending_last_post_date, stats_total_paid_last_post_date, stats_total_moderated

1
echo $stats->GetValue('bot_is_voting');
echo $stats->GetValue('bot_is_voting');

Get category attribute

Possible key attributes (second parameter): average_tags_per_post, total_tags, average_links_per_post, total_links, average_images_per_post, total_images, average_posts_length, total_posts_length, average_paid_curators, total_paid_curators, average_paid_authors, total_paid_authors, total_paid, average_likes_per_post, total_likes, total_posts

1
echo $stats->GetCategoryValue('blog', 'total_tags');
echo $stats->GetCategoryValue('blog', 'total_tags');

Get category attribute array

This method will return array (key-value pairs) for given attribute. For example, the following sums up all total_links in all categories.

1
2
$x = array_values($stats->GetCategoryValueArray("total_links"));
echo array_sum($x);
$x = array_values($stats->GetCategoryValueArray("total_links"));
echo array_sum($x);

Source code of class.stats.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
<?php
require_once('class.utopian.php');
 
class Stats extends Utopian {
  
  // internal data holder
  private $stats = null;
  
  // constructor
  public function Stats() {
    $this->Reload();
  }
  
  // reload the data
  public function Reload() {
    $this->stats = parent::GetStats();    
  }
  
  // return raw unprocessed data
  public function GetRawData() {
    return $this->stats; 
  }
  
  // get a list of all categories
  public function GetCategories() {
    $data = array();
    foreach ($this->stats->categories as $key => $m) {
      $data[] = $key;
    }
    return $data;
  }
  
  // get a list of all categories
  public function GetCategory($cat) {
    $cat = strtolower($cat);
    foreach ($this->stats->categories as $key => $m) {
      if (strtolower($key) == $cat) {
        return $m;
      }
    }
    return null;
  }    
  
  // get attributes
  public function GetValue($key) {
    switch ($key) {
      case "_id": return $this->stats->_id;
      case "total_paid_rewards": return $this->stats->total_paid_rewards;
      case "total_pending_rewards": return $this->stats->total_pending_rewards;
      case "total_paid_authors": return $this->stats->total_paid_authors;
      case "total_paid_curators": return $this->stats->total_paid_curators;
      case "__v": return $this->stats->__v;
      case "stats_moderator_shares_last_check": return $this->stats->stats_moderator_shares_last_check;
      case "stats_sponsors_shares_last_check": return $this->stats->stats_sponsors_shares_last_check;
      case "stats_total_pending_last_check": return $this->stats->stats_total_pending_last_check;
      case "stats_total_paid_last_check": return $this->stats->stats_total_paid_last_check;
      case "stats_paid_moderators_last_check": return $this->stats->stats_paid_moderators_last_check;
      case "stats_paid_sponsors_last_check": return $this->stats->stats_paid_sponsors_last_check;
      case "stats_categories_last_check": return $this->stats->stats_categories_last_check;
      case "stats_last_updated_posts": return $this->stats->stats_last_updated_posts;
      case "bot_is_voting": return $this->stats->bot_is_voting;
      case "last_limit_comment_benefactor": return $this->stats->last_limit_comment_benefactor;
      case "stats_total_pending_last_post_date": return $this->stats->stats_total_pending_last_post_date;
      case "stats_total_paid_last_post_date": return $this->stats->stats_total_paid_last_post_date;      
      case "stats_total_moderated": return $this->stats->stats_total_moderated;
    }
    return null;
  }  
  
  // get attributes
  public function GetCategoryValue($cat, $key) {
    $v = $this->GetCategory($cat);
    if ($v == null) {
      return null;
    }
    switch ($key) {
      case "average_tags_per_post": return $v->average_tags_per_post;
      case "total_tags": return $v->total_tags;
      case "average_links_per_post": return $v->average_links_per_post;
      case "total_links": return $v->total_links;
      case "average_images_per_post": return $v->average_images_per_post;
      case "total_images": return $v->total_images;
      case "average_posts_length": return $v->average_posts_length;
      case "total_posts_length": return $v->total_posts_length;
      case "average_paid_curators": return $v->average_paid_curators;
      case "total_paid_curators": return $v->total_paid_curators;
      case "average_paid_authors": return $v->average_paid_authors;
      case "total_paid_authors": return $v->total_paid_authors;
      case "total_paid": return $v->total_paid;
      case "average_likes_per_post": return $v->average_likes_per_post;
      case "total_likes": return $v->total_likes;
      case "total_posts": return $v->total_posts;
    }
    return null;
  }    
  
  // get attributes array
  public function GetCategoryValueArray($key) {
    $data = array();
    foreach ($this->stats->categories as $cat => $v) {
      switch ($key) {
        case "average_tags_per_post": $data[$cat] = $v->average_tags_per_post; break;
        case "total_tags": $data[$cat] = $v->total_tags; break;
        case "average_links_per_post": $data[$cat] = $v->average_links_per_post; break;
        case "total_links": $data[$cat] = $v->total_links; break;
        case "average_images_per_post": $data[$cat] = $v->average_images_per_post; break;
        case "total_images": $data[$cat] = $v->total_images; break;
        case "average_posts_length": $data[$cat] = $v->average_posts_length; break;
        case "total_posts_length": $data[$cat] = $v->total_posts_length; break;
        case "average_paid_curators": $data[$cat] = $v->average_paid_curators; break;
        case "total_paid_curators": $data[$cat] = $v->total_paid_curators; break;
        case "average_paid_authors": $data[$cat] = $v->average_paid_authors; break;
        case "total_paid_authors": $data[$cat] = $v->total_paid_authors; break;
        case "total_paid": $data[$cat] = $v->total_paid; break;
        case "average_likes_per_post": $data[$cat] = $v->average_likes_per_post; break;
        case "total_likes": $data[$cat] = $v->total_likes; break;
        case "total_posts": $data[$cat] = $v->total_posts; break;
      }
    }
    return $data;
  }    
}
<?php
require_once('class.utopian.php');

class Stats extends Utopian {
  
  // internal data holder
  private $stats = null;
  
  // constructor
  public function Stats() {
    $this->Reload();
  }
  
  // reload the data
  public function Reload() {
    $this->stats = parent::GetStats();    
  }
  
  // return raw unprocessed data
  public function GetRawData() {
    return $this->stats; 
  }
  
  // get a list of all categories
  public function GetCategories() {
    $data = array();
    foreach ($this->stats->categories as $key => $m) {
      $data[] = $key;
    }
    return $data;
  }
  
  // get a list of all categories
  public function GetCategory($cat) {
    $cat = strtolower($cat);
    foreach ($this->stats->categories as $key => $m) {
      if (strtolower($key) == $cat) {
        return $m;
      }
    }
    return null;
  }    
  
  // get attributes
  public function GetValue($key) {
    switch ($key) {
      case "_id": return $this->stats->_id;
      case "total_paid_rewards": return $this->stats->total_paid_rewards;
      case "total_pending_rewards": return $this->stats->total_pending_rewards;
      case "total_paid_authors": return $this->stats->total_paid_authors;
      case "total_paid_curators": return $this->stats->total_paid_curators;
      case "__v": return $this->stats->__v;
      case "stats_moderator_shares_last_check": return $this->stats->stats_moderator_shares_last_check;
      case "stats_sponsors_shares_last_check": return $this->stats->stats_sponsors_shares_last_check;
      case "stats_total_pending_last_check": return $this->stats->stats_total_pending_last_check;
      case "stats_total_paid_last_check": return $this->stats->stats_total_paid_last_check;
      case "stats_paid_moderators_last_check": return $this->stats->stats_paid_moderators_last_check;
      case "stats_paid_sponsors_last_check": return $this->stats->stats_paid_sponsors_last_check;
      case "stats_categories_last_check": return $this->stats->stats_categories_last_check;
      case "stats_last_updated_posts": return $this->stats->stats_last_updated_posts;
      case "bot_is_voting": return $this->stats->bot_is_voting;
      case "last_limit_comment_benefactor": return $this->stats->last_limit_comment_benefactor;
      case "stats_total_pending_last_post_date": return $this->stats->stats_total_pending_last_post_date;
      case "stats_total_paid_last_post_date": return $this->stats->stats_total_paid_last_post_date;      
      case "stats_total_moderated": return $this->stats->stats_total_moderated;
    }
    return null;
  }  
  
  // get attributes
  public function GetCategoryValue($cat, $key) {
    $v = $this->GetCategory($cat);
    if ($v == null) {
      return null;
    }
    switch ($key) {
      case "average_tags_per_post": return $v->average_tags_per_post;
      case "total_tags": return $v->total_tags;
      case "average_links_per_post": return $v->average_links_per_post;
      case "total_links": return $v->total_links;
      case "average_images_per_post": return $v->average_images_per_post;
      case "total_images": return $v->total_images;
      case "average_posts_length": return $v->average_posts_length;
      case "total_posts_length": return $v->total_posts_length;
      case "average_paid_curators": return $v->average_paid_curators;
      case "total_paid_curators": return $v->total_paid_curators;
      case "average_paid_authors": return $v->average_paid_authors;
      case "total_paid_authors": return $v->total_paid_authors;
      case "total_paid": return $v->total_paid;
      case "average_likes_per_post": return $v->average_likes_per_post;
      case "total_likes": return $v->total_likes;
      case "total_posts": return $v->total_posts;
    }
    return null;
  }    
  
  // get attributes array
  public function GetCategoryValueArray($key) {
    $data = array();
    foreach ($this->stats->categories as $cat => $v) {
      switch ($key) {
        case "average_tags_per_post": $data[$cat] = $v->average_tags_per_post; break;
        case "total_tags": $data[$cat] = $v->total_tags; break;
        case "average_links_per_post": $data[$cat] = $v->average_links_per_post; break;
        case "total_links": $data[$cat] = $v->total_links; break;
        case "average_images_per_post": $data[$cat] = $v->average_images_per_post; break;
        case "total_images": $data[$cat] = $v->total_images; break;
        case "average_posts_length": $data[$cat] = $v->average_posts_length; break;
        case "total_posts_length": $data[$cat] = $v->total_posts_length; break;
        case "average_paid_curators": $data[$cat] = $v->average_paid_curators; break;
        case "total_paid_curators": $data[$cat] = $v->total_paid_curators; break;
        case "average_paid_authors": $data[$cat] = $v->average_paid_authors; break;
        case "total_paid_authors": $data[$cat] = $v->total_paid_authors; break;
        case "total_paid": $data[$cat] = $v->total_paid; break;
        case "average_likes_per_post": $data[$cat] = $v->average_likes_per_post; break;
        case "total_likes": $data[$cat] = $v->total_likes; break;
        case "total_posts": $data[$cat] = $v->total_posts; break;
      }
    }
    return $data;
  }    
}

–EOF (The Ultimate Computing & Technology Blog) —

GD Star Rating
loading...
1218 words
Last Post: Adding Clipboard Support to Chrome Extension: Show My IP Addresses (External and Local)
Next Post: Simple but Powerful Simulated Annealing NPM Library (with Demo)

The Permanent URL is: Adding `Stats` Class to PHP Client of Utopian API

Leave a Reply