public function startForm($p_blockId, $p_isValid = false)
 {
     // load type
     $out = CcBlockQuery::create()->findPk($p_blockId);
     if ($out->getDbType() == "static") {
         $blockType = 0;
     } else {
         $blockType = 1;
     }
     $spType = new Zend_Form_Element_Radio('sp_type');
     $spType->setLabel(_('Set smart block type:'))->setDecorators(array('viewHelper'))->setMultiOptions(array('static' => _('Static'), 'dynamic' => _('Dynamic')))->setValue($blockType);
     $this->addElement($spType);
     $bl = new Application_Model_Block($p_blockId);
     $storedCrit = $bl->getCriteria();
     //need to convert criteria to be displayed in the user's timezone if there's some timestamp type.
     self::convertTimestamps($storedCrit["crit"]);
     /* $modRoadMap stores the number of same criteria
      * Ex: 3 Album titles, and 2 Track titles
      * We need to know this so we display the form elements properly
      */
     $modRowMap = array();
     $openSmartBlockOption = false;
     if (!empty($storedCrit)) {
         $openSmartBlockOption = true;
     }
     $criteriaKeys = array();
     if (isset($storedCrit["crit"])) {
         $criteriaKeys = array_keys($storedCrit["crit"]);
     }
     $numElements = count($this->getCriteriaOptions());
     for ($i = 0; $i < $numElements; $i++) {
         $criteriaType = "";
         if (isset($criteriaKeys[$i])) {
             $critCount = count($storedCrit["crit"][$criteriaKeys[$i]]);
         } else {
             $critCount = 1;
         }
         $modRowMap[$i] = $critCount;
         /* Loop through all criteria with the same field
          * Ex: all criteria for 'Album'
          */
         for ($j = 0; $j < $critCount; $j++) {
             /****************** CRITERIA ***********/
             if ($j > 0) {
                 $invisible = ' sp-invisible';
             } else {
                 $invisible = '';
             }
             $criteria = new Zend_Form_Element_Select("sp_criteria_field_" . $i . "_" . $j);
             $criteria->setAttrib('class', 'input_select sp_input_select' . $invisible)->setValue('Select criteria')->setDecorators(array('viewHelper'))->setMultiOptions($this->getCriteriaOptions());
             if ($i != 0 && !isset($criteriaKeys[$i])) {
                 $criteria->setAttrib('disabled', 'disabled');
             }
             if (isset($criteriaKeys[$i])) {
                 $criteriaType = $this->criteriaTypes[$storedCrit["crit"][$criteriaKeys[$i]][$j]["criteria"]];
                 $criteria->setValue($storedCrit["crit"][$criteriaKeys[$i]][$j]["criteria"]);
             }
             $this->addElement($criteria);
             /****************** MODIFIER ***********/
             $criteriaModifers = new Zend_Form_Element_Select("sp_criteria_modifier_" . $i . "_" . $j);
             $criteriaModifers->setValue('Select modifier')->setAttrib('class', 'input_select sp_input_select')->setDecorators(array('viewHelper'));
             if ($i != 0 && !isset($criteriaKeys[$i])) {
                 $criteriaModifers->setAttrib('disabled', 'disabled');
             }
             if (isset($criteriaKeys[$i])) {
                 if ($criteriaType == "s") {
                     $criteriaModifers->setMultiOptions($this->getStringCriteriaOptions());
                 } else {
                     $criteriaModifers->setMultiOptions($this->getNumericCriteriaOptions());
                 }
                 $criteriaModifers->setValue($storedCrit["crit"][$criteriaKeys[$i]][$j]["modifier"]);
             } else {
                 $criteriaModifers->setMultiOptions(array('0' => _('Select modifier')));
             }
             $this->addElement($criteriaModifers);
             /****************** VALUE ***********/
             $criteriaValue = new Zend_Form_Element_Text("sp_criteria_value_" . $i . "_" . $j);
             $criteriaValue->setAttrib('class', 'input_text sp_input_text')->setDecorators(array('viewHelper'));
             if ($i != 0 && !isset($criteriaKeys[$i])) {
                 $criteriaValue->setAttrib('disabled', 'disabled');
             }
             if (isset($criteriaKeys[$i])) {
                 $criteriaValue->setValue($storedCrit["crit"][$criteriaKeys[$i]][$j]["value"]);
             }
             $this->addElement($criteriaValue);
             /****************** EXTRA ***********/
             $criteriaExtra = new Zend_Form_Element_Text("sp_criteria_extra_" . $i . "_" . $j);
             $criteriaExtra->setAttrib('class', 'input_text sp_extra_input_text')->setDecorators(array('viewHelper'));
             if (isset($criteriaKeys[$i]) && isset($storedCrit["crit"][$criteriaKeys[$i]][$j]["extra"])) {
                 $criteriaExtra->setValue($storedCrit["crit"][$criteriaKeys[$i]][$j]["extra"]);
                 $criteriaValue->setAttrib('class', 'input_text sp_extra_input_text');
             } else {
                 $criteriaExtra->setAttrib('disabled', 'disabled');
             }
             $this->addElement($criteriaExtra);
         }
         //for
     }
     //for
     $repeatTracks = new Zend_Form_Element_Checkbox('sp_repeat_tracks');
     $repeatTracks->setDecorators(array('viewHelper'))->setLabel(_('Allow Repeat Tracks:'));
     if (isset($storedCrit["repeat_tracks"])) {
         $repeatTracks->setChecked($storedCrit["repeat_tracks"]["value"] == 1 ? true : false);
     }
     $this->addElement($repeatTracks);
     $limit = new Zend_Form_Element_Select('sp_limit_options');
     $limit->setAttrib('class', 'sp_input_select')->setDecorators(array('viewHelper'))->setMultiOptions($this->getLimitOptions());
     if (isset($storedCrit["limit"])) {
         $limit->setValue($storedCrit["limit"]["modifier"]);
     }
     $this->addElement($limit);
     $limitValue = new Zend_Form_Element_Text('sp_limit_value');
     $limitValue->setAttrib('class', 'sp_input_text_limit')->setLabel(_('Limit to'))->setDecorators(array('viewHelper'));
     $this->addElement($limitValue);
     if (isset($storedCrit["limit"])) {
         $limitValue->setValue($storedCrit["limit"]["value"]);
     } else {
         // setting default to 1 hour
         $limitValue->setValue(1);
     }
     //getting block content candidate count that meets criteria
     $bl = new Application_Model_Block($p_blockId);
     if ($p_isValid) {
         $files = $bl->getListofFilesMeetCriteria();
         $showPoolCount = true;
     } else {
         $files = null;
         $showPoolCount = false;
     }
     $generate = new Zend_Form_Element_Button('generate_button');
     $generate->setAttrib('class', 'btn btn-small');
     $generate->setAttrib('title', _('Generate playlist content and save criteria'));
     $generate->setIgnore(true);
     $generate->setLabel(_('Generate'));
     $generate->setDecorators(array('viewHelper'));
     $this->addElement($generate);
     $shuffle = new Zend_Form_Element_Button('shuffle_button');
     $shuffle->setAttrib('class', 'btn btn-small');
     $shuffle->setAttrib('title', _('Shuffle playlist content'));
     $shuffle->setIgnore(true);
     $shuffle->setLabel(_('Shuffle'));
     $shuffle->setDecorators(array('viewHelper'));
     $this->addElement($shuffle);
     $this->setDecorators(array(array('ViewScript', array('viewScript' => 'form/smart-block-criteria.phtml', "openOption" => $openSmartBlockOption, 'criteriasLength' => count($this->getCriteriaOptions()), 'poolCount' => $files['count'], 'modRowMap' => $modRowMap, 'showPoolCount' => $showPoolCount))));
 }
 public function getBlockInfoAction()
 {
     $request = $this->getRequest();
     $params = $request->getPost();
     $bl = new Application_Model_Block($params['id']);
     if ($bl->isStatic()) {
         $out = $bl->getContents();
         $out['isStatic'] = true;
     } else {
         $out = $bl->getCriteria();
         $out['isStatic'] = false;
     }
     $this->_helper->json->sendJson($out);
 }
Exemple #3
0
 public function getFileMetadataAction()
 {
     $id = $this->_getParam('id');
     $type = $this->_getParam('type');
     try {
         if ($type == "audioclip") {
             $file = Application_Model_StoredFile::Recall($id);
             $this->view->type = $type;
             $md = $file->getMetadata();
             foreach ($md as $key => $value) {
                 if ($key == 'MDATA_KEY_DIRECTORY') {
                     $musicDir = Application_Model_MusicDir::getDirByPK($value);
                     $md['MDATA_KEY_FILEPATH'] = Application_Common_OsPath::join($musicDir->getDirectory(), $md['MDATA_KEY_FILEPATH']);
                 }
             }
             $formatter = new SamplerateFormatter($md["MDATA_KEY_SAMPLERATE"]);
             $md["MDATA_KEY_SAMPLERATE"] = $formatter->format();
             $formatter = new BitrateFormatter($md["MDATA_KEY_BITRATE"]);
             $md["MDATA_KEY_BITRATE"] = $formatter->format();
             $formatter = new LengthFormatter($md["MDATA_KEY_DURATION"]);
             $md["MDATA_KEY_DURATION"] = $formatter->format();
             $this->view->md = $md;
         } elseif ($type == "playlist") {
             $file = new Application_Model_Playlist($id);
             $this->view->type = $type;
             $md = $file->getAllPLMetaData();
             $formatter = new LengthFormatter($md["dcterms:extent"]);
             $md["dcterms:extent"] = $formatter->format();
             $this->view->md = $md;
             $this->view->contents = $file->getContents();
         } elseif ($type == "block") {
             $block = new Application_Model_Block($id);
             $this->view->type = $type;
             $md = $block->getAllPLMetaData();
             $formatter = new LengthFormatter($md["dcterms:extent"]);
             $md["dcterms:extent"] = $formatter->format();
             $this->view->md = $md;
             if ($block->isStatic()) {
                 $this->view->blType = 'Static';
                 $this->view->contents = $block->getContents();
             } else {
                 $this->view->blType = 'Dynamic';
                 $this->view->contents = $block->getCriteria();
             }
             $this->view->block = $block;
         } elseif ($type == "stream") {
             $webstream = CcWebstreamQuery::create()->findPK($id);
             $ws = new Application_Model_Webstream($webstream);
             $md = $ws->getMetadata();
             $this->view->md = $md;
             $this->view->type = $type;
         }
     } catch (Exception $e) {
         Logging::info($e->getMessage());
     }
 }