public function __construct()
 {
     $this->URLs = array();
     $this->currentStep = 0;
     $queue = SocialQueue::get()->filter('Active', 1)->last();
     if ($queue && $queue->exists()) {
         $this->URLs = isset($queue->URLs) ? json_decode($queue->URLs, true) : array();
         $this->totalSteps = count($this->URLs);
         // stop any further urls being added to this queue
         $queue->Active = 0;
         $queue->write();
     }
 }
 public function setup()
 {
     $this->currentStep = 0;
     $allUrls = array();
     $queues = SocialQueue::get()->filter('Active', 1);
     foreach ($queues as $queue) {
         // stop any further urls being added to this queue
         $queue->Active = 0;
         $queue->write();
         // reload to be sure
         $queue = SocialQueue::get()->byID($queue->ID);
         $urls = isset($queue->URLs) ? json_decode($queue->URLs, true) : array();
         if (!$urls) {
             $urls = array();
         }
         $allUrls += $urls;
     }
     array_walk($allUrls, function (&$value) {
         $value = rtrim($value, '/');
     });
     $this->URLs = $allUrls;
     $this->totalSteps = count($this->URLs);
 }
 public static function queueURL($url)
 {
     // are we locking down the domain
     $checkDomain = Config::inst()->get('SocialProofSettings', 'check_domain');
     if ($checkDomain) {
         $match = strstr($url, $checkDomain);
         if ($match === false) {
             return;
         }
     }
     $queuedUrls = array();
     // get the latest queue and add the URL to the queue
     $queue = SocialQueue::get()->filter('Active', 1)->last();
     if ($queue && $queue->exists()) {
         $queuedUrls = (array) json_decode($queue->URLs, true);
     }
     $queuedUrls = (array) $queuedUrls;
     $queuedUrls[] = $url;
     if (!$queue || !$queue->exists()) {
         $queue = new SocialQueue();
     }
     $queue->URLs = json_encode($queuedUrls, true);
     $queue->write();
 }
 public function testTwitterServiceAPI()
 {
     $request = $this->get('api/countsfor/service/twitter?urls=' . $this->testURL);
     $this->assertEquals($request->getStatusCode(), 200);
     $body = $request->getBody();
     $socialQueue = SocialQueue::get()->first();
     $this->assertEquals($socialQueue->Active, 1);
     $jsonArray = json_decode($body, true);
     $results = $jsonArray['results'];
     $www = $results[$this->testURL];
     $this->assertEquals(count($www, true), 3);
     $facebook = $www['Twitter'][0];
     $this->assertEquals($facebook['statuses_count'], 50);
     // confirm the URL has been requeued
     $socialQueue = SocialQueue::get()->first();
     $this->assertEquals($socialQueue->Active, 1);
     $urls = json_decode($socialQueue->URLs, true);
     $this->assertEquals($urls[0], $this->testURL);
 }
 public function testSocialQueue()
 {
     $socialQueue = SocialQueue::get()->filter('Active', 1)->last();
     $this->assertEquals($socialQueue->URLs, json_encode(array($this->testURL), true));
     $this->assertEquals($socialQueue->Active, 1);
 }