Some changes to ExecIf? in trunk means:
Index: extensions.class.php
===================================================================
--- extensions.class.php (revision 5498)
+++ extensions.class.php (arbetskopia)
@@ -585,7 +585,13 @@
}
function output() {
- return "ExecIf(".$this->expr.",".$this->app.",".$this->data.")";
+ global $version;
+
+ if (version_compare($version, "1.6", "ge")) {
+ return "ExecIf(".$this->expr."?".$this->app."(".$this->data."):Noop(False))";
+ } else {
+ return "ExecIf(".$this->expr.",".$this->app.",".$this->data.")";
+ }
}
}
The extra Noop(False) has to do with http://bugs.digium.com/view.php?id=11564
We would need two different extensions.conf files, one 1.2/1.4 and one trunk/1.6. This are the diff between the two at the moment.
Index: extensions.conf
===================================================================
--- extensions.conf (revision 5498)
+++ extensions.conf (arbetskopia)
@@ -663,7 +663,7 @@
;
[macro-dialout-trunk]
exten => s,1,Set(DIAL_TRUNK=${ARG1})
-exten => s,n,ExecIf($[$["${ARG3}" != ""] & $["${DB(AMPUSER/${AMPUSER}/pinless)}" != "NOPASSWD"]],Authenticate,${ARG3})
+exten => s,n,ExecIf($[$["${ARG3}" != ""] & $["${DB(AMPUSER/${AMPUSER}/pinless)}" != "NOPASSWD"]]?Authenticate(${ARG3}))
exten => s,n,GotoIf($["x${OUTDISABLE_${DIAL_TRUNK}}" = "xon"]?disabletrunk,1)
exten => s,n,Set(DIAL_NUMBER=${ARG2}) ; fixlocalprefix depends on this
exten => s,n,Set(DIAL_TRUNK_OPTIONS=${DIAL_OPTIONS}) // will be reset to TRUNK_OPTIONS if not intra-company
@@ -731,10 +731,10 @@
exten => s,n(a3),Read(CALLBACKNUM,agent-user) ; get callback number from user
exten => s,n,GotoIf($["${CALLBACKNUM}" != ""]?a7) ; if user just pressed # or timed out, use cidnum
exten => s,n(a5),Set(CALLBACKNUM=${AMPUSER})
-exten => s,n,ExecIf($["${CALLBACKNUM}" = ""],Set,CALLBACKNUM=${CALLERID(number)})
+exten => s,n,ExecIf($["${CALLBACKNUM}" = ""]?Set(CALLBACKNUM=${CALLERID(number)}))
exten => s,n,GotoIf($["${CALLBACKNUM}" = ""]?a3) ; if still no number, start over
exten => s,n(a7),GotoIf($["${CALLBACKNUM}" = "${ARG1}"]?invalid) ; Error, they put in the queue number
-exten => s,n,ExecIf($["${ARG2}" != ""],Authenticate,${ARG2})
+exten => s,n,ExecIf($["${ARG2}" != ""]?Authenticate(${ARG2}))
exten => s,n(a9),AddQueueMember(${ARG1},Local/${CALLBACKNUM}@from-internal/n) ; using chan_local allows us to have agents over trunks
exten => s,n,UserEvent(Agentlogin,Agent: ${CALLBACKNUM})
exten => s,n,Wait(1)
@@ -753,7 +753,7 @@
exten => s,n(a3),Read(CALLBACKNUM,agent-user) ; get callback number from user
exten => s,n,GotoIf($["${CALLBACKNUM}" = ""]?a5:a7) ; if user just pressed # or timed out, use cidnum
exten => s,n(a5),Set(CALLBACKNUM=${AMPUSER})
-exten => s,n,ExecIf($["${CALLBACKNUM}" = ""],Set,CALLBACKNUM=${CALLERID(number)})
+exten => s,n,ExecIf($["${CALLBACKNUM}" = ""]?Set(CALLBACKNUM=${CALLERID(number)}))
exten => s,n,GotoIf($["${CALLBACKNUM}" = ""]?a3) ; if still no number, start over
exten => s,n(a7),RemoveQueueMember(${ARG1},Local/${CALLBACKNUM}@from-internal/n)
exten => s,n,UserEvent(RefreshQueue)
@@ -764,7 +764,7 @@
; arg1 = trunk number, arg2 = number
[macro-dialout-enum]
; Re-written to use enumlookup.agi
-exten => s,1,ExecIf($[$["${ARG3}" != ""] & $["${DB(AMPUSER/${AMPUSER}/pinless)}" != "NOPASSWD"]],Authenticate,${ARG3})
+exten => s,1,ExecIf($[$["${ARG3}" != ""] & $["${DB(AMPUSER/${AMPUSER}/pinless)}" != "NOPASSWD"]]?Authenticate(${ARG3}))
exten => s,n,Macro(outbound-callerid,${ARG1})
exten => s,n,Set(GROUP()=OUT_${ARG1})
exten => s,n,GotoIf($["${OUTMAXCHANS_${ARG1}}foo" = "foo"]?nomax)
@@ -945,7 +945,7 @@
;
exten => s,n,Set(AMPUSER=${IF($["foo${AMPUSER}" = "foo"]?${CALLERID(number)}:${AMPUSER})})
exten => s,n,GotoIf($["${CHANNEL:0:5}" = "Local"]?report)
-exten => s,n,ExecIf($["${REALCALLERIDNUM:1:2}" = ""],Set,REALCALLERIDNUM=${CALLERID(number)})
+exten => s,n,ExecIf($["${REALCALLERIDNUM:1:2}" = ""]?Set(REALCALLERIDNUM=${CALLERID(number)}))
exten => s,n(start),NoOp(REALCALLERIDNUM is ${REALCALLERIDNUM})
exten => s,n,Set(AMPUSER=${DB(DEVICE/${REALCALLERIDNUM}/user)})
exten => s,n,Set(AMPUSERCIDNAME=${DB(AMPUSER/${AMPUSER}/cidname)})
@@ -958,7 +958,7 @@
exten => s,n,Set(AMPUSERCID=${IF($["${DB_EXISTS(AMPUSER/${AMPUSER}/cidnum)}" = "1"]?${DB_RESULT}:${AMPUSER})})
exten => s,n,Set(CALLERID(all)="${AMPUSERCIDNAME}" <${AMPUSERCID}>)
exten => s,n,Set(REALCALLERIDNUM=${DB(DEVICE/${REALCALLERIDNUM}/user)})
-exten => s,n,ExecIf($[ "${DB(AMPUSER/${AMPUSER}/language)}" != "" ],Set,LANGUAGE()=${DB(AMPUSER/${AMPUSER}/language)})
+exten => s,n,ExecIf($["${DB(AMPUSER/${AMPUSER}/language)}" != ""]?Set(LANGUAGE()=${DB(AMPUSER/${AMPUSER}/language)}))
exten => s,n(report),Noop(TTL: ${TTL} ARG1: ${ARG1})
exten => s,n,GotoIf($[ "${ARG1}" = "SKIPTTL" ]?continue)
exten => s,n(report2),Set(__TTL=${IF($["foo${TTL}" = "foo"]?64:$[ ${TTL} - 1 ])})
@@ -1014,7 +1014,7 @@
exten => s,n,Set(CALLERID(all)=${USEROUTCID})
exten => s,n,GotoIf($["x${CALLERID(name)}"!="xhidden"]?checkname:hidecid) ; check CID blocking for extension
exten => s,n(hidecid),SetCallerPres(prohib_passed_screen) ; Only works with ISDN (T1/E1/BRI)
-exten => s,n(checkname),ExecIf($[ $[ "${CALLERID(number)}" = "${REALCALLERIDNUM}" ] & $[ "${CALLERID(name)}" = "" ] ],Set,CALLERID(name)=${REALCALLERIDNAME})
+exten => s,n(checkname),ExecIf($[ $[ "${CALLERID(number)}" = "${REALCALLERIDNUM}" ] & $[ "${CALLERID(name)}" = "" ] ]?Set(CALLERID(name)=${REALCALLERIDNAME}))
exten => s,n(report),NoOp(CallerID set to ${CALLERID(all)})
; Privacy Manager Macro makes sure that any calls that don't pass the privacy manager are presented