og_test.module in Organic groups 7.2
Same filename and directory in other branches
Test module for OG.
File
tests/og_test.moduleView source
<?php
/**
* @file
* Test module for OG.
*/
/**
* Implements hook_menu().
*/
function og_test_menu() {
return array(
'og_test/my_content' => array(
'page callback' => 'og_test_my_content',
'access arguments' => array(
'access content',
),
'type' => MENU_CALLBACK,
),
);
}
/**
* Implements hook_node_presave().
*/
function og_test_node_presave($node) {
if (!empty($node->nid) && !empty($node->og_group_on_save)) {
$values = $node->og_group_on_save;
og_group($values['group_type'], $values['gid'], array(
'entity_type' => 'node',
'entity' => $node,
));
}
}
/**
* Implements hook_module_implements_alter().
*/
function og_test_module_implements_alter(&$implementations, $hook) {
if ($hook != 'entity_delete') {
return;
}
// Switch the orders of the implementations.
$og = $implementations['og'];
$og_test = $implementations['og_test'];
unset($implementations['og'], $implementations['og_test']);
$implementations['og_test'] = $og_test;
$implementations['og'] = $og;
}
/**
* Implements hook_entity_delete().
*/
function og_test_entity_delete($entity, $type) {
if (!og_is_group($type, $entity) || $entity->title != 'move') {
return;
}
// The children nodes of the deleted group need another group to be associated
// with. Using entity field query for getting the NID of another group.
$query = new EntityFieldQuery();
$result = $query
->entityCondition('entity_type', 'node')
->propertyCondition('nid', $entity->nid, '<>')
->execute();
if (empty($result['node'])) {
return;
}
$nids = array_keys($result['node']);
$nid = reset($nids);
$entity->og_orphans = array(
'move' => array(
'group_type' => 'node',
'gid' => $nid,
),
);
}
/**
* Page callback for displaying nodes for the current user.
*/
function og_test_my_content() {
global $user;
$nodes = node_load_multiple(array(), array(
'uid' => $user->uid,
));
$table = array(
'#theme' => 'table',
'#header' => array(
t('Title'),
t('Operations'),
),
'#rows' => array(),
);
foreach ($nodes as $node) {
$operations = array();
if (node_access('view', $node)) {
$operations['view'] = l(t('view'), 'node/' . $node->nid);
}
if (node_access('update', $node)) {
$operations['update'] = l(t('edit'), 'node/' . $node->nid . '/edit');
}
if (node_access('delete', $node)) {
$operations['delete'] = l(t('delete'), 'node/' . $node->nid . '/delete');
}
$table['#rows'][$node->nid] = array(
check_plain($node->title),
implode(' | ', $operations),
);
}
return $table;
}
/**
* Implements hook_form_alter().
*
* @see OgBehaviorHandlerTestCase::testSetStateOnInsert()
*/
function og_test_form_alter(&$form, $form_state) {
if (empty($form['#node_edit_form']) || $form['#bundle'] != 'behavior') {
return;
}
$form[OG_AUDIENCE_FIELD]['#element_validate'][] = 'og_test_form_behavior_validate';
}
/**
* Validate handler; Add state to the field values, if title is "state-pending".
. */
function og_test_form_behavior_validate($element, &$form_state) {
if ($form_state['values']['title'] != 'state-pending') {
return;
}
$value = $form_state['values'][OG_AUDIENCE_FIELD];
$value[LANGUAGE_NONE][0]['state'] = OG_STATE_PENDING;
form_set_value($element, $value, $form_state);
}
Functions
Name | Description |
---|---|
og_test_entity_delete | Implements hook_entity_delete(). |
og_test_form_alter | Implements hook_form_alter(). |
og_test_form_behavior_validate | Validate handler; Add state to the field values, if title is "state-pending". . |
og_test_menu | Implements hook_menu(). |
og_test_module_implements_alter | Implements hook_module_implements_alter(). |
og_test_my_content | Page callback for displaying nodes for the current user. |
og_test_node_presave | Implements hook_node_presave(). |