perfart.pages.inc 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662
  1. <?php
  2. /**
  3. * perfart_get_dates()
  4. *
  5. */
  6. function perfart_get_dates($page = 0, $debug = false){
  7. // dsm($page, '$page');
  8. global $language;
  9. // dsm($language, '$language : '.$language->language);
  10. $query = new EffectuationEntityFieldQuery;
  11. $query
  12. ->range(PERFART_ELMTS_BY_PAGE*$page, PERFART_ELMTS_BY_PAGE);
  13. // ->pager(10, $page);
  14. // ->propertyOrderBy('created', 'DESC');
  15. $result = $query->execute();
  16. // dsm($result, '$result');
  17. $data = array();
  18. foreach ($result['node'] as $eff) {
  19. $eff = node_load($eff->nid);
  20. //$eff = entity_load('node', array($eff->nid), NULL, FALSE);
  21. // dsm($eff, '$eff');
  22. # dates
  23. if(!isset($eff->field_date_de_debut) || !isset($eff->field_performances))
  24. continue;
  25. $debut = $eff->field_date_de_debut['und'][0]['value'];
  26. //1969/06/06-18:00
  27. $pattern = '/^(\d{4})\/?(\d{2})?\/?(\d{2})?-?(\d{2})?:?+(\d{2})?$/';
  28. preg_match($pattern, $debut, $debutMatches);
  29. if(!isset($debutMatches[1]))
  30. continue;
  31. if(isset($eff->field_date_de_fin['und'])){
  32. $fin = $eff->field_date_de_fin['und'][0]['value'];
  33. preg_match($pattern, $fin, $finMatches);
  34. }else{
  35. $fin = false;
  36. }
  37. # lieu
  38. $lieu_values = field_get_items('node',$eff,'field_lieu');
  39. $lieu_values = $lieu_values ? $lieu_values : array();
  40. // dsm($lieu_values, '$lieu_values');
  41. $lieu = array();
  42. foreach ($lieu_values as $value) {
  43. $term = taxonomy_term_load($value['tid']);
  44. if(!$term) continue;
  45. $term = i18n_taxonomy_localize_terms($term);
  46. // dsm($term, '$term');
  47. $lieu[$term->tid] = array(
  48. 'tid' => $term->tid,
  49. 'name' => t($term->name),
  50. );
  51. }
  52. # topologie
  53. $topologie_values = field_get_items('node',$eff,'field_topologie');
  54. // dsm($topologie_values, '$topologie_values');
  55. $topologies = array();
  56. if($topologie_values){
  57. foreach ($topologie_values as $value) {
  58. $term = taxonomy_term_load($value['tid']);
  59. if(!$term) continue;
  60. $term = i18n_taxonomy_localize_terms($term);
  61. $topologies[$term->tid] = array(
  62. 'tid' => $term->tid,
  63. 'name' => $term->name,
  64. );
  65. }
  66. }
  67. $perfadded = array();
  68. foreach ($eff->field_performances['und'] as $perf) {
  69. if(in_array($perf['target_id'], $perfadded))
  70. continue;
  71. $perfadded[] = $perf['target_id'];
  72. $perf = node_load($perf['target_id']);
  73. // $perf = entity_load('node', array($perf['target_id']), NULL, FALSE);
  74. // dsm($perf, '$perf');
  75. $prefix = $language->language == 'fr' ? 'en/' : '';
  76. $date = array(
  77. "nid"=>$perf->nid,
  78. "filters" => array(),
  79. 'ajax_link'=> 'perfart/ajax/perf/'.$perf->nid,
  80. 'node_link'=> drupal_get_path_alias('node/'.$perf->nid, $language->language),
  81. 'node_translation'=> $prefix . drupal_get_path_alias('node/'.$perf->nid, $language->language == 'fr' ? 'en' : 'fr'),
  82. 'perf_title'=>$perf->title,
  83. 'language'=>$language,
  84. );
  85. #images
  86. if($images_values= field_get_items('node',$perf,'field_images')){
  87. //dsm($images_values, '$images_values');
  88. $image = theme('image_style', array(
  89. 'style_name'=>'timeline_thumbnail',
  90. 'path'=>$images_values[0]['uri'],
  91. ));
  92. //$content .= $image;
  93. // dsm($image, 'image');
  94. $date['thumb'] = $image;
  95. }
  96. # timeline content + concepteurs filter
  97. $content = '<div href="perfart/ajax/perf/'.$perf->nid.'" class="date" nid="'.$perf->nid.'" >';//thumb="'.$date['thumb'].'"
  98. $content .= '<div class="text-content">';
  99. $content .= '<h4>'.$perf->title.'</h4>';
  100. #concepteur
  101. $concepteurs_values= field_get_items('node',$perf,'field_concepteur');
  102. $personnes = array();
  103. if($concepteurs_values){
  104. $concepteurs = array();
  105. foreach ($concepteurs_values as $concepteur) {
  106. $concepteur_term = taxonomy_term_load($concepteur['tid']);
  107. if(!$concepteur_term) continue;
  108. // dsm($concepteur_term);
  109. $field_nom_values = field_get_items('taxonomy_term', $concepteur_term , 'field_nom');
  110. $field_prenom_values = field_get_items('taxonomy_term', $concepteur_term, 'field_prenom');
  111. $concepteurs[] = $concepteur_term->name;
  112. $personnes[$concepteur_term->tid] = array(
  113. "tid" => $concepteur_term->tid,
  114. "name" => $concepteur_term->name,
  115. "nom" => $field_nom_values[0]['value'],
  116. "prenom" => $field_prenom_values[0]['value'],
  117. );
  118. }
  119. $content .= '<h5>'.implode(', ', $concepteurs).'</h5>';
  120. }
  121. $content .= '</div>';
  122. ## close content link
  123. $content .= '</div>';
  124. # timeline array with dates
  125. $date += array(
  126. 'content'=> $content,
  127. 'start'=>array(
  128. 'year'=>$debutMatches[1],
  129. 'month'=>isset($debutMatches[2]) ? $debutMatches[2] : null,
  130. 'day'=>isset($debutMatches[3]) ? $debutMatches[3] : null,
  131. ),
  132. );
  133. if($fin && false) // deactivated end date because ranges cause display probleme on the timeline
  134. $date['end'] = array(
  135. 'year'=>isset($finMatches[1]) ? $finMatches[1] : null,
  136. 'month'=>isset($finMatches[2]) ? $finMatches[2] : null,
  137. 'day'=>isset($finMatches[3]) ? $finMatches[3] : null,
  138. );
  139. # filter organisateur
  140. $organisateur_values= field_get_items('node',$perf,'field_organisateur');
  141. // dsm($organisateur_values, 'org');
  142. if($organisateur_values){
  143. foreach ($organisateur_values as $personne) {
  144. $term = taxonomy_term_load($personne['tid']);
  145. if(!$term) continue;
  146. // dsm($term);
  147. $field_nom_values = field_get_items('taxonomy_term', $term , 'field_nom');
  148. $field_prenom_values = field_get_items('taxonomy_term', $term, 'field_prenom');
  149. $personnes[$term->tid] = array(
  150. "tid" => $term->tid,
  151. "name" => $term->name,
  152. "nom" => $field_nom_values[0]['value'],
  153. "prenom" => $field_prenom_values[0]['value'],
  154. );
  155. }
  156. }
  157. # filter participants
  158. $participants_values= field_get_items('node',$perf,'field_participant');
  159. // dsm(count($participants_values), 'part');
  160. if($participants_values){
  161. foreach ($participants_values as $personne) {
  162. $term = taxonomy_term_load($personne['tid']);
  163. if(!$term) continue;
  164. // dsm($term);
  165. $field_nom_values = field_get_items('taxonomy_term', $term , 'field_nom');
  166. $field_prenom_values = field_get_items('taxonomy_term', $term, 'field_prenom');
  167. $personnes[$term->tid] = array(
  168. "tid" => $term->tid,
  169. "name" => $term->name,
  170. "nom" => $field_nom_values[0]['value'],
  171. "prenom" => $field_prenom_values[0]['value'],
  172. );
  173. }
  174. }
  175. # filter topologie flag
  176. $date["filters"]['topologies'] = $topologies;
  177. # filter lieu flag
  178. $date['filters']['places'] = $lieu;
  179. # filter artistes
  180. $date['filters']['peoples'] = $personnes;
  181. $data[] = $date;
  182. }
  183. }
  184. // if($debug){
  185. // dsm($data, '$data');
  186. // return t('perfart_get_dates debug mode');
  187. // }else{
  188. drupal_json_output($data);
  189. // }
  190. }
  191. /**
  192. * perfart_get_perf()
  193. * home page classical (no-js)
  194. *
  195. */
  196. function perfart_get_performances(){
  197. // dsm($page, '$page');
  198. global $language;
  199. // dsm($language, '$language : '.$language->language);
  200. $limit = 100;//variable_get($viewmode.'_limite', '10');
  201. $offset = pager_find_page() * $limit;
  202. $query = new EffectuationEntityFieldQuery;
  203. $query
  204. ->range($offset,$limit);
  205. // ->pager(10, $page);
  206. // ->propertyOrderBy('created', 'DESC');
  207. $result = $query->execute();
  208. // dsm($result, '$result');
  209. $count_query = new EffectuationEntityFieldQuery;
  210. $count = $count_query->count()->execute();
  211. pager_default_initialize($count, $limit);
  212. $borne_date = null;
  213. foreach ($result['node'] as $eff) {
  214. $eff = node_load($eff->nid);
  215. //$eff = entity_load('node', array($eff->nid), NULL, FALSE);
  216. // dsm($eff, '$eff');
  217. # dates
  218. if(!isset($eff->field_date_de_debut) || !isset($eff->field_performances))
  219. continue;
  220. $debut = $eff->field_date_de_debut['und'][0]['value'];
  221. //1969/06/06-18:00
  222. $pattern = '/^(\d{4})\/?(\d{2})?\/?(\d{2})?-?(\d{2})?:?+(\d{2})?$/';
  223. preg_match($pattern, $debut, $debutMatches);
  224. if(!isset($debutMatches[1]))
  225. continue;
  226. if(isset($eff->field_date_de_fin['und'])){
  227. $fin = $eff->field_date_de_fin['und'][0]['value'];
  228. preg_match($pattern, $fin, $finMatches);
  229. }else{
  230. $fin = false;
  231. }
  232. $annee_splited = str_split($debutMatches[1]);
  233. $annee_dizaine = $annee_splited[0] . $annee_splited[1] . $annee_splited[2] . '0';
  234. if ($borne_date !== $annee_dizaine) {
  235. $borne_date = $annee_dizaine;
  236. $list['items'][] = array(
  237. 'data' => "<span class='date'>$borne_date</span>",
  238. 'class' => array('borne-date'),
  239. );
  240. }
  241. # lieu
  242. // $lieu_values = field_get_items('node',$eff,'field_lieu');
  243. // $lieu_values = $lieu_values ? $lieu_values : array();
  244. // // dsm($lieu_values, '$lieu_values');
  245. // $lieu = array();
  246. // foreach ($lieu_values as $value) {
  247. // $term = taxonomy_term_load($value['tid']);
  248. // $term = i18n_taxonomy_localize_terms($term);
  249. // // dsm($term, '$term');
  250. // $lieu[$term->tid] = array(
  251. // 'tid' => $term->tid,
  252. // 'name' => t($term->name),
  253. // );
  254. // }
  255. # topologie
  256. // $topologie_values = field_get_items('node',$eff,'field_topologie');
  257. // // dsm($topologie_values, '$topologie_values');
  258. // $topologies = array();
  259. // if($topologie_values){
  260. // foreach ($topologie_values as $value) {
  261. // $term = taxonomy_term_load($value['tid']);
  262. // $term = i18n_taxonomy_localize_terms($term);
  263. // $topologies[$term->tid] = array(
  264. // 'tid' => $term->tid,
  265. // 'name' => $term->name,
  266. // );
  267. // }
  268. // }
  269. $perfadded = array();
  270. foreach ($eff->field_performances['und'] as $perf) {
  271. if(in_array($perf['target_id'], $perfadded))
  272. continue;
  273. $item_classes = array();
  274. $perfadded[] = $perf['target_id'];
  275. $perf = node_load($perf['target_id']);
  276. // $perf = entity_load('node', array($perf['target_id']), NULL, FALSE);
  277. // dsm($perf, '$perf');
  278. // $prefix = $language->language == 'fr' ? 'en/' : '';
  279. // $date = array(
  280. // "nid"=>$perf->nid,
  281. // "filters" => array(),
  282. // 'ajax_link'=> 'perfart/ajax/perf/'.$perf->nid,
  283. // 'node_link'=> drupal_get_path_alias('node/'.$perf->nid, $language->language),
  284. // 'node_translation'=> $prefix . drupal_get_path_alias('node/'.$perf->nid, $language->language == 'fr' ? 'en' : 'fr'),
  285. // 'perf_title'=>$perf->title,
  286. // 'language'=>$language,
  287. // );
  288. $node_path = drupal_get_path_alias('node/'.$perf->nid, $language->language);
  289. $node_link = l($debutMatches[1] .' | '. $perf->title,$node_path, array('html'=>true));
  290. # timeline content + concepteurs filter
  291. $content = '<div class="date" nid="'.$perf->nid.'" >';
  292. // $content .= '<div class="text-content">';
  293. $content .= '<h4>'.$node_link.'</h4>';
  294. #concepteur
  295. $concepteurs_values= field_get_items('node',$perf,'field_concepteur');
  296. $personnes = array();
  297. if($concepteurs_values){
  298. $concepteurs = array();
  299. foreach ($concepteurs_values as $concepteur) {
  300. // $concepteur_term = taxonomy_term_load($concepteur['tid']);
  301. try {
  302. $concepteur_term = taxonomy_term_load($concepteur['tid']);
  303. } catch (Exception $e) {
  304. throw new Exception( 'taxonomy_term_load didn\'t', 0, $e);
  305. continue;
  306. }
  307. // dsm($concepteur_term);
  308. $concepteurs[] = $concepteur_term->name;
  309. // $personnes[$concepteur_term->tid] = array(
  310. // "tid" => $concepteur_term->tid,
  311. // "name" => $concepteur_term->name,
  312. // );
  313. }
  314. $content .= '<h5>'.implode(', ', $concepteurs).'</h5>';
  315. }
  316. #images
  317. if($images_values= field_get_items('node',$perf,'field_images')){
  318. //dsm($images_values, '$images_values');
  319. $image = theme('image_style', array(
  320. 'style_name'=>'home_no_js',
  321. 'path'=>$images_values[0]['uri'],
  322. ));
  323. //$content .= $image;
  324. // dsm($image, 'image');
  325. $date['thumb'] = l($image, $node_path, array('html'=>true));
  326. $content .= $date['thumb'];
  327. $item_classes[] = "with-image";
  328. }else{
  329. $item_classes[] = "without-image";
  330. }
  331. // $content .= '</div>';
  332. ## close content link
  333. $content .= '</div>';
  334. # timeline array with dates
  335. // $date += array(
  336. // 'content'=> $content,
  337. // 'start'=>array(
  338. // 'year'=>$debutMatches[1],
  339. // 'month'=>isset($debutMatches[2]) ? $debutMatches[2] : null,
  340. // 'day'=>isset($debutMatches[3]) ? $debutMatches[3] : null,
  341. // ),
  342. // );
  343. # filter organisateur
  344. // $organisateur_values= field_get_items('node',$perf,'field_organisateur');
  345. // // dsm($organisateur_values, 'org');
  346. // if($organisateur_values){
  347. // foreach ($organisateur_values as $personne) {
  348. // $term = taxonomy_term_load($personne['tid']);
  349. // // dsm($term);
  350. // $personnes[$term->tid] = array(
  351. // "tid" => $term->tid,
  352. // "name" => $term->name,
  353. // );
  354. // }
  355. // }
  356. # filter participants
  357. // $participants_values= field_get_items('node',$perf,'field_participant');
  358. // // dsm(count($participants_values), 'part');
  359. // if($participants_values){
  360. // foreach ($participants_values as $personne) {
  361. // $term = taxonomy_term_load($personne['tid']);
  362. // // dsm($term);
  363. // $personnes[$term->tid] = array(
  364. // "tid" => $term->tid,
  365. // "name" => $term->name,
  366. // );
  367. // }
  368. // }
  369. # filter topologie flag
  370. // $date["filters"]['topologies'] = $topologies;
  371. # filter lieu flag
  372. // $date['filters']['places'] = $lieu;
  373. # filter artistes
  374. // $date['filters']['peoples'] = $personnes;
  375. // pager_default_initialize($count, $limit);
  376. // $data[] = $date;
  377. $item = array(
  378. 'data' => $content,
  379. // 'attributes' => array(
  380. 'class' => $item_classes,
  381. // ),
  382. );
  383. $list['items'][] = $item;
  384. }
  385. }
  386. $list['attributes']['id'] = "home-performances-list";
  387. // dsm($data, '$data');
  388. return theme('item_list', $list) . theme('pager');
  389. }
  390. /**
  391. * perfart_search()
  392. * ajax search
  393. *
  394. */
  395. function perfart_search(){
  396. $keys = rawurldecode($_GET['keys']);
  397. $return = array('keys' => $keys);
  398. $module = 'node';
  399. if (!empty($module)) {
  400. $active_module_info = search_get_info();
  401. if (isset($active_module_info[$module])) {
  402. $info = $active_module_info[$module];
  403. }
  404. }
  405. $return['info'] = $info;
  406. // $results = search_data($keys, $info['module'], $conditions);
  407. if($results = search_data($keys, $info['module'])){
  408. foreach ($results['#results'] as $result) {
  409. $return['results'][] = $result['node']->nid;
  410. }
  411. }
  412. drupal_json_output($return);
  413. }
  414. /**
  415. * perfart_search_api()
  416. * ajax search_api
  417. *
  418. */
  419. function perfart_search_api(){
  420. $typed = rawurldecode($_GET['typed']);
  421. preg_match_all('/\s?[^\s]+\s?/', $typed, $words);
  422. // dsm($words, "words");
  423. foreach ($words[0] as $word) {
  424. // dsm($word);
  425. $word = trim($word);
  426. // $word = str_replace($match, $replace, $word);
  427. // dsm($word, 'word');
  428. $keys[] = $word;
  429. }
  430. // dsm($keys, 'keys');
  431. global $language;
  432. $return = array('keys' => $keys);
  433. $index_machine_name = $language->language == 'fr' ? 'performances_fr' : 'performance_en';
  434. $index = search_api_index_load($index_machine_name);
  435. if ($keys) {
  436. $query = search_api_query($index_machine_name, array('conjunction'=>'OR', 'parse mode'=>'direct'))->keys(implode(' ', $keys));
  437. $results = $query->execute();
  438. $return['results'] = $index->loadItems(array_keys($results['results']));
  439. }
  440. drupal_json_output($return);
  441. }
  442. /**
  443. * perfart_get_perf()
  444. * get one perf through ajax
  445. *
  446. */
  447. function perfart_get_perf($nid = false){
  448. if($nid){
  449. global $language;
  450. //dsm($language, 'language');
  451. $node = node_load($nid);
  452. // dsm($node, '$node');
  453. $node_view = node_view($node, "gridready", $language->language);
  454. // dsm($node_view, '$node_view');
  455. $response = array(
  456. "node_view"=>render($node_view),
  457. "nid"=>$nid,
  458. );
  459. // dsm($response, '$response');
  460. // return 'debug mode of perfart_get_perf()';
  461. drupal_json_output($response);
  462. }else{
  463. return false;
  464. }
  465. }
  466. /**
  467. *
  468. * perfart_get_home()
  469. *
  470. */
  471. function perfart_get_home(){
  472. $return = array();
  473. global $language;
  474. $return['language'] = $language;
  475. $front = node_view(node_load(1), 'full', $language->language);
  476. // dsm($front, 'front');
  477. $frontrendered = drupal_render($front);
  478. $return['front'] = $frontrendered;
  479. // dsm($frontrendered, '$frontrendered');
  480. // return 'debug mode of perfart_get_home()';
  481. drupal_json_output($return);
  482. }
  483. /**
  484. * DEV
  485. *
  486. */
  487. function perfart_update_cer($page = 0){
  488. $itemsbypage = 100;
  489. $query = new EntityFieldQuery;
  490. $query
  491. ->entityCondition('entity_type', 'node')
  492. ->entityCondition('bundle', array('performance'))
  493. ->fieldCondition('field_effectuations', 'target_id', 'NULL', '!=')
  494. ->range($page*$itemsbypage, $itemsbypage);
  495. // ->propertyCondition('status', 1)
  496. // ->pager(100, 1);
  497. // ->propertyOrderBy('created', 'DESC');
  498. $result = $query->execute();
  499. //
  500. $delta = 0;
  501. if(count($result['node'])){
  502. foreach ($result['node'] as $nid => $node) {
  503. $node = node_load($nid);
  504. // dsm($node);
  505. // // module_invoke_all('entity_update', $node, 'node');
  506. corresponding_entity_references_processing_entity('update', $node, 'node');
  507. // node_save($node);
  508. $delta++;
  509. }
  510. }
  511. // dsm($delta);
  512. return $delta." nodes where updated.";
  513. }
  514. function perfart_clear_effectuations_perf_ref($page = 0){
  515. $itemsbypage = 100;
  516. $query = new EntityFieldQuery;
  517. $query
  518. ->entityCondition('entity_type', 'node')
  519. ->entityCondition('bundle', array('effectuation'))
  520. ->fieldCondition('field_performances', 'target_id', 'NULL', '!=')
  521. ->range($page*$itemsbypage, $itemsbypage);
  522. // ->propertyCondition('status', 1)
  523. // ->pager(100, 1);
  524. // ->propertyOrderBy('created', 'DESC');
  525. $result = $query->execute();
  526. //
  527. $delta = 0;
  528. if(count($result['node'])){
  529. foreach ($result['node'] as $nid => $node) {
  530. $node = node_load($nid);
  531. // dsm($node);
  532. $node->field_performances = NULL;
  533. // // module_invoke_all('entity_update', $node, 'node');
  534. // corresponding_entity_references_processing_entity('update', $node, 'node');
  535. node_save($node);
  536. $delta++;
  537. }
  538. }
  539. // dsm($delta);
  540. return $delta." nodes where updated.";
  541. }