first draft of materio_contactops module : shows company taged materials for a user contactop

This commit is contained in:
Bachir Soussi Chiadmi 2017-07-25 22:32:52 +02:00
parent b9c809d2c7
commit 4b2ab455c9
4 changed files with 200 additions and 0 deletions

View File

@ -0,0 +1,23 @@
name = Materio Contact Operationels
description = "Materio Contact Operationels module"
; Core version (required)
core = 7.x
; Package name (see http://drupal.org/node/542202 for a list of names)
package = Materio
; PHP version requirement (optional)
; php = 5.2
; Loadable code files
; files[] = materio_ctools_automodal.module
; Module dependencies
; dependencies[] = user
; Configuration page
; configure = admin/config/materiobasemod
; For further information about configuration options, see
; - http://drupal.org/node/542202

View File

@ -0,0 +1,68 @@
<?php
/**
* Implements hook_init().
*/
// function materio_contactops_init() {
// drupal_add_js(drupal_get_path('module', 'materio_contactops').'/js/materio_contactops.js');
// }
/**
* Implements hook_permission().
*/
function materio_contactops_permission() {
$perms = array(
'view own company related materials' => array(
'title' => t('view own company related materials'),
'description' => t('view own company related materials'),
)
);
return $perms;
}
function materio_contactops_menu(){
$items = array();
$base = array(
);
$items['user/%user/materials'] = array(
'title' => t('Materials'),
'page callback' => 'materio_contactops_materials',
'page arguments' => array(1),
'access arguments' => array('view own company related materials'),
'type' => MENU_LOCAL_TASK,
'file' => 'materio_contactops.pages.inc',
);
return $items;
}
/**
* Implements hook_theme().
*/
function materio_contactops_theme($existing, $type, $theme, $path) {
return array(
'materio_contactops_materials' => array(
'template' => 'materio-contactops-materials',
'path' => drupal_get_path('module', 'materio_contactops').'/templates',
'arguments' => array(
'items' => array(),
'view_mode' => "teaser",
'pager' => NULL,
'count' => 0,
)
)
);
}
function template_preprocess_materio_contactops_materials(&$vars){
// dsm($vars, 'template_preprocess_materio_contactops_materials | vars');
// $vars['actualities_infos'] = t('Actualities by materiO\'');
$vars['materials_infos'] = t('');
}

View File

@ -0,0 +1,90 @@
<?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'),
));
}

View File

@ -0,0 +1,19 @@
<?php
// dsm($items, 'items');
?>
<section class="materiobase-contactops-materials">
<?php if($count): ?>
<p class="materials-infos"><?php print $materials_infos; ?></p>
<div class="actuality-items">
<?php $entity_view = entity_view('node', $items, $view_mode); ?>
<?php print render($entity_view); ?>
</div>
<div class="pager">
<?php print $pager; ?>
</div>
<?php else : ?>
<div class="materials-no-items">
<h2><?php print t('There is now materials for now.');?></h2>
</div>
<?php endif ;?>
</section>