root/experimental_v2/Cronjobs/a2billing_autorefill.php

Revision 546, 5.0 kB (checked in by areski, 1 year ago)

UPDATE : lib for Crontjobs

  • Property svn:executable set to *
Line 
1 #!/usr/bin/php -q
2 <?php
3 /***************************************************************************
4  *            a2billing_autorefill.php
5  *
6  *  Fri June 29 2006
7  *  A2Billing Copyright  2006
8  *  ADD THIS SCRIPT IN A CRONTAB JOB
9  *
10     crontab -e
11     0 10 21 * * php /var/lib/asterisk/agi-bin/libs_a2billing/crontjob/a2billing_autorefill.php
12     
13     field     allowed values
14     -----     --------------
15     minute             0-59
16     hour             0-23
17     day of month    1-31
18     month             1-12 (or names, see below)
19     day of week         0-7 (0 or 7 is Sun, or use names)
20     
21     The sample above will run the script every 21 of each month at 10AM
22     
23 ****************************************************************************/
24 set_time_limit(0);
25 error_reporting(E_ALL ^ (E_NOTICE | E_WARNING));
26 //dl("pgsql.so"); // remove "extension= pgsql.so !   
27
28 include_once (dirname(__FILE__)."/lib/Class.Table.php");
29 include (dirname(__FILE__)."/lib/Class.A2Billing.php");
30 include (dirname(__FILE__)."/lib/Misc.php");
31
32 $verbose_level=0;
33
34 $groupcard=5000;
35
36
37 $A2B = new A2Billing();
38 $A2B -> load_conf($agi, NULL, 0, $idconfig);
39
40 write_log(LOGFILE_CRONT_AUTOREFILL, basename(__FILE__).' line:'.__LINE__."[#### BATCH BEGIN ####]");
41
42 if (!$A2B -> DbConnect()){               
43             echo "[Cannot connect to the database]\n";
44             write_log(LOGFILE_CRONT_AUTOREFILL, basename(__FILE__).' line:'.__LINE__."[Cannot connect to the database]");
45             exit;                       
46 }
47 //$A2B -> DBHandle
48 $instance_table = new Table();
49
50
51 // CHECK NUMBER OF CARD
52 $QUERY = 'SELECT count(*) FROM cc_card WHERE autorefill=1 AND initialbalance>0 AND credit<initialbalance';
53
54 $result = $instance_table -> SQLExec ($A2B -> DBHandle, $QUERY);
55 $nb_card = $result[0][0];
56 $nbpagemax=(intval($nb_card/$groupcard));
57 if ($verbose_level>=1) echo "===> NB_CARD : $nb_card - NBPAGEMAX:$nbpagemax\n";
58
59 if (!($nb_card>0)){
60         if ($verbose_level>=1) echo "[No card to run the Auto Refill]\n";
61         write_log(LOGFILE_CRONT_AUTOREFILL, basename(__FILE__).' line:'.__LINE__."[No card to run the Auto Refill]");
62         exit();
63 }
64
65
66 if ($A2B->config["database"]['dbtype'] == "postgres"){       
67     $UNIX_TIMESTAMP = "date_part('epoch',";
68 }else{
69     $UNIX_TIMESTAMP = "UNIX_TIMESTAMP(";
70 }
71
72 write_log(LOGFILE_CRONT_AUTOREFILL, basename(__FILE__).' line:'.__LINE__."[Number of card found : $nb_card]");
73
74
75 $totalcardperform = 0;
76 $totalcredit = 0;
77         
78     
79     
80
81 write_log(LOGFILE_CRONT_AUTOREFILL, basename(__FILE__).' line:'.__LINE__."[Analyze cards to apply Auto Refill]");
82
83 // BROWSE THROUGH THE CARD TO APPLY THE AUTO REFILL
84 for ($page = 0; $page <= $nbpagemax; $page++) {
85     
86     $sql = "SELECT id, username, credit, initialbalance, initialbalance-credit as refillof FROM cc_card WHERE autorefill=1 AND initialbalance>0 AND credit<initialbalance ORDER BY id ";
87     if ($A2B->config["database"]['dbtype'] == "postgres"){
88         $sql .= " LIMIT $groupcard OFFSET ".$page*$groupcard;
89     }else{
90         $sql .= " LIMIT ".$page*$groupcard.", $groupcard";
91     }
92     if ($verbose_level>=1) echo "==> SELECT CARD QUERY : $sql\n";
93     $result_card = $instance_table -> SQLExec ($A2B -> DBHandle, $sql);
94     
95     foreach ($result_card as $mycard){
96         
97         if ($verbose_level>=1) print_r ($mycard);
98         if ($verbose_level>=1) echo "------>>>  ID = ".$mycard[0]." - CARD =".$mycard[1]." - BALANCE =".$mycard[2]." - REFILLOF =".$mycard[4]." \n";   
99         
100         $QUERY = "UPDATE cc_card SET credit=credit+".$mycard[4]." WHERE id=".$mycard[0];
101         $totalcredit += $mycard[4];
102         
103         $result = $instance_table -> SQLExec ($A2B -> DBHandle, $QUERY, 0);
104         if ($verbose_level>=1) echo "==> UPDATE CARD QUERY:     $QUERY\n";
105         $totalcardperform ++;
106         
107         
108         // INSERT LOG REFILL INTO THE DATABASE
109         $QUERY = "INSERT INTO cc_logrefill (credit, card_id, date) VALUES ('$mycard[4]', '$mycard[0]', now())";   
110         $result_insert = $instance_table -> SQLExec ($A2B -> DBHandle, $QUERY, 0);
111         if ($verbose_level>=1) echo "==> INSERT LOG REFILL QUERY=$QUERY\n";
112         
113         //exit();
114     }
115     // Little bit of rest
116     sleep(15);
117 }
118
119 write_log(LOGFILE_CRONT_AUTOREFILL, basename(__FILE__).' line:'.__LINE__."[Auto Refill finish]");
120
121
122
123 // INSERT REPORT SERVICE INTO THE DATABASE
124 $QUERY = "INSERT INTO cc_autorefill_report (totalcardperform, totalcredit, daterun) ".
125          "VALUES ('$totalcardperform', '$totalcredit', now())";       
126 $result_insert = $instance_table -> SQLExec ($A2B -> DBHandle, $QUERY, 0);
127 if ($verbose_level>=1) echo "==> INSERT SERVICE REPORT QUERY=$QUERY\n";
128
129 write_log(LOGFILE_CRONT_AUTOREFILL, basename(__FILE__).' line:'.__LINE__."[Service report : 'totalcardperform=$totalcardperform', 'totalcredit=$totalcredit']");
130
131
132
133 // SEND REPORT
134 if (strlen($A2B->config["webui"]["email_admin"])>4 && eregi("^[[:alnum:]][a-z0-9_.-]*@[a-z0-9.-]+\.[a-z]{2,4}$", $A2B->config["webui"]["email_admin"])){
135     $mail_content = "AUTO REFILL";
136     $mail_content .= "\n\nTotal card updated = ".$totalcardperform;
137     $mail_content .= "\nTotal credit added = ".$totalcredit;
138     mail($A2B->config["webui"]["email_admin"], "A2BILLING AUTO REFILL : REPORT", $mail_content);           
139     if ($verbose_level>=1) echo "MAIL CONTENT (".$A2B->config["webui"]["email_admin"].") : $mail_content\n";
140 }
141
142
143 if ($verbose_level>=1) echo "#### END AUTO REFILL \n";
144 write_log(LOGFILE_CRONT_AUTOREFILL, basename(__FILE__).' line:'.__LINE__."[#### AUTO REFILL PROCESS END ####]");
145     
146 ?>
147
Note: See TracBrowser for help on using the browser.


Google