/apps/tv/modules/library/actions/actions.class.php

https://github.com/campusdomar/PuMuKIT1 · PHP · 185 lines · 98 code · 50 blank · 37 comment · 12 complexity · 7328f8267635a9f40918423992e54d7f MD5 · raw file

  1. <?php
  2. /**
  3. * library actions.
  4. *
  5. * @package fin
  6. * @subpackage library
  7. * @author Your name here
  8. * @version SVN: $Id: actions.class.php 2692 2006-11-15 21:03:55Z fabien $
  9. */
  10. class libraryActions extends sfActions
  11. {
  12. public function preExecute()
  13. {
  14. //FIXME
  15. $this->getUser()->panNivelDos('Todos', 'library/index');
  16. $this->forward404If(($this->getRequestParameter('broadcast') == 'pri') && (!$this->getUser()->hasCredential('pri')));
  17. $this->more = '?';
  18. $this->more .= ($this->hasRequestParameter('search'))?"search=" . $this->getRequestParameter('search') . "&":"";
  19. $this->more .= ($this->hasRequestParameter('broadcast'))?"broadcast=" . $this->getRequestParameter('broadcast'):"";
  20. }
  21. public function executeIndex()
  22. {
  23. $this->forward('library', 'channel');
  24. }
  25. /**
  26. * Channel, ordena las series por canal
  27. *
  28. */
  29. public function executeChannel()
  30. {
  31. $serials_org = $this->getSerials();
  32. $channels = SerialTypePeer::doSelectWithI18n( new Criteria(), $this->getUser()->getCulture());
  33. $serials = array();
  34. //de la A a la Z
  35. foreach($channels as $c){
  36. $f_str = 'return $a->getSerialTypeId() == ' . $c->getId() . ';';
  37. $f = create_function('$a', $f_str);
  38. $temp = array_filter($serials_org, $f);
  39. if (count($temp) != 0) {
  40. $serials[$c->getName()] = $temp;
  41. }
  42. }
  43. $this->serials = $serials;
  44. $this->setTemplate('index');
  45. }
  46. /**
  47. * ABC, ordena las series alfabeticamente
  48. *
  49. */
  50. public function executeAbc()
  51. {
  52. $serials_org = $this->getSerials();
  53. $ord = $this->getAbc();
  54. $serials = array();
  55. //de la A a la Z
  56. foreach($ord as $o){
  57. $f_str = 'return strtoupper(substr($a->getTitle(), 0, 1)) == \''. $o .'\';';
  58. $f = create_function('$a', $f_str);
  59. $temp = array_filter($serials_org, $f);
  60. if (count($temp) != 0) {
  61. $serials[$o] = $temp;
  62. }
  63. }
  64. //otros
  65. $f_str = 'return ereg("^[^a-zA-Z]", $a->getTitle());';
  66. $f = create_function('$a', $f_str);
  67. $temp = array_filter($serials_org, $f);
  68. if (count($temp) != 0) {
  69. $serials['#'] = $temp;
  70. }
  71. $this->serials = $serials;
  72. $this->setTemplate('index');
  73. }
  74. /**
  75. * DATE, ordena las series por fecha
  76. *
  77. */
  78. public function executeDate()
  79. {
  80. $serials_org = $this->getSerials();
  81. $resultset = $this->getDates();
  82. $serials = array();
  83. while($resultset->next()) {
  84. setlocale(LC_ALL, $this->getUser()->getCulture().'_ES.UTF8');
  85. $date = strftime("%m-%Y", $resultset->getDate('date', null));
  86. $f_str = 'return $a->getPublicDate("%m-%Y") == \''. $date .'\';';
  87. $f = create_function('$a', $f_str);
  88. $temp = array_filter($serials_org, $f);
  89. if (count($temp) != 0) {
  90. $serials[strftime("%B-%Y", $resultset->getDate('date', null))] = $temp;
  91. }
  92. }
  93. $this->serials = $serials;
  94. $this->setTemplate('index');
  95. }
  96. /**
  97. * Devuleve un ResultSet con las iniciales de los titulos de las series en la cultura adecuada
  98. *
  99. */
  100. protected function getAbc(){
  101. return array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q',
  102. 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z');
  103. }
  104. /**
  105. * Devuleve un ResultSet con las fechas de las series
  106. *
  107. */
  108. protected function getDates(){
  109. //foreach
  110. $conexion = Propel::getConnection();
  111. $consulta = 'SELECT DISTINCT DATE_FORMAT(%s, "%%Y-%%m-01") AS date FROM %s ORDER BY %s DESC';
  112. $consulta = sprintf($consulta, SerialPeer::PUBLICDATE, SerialPeer::TABLE_NAME, SerialPeer::PUBLICDATE );
  113. $sentencia = $conexion->prepareStatement($consulta);
  114. return $sentencia->executeQuery();
  115. }
  116. /**
  117. * Devuelve un ResultSet con las fechas de las series
  118. *
  119. */
  120. protected function getSerials(){
  121. $c = new Criteria();
  122. $c->setDistinct(true);
  123. $c->addAscendingOrderByColumn(SerialI18nPeer::TITLE);
  124. SerialPeer::addPubChannelCriteria($c, 1);
  125. if($this->hasRequestParameter('broadcast')){
  126. SerialPeer::addBroadcastCriteria($c, array($this->getRequestParameter('broadcast', 'pub')));
  127. }else{
  128. SerialPeer::addBroadcastCriteria($c, array('pub', 'cor'));
  129. }
  130. if ($this->hasRequestParameter('search')){
  131. SerialPeer::addSeachCriteria($c, $this->getRequestParameter('search'), $this->getUser()->getCulture());
  132. }
  133. return SerialPeer::doSelectWithI18n($c);
  134. }
  135. }