|
@@ -90,7 +90,7 @@ function materio_contactops_materials($current_user){
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
-function materio_contactops_export(){
|
|
|
|
|
|
+function materio_companies_export(){
|
|
// get materials taged with this company
|
|
// get materials taged with this company
|
|
$query = new EntityFieldQuery;
|
|
$query = new EntityFieldQuery;
|
|
$query
|
|
$query
|
|
@@ -204,3 +204,95 @@ function materio_contactops_export(){
|
|
endforeach;
|
|
endforeach;
|
|
print $rows;
|
|
print $rows;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+function materio_contactops_export(){
|
|
|
|
+ $role = user_role_load_by_name('Contact opérationnel');
|
|
|
|
+ $uids = db_select('users_roles', 'ur')
|
|
|
|
+ ->fields('ur', array('uid'))
|
|
|
|
+ ->condition('ur.rid', $role->rid, '=')
|
|
|
|
+ ->execute()
|
|
|
|
+ ->fetchCol();
|
|
|
|
+ // dsm($uids, "uids");
|
|
|
|
+ $users = user_load_multiple($uids);
|
|
|
|
+ // dsm($users, "users");
|
|
|
|
+
|
|
|
|
+ $companies_material_cache = array();
|
|
|
|
+ $items = [];
|
|
|
|
+ $headers = ['company', 'mail', 'materials'];
|
|
|
|
+ foreach ($users as $uid => $user) {
|
|
|
|
+ // $item = [];
|
|
|
|
+ // TODO: get company from
|
|
|
|
+ $company_tid = $user->field_company['und'][0]['tid'];
|
|
|
|
+ $company = taxonomy_term_load($company_tid);
|
|
|
|
+
|
|
|
|
+ // avoid users withour company
|
|
|
|
+ if(!isset($company->name)){
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // if(count($items) < 1){
|
|
|
|
+ // dsm($user, "user");
|
|
|
|
+ // dsm($company, "company");
|
|
|
|
+ // }
|
|
|
|
+
|
|
|
|
+ if(!isset($companies_material_cache[$company->name])){
|
|
|
|
+ // get all materials tagued with this company terme
|
|
|
|
+ $materials_query = new EntityFieldQuery;
|
|
|
|
+ $materials_query
|
|
|
|
+ ->entityCondition('entity_type', 'node')
|
|
|
|
+ ->propertyCondition('status', 1)
|
|
|
|
+ ->entityCondition('bundle', array('materiau'))
|
|
|
|
+ ->fieldCondition('field_company_fab', 'tid', $company_tid, '=')
|
|
|
|
+ ->propertyOrderBy('created', 'DESC');
|
|
|
|
+ $materials_result = $materials_query->execute();
|
|
|
|
+ //
|
|
|
|
+ $materials_array = [];
|
|
|
|
+ //
|
|
|
|
+ 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));
|
|
|
|
+
|
|
|
|
+ foreach ($materials as $mnid => $mn) {
|
|
|
|
+ $name = trim($mn->title_field['fr'][0]['value']);
|
|
|
|
+ $ref = trim($mn->field_reference_materio['und'][0]['value']);
|
|
|
|
+ $materials_array[] = $name." (".$ref.")";
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ $companies_material_cache[$company->name] = implode(",", $materials_array);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ $item = array(
|
|
|
|
+ "company" => $company->name,
|
|
|
|
+ "mail" => $user->mail,
|
|
|
|
+ "materials" => $companies_material_cache[$company->name]
|
|
|
|
+ );
|
|
|
|
+
|
|
|
|
+ $items[] = $item;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // Obtient une liste de colonnes
|
|
|
|
+ foreach ($items as $key => $row) {
|
|
|
|
+ $company_col[$key] = $row['company'];
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // Trie les données par company croissant
|
|
|
|
+ // Ajoute $items en tant que dernier paramètre, pour trier par la clé commune
|
|
|
|
+ array_multisort($company_col, SORT_ASC, $items);
|
|
|
|
+
|
|
|
|
+ // dsm($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;
|
|
|
|
+}
|