diff --git a/airtime_mvc/application/controllers/PlaylistController.php b/airtime_mvc/application/controllers/PlaylistController.php
index 9e3ea0380..d1dcd1386 100644
--- a/airtime_mvc/application/controllers/PlaylistController.php
+++ b/airtime_mvc/application/controllers/PlaylistController.php
@@ -64,7 +64,7 @@ class PlaylistController extends Zend_Controller_Action
unset($this->view->obj);
}
- private function createFullResponse($obj = null, $isJson = false)
+ private function createFullResponse($obj = null, $isJson = false, $formIsValid = false)
{
$isBlock = false;
$viewPath = 'playlist/playlist.phtml';
@@ -80,11 +80,12 @@ class PlaylistController extends Zend_Controller_Action
if ($isBlock) {
$form = new Application_Form_SmartBlockCriteria();
$form->removeDecorator('DtDdWrapper');
- $form->startForm($obj->getId());
-
+ $form->startForm($obj->getId(), $formIsValid);
+
$this->view->form = $form;
$this->view->obj = $obj;
$this->view->id = $obj->getId();
+
if ($isJson) {
return $this->view->render($viewPath);
} else {
@@ -460,7 +461,7 @@ class PlaylistController extends Zend_Controller_Action
$bl = new Application_Model_Block($params['obj_id']);
if ($form->isValid($params)) {
$bl->saveSmartBlockCriteria($params['data']);
- $result['html'] = $this->createFullResponse($bl, true);
+ $result['html'] = $this->createFullResponse($bl, true, true);
$result['result'] = 0;
} else {
$this->view->obj = $bl;
@@ -486,7 +487,7 @@ class PlaylistController extends Zend_Controller_Action
if ($form->isValid($params)) {
$result = $bl->generateSmartBlock($params['data']);
try {
- die(json_encode(array("result"=>0, "html"=>$this->createFullResponse($bl, true))));
+ die(json_encode(array("result"=>0, "html"=>$this->createFullResponse($bl, true, true))));
} catch (PlaylistNotFoundException $e) {
$this->playlistNotFound('block');
} catch (Exception $e) {
diff --git a/airtime_mvc/application/forms/SmartBlockCriteria.php b/airtime_mvc/application/forms/SmartBlockCriteria.php
index 8d2e9683d..bbc751593 100644
--- a/airtime_mvc/application/forms/SmartBlockCriteria.php
+++ b/airtime_mvc/application/forms/SmartBlockCriteria.php
@@ -88,7 +88,7 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm
}
- public function startForm($p_blockId)
+ public function startForm($p_blockId, $p_isValid = false)
{
// load type
$out = CcBlockQuery::create()->findPk($p_blockId);
@@ -236,7 +236,13 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm
//getting block content candidate count that meets criteria
$bl = new Application_Model_Block($p_blockId);
- $files = $bl->getListofFilesMeetCriteria();
+ if ($p_isValid) {
+ $files = $bl->getListofFilesMeetCriteria();
+ $showPoolCount = true;
+ } else {
+ $files = null;
+ $showPoolCount = false;
+ }
$generate = new Zend_Form_Element_Button('generate_button');
$generate->setAttrib('class', 'ui-button ui-state-default sp-button');
@@ -256,7 +262,8 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm
$this->setDecorators(array(
array('ViewScript', array('viewScript' => 'form/smart-block-criteria.phtml', "openOption"=> $openSmartBlockOption,
- 'criteriasLength' => count($this->criteriaOptions), 'poolCount' => $files['count'], 'modRowMap' => $modRowMap))
+ 'criteriasLength' => count($this->criteriaOptions), 'poolCount' => $files['count'], 'modRowMap' => $modRowMap,
+ 'showPoolCount' => $showPoolCount))
));
}
diff --git a/airtime_mvc/application/models/Block.php b/airtime_mvc/application/models/Block.php
index 005fc18f8..13b7396f9 100644
--- a/airtime_mvc/application/models/Block.php
+++ b/airtime_mvc/application/models/Block.php
@@ -1187,6 +1187,16 @@ EOT;
if (isset($criteria['extra'])) {
$spCriteriaExtra = $criteria['extra']*1000;
}
+ /*
+ * If user is searching for an exact match of length we need to
+ * search as if it starts with the specified length because the
+ * user only sees the rounded version (i.e. 4:02.7 is 4:02.761625
+ * in the database)
+ */
+ } else if ($spCriteria == 'length' && $spCriteriaModifier == "is") {
+ $spCriteriaModifier = "starts with";
+ $spCriteria = $spCriteria.'::text';
+ $spCriteriaValue = $criteria['value'];
} else {
/* Propel does not escape special characters properly when using LIKE/ILIKE
* We have to add extra slashes in these cases
@@ -1214,6 +1224,7 @@ EOT;
}
$spCriteriaModifier = self::$modifier2CriteriaMap[$spCriteriaModifier];
+
try {
if ($i > 0) {
$qry->addOr($spCriteria, $spCriteriaValue, $spCriteriaModifier);
diff --git a/airtime_mvc/application/views/scripts/form/smart-block-criteria.phtml b/airtime_mvc/application/views/scripts/form/smart-block-criteria.phtml
index 8bd96a93e..445832e2f 100644
--- a/airtime_mvc/application/views/scripts/form/smart-block-criteria.phtml
+++ b/airtime_mvc/application/views/scripts/form/smart-block-criteria.phtml
@@ -66,32 +66,35 @@
-