View source
#!/usr/bin/env php
<?php
$cmd = 'index.php';
$_SERVER['HTTP_HOST'] = 'default';
$_SERVER['PHP_SELF'] = '/index.php';
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
$_SERVER['SERVER_SOFTWARE'] = NULL;
$_SERVER['REQUEST_METHOD'] = 'GET';
$_SERVER['QUERY_STRING'] = '';
$_SERVER['PHP_SELF'] = $_SERVER['REQUEST_URI'] = '/';
$_SERVER['HTTP_USER_AGENT'] = 'console';
$modules_to_enable = array(
'og',
'user',
'node',
);
include_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
include_once './modules/system/system.admin.inc';
$form = system_modules();
foreach ($modules_to_enable as $module) {
$form_state['values']['status'][$module] = TRUE;
}
$form_state['values']['disabled_modules'] = $form['disabled_modules'];
system_modules_submit(NULL, $form_state);
unset($form_state);
drupal_cron_run();
module_load_include('inc', 'node', 'content_types');
$form_state = array(
'values' => array(),
);
$form_state['values']['name'] = 'test-group';
$form_state['values']['type'] = 'test_group';
$form_state['values']['og_content_type_usage'] = 'group';
drupal_execute('node_type_form', $form_state);
$form_state = array(
'values' => array(),
);
$form_state['values']['name'] = 'test-post-group';
$form_state['values']['type'] = 'test_post_group';
$form_state['values']['og_content_type_usage'] = 'group_post_standard';
drupal_execute('node_type_form', $form_state);
$user_ids = array();
foreach (range(3, 7) as $i) {
$user_values = array();
$user_values['name'] = 'og_test_user' . $i;
$user_values['mail'] = 'og_test_user' . $i . '@example.com';
$user_values['pass'] = user_password(5);
$user_values['status'] = 1;
$user = user_save(NULL, $user_values);
$user_ids[$i] = $user->uid;
}
interface ogContent {
public function groupList($user_ids);
public function postList($user_ids, $groups);
public function groupActions($user_ids, $groups, $posts);
}
class ogGroupNoPosts implements ogContent {
public function groupList($user_ids) {
$list = array();
$list[] = array(
'title' => 'group-without-posts',
'uid' => $user_ids[3],
'body' => 'group without posts',
'og_description' => 'description group without posts.',
);
return $list;
}
public function postList($user_ids, $groups) {
return array();
}
public function groupActions($user_ids, $groups, $posts) {
}
}
class ogGroupThreePosts implements ogContent {
public function groupList($user_ids) {
$list = array();
$list[] = array(
'title' => 'group-with-3-posts',
'uid' => $user_ids[3],
'body' => 'group with 3 posts',
'og_description' => 'description group with 3 posts.',
);
return $list;
}
public function postList($user_ids, $groups) {
$gid = $groups[0];
$list = array();
foreach (array(
1,
2,
3,
) as $itr) {
$list[] = array(
'title' => 'group-posts-' . $itr,
'uid' => $user_ids[3],
'body' => 'group posts ' . $itr,
'og_groups' => array(
$gid,
),
);
}
return $list;
}
public function groupActions($user_ids, $groups, $posts) {
}
}
class ogGroupOrphanPost implements ogContent {
public function groupList($user_ids) {
return array();
}
public function postList($user_ids, $groups) {
$list = array();
$list[] = array(
'title' => 'group-posts-orphan',
'uid' => $user_ids[3],
'body' => 'group posts orphan',
'og_groups' => array(),
);
return $list;
}
public function groupActions($user_ids, $groups, $posts) {
}
}
class ogGroupPostMultipleGroups implements ogContent {
public function groupList($user_ids) {
$list = array();
$list['alpha'] = array(
'title' => 'group-alpha',
'uid' => $user_ids[3],
'body' => 'group alpha',
'og_description' => 'description group alpha.',
);
$list['beta'] = array(
'title' => 'group-beta',
'uid' => $user_ids[3],
'body' => 'group beta',
'og_description' => 'description group beta.',
);
return $list;
}
public function postList($user_ids, $groups) {
$list = array();
$gid_b = $groups['beta'];
$gid_a = $groups['alpha'];
$list[] = array(
'title' => 'group-posts-ab',
'uid' => $user_ids[3],
'body' => 'group posts ab',
'og_groups' => array(
$gid_a,
$gid_b,
),
);
return $list;
}
public function groupActions($user_ids, $groups, $posts) {
}
}
class ogGroupUserAction implements ogContent {
public function groupList($user_ids) {
$list = array();
$list[] = array(
'title' => 'group-with-user-action',
'uid' => $user_ids[3],
'body' => 'group with user action',
'og_description' => 'description with user action.',
);
return $list;
}
public function postList($user_ids, $groups) {
return array();
}
public function groupActions($user_ids, $groups, $posts) {
$gid = $groups[0];
og_save_subscription($gid, $user_ids[4], array(
'is_active' => 0,
));
og_save_subscription($gid, $user_ids[5], array(
'is_active' => 1,
));
og_save_subscription($gid, $user_ids[6], array(
'is_active' => 0,
'is_admin' => 1,
));
og_save_subscription($gid, $user_ids[7], array(
'is_active' => 1,
'is_admin' => 1,
));
}
}
class ogGroupSelectiveState implements ogContent {
public function groupList($user_ids) {
$list = array();
foreach (og_selective_map() as $key => $value) {
$list[] = array(
'title' => 'group-selective-state-' . $value,
'uid' => $user_ids[3],
'body' => 'Group with selective state set to ' . $value,
'og_description' => 'Group with selective state set.',
);
}
return $list;
}
public function postList($user_ids, $groups) {
return array();
}
public function groupActions($user_ids, $groups, $posts) {
}
}
$og_content_config = array();
$og_content_config[] = new ogGroupNoPosts();
$og_content_config[] = new ogGroupThreePosts();
$og_content_config[] = new ogGroupOrphanPost();
$og_content_config[] = new ogGroupPostMultipleGroups();
$og_content_config[] = new ogGroupUserAction();
$og_content_config[] = new ogGroupSelectiveState();
foreach ($og_content_config as $content_config) {
$groups = array_map('og_group_node', $content_config
->groupList($user_ids));
$posts = array_map('og_post_node', $content_config
->postList($user_ids, $groups));
$content_config
->groupActions($user_ids, $groups, $posts);
}
function og_group_node($values = array()) {
$node = (object) $values;
$node->type = 'test_group';
node_save($node);
return $node->nid;
}
function og_post_node($values = array()) {
$node = (object) $values;
$node->type = 'test_post_group';
node_save($node);
return $node->nid;
}