Example #1
0
 public static function dialplan($number)
 {
     $xml = Telephony::getDriver()->xml;
     $destination = $number['Destination'];
     if (!empty($destination['time'])) {
         $parts = explode(';', $destination['time']);
         if (count($parts) != 2) {
             kohana::log('error', 'Time was not comprised of two parts');
             return FALSE;
         }
         $offset = timezone::getUTCOffset($destination['plugins']['timezone']['timezone']) / 60;
         if ($parts[0] == $parts[1]) {
             $times[] = $parts - $offset;
         } else {
             $times[] = $parts[0] - $offset;
             $times[] = $parts[1] - $offset;
         }
     } else {
         kohana::log('error', 'Time of day route had no time');
         return FALSE;
     }
     $weekDayColumns = array('sun', 'mon', 'tue', 'wen', 'thur', 'fri', 'sat');
     $wday = array();
     foreach ($weekDayColumns as $pos => $weekDayColumn) {
         if (!empty($destination[$weekDayColumn])) {
             $wday[] = $pos + 1;
         }
     }
     // TODO: This makes no sense....
     if (empty($wday)) {
         $wday = array(1, 2, 3, 4, 5, 6, 7);
     }
     $xml->setXmlRoot($xml->getExtensionRoot());
     Kohana::log('debug', 'NODE?');
     foreach ($xml->childNodes as $node) {
         if ($node !== $xml->firstChild) {
             $node->deleteNode();
         }
     }
     $time_xml = "";
     foreach ($times as $index => $time) {
         if ($time < 0) {
             foreach ($wday as $day) {
                 if ($day == 1) {
                     $offsetwday[] = 7;
                 } else {
                     $offsetwday[] = $day - 1;
                 }
             }
             $time_xml .= self::createTimeCondition($destination, $offsetwday, 1440 + $time . '-1440');
             $times[$index] = 0;
         }
         if ($time > 1440) {
             foreach ($wday as $day) {
                 if ($day == 7) {
                     $offsetwday[] = 1;
                 } else {
                     $offsetwday[] = $day + 1;
                 }
             }
             $time_xml .= self::createTimeCondition($destination, $offsetwday, '0-' . ($time - 1440));
             $times[$index] = 1440;
         }
     }
     if (sizeof($times) == 1) {
         $time_xml .= self::createTimeCondition($destination, $wday, $times[0]);
     } else {
         if (sizeof($times) == 2) {
             $time_xml .= self::createTimeCondition($destination, $wday, $times[0] . '-' . $times[1]);
         }
     }
     if (!empty($time_xml)) {
         $newXmlFragment = $xml->createDocumentFragment();
         $newXmlFragment->appendXML($time_xml);
         $xml->set('')->appendChild($newXmlFragment);
     } else {
         $xml->deleteNode();
     }
 }