protected function build_tree_sections($id_parent, $depth = 0)
 {
     global $dbh;
     if ($this->parameters['max_depth'] == 0 || $depth < $this->parameters['max_depth']) {
         $items = $ids = $rows = array();
         $query = "select id_section,section_title from cms_sections where section_num_parent = " . $id_parent . " order by section_order asc";
         $result = pmb_mysql_query($query, $dbh);
         if (pmb_mysql_num_rows($result)) {
             while ($row = pmb_mysql_fetch_object($result)) {
                 $ids[] = $row->id_section;
                 $rows[] = $row;
             }
             $ids = $this->filter_datas("sections", $ids);
             foreach ($rows as $row) {
                 if (in_array($row->id_section, $ids)) {
                     $section = cms_provider::get_instance("section", $row->id_section);
                     $item = array('id' => $row->id_section, 'title' => $row->section_title, 'link' => $this->get_constructed_link("section", $row->id_section), 'details' => $section->format_datas(false, false));
                     $sub_query = "select count(id_section) from cms_sections where section_num_parent = " . $row->id_section;
                     $sub_result = pmb_mysql_query($sub_query, $dbh);
                     if (pmb_mysql_num_rows($result) && pmb_mysql_result($sub_result, 0, 0) > 0) {
                         $item['children'] = $this->build_tree_sections($row->id_section, $depth + 1);
                     }
                     $items[] = $item;
                 }
             }
         }
     }
     return $items;
 }
 public function get_datas()
 {
     //on commence par récupérer l'identifiant retourné par le sélecteur...
     $selector = $this->get_selected_selector();
     if ($selector) {
         $section_id = $selector->get_value();
         $section_ids = $this->filter_datas("sections", array($section_id));
         if ($section_ids[0]) {
             $group_metadatas = parent::get_group_metadatas();
             $datas = array();
             $section = cms_provider::get_instance("section", $section_ids[0]);
             $datas = $section->format_datas();
             $datas["details"] = $datas;
             $datas = array_merge($datas, parent::get_datas());
             $datas['link'] = $this->get_constructed_link("section", $section_ids[0]);
             $datas['logo_url'] = $datas["logo"]["big"];
             foreach ($group_metadatas as $i => $metadatas) {
                 if (is_array($metadatas["metadatas"])) {
                     foreach ($metadatas["metadatas"] as $key => $value) {
                         try {
                             $group_metadatas[$i]["metadatas"][$key] = H2o::parseString($value)->render($datas);
                         } catch (Exception $e) {
                         }
                     }
                 }
             }
             return $group_metadatas;
         }
     }
     return false;
 }
 public function render($ids)
 {
     $datas = array();
     for ($i = 0; $i < count($ids); $i++) {
         $section = cms_provider::get_instance("section", $ids[$i]);
         $infos = $section->format_datas(false, false);
         $infos['link'] = $this->get_constructed_link("section", $infos['id']);
         $datas[] = $infos;
     }
     return parent::render(array('records' => $datas));
 }
 public function render($ids)
 {
     $datas = array();
     $datas['records'] = array();
     for ($i = 0; $i < count($ids); $i++) {
         $article = cms_provider::get_instance("article", $ids[$i]);
         $infos = $article->format_datas();
         $infos['link'] = $this->get_constructed_link("article", $infos['id']);
         $datas['records'][] = $infos;
     }
     return parent::render($datas);
 }
 public function get_datas()
 {
     //on commence par récupérer l'identifiant retourné par le sélecteur...
     $selector = $this->get_selected_selector();
     if ($selector) {
         $article_ids = $this->filter_datas("articles", array($selector->get_value()));
         if ($article_ids[0]) {
             $article = cms_provider::get_instance("article", $article_ids[0]);
             return $article->format_datas();
         }
     }
     return false;
 }
 public function render($datas)
 {
     global $opac_url_base;
     $render_datas = array();
     $render_datas['sections'] = array();
     $render_datas['home'] = array('title' => $this->msg['home'], 'link' => $opac_url_base);
     foreach ($datas as $section) {
         $cms_section = cms_provider::get_instance("section", $section);
         $infos = $cms_section->format_datas(false, false);
         $infos['link'] = $this->get_constructed_link("section", $section);
         $render_datas['sections'][] = $infos;
     }
     //on rappelle le tout...
     return parent::render($render_datas);
 }
 public function get_datas()
 {
     //on commence par récupérer l'identifiant retourné par le sélecteur...
     $selector = $this->get_selected_selector();
     if ($selector) {
         $section_id = $selector->get_value();
         $section_ids = $this->filter_datas("sections", array($section_id));
         if ($section_ids[0]) {
             $section = cms_provider::get_instance("section", $section_ids[0]);
             $return = $section->format_datas(true, true, true, true);
             return $return;
         }
     }
     return false;
 }
 public function render($datas)
 {
     //on rajoute nos éléments...
     //le titre
     $render_datas = array();
     $render_datas['title'] = "Liste d'articles";
     $render_datas['articles'] = array();
     if (is_array($datas)) {
         foreach ($datas as $article) {
             $cms_article = cms_provider::get_instance("article", $article);
             $infos = $cms_article->format_datas();
             $infos['link'] = $this->get_constructed_link("article", $article);
             $render_datas['articles'][] = $infos;
         }
     }
     //on rappelle le tout...
     return parent::render($render_datas);
 }
 public function render($datas)
 {
     //on rajoute nos éléments...
     //le titre
     $render_datas = array();
     $render_datas['title'] = "Liste de rubriques";
     $render_datas['sections'] = array();
     if (is_array($datas) && count($datas)) {
         foreach ($datas as $section) {
             $cms_section = cms_provider::get_instance("section", $section);
             $infos = $cms_section->format_datas(true, true, true, true);
             $infos['link'] = $this->get_constructed_link("section", $section);
             foreach ($infos['articles'] as $i => $article) {
                 $infos['articles'][$i]['link'] = $this->get_constructed_link("article", $article["id"]);
             }
             $render_datas['sections'][] = $infos;
         }
     }
     //on rappelle le tout...
     return parent::render($render_datas);
 }
 public function format_datas()
 {
     if ($this->formated_datas === null) {
         $this->formated_datas = array();
         $parent = cms_provider::get_instance("section", $this->num_parent);
         $documents = array();
         foreach ($this->documents_linked as $id_doc) {
             $document = new cms_document($id_doc);
             $documents[] = $document->format_datas();
         }
         $this->formated_datas = array('id' => $this->id, 'parent' => $parent->format_datas(false, false), 'title' => $this->title, 'resume' => $this->resume, 'logo' => $this->logo->format_datas(), 'publication_state' => $this->publication_state, 'start_date' => format_date($this->start_date), 'end_date' => format_date($this->end_date), 'descriptors' => $this->descriptors, 'content' => $this->contenu, 'type' => $this->type_content, 'fields_type' => $this->fields_type, 'create_date' => $this->create_date, 'documents' => $documents, 'nb_documents' => count($documents), 'last_update_date' => format_date($this->last_update_date));
     }
     return $this->formated_datas;
 }
Example #11
0
 public function get_articles($filter)
 {
     global $dbh;
     if ($filter && $this->articles['filter'] === null || !$filter && $this->articles['full'] === null) {
         $articles = array();
         if ($this->id) {
             $query = "select id_article from cms_articles JOIN cms_editorial_publications_states ON article_publication_state=id_publication_state where num_section = " . $this->id;
             if ($filter) {
                 $query .= " and ((article_start_date != 0 and to_days(article_start_date)<=to_days(now()) and to_days(article_end_date)>=to_days(now()))||(article_start_date != 0 and article_end_date =0 and to_days(article_start_date)<=to_days(now()))||(article_start_date=0 and article_end_date=0)||(article_start_date = 0 and to_days(article_end_date)>=to_days(now()))) and (editorial_publication_state_opac_show=1" . (!$_SESSION['id_empr_session'] ? " and editorial_publication_state_auth_opac_show = 0" : "") . ") ";
             }
             $query .= " order by article_order";
             $result = pmb_mysql_query($query, $dbh);
             if (pmb_mysql_num_rows($result)) {
                 while ($row = pmb_mysql_fetch_object($result)) {
                     $article = cms_provider::get_instance("article", $row->id_article);
                     //new cms_article($row->id_article);
                     $articles[] = $article->format_datas();
                 }
             }
             if ($filter) {
                 $this->articles['filter'] = $articles;
             } else {
                 $this->articles['full'] = $articles;
             }
         }
     }
     if ($filter) {
         return $this->articles['filter'];
     } else {
         return $this->articles['full'];
     }
 }
 public function get_datas()
 {
     $datas = array();
     $selector = $this->get_selected_selector();
     switch ($this->parameters['selector']) {
         //devrait être le seul survivant...
         case "cms_module_agenda_selector_calendars":
             if ($selector) {
                 $calendars = array();
                 $query = "select managed_module_box from cms_managed_modules join cms_cadres on id_cadre = " . $this->cadre_parent . " and cadre_object = managed_module_name";
                 $result = pmb_mysql_query($query);
                 $events = array();
                 if (pmb_mysql_num_rows($result)) {
                     $box = pmb_mysql_result($result, 0, 0);
                     $infos = unserialize($box);
                     $calendars = $selector->get_value();
                     foreach ($calendars as $calendar) {
                         $elem = $infos['module']['calendars'][$calendar];
                         $query = "select id_article from cms_articles where article_num_type = " . $elem['type'];
                         $result = pmb_mysql_query($query);
                         if ($result && pmb_mysql_num_rows($result)) {
                             $articles = array();
                             while ($row = pmb_mysql_fetch_object($result)) {
                                 $articles[] = $row->id_article;
                             }
                             $articles = $this->filter_datas("articles", $articles);
                             foreach ($articles as $article) {
                                 $art = cms_provider::get_instance("article", $article);
                                 $event = $art->format_datas();
                                 foreach ($event['fields_type'] as $field) {
                                     if ($field['id'] == $elem['start_date']) {
                                         $event['event_start'] = $field['values'][0];
                                         $event['event_start']['time'] = mktime(0, 0, 0, substr($field['values'][0]['value'], 5, 2), substr($field['values'][0]['value'], 8, 2), substr($field['values'][0]['value'], 0, 4));
                                     }
                                     if ($field['id'] == $elem['end_date']) {
                                         $event['event_end'] = $field['values'][0];
                                         $event['event_end']['time'] = mktime(0, 0, 0, substr($field['values'][0]['value'], 5, 2), substr($field['values'][0]['value'], 8, 2), substr($field['values'][0]['value'], 0, 4));
                                     }
                                 }
                                 $event['id_type'] = $elem['type'];
                                 $event['color'] = $elem['color'];
                                 $event['calendar'] = $elem['name'];
                                 $events[] = $event;
                             }
                         }
                     }
                 }
                 usort($events, array($this, "sort_event"));
                 return array('events' => $events);
             }
             break;
         case "cms_module_common_selector_env_var":
             if ($selector) {
                 $art = cms_provider::get_instance("article", $selector->get_value());
                 $event = $art->format_datas();
                 //allons chercher les infos du calendrier associé à cet évènement
                 $query = "select managed_module_box from cms_managed_modules join cms_cadres on id_cadre = " . $this->cadre_parent . " and cadre_object = managed_module_name";
                 $result = pmb_mysql_query($query);
                 if (pmb_mysql_num_rows($result)) {
                     $box = pmb_mysql_result($result, 0, 0);
                     $infos = unserialize($box);
                     foreach ($infos['module']['calendars'] as $calendar) {
                         if ($calendar['type'] == $art->num_type) {
                             foreach ($event['fields_type'] as $field) {
                                 if ($field['id'] == $calendar['start_date']) {
                                     $event['event_start'] = $field['values'][0];
                                     $event['event_start']['time'] = mktime(0, 0, 0, substr($field['values'][0]['value'], 5, 2), substr($field['values'][0]['value'], 8, 2), substr($field['values'][0]['value'], 0, 4));
                                 }
                                 if ($field['id'] == $calendar['end_date']) {
                                     $event['event_end'] = $field['values'][0];
                                     $event['event_end']['time'] = mktime(0, 0, 0, substr($field['values'][0]['value'], 5, 2), substr($field['values'][0]['value'], 8, 2), substr($field['values'][0]['value'], 0, 4));
                                 }
                             }
                             $event['id_type'] = $calendar['type'];
                             $event['color'] = $calendar['color'];
                             $event['calendar'] = $calendar['name'];
                             break;
                         }
                     }
                 }
                 return $event;
             }
             break;
         case "cms_module_agenda_selector_calendars_date":
             if ($selector) {
                 $query = "select managed_module_box from cms_managed_modules join cms_cadres on id_cadre = " . $this->cadre_parent . " and cadre_object = managed_module_name";
                 $result = pmb_mysql_query($query);
                 if (pmb_mysql_num_rows($result)) {
                     $box = pmb_mysql_result($result, 0, 0);
                     $infos = unserialize($box);
                     $datas = $selector->get_value();
                     $time = mktime(0, 0, 0, substr($datas['date'], 5, 2), substr($datas['date'], 8, 2), substr($datas['date'], 0, 4));
                     foreach ($datas['calendars'] as $calendar) {
                         $elem = $infos['module']['calendars'][$calendar];
                         $query = "select id_article from cms_articles where article_num_type = " . $elem['type'];
                         $result = pmb_mysql_query($query);
                         if (pmb_mysql_num_rows($result)) {
                             $articles = array();
                             while ($row = pmb_mysql_fetch_object($result)) {
                                 $articles[] = $row->id_article;
                             }
                             $articles = $this->filter_datas("articles", $articles);
                             if (is_array($articles)) {
                                 foreach ($articles as $article) {
                                     $art = cms_provider::get_instance("article", $article);
                                     $event = $art->format_datas();
                                     foreach ($event['fields_type'] as $field) {
                                         if ($field['id'] == $elem['start_date']) {
                                             $event['event_start'] = $field['values'][0];
                                             $event['event_start']['time'] = mktime(0, 0, 0, substr($field['values'][0]['value'], 5, 2), substr($field['values'][0]['value'], 8, 2), substr($field['values'][0]['value'], 0, 4));
                                         }
                                         if ($field['id'] == $elem['end_date']) {
                                             $event['event_end'] = $field['values'][0];
                                             $event['event_end']['time'] = mktime(0, 0, 0, substr($field['values'][0]['value'], 5, 2), substr($field['values'][0]['value'], 8, 2), substr($field['values'][0]['value'], 0, 4));
                                         }
                                     }
                                     $event['id_type'] = $elem['type'];
                                     $event['color'] = $elem['color'];
                                     $event['calendar'] = $elem['name'];
                                     if ($event['event_start']['time'] >= $time || $event['event_start'] && $event['event_end'] && $event['event_end']['time'] >= $time) {
                                         $events[] = $event;
                                     }
                                 }
                             }
                         }
                     }
                 }
                 usort($events, array($this, "sort_event"));
                 return array('events' => $events);
             }
             break;
     }
 }