]> git.sur5r.net Git - contagged/commitdiff
simple phone number searching
authorAndreas Gohr <gohr@cosmocode.de>
Wed, 27 Jun 2007 12:03:22 +0000 (14:03 +0200)
committerAndreas Gohr <gohr@cosmocode.de>
Wed, 27 Jun 2007 12:03:22 +0000 (14:03 +0200)
If you enter a numeric search query it is treated as part of a phone number.
Because ConTagged has to deal with any possible formatting in the phone number
entries and the limits of LDAP search filters it will match any number where
the given digits occur in the same order (but not nesserally besides each others)

Eg. a search for 3940 will match the number +49 30 22 49 46 30

darcs-hash:20070627120322-6e07b-6c934b3f883a8cb9f84f171e2f7670727c51bdf0.gz

index.php

index 8fdc91cb3752524e9ae4458c9c65d33beb09cd47..26c591204e3374081264d153b2a7abca04131ce3 100644 (file)
--- a/index.php
+++ b/index.php
     if (empty($_REQUEST['search'])) { $_REQUEST['search']=''; }
     if (empty($_REQUEST['org'])) { $_REQUEST['org']=''; }
     if (empty($_REQUEST['marker'])) { $_REQUEST['marker']=''; }
+    if(is_numeric($_REQUEST['search'])) $number = $_REQUEST['search'];
     $filter = ldap_filterescape($_REQUEST['filter']);
     $search = ldap_filterescape($_REQUEST['search']);
     $org    = ldap_filterescape($_REQUEST['org']);
         $ldapfilter .= '('.$FIELDS['_marker'].'='.$m.')';
       }
       $ldapfilter .= ')';
+    }elseif($number){
+      // Search by telephone number
+      $filter = '';
+      // add wildcards between digits to compensate for any formatting
+      $length = strlen($number);
+      for($i=0; $i <$length; $i++){
+        $filter .= '*'.$number{$i};
+      }
+      $filter .= '*';
+      $ldapfilter = '(&'.
+                        '(objectClass=inetOrgPerson)'.
+                        '(|'.
+                            '(|'.
+                                '('.$FIELDS['phone'].'='.$filter.')'.
+                                '('.$FIELDS['homephone'].'='.$filter.')'.
+                            ')'.
+                            '('.$FIELDS['homephone'].'='.$filter.')'.
+                        ')'.
+                    ')';
     }elseif(!empty($search)){
       // Search name and organization
       $search = trim($search);