PageRenderTime 52ms CodeModel.GetById 23ms RepoModel.GetById 0ms app.codeStats 0ms

/lib/model/MmPeer.php

http://pumukit.googlecode.com/
PHP | 308 lines | 134 code | 31 blank | 143 comment | 5 complexity | 52b1bfc26d7dde16574b502801bda689 MD5 | raw file
Possible License(s): LGPL-2.1
  1. <?php
  2. /**
  3. * MmPeer (class)
  4. *
  5. * Subclase para generar consultas y actualizaciones
  6. * sobre la tabla 'mm', sobre la tabla de Objetos
  7. * multimedia
  8. *
  9. * @author Ruben Gonzalez Gonzalez
  10. * @author rubenrua@uvigo.es
  11. * @copyright Copyright (c) Universidad de Vigo
  12. * @version 1
  13. *
  14. * @package lib.model
  15. */
  16. class MmPeer extends BaseMmPeer
  17. {
  18. /**
  19. *
  20. * Diferentes valores para estado
  21. *
  22. */
  23. const STATUS_NORMAL = 0;
  24. const STATUS_BLOQ = 1;
  25. /**
  26. * Optimizacion de doSect para evitar la hifratacion
  27. *
  28. * @access public
  29. * @return array
  30. */
  31. public static function doList(Criteria $criteria, $culture = null)
  32. {
  33. $serials = array();
  34. // Clonamos el objeto, para evitar modificar el objeto original
  35. $criteria = clone $criteria;
  36. // Eliminanos las columnas de selecci?n en caso de que esten definidas
  37. $criteria->clearSelectColumns();
  38. // Agregamos las columnas de las tablas que queremos recuperar
  39. $criteria->addSelectColumn(self::ID );
  40. $criteria->addSelectColumn(self::STATUS_ID);
  41. $criteria->addSelectColumn(self::ANNOUNCE );
  42. $criteria->addSelectColumn(PicPeer::URL );
  43. $criteria->addSelectColumn(MmI18nPeer::TITLE );
  44. $criteria->addSelectColumn(self::PUBLICDATE );
  45. $criteria->addSelectColumn(self::RECORDDATE );
  46. // Agregamos los Joins entre las distintas tablas
  47. $criteria->addJoin(self::ID, MmI18nPeer::ID, Criteria::LEFT_JOIN );
  48. $criteria->addJoin(self::ID, PicMmPeer::OTHER_ID, Criteria::LEFT_JOIN );
  49. $criteria->addJoin(PicMmPeer::PIC_ID, PicPeer::ID, Criteria::LEFT_JOIN );
  50. $criteria->add(SerialI18nPeer::CULTURE, $culture );
  51. $criteria->addGroupByColumn(MmPeer::ID);
  52. //Recuperamos los registros y generamos el arreglo de hashes
  53. $rs = self::doSelectRS($criteria);
  54. while ($rs->next())
  55. {
  56. $serial['id'] = $rs->getInt(1);
  57. $serial['status'] = $rs->getInt(2);
  58. $serial['announce'] = $rs->getBoolean(3);
  59. $serial['pic_url'] = ($rs->getString(4)?$rs->getString(4):'/images/sin_foto.jpg');
  60. $serial['title'] = $rs->getString(5);
  61. $serial['publicdate'] = date('d/m/Y', strtotime($rs->getTimestamp(6)));
  62. $serial['recorddate'] = date('d/m/Y', strtotime($rs->getTimestamp(7)));
  63. $serials[] = $serial;
  64. }
  65. return $serials;
  66. }
  67. /**
  68. * Devuelve un lista de los videos
  69. * mas vistos. (ResultSet of Video)
  70. *
  71. *
  72. * @access public
  73. * @param string $culture
  74. * @param integer $dias define el periodo para realizar la busqueda de mas vistos
  75. * @param int $cuantos numero de video
  76. * @return int numero de Video
  77. *
  78. * @internal falta CULTURE.
  79. */
  80. //UPDATE 15 OJO15 poner mas visto en PubChannelPeer
  81. static public function masVistos($culture, $dias = 0, $cuantos = 3)
  82. {
  83. $c = new Criteria();
  84. $c->addJoin(PubChannelMmPeer::MM_ID, MmPeer::ID);
  85. $c->add(PubChannelMmPeer::PUB_CHANNEL_ID, 1);
  86. $c->add(PubChannelMmPeer::STATUS_ID, 1);
  87. $c->add(MmPeer::STATUS_ID, 0);
  88. $c->addJoin(MmPeer::BROADCAST_ID, BroadcastPeer::ID);
  89. $c->addJoin(BroadcastPeer::BROADCAST_TYPE_ID, BroadcastTypePeer::ID);
  90. $c->add(BroadcastTypePeer::NAME, array('pub', 'cor'), Criteria::IN);
  91. $c->setDistinct(true);
  92. $c->addJOIN(FilePeer::ID, LogFilePeer::FILE_ID);
  93. $c->addJOIN(FilePeer::MM_ID, MmPeer::ID );
  94. $c->addGroupByColumn(LogFilePeer::FILE_ID);
  95. $c->addAsColumn('count', 'count('. LogFilePeer::CREATED_AT .')');
  96. $c->addDescendingOrderByColumn('count');
  97. if($cuantos != 0) $c->setLimit($cuantos);
  98. if($dias != 0) $c->add(LogFilePeer::CREATED_AT,LogFilePeer::CREATED_AT . " >= DATE_SUB(CURDATE(),INTERVAL ".(int)$dias." DAY)", Criteria::CUSTOM);
  99. return MmPeer::doSelectWithI18n($c, $culture);
  100. }
  101. /**
  102. * Crea nuevo Obeto multimedia inicializando valores
  103. *
  104. * Observaciones no se comprueba que serial_id exist
  105. * @access public
  106. * @return Mm
  107. */
  108. static public function createNew($serial_id)
  109. {
  110. $mm_template = MmTemplatePeer::get($serial_id);
  111. $mm = new Mm();
  112. $mm->setSerialId($serial_id);
  113. //METADATOS
  114. $mm->setPublicdate($mm_template->getPublicdate());
  115. $mm->setRecorddate($mm_template->getRecorddate());
  116. $mm->setSubserial($mm_template->getSubserial());
  117. $mm->setCopyright($mm_template->getCopyright());
  118. $mm->setPrecinctId($mm_template->getPrecinctId());
  119. $mm->setGenreId($mm_template->getGenreId());
  120. $mm->setBroadcastId($mm_template->getBroadcastId());
  121. $langs = sfConfig::get('app_lang_array', array('es'));
  122. foreach($langs as $lang){
  123. $mm->setCulture($lang);
  124. $mm_template->setCulture($lang);
  125. $mm->setTitle($mm_template->getTitle());
  126. $mm->setSubtitle($mm_template->getSubtitle());
  127. $mm->setKeyword($mm_template->getKeyword());
  128. $mm->setDescription($mm_template->getDescription());
  129. $mm->setLine2($mm_template->getLine2());
  130. $mm->setSubserialTitle($mm_template->getSubserialTitle());
  131. }
  132. $mm->save();
  133. //GROUNDS
  134. $grounds = $mm_template->getGrounds();
  135. foreach($grounds as $g){
  136. $mm->setGroundId($g->getId());
  137. }
  138. //PERSONAS
  139. $roles = RolePeer::doSelect(new Criteria());
  140. foreach($roles as $r){
  141. $persons = $mm_template->getPersons($r->getId());
  142. foreach($persons as $p){
  143. $aux = new MmPerson();
  144. $aux->setMmId($mm->getId());
  145. $aux->setRoleId($r->getId());
  146. $aux->setPersonId($p->getId());
  147. try{
  148. $aux->save();
  149. }catch(Exception $e){
  150. }
  151. }
  152. }
  153. return $mm;
  154. }
  155. /**
  156. * Cuenta los objetos multimedia publicos, es decir,
  157. * con su estado mayor que 1
  158. *
  159. * @access public
  160. * @return integer
  161. */
  162. //UPDATE 15
  163. //static public function doCountPublic($dates = null)
  164. //{
  165. // $c = new Criteria();
  166. //
  167. // if($dates != null){
  168. // $c->add(MmPeer::PUBLICDATE, date("Y-m-01", $dates["end"]), Criteria::LESS_THAN);
  169. // $c->addAnd(MmPeer::PUBLICDATE, date("Y-m-01", $dates["ini"]), Criteria::GREATER_THAN);
  170. // }
  171. //
  172. // $c->add(MmPeer::STATUS_ID, 1, Criteria::GREATER_THAN);
  173. //
  174. // return MmPeer::doCount($c, true);
  175. //}
  176. /**
  177. * Modifica criteria para que realice un filtrado en funcion de la
  178. * cadena search.
  179. *
  180. * @access public
  181. * @param Criteria object.
  182. * @parem String search
  183. */
  184. //UPDATE 15
  185. //public static function addSeachCriteria(Criteria $c, $search, $culture)
  186. //{
  187. // //falta string split.
  188. // $crit0 = $c->getNewCriterion(MmI18nPeer::TITLE, '%' . $search. '%', Criteria::LIKE);
  189. // $crit1 = $c->getNewCriterion(PersonPeer::NAME, '%' . $search. '%', Criteria::LIKE);
  190. // $crit2 = $c->getNewCriterion(MmI18nPeer::KEYWORD, '%' . $search. '%', Criteria::LIKE);
  191. //
  192. // $crit0->addOr($crit1)->addOr($crit2);
  193. //
  194. // $display0 = $c->getNewCriterion(RolePeer::DISPLAY, true);
  195. // $display1 = $c->getNewCriterion(RolePeer::DISPLAY, null, Criteria::ISNULL);
  196. // $display0->addOr($display1);
  197. //
  198. // $crit0->addAnd($display0);
  199. // $c->add($crit0);
  200. //
  201. // $c->add(MmI18nPeer::CULTURE, $culture);
  202. // $c->add(SerialI18nPeer::CULTURE, $culture);
  203. // $c->addJoin(SerialPeer::ID, MmPeer::SERIAL_ID);
  204. // $c->addJoin(SerialPeer::ID, SerialI18nPeer::ID);
  205. // $c->addJoin(MmPeer::ID, MmI18nPeer::ID);
  206. // $c->addJoin(MmPeer::ID, MmPersonPeer::MM_ID, Criteria::LEFT_JOIN);
  207. // $c->addJoin(MmPersonPeer::PERSON_ID, PersonPeer::ID, Criteria::LEFT_JOIN);
  208. // $c->addJoin(MmPersonPeer::ROLE_ID, RolePeer::ID, Criteria::LEFT_JOIN);
  209. //
  210. // $c->add(MmPeer::STATUS_ID, 1, Criteria::GREATER_THAN);
  211. //
  212. // $c->setDistinct(true);
  213. //}
  214. /**
  215. * Modifica criteria para que realice la busqueda en objetos multimedia no ocultos.
  216. *
  217. * @access public
  218. * @param Criteria object.
  219. */
  220. public static function addPublicCriteria(Criteria $c)
  221. {
  222. $c->add(MmPeer::STATUS_ID, 0);
  223. }
  224. /**
  225. * Modifica criteria para que realice la busqueda en objetos multimedia no ocultos.
  226. *
  227. * @access public
  228. * @param Criteria object.
  229. */
  230. public static function addBroadcastCriteria(Criteria $c, $credentials = array('pub', 'cor'))
  231. {
  232. $c->addJoin(MmPeer::BROADCAST_ID, BroadcastPeer::ID);
  233. $c->addJoin(BroadcastPeer::BROADCAST_TYPE_ID, BroadcastTypePeer::ID);
  234. $c->add(BroadcastTypePeer::NAME, $credentials, Criteria::IN);
  235. $c->setDistinct(true);
  236. }
  237. /**
  238. * Devuelve un ResulSet de objetos Serial, que no estan ocultos y son publicos.
  239. *
  240. * @access public
  241. * @param Criteria object.
  242. * @param string $culture
  243. * @param array $credentials
  244. */
  245. public function doSelectPublicWithI18n(Criteria $c, $culture = null, $credentials = array('pub', 'cor'))
  246. {
  247. self::addBroadcastCriteria($c, $credentials);
  248. self::addPublicCriteria($c);
  249. $c->setDistinct(true);
  250. return self::doSelectWithI18n($c, $culture);
  251. }
  252. /**
  253. * Devuelve un objeto Mm que possea la url dada como parametro de entrada
  254. *
  255. * @access public
  256. * @param string $url
  257. * @param string $culture
  258. */
  259. public function retrieveByUrl($url, $culture = null)
  260. {
  261. $c = new Criteria();
  262. $c->add(FilePeer::URL, '%'. $url, Criteria::LIKE);
  263. $c->addJoin(MmPeer::ID, FilePeer::MM_ID);
  264. return MmPeer::doSelectOne($c);
  265. }
  266. /**
  267. *
  268. */
  269. public static function addPubChannelCriteria(Criteria $c, $pub_channel)
  270. {
  271. $c->addJoin(PubChannelMmPeer::MM_ID, MmPeer::ID);
  272. $c->addJoin(PubChannelMmPeer::PUB_CHANNEL_ID, PubChannelPeer::ID);
  273. $c->add(PubChannelPeer::NAME, $pub_channel, is_int($pub_channel)?null:Criteria::IN);
  274. $c->add(MmPeer::STATUS_ID, MmPeer::STATUS_NORMAL);
  275. $c->setDistinct(true);
  276. }
  277. }