PageRenderTime 33ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/apps/editar/modules/serials/actions/components.class.php

http://pumukit.googlecode.com/
PHP | 174 lines | 131 code | 30 blank | 13 comment | 31 complexity | 030a1eff076011d55e11c07687e7b823 MD5 | raw file
Possible License(s): LGPL-2.1
  1. <?php
  2. /**
  3. * serials components.
  4. *
  5. * @package fin
  6. * @subpackage serials
  7. * @author Your name here
  8. * @version SVN: $Id: components.class.php 2692 2006-11-15 21:03:55Z fabien $
  9. */
  10. class serialsComponents extends sfComponents
  11. {
  12. /**
  13. * Executes index component
  14. *
  15. */
  16. public function executePreview()
  17. {
  18. if ($this->getUser()->hasAttribute('id', 'tv_admin/serial'))
  19. {
  20. $this->serial = SerialPeer::retrieveByPk($this->getUser()->getAttribute('id', null, 'tv_admin/serial'));
  21. }
  22. }
  23. public function executeList()
  24. {
  25. $limit = 11;
  26. $offset = 0;
  27. $c = new Criteria();
  28. $this->processSort($c);
  29. $this->processFilters($c);
  30. $cTotal = clone $c;
  31. if ($this->hasRequestParameter('page'))
  32. {
  33. $this->getUser()->setAttribute('page', $this->getRequestParameter('page'), 'tv_admin/serial');
  34. }
  35. if ($this->getUser()->hasAttribute('page', 'tv_admin/serial') )
  36. {
  37. $this->page = $this->getUser()->getAttribute('page', null, 'tv_admin/serial');
  38. $offset = ($this->page - 1) * $limit;
  39. $c->setLimit($limit);
  40. $c->setOffset($offset);
  41. }
  42. $this->total_serial_all = SerialPeer::doCount(new Criteria());
  43. $this->total_serial = SerialPeer::doCount($cTotal);
  44. $this->total = ceil($this->total_serial / $limit);
  45. if ($this->total < $this->page)
  46. {
  47. $this->getUser()->setAttribute('page',1);
  48. $this->page = 1;
  49. $c->setOffset(0);
  50. }
  51. $this->serials = SerialPeer::doList($c, $this->getUser()->getCulture());
  52. //$this->serials = SerialPeer::doSelectWithI18n($c, $this->getUser()->getCulture());
  53. }
  54. public function executeEdit()
  55. {
  56. if ($this->getUser()->hasAttribute('id', 'tv_admin/serial'))
  57. {
  58. $this->serial = SerialPeer::retrieveByPk($this->getUser()->getAttribute('id', null, 'tv_admin/serial'));
  59. }
  60. $this->langs = sfConfig::get('app_lang_array', array('es'));
  61. }
  62. protected function processFilters(Criteria $c)
  63. {
  64. $c->setDistinct(true);
  65. if ($this->getRequest()->hasParameter('filter')){
  66. $filters = $this->getRequestParameter('filters');
  67. $this->getUser()->getAttributeHolder()->removeNamespace('tv_admin/serial/filters');
  68. $this->getUser()->getAttributeHolder()->add($filters, 'tv_admin/serial/filters');
  69. }
  70. $filters = $this->getUser()->getAttributeHolder()->getAll('tv_admin/serial/filters');
  71. if (isset($filters['title']) && $filters['title'] !== ''){
  72. $c->addJoin(SerialPeer::ID, SerialI18nPeer::ID);
  73. $c->add(SerialI18nPeer::TITLE, '%' . $filters['title']. '%', Criteria::LIKE);
  74. $c->add(SerialI18nPeer::CULTURE, $this->getUser()->getCulture());
  75. }
  76. if (isset($filters['person']) && $filters['person'] !== ''){
  77. $c->addJoin(SerialPeer::ID, MmPeer::SERIAL_ID);
  78. $c->addJoin(MmPeer::ID, MmPersonPeer::MM_ID);
  79. $c->addJoin(PersonPeer::ID, MmPersonPeer::PERSON_ID);
  80. $c->add(PersonPeer::NAME, '%' . $filters['person']. '%', Criteria::LIKE);
  81. $c->setDistinct(true);
  82. }
  83. if (isset($filters['place']) && $filters['place'] != 0){
  84. $c->addJoin(SerialPeer::ID, MmPeer::SERIAL_ID);
  85. $c->addJoin(MmPeer::PRECINCT_ID, PrecinctPeer::ID);
  86. $c->add(PrecinctPeer::PLACE_ID, $filters['place']);
  87. }
  88. if (isset($filters['serialtype'])){
  89. $c->add(SerialPeer::SERIAL_TYPE_ID, array_keys($filters['serialtype']), Criteria::IN);
  90. }
  91. if (isset($filters['announce']) && ($filters['announce'] === 'true' || $filters['announce'] === 'false')){
  92. $c->add(SerialPeer::ANNOUNCE, $filters['announce'] === 'true');
  93. }
  94. if (isset($filters['status'])&&($filters['status'] != 'diff')){
  95. $c->addJoin(SerialPeer::ID, MmPeer::SERIAL_ID);
  96. $c->add(MmPeer::STATUS_ID, $filters['status']);
  97. }
  98. if (isset($filters['broadcast'])){
  99. $c->addJoin(SerialPeer::ID, MmPeer::SERIAL_ID);
  100. $c->add(MmPeer::BROADCAST_ID, array_keys($filters['broadcast']), Criteria::IN);
  101. }
  102. if (isset($filters['date'])){
  103. if (isset($filters['date']['from']) && $filters['date']['from'] !== ''){
  104. list($d, $m, $y) = sfI18N::getDateForCulture($filters['date']['from'], $this->getUser()->getCulture());
  105. $criterion = $c->getNewCriterion(MmPeer::RECORDDATE, "$y-$m-$d", Criteria::GREATER_EQUAL);
  106. }
  107. if (isset($filters['date']['to']) && $filters['date']['to'] !== ''){
  108. if (isset($criterion)){
  109. list($d, $m, $y) = sfI18N::getDateForCulture($filters['date']['to'], $this->getUser()->getCulture());
  110. $criterion->addAnd($c->getNewCriterion(MmPeer::RECORDDATE, "$y-$m-$d", Criteria::LESS_EQUAL));
  111. }else{
  112. list($d, $m, $y) = sfI18N::getDateForCulture($filters['date']['to'], $this->getUser()->getCulture());
  113. $criterion = $c->getNewCriterion(MmPeer::RECORDDATE, "$y-$m-$d", Criteria::LESS_EQUAL);
  114. }
  115. }
  116. if (isset($criterion)){
  117. $c->add($criterion);
  118. $c->addJoin(SerialPeer::ID, MmPeer::SERIAL_ID);
  119. }
  120. }
  121. }
  122. protected function processSort(Criteria $c)
  123. {
  124. if ($this->getRequestParameter('sort')){
  125. $this->getUser()->setAttribute('sort', $this->getRequestParameter('sort'), 'tv_admin/serial');
  126. $this->getUser()->setAttribute('type', $this->getRequestParameter('type', 'asc'), 'tv_admin/serial');
  127. }
  128. if ($sort_column = $this->getUser()->getAttribute('sort', null, 'tv_admin/serial')){
  129. try{
  130. $sort_column = SerialPeer::translateFieldName($sort_column, BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_COLNAME);
  131. }catch(Exception $e){
  132. try{
  133. $sort_column = SerialI18nPeer::translateFieldName($sort_column, BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_COLNAME);
  134. }catch(Exception $e){
  135. }
  136. }
  137. if ($this->getUser()->getAttribute('type', 'asc', 'tv_admin/serial') == 'asc'){
  138. $c->addAscendingOrderByColumn($sort_column);
  139. }else{
  140. $c->addDescendingOrderByColumn($sort_column);
  141. }
  142. }
  143. }
  144. }