Changeset 6128

Show
Ignore:
Timestamp:
07/23/08 00:28:50 (4 years ago)
Author:
p_lindheimer
Message:

#2063 changed annoucements to use recording_id, added assoc access to API calls

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • modules/branches/2.5/announcement/functions.inc.php

    r5841 r6128  
    55  $extens = array(); 
    66  foreach (announcement_list() as $row) { 
    7     $extens[] = array('destination' => 'app-announcement-'.$row[0].',s,1', 'description' => $row[1]); 
     7    $extens[] = array('destination' => 'app-announcement-'.$row['announcement_id'].',s,1', 'description' => $row[1]); 
    88  } 
    99  return $extens; 
     
    3535} 
    3636 
     37function announcement_recordings_usage($recording_id) { 
     38  global $active_modules; 
     39 
     40  $results = sql("SELECT announcement_id, description FROM announcement WHERE recording_id = '$recording_id'","getAll",DB_FETCHMODE_ASSOC); 
     41  if (empty($results)) { 
     42    return array(); 
     43  } else { 
     44    $type = isset($active_modules['announcement']['type'])?$active_modules['announcement']['type']:'setup'; 
     45    foreach ($results as $result) { 
     46      $usage_arr[] = array( 
     47        'url_query' => 'config.php?display=announcement&type='.$type.'&extdisplay='.urlencode($result['announcement_id']), 
     48        'description' => "Announcement: ".$result['description'], 
     49      ); 
     50    } 
     51    return $usage_arr; 
     52  } 
     53} 
     54 
    3755function announcement_get_config($engine) { 
    3856  global $ext; 
     
    4058    case 'asterisk': 
    4159      foreach (announcement_list() as $row) { 
    42         if (! $row[6]) { 
    43           $ext->add('app-announcement-'.$row[0], 's', '', new ext_gotoif('$["${CDR(disposition)}" = "ANSWERED"]','begin')); 
    44           $ext->add('app-announcement-'.$row[0], 's', '', new ext_answer('')); 
    45           $ext->add('app-announcement-'.$row[0], 's', '', new ext_wait('1')); 
     60        $recording = recordings_get_file($row['recording_id']); 
     61        if (! $row['noanswer']) { 
     62          $ext->add('app-announcement-'.$row['announcement_id'], 's', '', new ext_gotoif('$["${CDR(disposition)}" = "ANSWERED"]','begin')); 
     63          $ext->add('app-announcement-'.$row['announcement_id'], 's', '', new ext_answer('')); 
     64          $ext->add('app-announcement-'.$row['announcement_id'], 's', '', new ext_wait('1')); 
    4665        } 
    47         $ext->add('app-announcement-'.$row[0], 's', 'begin', new ext_noop('Playing announcement '.$row[1])); 
    48         if ($row[3] || $row[7]) { 
     66        $ext->add('app-announcement-'.$row['announcement_id'], 's', 'begin', new ext_noop('Playing announcement '.$row['description'])); 
     67        if ($row['allow_skip'] || $row['repeat_msg']) { 
    4968          // allow skip 
    50           if ($row[7]) { 
    51             $ext->add('app-announcement-'.$row[0], 's', '', new ext_responsetimeout(3)); 
     69          if ($row['repeat_msg']) { 
     70            $ext->add('app-announcement-'.$row['announcement_id'], 's', '', new ext_responsetimeout(3)); 
    5271          } 
    53           $ext->add('app-announcement-'.$row[0], 's', 'play', new ext_background($row[2].'|nm')); 
     72          $ext->add('app-announcement-'.$row['announcement_id'], 's', 'play', new ext_background($recording.'|nm')); 
    5473           
    55           if ($row[3]) { 
    56             $ext->add('app-announcement-'.$row[0], '_X', '', new ext_noop('User skipped announcement')); 
    57             if ($row[5]) { 
    58               $ext->add('app-announcement-'.$row[0], '_X', '', new ext_gotoif('$["x${IVR_CONTEXT}" = "x"]', $row[4].':${IVR_CONTEXT},return,1')); 
     74          if ($row['allow_skip']) { 
     75            $ext->add('app-announcement-'.$row['announcement_id'], '_X', '', new ext_noop('User skipped announcement')); 
     76            if ($row['return_ivr']) { 
     77              $ext->add('app-announcement-'.$row['announcement_id'], '_X', '', new ext_gotoif('$["x${IVR_CONTEXT}" = "x"]', $row['post_dest'].':${IVR_CONTEXT},return,1')); 
    5978            } else { 
    60               $ext->add('app-announcement-'.$row[0], '_X', '', new ext_goto($row[4])); 
     79              $ext->add('app-announcement-'.$row['announcement_id'], '_X', '', new ext_goto($row['post_dest'])); 
    6180            } 
    6281          } 
    63           if ($row[7]) { 
    64             $ext->add('app-announcement-'.$row[0], $row[7], '', new ext_goto('s,play')); 
     82          if ($row['repeat_msg']) { 
     83            $ext->add('app-announcement-'.$row['announcement_id'], $row['repeat_msg'], '', new ext_goto('s,play')); 
    6584          } 
    6685        } else { 
    67           $ext->add('app-announcement-'.$row[0], 's', '', new ext_playback($row[2].',noanswer')); 
     86          $ext->add('app-announcement-'.$row['announcement_id'], 's', '', new ext_playback($recording.',noanswer')); 
    6887        } 
    6988 
    7089        // if repeat_msg enabled then set exten to t to allow for the key to be pressed, otherwise play message and go 
    71         $exten = $row[7] ? 't':'s'; 
    72         if ($row[5]) { 
    73           $ext->add('app-announcement-'.$row[0], $exten, '', new ext_gotoif('$["x${IVR_CONTEXT}" = "x"]', $row[4].':${IVR_CONTEXT},return,1')); 
    74           if ($row[3] || $row[7]) 
    75             $ext->add('app-announcement-'.$row[0], 'i', '', new ext_gotoif('$["x${IVR_CONTEXT}" = "x"]', $row[4].':${IVR_CONTEXT},return,1')); 
     90        $exten = $row['repeat_msg'] ? 't':'s'; 
     91        if ($row['return_ivr']) { 
     92          $ext->add('app-announcement-'.$row['announcement_id'], $exten, '', new ext_gotoif('$["x${IVR_CONTEXT}" = "x"]', $row['post_dest'].':${IVR_CONTEXT},return,1')); 
     93          if ($row['allow_skip'] || $row['repeat_msg']) 
     94            $ext->add('app-announcement-'.$row['announcement_id'], 'i', '', new ext_gotoif('$["x${IVR_CONTEXT}" = "x"]', $row['post_dest'].':${IVR_CONTEXT},return,1')); 
    7695        } else { 
    77           $ext->add('app-announcement-'.$row[0], $exten, '', new ext_goto($row[4])); 
    78           if ($row[3] || $row[7]) 
    79             $ext->add('app-announcement-'.$row[0], 'i', '', new ext_goto($row[4])); 
     96          $ext->add('app-announcement-'.$row['announcement_id'], $exten, '', new ext_goto($row['post_dest'])); 
     97          if ($row['allow_skip'] || $row['repeat_msg']) 
     98            $ext->add('app-announcement-'.$row['announcement_id'], 'i', '', new ext_goto($row['post_dest'])); 
    8099        } 
    81100         
     
    87106function announcement_list() { 
    88107  global $db; 
    89   $sql = "SELECT announcement_id, description, recording, allow_skip, post_dest, return_ivr, noanswer, repeat_msg FROM announcement ORDER BY description "; 
    90   $results = $db->getAll($sql); 
     108  $sql = "SELECT announcement_id, description, recording_id, allow_skip, post_dest, return_ivr, noanswer, repeat_msg FROM announcement ORDER BY description "; 
     109  $results = $db->getAll($sql, DB_FETCHMODE_ASSOC); 
    91110  if(DB::IsError($results)) { 
    92111    die_freepbx($results->getMessage()."<br><br>Error selecting from announcement");   
    93112  } 
     113 
     114  // Make array backward compatible. 
     115  $count = 0; 
     116  foreach($results as $item) { 
     117    $results[$count][0] = $item['announcement_id']; 
     118    $results[$count][1] = $item['description']; 
     119    $results[$count][2] = $item['recording_id']; 
     120    $results[$count][3] = $item['allow_skip']; 
     121    $results[$count][4] = $item['post_dest']; 
     122    $results[$count][5] = $item['return_ivr']; 
     123    $results[$count][6] = $item['noanswer']; 
     124    $results[$count][7] = $item['repeat_msg']; 
     125    $count++; 
     126  } 
    94127  return $results; 
    95128} 
     
    97130function announcement_get($announcement_id) { 
    98131  global $db; 
    99   $sql = "SELECT announcement_id, description, recording, allow_skip, post_dest, return_ivr, noanswer, repeat_msg FROM announcement WHERE announcement_id = '".addslashes($announcement_id)."'"; 
     132  $sql = "SELECT announcement_id, description, recording_id, allow_skip, post_dest, return_ivr, noanswer, repeat_msg FROM announcement WHERE announcement_id = '".addslashes($announcement_id)."'"; 
    100133  $row = $db->getRow($sql,DB_FETCHMODE_ASSOC); 
    101134  if(DB::IsError($row)) { 
     
    112145} 
    113146 
    114 function announcement_add($description, $recording, $allow_skip, $post_dest, $return_ivr, $noanswer, $repeat_msg) { 
    115   global $db; 
    116   $sql = "INSERT INTO announcement (description, recording, allow_skip, post_dest, return_ivr, noanswer, repeat_msg) VALUES (". 
     147function announcement_add($description, $recording_id, $allow_skip, $post_dest, $return_ivr, $noanswer, $repeat_msg) { 
     148  global $db; 
     149  $sql = "INSERT INTO announcement (description, recording_id, allow_skip, post_dest, return_ivr, noanswer, repeat_msg) VALUES (". 
    117150    "'".addslashes($description)."', ". 
    118     "'".addslashes($recording)."', ". 
     151    "'".$recording_id."', ". 
    119152    "'".($allow_skip ? 1 : 0)."', ". 
    120153    "'".addslashes($post_dest)."', ". 
     
    138171} 
    139172 
    140 function announcement_edit($announcement_id, $description, $recording, $allow_skip, $post_dest, $return_ivr, $noanswer, $repeat_msg) {  
     173function announcement_edit($announcement_id, $description, $recording_id, $allow_skip, $post_dest, $return_ivr, $noanswer, $repeat_msg) {  
    141174  global $db; 
    142175  $sql = "UPDATE announcement SET ". 
    143176    "description = '".addslashes($description)."', ". 
    144     "recording = '".addslashes($recording)."', ". 
     177    "recording_id = '".$recording_id."', ". 
    145178    "allow_skip = '".($allow_skip ? 1 : 0)."', ". 
    146179    "post_dest = '".addslashes($post_dest)."', ". 
  • modules/branches/2.5/announcement/install.php

    r4767 r6128  
    11<?php 
     2if (! function_exists("out")) { 
     3  function out($text) { 
     4    echo $text."<br />"; 
     5  } 
     6} 
     7 
     8if (! function_exists("outn")) { 
     9  function outn($text) { 
     10    echo $text; 
     11  } 
     12} 
    213 
    314global $db; 
     
    819  announcement_id integer NOT NULL PRIMARY KEY $autoincrement, 
    920  description VARCHAR( 50 ), 
    10   recording VARCHAR( 255 )
     21  recording_id INTEGER
    1122  allow_skip INT, 
    1223  post_dest VARCHAR( 255 ), 
     
    8394} 
    8495 
     96// Version 2.5 migrate to recording ids 
     97// 
     98outn(_("Checking if recordings need migration..")); 
     99$sql = "SELECT recording_id FROM announcement"; 
     100$check = $db->getRow($sql, DB_FETCHMODE_ASSOC); 
     101if(DB::IsError($check)) { 
     102  //  Add recording_id field 
     103  // 
     104  out("migrating"); 
     105  outn(_("adding recording_id field..")); 
     106  $sql = "ALTER TABLE announcement ADD recording_id INTEGER"; 
     107  $result = $db->query($sql); 
     108  if(DB::IsError($result)) { 
     109    out(_("fatal error")); 
     110    die_freepbx($result->getDebugInfo());  
     111  } else { 
     112    out(_("ok")); 
     113  } 
     114 
     115  // Get all the valudes and replace them with recording_id 
     116  // 
     117  outn(_("migrate to recording ids..")); 
     118  $sql = "SELECT `announcement_id`, `recording` FROM `announcement`"; 
     119  $results = $db->getAll($sql, DB_FETCHMODE_ASSOC); 
     120  if(DB::IsError($results)) { 
     121    out(_("fatal error")); 
     122    die_freepbx($results->getDebugInfo());   
     123  } 
     124  $migrate_arr = array(); 
     125  $count = 0; 
     126  foreach ($results as $row) { 
     127    if (trim($row['recording']) != '') { 
     128      $rec_id = recordings_get_or_create_id($row['recording'], 'announcement'); 
     129      $migrate_arr[] = array($rec_id, $row['announcement_id']); 
     130      $count++; 
     131    } 
     132  } 
     133  if ($count) { 
     134    $compiled = $db->prepare('UPDATE `announcement` SET `recording_id` = ? WHERE `announcement_id` = ?'); 
     135    $result = $db->executeMultiple($compiled,$migrate_arr); 
     136    if(DB::IsError($result)) { 
     137      out(_("fatal error")); 
     138      die_freepbx($result->getDebugInfo());  
     139    } 
     140  } 
     141  out(sprintf(_("migrated %s entries"),$count)); 
     142 
     143  // Now remove the old recording field replaced by new id field 
     144  // 
     145  outn(_("dropping recording field..")); 
     146  $sql = "ALTER TABLE `announcement` DROP `recording`"; 
     147  $result = $db->query($sql); 
     148  if(DB::IsError($result)) {  
     149    out(_("no recording field???")); 
     150  } else { 
     151    out(_("ok")); 
     152  } 
     153 
     154} else { 
     155  out("already migrated"); 
     156} 
     157 
    85158?> 
  • modules/branches/2.5/announcement/module.xml

    r6068 r6128  
    22  <rawname>announcement</rawname> 
    33  <name>Announcements</name> 
    4   <version>2.5.0</version> 
     4  <version>2.5.1</version> 
    55  <changelog> 
     6    *2.5.1* #2063 Migrate recordings to recording ids 
    67    *2.5.0* #2845 tabindex 
    78    *2.4.0.3* #2872 mispelled Announcement 
     
    3132  </description> 
    3233  <depends> 
    33     <version>2.4.0</version> 
     34    <version>2.5.0alpha1</version> 
     35    <module>recordings ge 3.3.8</module> 
    3436  </depends> 
    3537  <menuitems> 
  • modules/branches/2.5/announcement/page.announcement.php

    r5919 r6128  
    1919$announcement_id = isset($_POST['announcement_id']) ? $_POST['announcement_id'] :  false; 
    2020$description = isset($_POST['description']) ? $_POST['description'] :  ''; 
    21 $recording = isset($_POST['recording']) ? $_POST['recording'] :  ''; 
     21$recording_id = isset($_POST['recording_id']) ? $_POST['recording_id'] :  ''; 
    2222$allow_skip = isset($_POST['allow_skip']) ? $_POST['allow_skip'] :  0; 
    2323$return_ivr = isset($_POST['return_ivr']) ? $_POST['return_ivr'] :  0; 
     
    3434switch ($action) { 
    3535  case 'add': 
    36     announcement_add($description, $recording, $allow_skip, $post_dest, $return_ivr, $noanswer, $repeat_msg); 
     36    announcement_add($description, $recording_id, $allow_skip, $post_dest, $return_ivr, $noanswer, $repeat_msg); 
    3737    needreload(); 
    3838    redirect_standard(); 
    3939  break; 
    4040  case 'edit': 
    41     announcement_edit($announcement_id, $description, $recording, $allow_skip, $post_dest, $return_ivr, $noanswer, $repeat_msg); 
     41    announcement_edit($announcement_id, $description, $recording_id, $allow_skip, $post_dest, $return_ivr, $noanswer, $repeat_msg); 
    4242    needreload(); 
    4343    redirect_standard('extdisplay'); 
     
    7575  $row = announcement_get($extdisplay); 
    7676   
    77   $description = $row[1]; 
    78   $recording = $row[2]; 
    79   $allow_skip = $row[3]; 
    80   $post_dest = $row[4]; 
    81   $return_ivr = $row[5]; 
    82   $noanswer = $row[6]; 
    83   $repeat_msg = $row[7]; 
     77  $description = $row['description']; 
     78  $recording_id = $row['recording_id']; 
     79  $allow_skip = $row['allow_skip']; 
     80  $post_dest = $row['post_dest']; 
     81  $return_ivr = $row['return_ivr']; 
     82  $noanswer = $row['noanswer']; 
     83  $repeat_msg = $row['repeat_msg']; 
    8484 
    8585} 
     
    101101    <td><a href="#" class="info"><?php echo _("Recording")?><span><?php echo _("Message to be played.<br>To add additional recordings use the \"System Recordings\" MENU to the left")?></span></a></td> 
    102102    <td> 
    103       <select name="recording"  tabindex="<?php echo ++$tabindex;?>"> 
     103      <select name="recording_id"  tabindex="<?php echo ++$tabindex;?>"> 
    104104      <?php 
    105105        $tresults = recordings_list(); 
    106         $default = (isset($recording) ? $recording : ''); 
     106        $default = (isset($recording_id) ? $recording_id : ''); 
    107107        if (isset($tresults[0])) { 
    108108          foreach ($tresults as $tresult) { 
    109             echo '<option value="'.$tresult[2].'"'.($tresult[2] == $default ? ' SELECTED' : '').'>'.$tresult[1]."</option>\n"; 
     109            echo '<option value="'.$tresult['id'].'"'.($tresult['id'] == $default ? ' SELECTED' : '').'>'.$tresult['displayname']."</option>\n"; 
    110110          } 
    111111        }