Index: sms/sms.info
===================================================================
RCS file: /usr/local/cvsroot/sms/sms.info,v
diff -u
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ sms/sms.info	14 Jan 2007 11:31:45 -0000	1.1
@@ -0,0 +1,37 @@
+<?xml version="1.0"?>
+<!-- Generated by the OpenACS Package Manager -->
+
+<package key="sms" url="http://openacs.org/repository/apm/packages/sms" type="apm_application">
+    <package-name>SMS</package-name>
+    <pretty-plural></pretty-plural>
+    <initial-install-p>f</initial-install-p>
+    <singleton-p>f</singleton-p>
+    
+    <version name="0.2d1" url="http://openacs.org/repository/download/apm/sms-0.2d1.apm">
+        <owner url="mailto:malte@openacs.de">Malte Sussdorff</owner>
+        <summary>SMS is a package to send out an SMS to a mobile number. It includes parameters for handling various sets of gateways.</summary>
+        <release-date>2007-01-14</release-date>
+        <maturity>0</maturity>
+
+        <provides url="sms" version="0.2d1"/>
+
+        <callbacks>
+        </callbacks>
+        <parameters>
+            <parameter datatype="string"  min_n_values="1"  max_n_values="1"  name="DefaultGateway"  description="If the recipient System supports multiple Gateways, which is the default gateway"/>
+            <parameter datatype="string"  min_n_values="1"  max_n_values="1"  name="DefaultSender"  description="Default phone number to be used for sending of the SMS if the user sending the SMS does not have a mobile number of the MobilePhoneAttribute is not defined"/>
+            <parameter datatype="string"  min_n_values="1"  max_n_values="1"  name="GatewayName"  description="Name for the gateway field on the gateway's site" section_name="Mappings"/>
+            <parameter datatype="string"  min_n_values="1"  max_n_values="1"  name="LoginID"  description="Login ID used to access the Gateway"/>
+            <parameter datatype="string"  min_n_values="1"  max_n_values="1"  name="LoginIDName"  description="Name for the login_id field on the gateway's site" section_name="Mappings"/>
+            <parameter datatype="string"  min_n_values="1"  max_n_values="1"  name="MobilePhoneAttribute"  description="Name of the acs attribute which holds the mobile phone number. Mainly used in conjunction with Contacts. Note: Only fill this out if &quot;contacts&quot; is installed" section_name="Contacts"/>
+            <parameter datatype="string"  min_n_values="1"  max_n_values="1"  name="MobilePhoneName"  description="Name for the mobile_phone_number field on the gateway's site" section_name="Mappings"/>
+            <parameter datatype="string"  min_n_values="1"  max_n_values="1"  name="Password"  description="Password used for accessing the SMS Gateway"/>
+            <parameter datatype="string"  min_n_values="1"  max_n_values="1"  name="PasswordName"  description="Name for the password field on the gateway's site" section_name="Mappings"/>
+            <parameter datatype="number"  min_n_values="1"  max_n_values="1"  name="Prefix"  description="International Dial Prefix to be used in front of the international dial code. E.g. &quot;00&quot; in Germany and &quot;011&quot; in the US."/>
+            <parameter datatype="string"  min_n_values="1"  max_n_values="1"  name="SenderName"  description="Name for the sender field on the gateway's site" section_name="Mappings"/>
+            <parameter datatype="string"  min_n_values="1"  max_n_values="1"  name="SMSGatewayURL"  description="URL of the SMS Gateway. This should contain placeholders for the variable %login_id%, %password%, %gateway%, %smstext% and %mobile_phone%"/>
+            <parameter datatype="string"  min_n_values="1"  max_n_values="1"  name="SMSTextName"  description="Name for the smstext field on the gateway's site" section_name="Mappings"/>
+        </parameters>
+
+    </version>
+</package>
Index: sms/tcl/sms-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/sms/tcl/sms-procs.tcl,v
diff -u
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ sms/tcl/sms-procs.tcl	14 Jan 2007 11:31:45 -0000	1.1
@@ -0,0 +1,55 @@
+# packages/sms/tcl/sms-procs.tcl
+
+ad_library {
+    
+    SMS Procedures
+    
+    @author Malte Sussdorff (<malte@openacs.de>)
+    @creation-date 2007-01-14
+    @cvs-id $Id: sms-procs.tcl,v 1.1 2007/01/14 11:31:45 maltes Exp $
+}
+
+namespace eval sms {}
+
+ad_proc -public sms::clean_phone_number {
+    -phone_number
+    {-package_id ""}
+} {
+    
+    This procedure will take a phone number and strip it from "+",
+    leading 0 and whitespace, so we can have a clean phone number
+    which can be used for posting around.
+
+    @author Malte Sussdorff (malte.sussdorff@cognovis.de)
+    @creation-date 2007-01-14
+    
+    @param phone_number Number to be cleaned
+
+    @param package_id Package_id to use
+
+    @return Phone number cleaned up with the prefix in front
+    
+    @error 
+} {
+
+    if {$package_id eq ""} {
+	set package_id [ad_conn package_id]
+    }
+    
+    # Strip out the prefix, so we don't have it twice
+    set prefix [parameter::get -package_id $package_id -parameter Prefix]
+    set phone_number [string trimleft $phone_number $prefix]
+
+    # Strip out the "+" sign
+    regsub -all {\+} $phone_number {} phone_number
+
+    # Strip out (), which are being used to mark e.g. area codes
+    regsub -all {\(} $phone_number {} phone_number
+    regsub -all {\)} $phone_number {} phone_number
+
+    # Strip out any whitespace
+    regsub -all { } $phone_number {} phone_number
+
+    return "${prefix}$phone_number"
+}
+
Index: sms/www/sms.adp
===================================================================
RCS file: /usr/local/cvsroot/sms/www/sms.adp,v
diff -u
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ sms/www/sms.adp	14 Jan 2007 11:31:45 -0000	1.1
@@ -0,0 +1,2 @@
+<master>
+<formtemplate id="sms"></formtemplate>
Index: sms/www/sms.tcl
===================================================================
RCS file: /usr/local/cvsroot/sms/www/sms.tcl,v
diff -u
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ sms/www/sms.tcl	14 Jan 2007 11:31:45 -0000	1.1
@@ -0,0 +1,65 @@
+# packages/sms/www/sms.tcl
+
+ad_page_contract {
+    
+    Page to send an SMS to a mobile number.
+
+    It is written to use with http://any-sms.de, but you should be able to use it with other providers just as easily.
+    The number must be all integer and start with the international area code, e.g 49175123456789
+
+    @author Malte Sussdorff (malte@openacs.de)
+    @creation-date 2007-01-14
+    @cvs-id $Id: sms.tcl,v 1.1 2007/01/14 11:31:45 maltes Exp $
+} {
+    mobile_number:float
+    {smstext ""}
+    {return_url "/"}
+} -properties {
+} -validate {
+} -errors {
+}
+
+
+set package_id [ad_conn package_id]
+set mobile_number [sms::clean_phone_number -phone_number $mobile_number -package_id $package_id]
+
+set form_elements {
+    {mobile_number:float(inform)
+	{label "[_ ams.Mobile_Number]"}
+	{value $mobile_number}
+    }
+    {smstext:text(text),optional
+	{label "[_ contacts.SMSText]"}
+	{html {size 55}}
+    }
+}
+
+
+ad_form -name sms -action [ad_conn url] \
+-form $form_elements \
+-on_submit {
+
+    set gateway_url [parameter::get -package_id $package_id -parameter SMSGatewayURL]
+    set login_id [parameter::get -package_id $package_id -parameter LoginID]
+    set password [parameter::get -package_id $package_id -parameter Password]
+    set gateway [parameter::get -package_id $package_id -parameter DefaultGateway]
+    set login_id_name [parameter::get -package_id $package_id -parameter LoginIDName]
+    set password_name [parameter::get -package_id $package_id -parameter PasswordName]
+    set gateway_name [parameter::get -package_id $package_id -parameter GatewayName]
+    set sender_name [parameter::get -package_id $package_id -parameter SenderName]
+    set sender_phone [ams::value -attribute_name [parameter::get -package_id $package_id -parameter MobilePhoneAttribute] -object_id [content::item::get_best_revision -item_id [ad_conn user_id]] -format "text"]
+    if {$sender_phone eq ""} {
+	set sender_phone "[parameter::get -package_id $package_id -parameter DefaultSender]"
+    }
+    
+    # Handle the phone numbers
+    set sender_phone [sms::clean_phone_number -phone_number $sender_phone -package_id $package_id]
+
+    set smstext_name [parameter::get -package_id $package_id -parameter SMSTextName]
+    set mobile_phone_name [parameter::get -package_id $package_id -parameter MobilePhoneName]
+    set fetch_url "[export_vars -base "$gateway_url" -url [list [list "$login_id_name" "$login_id"] [list "$password_name" "$password"] [list "$gateway_name" "$gateway"] [list "$smstext_name" "$smstext"] [list "$mobile_phone_name" "$mobile_number"] [list "$sender_name" "$sender_phone"]]]"
+    set return_value [ad_httpget -url $fetch_url]
+    ad_returnredirect $return_url
+    util_user_message -html -message "SMS versendet"
+}
+