public function addfileAction() { $className = $this->_request->getParam('class'); $class = Snep_SoundFiles_Manager::getClasse($className); $this->view->breadcrumb = Snep_Breadcrumb::renderPath(array($this->view->translate("Music on Hold Sessions"), $this->view->translate("Add File"), $className)); $form = new Snep_Form(new Zend_Config_Xml("modules/default/forms/sound_files.xml")); $file = new Zend_Form_Element_File('file'); $file->setLabel($this->view->translate('Sound File'))->addValidator(new Zend_Validate_File_Extension(array('wav', 'gsm')))->removeDecorator('DtDdWrapper')->setIgnore(true); $form->addElement($file); $section = new Zend_Form_Element_Hidden('section'); $section->setValue($class['name']); $form->addElement($section); $form->removeElement('type'); if ($this->_request->getPost()) { $class = Snep_SoundFiles_Manager::getClasse($_POST['section']); $form_isValid = $form->isValid($_POST); $dados = $this->_request->getParams(); $invalid = array('â', 'ã', 'á', 'à', 'ẽ', 'é', 'è', 'ê', 'í', 'ì', 'ó', 'õ', 'ò', 'ú', 'ù', 'ç', " ", '@', '!'); $valid = array('a', 'a', 'a', 'a', 'e', 'e', 'e', 'e', 'i', 'i', 'o', 'o', 'o', 'u', 'u', 'c', "_", '_', '_'); $originalName = str_replace($invalid, $valid, $_FILES['file']['name']); $files = Snep_SoundFiles_Manager::get($originalName); if ($files) { $file->addError($this->view->translate("File already exists")); $form_isValid = false; } if ($form_isValid) { $uploadName = $_FILES['file']['tmp_name']; $arq_tmp = $class['directory'] . "/tmp/" . $originalName; $arq_dst = $class['directory'] . "/" . $originalName; $arq_bkp = $class['directory'] . "/backup/" . $originalName; $arq_orig = $class['directory'] . "/" . $originalName; exec("mv {$uploadName} {$arq_tmp}"); if ($_POST['gsm']) { $fileNe = basename($arq_dst, '.wav'); exec("sox {$arq_tmp} -r 8000 {$fileNe}.gsm"); $originalName = basename($originalName, '.wav') . ".gsm"; } else { exec("sox {$arq_tmp} -r 8000 -c 1 -e signed-integer -b 16 {$arq_dst}"); } if (file_exists($arq_dst) || file_exists($fileNe)) { Snep_SoundFiles_Manager::addClassFile(array('arquivo' => $originalName, 'descricao' => $dados['description'], 'data' => new Zend_Db_Expr('NOW()'), 'tipo' => 'MOH', 'secao' => $dados['section'])); } $this->_redirect($this->getRequest()->getControllerName() . "/file/class/{$className}/"); } } $this->view->form = $form; }
public function syncFiles() { $db = Zend_Registry::get('db'); $select = $db->select()->from('sounds')->where('sounds.tipo = ?', 'MOH'); try { $stmt = $db->query($select); $sounds = $stmt->fetchAll(); } catch (Exception $e) { return false; } $_sound = array(); foreach ($sounds as $sound) { $_sound[$sound['arquivo']] = $sound['arquivo']; } $allClasses = Snep_SoundFiles_Manager::getClasses(); $classesFolder = array(); foreach ($allClasses as $id => $xclass) { $classesFolder[$id]['name'] = $xclass['name']; $classesFolder[$id]['directory'] = $xclass['directory']; if (file_exists($xclass['directory'])) { $allFiles = array(); $files = array(); foreach (scandir($xclass['directory']) as $thisClass => $file) { if (!preg_match("/^\\.+.*/", $file)) { if (!preg_match('/^tmp+.*/', $file)) { if (!preg_match('/^backup+.*/', $file)) { if (!in_array($file, array_keys($allClasses))) { if (!in_array($file, $_sound)) { $newfile = array('arquivo' => $file, 'descricao' => $file, 'data' => new Zend_Db_Expr('NOW()'), 'tipo' => 'MOH', 'secao' => $id); Snep_SoundFiles_Manager::addClassFile($newfile); } } } } } } } } return true; }