commiting uncommited changes on live site
[weblabels.fsf.org.git] / crm.fsf.org / 20131203 / files / sites / all / modules-new / civicrm / tools / extensions / org.civicrm.demoqueue / CRM / Demoqueue / Page / DemoQueue.php
1 <?php
2
3 require_once 'CRM/Core/Page.php';
4
5 /**
6 * An example page which queues several tasks and then executes them
7 */
8 class CRM_Demoqueue_Page_DemoQueue extends CRM_Core_Page {
9 const QUEUE_NAME = 'demo-queue';
10
11 function run() {
12 $queue = CRM_Queue_Service::singleton()->create(array(
13 'type' => 'Sql',
14 'name' => self::QUEUE_NAME,
15 'reset' => TRUE,
16 ));
17
18 for ($i = 0; $i < 5; $i++) {
19 $queue->createItem(new CRM_Queue_Task(
20 array('CRM_Demoqueue_Page_DemoQueue', 'doMyWork'), // callback
21 array($i, "Task $i takes $i second(s)"), // arguments
22 "Task $i" // title
23 ));
24 if ($i == 2) {
25 $queue->createItem(new CRM_Queue_Task(
26 array('CRM_Demoqueue_Page_DemoQueue', 'addMoreWork'), // callback
27 array(), // arguments
28 "Add More Work" // title
29 ));
30 }
31 }
32
33 $runner = new CRM_Queue_Runner(array(
34 'title' => ts('Demo Queue Runner'),
35 'queue' => $queue,
36 'onEnd' => array('CRM_Demoqueue_Page_DemoQueue', 'onEnd'),
37 'onEndUrl' => CRM_Utils_System::url('civicrm/demo-queue/done'),
38 ));
39 $runner->runAllViaWeb(); // does not return
40 }
41
42 /**
43 * Perform some business logic
44 * @param \CRM_Queue_TaskContext $ctx
45 * @param $delay
46 * @param $message
47 * @return bool
48 */
49 static function doMyWork(CRM_Queue_TaskContext $ctx, $delay, $message) {
50 sleep(1);
51 //sleep($delay);
52 //$ctx->log->info($message); // PEAR Log interface
53 //$ctx->logy->info($message); // PEAR Log interface -- broken, PHP error
54 //CRM_Core_DAO::executeQuery('select from alsdkjfasdf'); // broken, PEAR error
55 //throw new Exception('whoz'); // broken, exception
56 return TRUE; // success
57 }
58
59 /**
60 * Perform some business logic
61 * @param \CRM_Queue_TaskContext $ctx
62 * @return bool
63 */
64 static function addMoreWork(CRM_Queue_TaskContext $ctx) {
65 sleep(1);
66 for ($i = 0; $i < 5; $i++) {
67 $ctx->queue->createItem(new CRM_Queue_Task(
68 array('CRM_Demoqueue_Page_DemoQueue', 'doMyWork'), // callback
69 array($i, "Extra task $i takes $i second(s)"), // arguments
70 "Extra Task $i" // title
71 ), array(
72 'weight' => -1,
73 ));
74 }
75 return TRUE; // success
76 }
77
78 /**
79 * Handle the final step of the queue
80 * @param \CRM_Queue_TaskContext $ctx
81 */
82 static function onEnd(CRM_Queue_TaskContext $ctx) {
83 //CRM_Utils_System::redirect('civicrm/demo-queue/done');
84 CRM_Core_Error::debug_log_message('finished task');
85 //$ctx->logy->info($message); // PEAR Log interface -- broken, PHP error
86 //CRM_Core_DAO::executeQuery('select from alsdkjfasdf'); // broken, PEAR error
87 //throw new Exception('whoz'); // broken, exception
88 }
89 }