123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206 |
- <?php
- function materio_contactops_materials($current_user){
- // dsm($current_user, 'current_user');
- global $language;
- global $user;
- // dsm($user, 'user');
- // get user company tag
- $company_tid = $current_user->field_company['und'][0]['tid'];
- // dsm($company_tid,'company_tid');
- # retrieve viewmode and then use it to define the query range
- $viewmode = isset($user->data['materiosearchapi_viewmode'])
- ? $user->data['materiosearchapi_viewmode']
- : variable_get('defaultviewmode', 'full');
- $limit = variable_get($viewmode.'_limite', '10');
- // dsm($limit, "limit");
- $offset = pager_find_page() * $limit; //$page*$limit;//
- // dsm($offset, "offset");
- // get materials taged with this company
- $query = new EntityFieldQuery;
- $query
- ->entityCondition('entity_type', 'node')
- ->propertyCondition('status', 1)
- ->entityCondition('bundle', array('materiau'))
- // ->fieldCondition('field_company_distrib', 'tid', $company_tid, '=')
- ->fieldCondition('field_company_fab', 'tid', $company_tid, '=')
- ->propertyOrderBy('created', 'DESC')
- ->range($offset,$limit);
- $result = $query->execute();
- // dsm($result, '$result');
- foreach ($result['node'] as $nid => $n) {
- $items[] = node_load($nid);
- }
- $count_query = new EntityFieldQuery;
- $count_query
- ->entityCondition('entity_type', 'node')
- ->propertyCondition('status', 1)
- ->entityCondition('bundle', array('materiau'))
- // ->fieldCondition('field_company_distrib', 'tid', $company_tid, '=')
- ->fieldCondition('field_company_fab', 'tid', $company_tid, '=');
- // dsm($count, 'count');
- $count = $count_query->count()->execute();
- $query = new EntityFieldQuery;
- $query
- ->entityCondition('entity_type', 'node')
- ->propertyCondition('status', 1)
- ->entityCondition('bundle', array('materiau'))
- ->fieldCondition('field_company_distrib', 'tid', $company_tid, '=')
- // ->fieldCondition('field_company_fab', 'tid', $company_tid, '=')
- ->propertyOrderBy('created', 'DESC')
- ->range($offset,$limit);
- $result = $query->execute();
- // dsm($result, '$result');
- foreach ($result['node'] as $nid => $n) {
- $items[] = node_load($nid);
- }
- $count_query = new EntityFieldQuery;
- $count_query
- ->entityCondition('entity_type', 'node')
- ->propertyCondition('status', 1)
- ->entityCondition('bundle', array('materiau'))
- // ->fieldCondition('field_company_distrib', 'tid', $company_tid, '=')
- ->fieldCondition('field_company_fab', 'tid', $company_tid, '=');
- // dsm($count, 'count');
- $count += $count_query->count()->execute();
- pager_default_initialize($count, $limit);
- drupal_set_title(t(''));
- return theme('materio_contactops_materials', array(
- 'items' => $items,
- 'view_mode' => $viewmode,
- 'count' => $count,
- 'pager' => theme('pager'),
- ));
- }
- function materio_contactops_export(){
- // get materials taged with this company
- $query = new EntityFieldQuery;
- $query
- ->entityCondition('entity_type', 'node')
- ->propertyCondition('status', 1)
- ->entityCondition('bundle', array('company'))
- ->propertyOrderBy('title', 'ASC');
- $result = $query->execute();
- // dsm($result, '$result');
- $headers = array("name", "email", "materials");
- // $k=1;
- $items = [];
- if(isset($result['node'])){
- $companies = $result['node'];
- // At first we need to get field's id.
- // If you already know field id, you can ommit this step
- // Get all fields attached to a given node type
- $company_fields = field_info_instances('node', 'company');
- // dsm($company_fields, 'fields');
- $materiau_fields = field_info_instances('node', 'materiau');
- // dsm($materiau_fields, 'fields');
- // Attach a field of selected id only to get value for it
- $field_tode_company_id = $company_fields['field_tode_company']['field_id'];
- field_attach_load('node', $companies, FIELD_LOAD_CURRENT, array('field_id' => $field_tode_company_id));
- $field_public_email_id = $company_fields['field_public_email']['field_id'];
- field_attach_load('node', $companies, FIELD_LOAD_CURRENT, array('field_id' => $field_public_email_id));
- $title_field_materio_id = $materiau_fields['title_field']['field_id'];
- $field_reference_materio_id = $materiau_fields['field_reference_materio']['field_id'];
- // dsm($companies, "companies");
- foreach ($companies as $comp_nid => $company) {
- // if($k)
- // dsm($company, "company");
- // title
- $title = db_query('SELECT title FROM {node} WHERE nid = :nid', array(':nid' => $comp_nid))->fetchField();
- // if($k)
- // dsm($title, "title");
- $item = array(trim($title));
- // emails
- $email = $company->field_public_email['und'][0]["email"];
- $item[] = trim($email);
- // get the company taxo terme (tode)
- $tid = $company->field_tode_company['und'][0]['tid'];
- // dsm($tid, "tid");
- // get all materials tagued with this terme
- $materials_query = new EntityFieldQuery;
- $materials_query
- ->entityCondition('entity_type', 'node')
- ->propertyCondition('status', 1)
- ->entityCondition('bundle', array('materiau'))
- ->fieldCondition('field_company_fab', 'tid', $tid, '=')
- ->propertyOrderBy('created', 'DESC');
- $materials_result = $materials_query->execute();
- // if($k)
- // dsm($materials_result , 'materials_result');
- if(isset($materials_result['node'])){
- $materials = $materials_result['node'];
- field_attach_load('node', $materials, FIELD_LOAD_CURRENT, array('field_id' => $title_field_materio_id));
- field_attach_load('node', $materials, FIELD_LOAD_CURRENT, array('field_id' => $field_reference_materio_id));
- $materials_output = [];
- // $m=1;
- foreach ($materials as $mnid => $mn) {
- // if($k && $m)
- // dsm($mn, "materiau");
- $name = trim($mn->title_field['fr'][0]['value']);
- $ref = trim($mn->field_reference_materio['und'][0]['value']);
- // if($k && $m){
- // dsm($name, "name");
- // dsm($ref, "ref");
- // }
- $materials_output[] = $name." (".$ref.")";
- // $m=0;
- }
- // if($k)
- // dsm($materials_output, 'materials_output');
- $item[] = implode(",", $materials_output);
- }
- // record the csv line
- $items[] = $item;
- // $k=0;
- }
- // dsm($items, "items");
- }
- // drupal_set_title("Companies export");
- drupal_add_http_header('Content-Type', 'text/csv; utf-8');
- drupal_add_http_header('Content-Disposition', 'attachment;filename=materio_companies.csv');
- $separator=";";
- $rows = implode($separator, $headers) . "\r\n";
- foreach ($items as $count => $item_row):
- $rows .= implode($separator, $item_row) . "\r\n";
- endforeach;
- print $rows;
- }
|