aboutsummaryrefslogblamecommitdiffstats
path: root/Zotlabs/Daemon/Queue.php
blob: b07fe369c3d7d7ff33486c45c37ea05676d0c727 (plain) (tree)
1
2
3
4
5
6
7
8
9



                         
                                  

             
 
                                                  
                                                        





                                                                                           


                                                                                                     
                  



                                                                       
                                                                                                                               
                                                                                                                                             


                                                                   



                                  
                                                                               
                                                                           

                                                 

                  

                                 
                                
                                                                                        

                                                
                                                                                                                                
                                                      

                      
                                                                                                           
                                           
                          


                                                                            
                                 
                                                               
                         
                  
         
 
 
<?php /** @file */

namespace Zotlabs\Daemon;

use Zotlabs\Lib\Queue as LibQueue;

class Queue {

	static public function run($argc, $argv) {
		$queue_id = ($argc > 1) ? $argv[1] : '';

		logger('queue: start');

		// delete all queue items more than 3 days old
		// but first mark these sites dead if we haven't heard from them in a month

		$oldqItems = q("select outq_posturl from outq where outq_created < %s - INTERVAL %s",
			db_utcnow(),
			db_quoteinterval('3 DAY')
		);

		if ($oldqItems) {
			foreach ($oldqItems as $qItem) {
				$h = parse_url($qItem['outq_posturl']);
				$site_url = $h['scheme'] . '://' . $h['host'] . ((!empty($h['port'])) ? ':' . $h['port'] : '');
				q("update site set site_dead = 1 where site_dead = 0 and site_url = '%s' and site_update < %s - INTERVAL %s",
					dbesc($site_url),
					db_utcnow(),
					db_quoteinterval('1 MONTH')
				);
			}
		}

		logger('Removing ' . count($oldqItems) . ' old queue entries');
		q("DELETE FROM outq WHERE outq_created < %s - INTERVAL %s",
			db_utcnow(),
			db_quoteinterval('3 DAY')
		);

		$deliveries = [];

		if ($queue_id) {
			$qItems = q("SELECT * FROM outq WHERE outq_hash = '%s' LIMIT 1",
				dbesc($queue_id)
			);
			logger('queue deliver: ' . $qItems[0]['outq_hash'] . ' to ' . $qItems[0]['outq_posturl'], LOGGER_DEBUG);
			LibQueue::deliver($qItems[0]);
		}
		else {
			$qItems = q("SELECT * FROM outq WHERE outq_delivered = 0 and outq_scheduled < %s ",
				db_utcnow()
			);
			if ($qItems) {
				foreach ($qItems as $qItem) {
					$deliveries[] = $qItem['outq_hash'];
				}
				do_delivery($deliveries, true);
			}
		 }
	}

}