Hi,
I made a Drupal 7 module (my first one) to generate a league table based on fixtures.
The league table will be a block with a settings page, where you can select the league you need.
Problem is, I will need different blocks with all their own settings.
Eg in the configuration page of the module I will select 'league 1' and then all fixtures of league 1 will be looked at and a league table will be generated.
I installed the Multiblock, and I can create multiple instances.. but under Configuration, I only see one settings page.
I want to have a settings page per instance I've created..
So I will have a settings page with league 1 for instance of module block league 1.. another one for league 2..
This is my code in my .module page
<?php
/**
* Implements hook_help.
*
* Displays help and module information.
*
* @param path
* Which path of the site we're using to display help
* @param arg
* Array that holds the current path as returned from arg() function
*/
function league_table_help($path, $arg) {
switch ($path) {
case "admin/help#league_table":
return '
'. t("Display league standings, please select your league under configuration") .'
';
break;
}
}
/**
* Implements hook_block_info().
*/
function league_table_block_info() {
$blocks['league_table'] = array(
'info' => t('League table'), //The name that will appear in the block list.
'cache' => DRUPAL_NO_CACHE,
'mb_enabled' => TRUE, //Default
);
return $blocks;
}
/**
* Custom content function.
*
* Set beginning and end dates, retrieve posts from database
* saved in that time period.
*
* @return
* A result set of the targeted posts.
*/
function league_table_contents(){
//Use Database API to retrieve current posts.
}
/**
* Implements hook_block_view().
*
* Prepares the contents of the block.
*/
function league_table_block_view($delta = '') {
switch($delta){
case 'league_table':
$win = 3;
$tie = 1;
$loss = 0;
$teams = array();
$block['subject'] = t('League table');
$query = db_select('node', 'n');
$query->join('field_data_field_home_team', 'ht', 'n.nid = ht.entity_id');
$query->join('node', 'm', 'm.nid = ht.field_home_team_nid');
$query->join('field_data_field_score_home_team', 'hts', 'n.nid = hts.entity_id');
$query->join('field_data_field_home_team_goal_difference','htgd','n.nid = htgd.entity_id');
$query->join('field_data_field_score_visiting_team', 'vts', 'n.nid = vts.entity_id');
$query->addField('ht','field_home_team_nid');
$query->addField('m','title');
$query->addField('hts','field_score_home_team_value');
$query->addField('htgd','field_home_team_goal_difference_value');
$query->addField('vts','field_score_visiting_team_value');
$result = $query->execute();
$i=0;
foreach ($result as $row) {
// Do something with $row.
$team = $row->title;
$teams[$i]['name'] = $row->title;
$teams[$i]['score'] = $row->field_home_team_goal_difference_value;
$resultaat = $row->field_home_team_goal_difference_value;
$teams[$i]['wedstrijden'] = 0;
$teams[$i]['wgewonnen'] = 0;
$teams[$i]['wgelijk'] = 0;
$teams[$i]['wverloren'] = 0;
$teams[$i]['dvoor'] = 0;
$teams[$i]['dtegen'] = 0;
$teams[$i]['dsaldo'] = 0;
$teams[$i]['punten'] = 0;
if ($resultaat > 0)
{
$teams[$i]['wedstrijden'] += 1;
$teams[$i]['wgewonnen'] += 1;
$teams[$i]['punten'] += $win;
}
if ($resultaat == 0)
{
$teams[$i]['wedstrijden'] += 1;
$teams[$i]['wgelijk'] += 1;
$teams[$i]['punten'] += $tie;
}
if ($resultaat < 0)
{
$teams[$i]['wedstrijden'] += 1;
$teams[$i]['wverloren'] += 1;
$teams[$i]['punten'] += $loss;
}
$teams[$i]['dvoor'] += $row->field_score_home_team_value;
$teams[$i]['dtegen'] += $row->field_score_visiting_team_value;
$teams[$i]['dsaldo'] += $resultaat;
$i++;
}
$query = db_select('node', 'n');
$query->join('field_data_field_visiting_team', 'vt', 'n.nid = vt.entity_id');
$query->join('node', 'm', 'm.nid = vt.field_visiting_team_nid');
$query->join('field_data_field_score_visiting_team', 'vts', 'n.nid = vts.entity_id');
$query->join('field_data_field_visit_team_goal_difference','vtgd','n.nid = vtgd.entity_id');
$query->join('field_data_field_score_home_team', 'hts', 'n.nid = hts.entity_id');
$query->addField('vt','field_visiting_team_nid');
$query->addField('m','title');
$query->addField('vts','field_score_visiting_team_value');
$query->addField('vtgd','field_visit_team_goal_difference_value');
$query->addField('hts','field_score_home_team_value');
$result = $query->execute();
foreach ($result as $row) {
// Do something with $row.
$team = $row->title;
$teams[$i]['name'] = $row->title;
$teams[$i]['score'] = $row->field_visit_team_goal_difference_value;
$resultaat = $row->field_visit_team_goal_difference_value;
$teams[$i]['wedstrijden'] = 0;
$teams[$i]['wgewonnen'] = 0;
$teams[$i]['wgelijk'] = 0;
$teams[$i]['wverloren'] = 0;
$teams[$i]['dvoor'] = 0;
$teams[$i]['dtegen'] = 0;
$teams[$i]['dsaldo'] = 0;
$teams[$i]['punten'] = 0;
if ($resultaat > 0)
{
$teams[$i]['wedstrijden'] += 1;
$teams[$i]['wgewonnen'] += 1;
$teams[$i]['punten'] += $win;
}
if ($resultaat == 0)
{
$teams[$i]['wedstrijden'] += 1;
$teams[$i]['wgelijk'] += 1;
$teams[$i]['punten'] += $tie;
}
if ($resultaat < 0)
{
$teams[$i]['wedstrijden'] += 1;
$teams[$i]['wverloren'] += 1;
$teams[$i]['punten'] += $loss;
}
$teams[$i]['dvoor'] += $row->field_score_visiting_team_value;
$teams[$i]['dtegen'] += $row->field_score_home_team_value;
$teams[$i]['dsaldo'] += $resultaat;
$i++;
}
$teams2 = array();
foreach($teams as $team) {
$index = team_exists($team['name'], $teams2);
if ($index < 0) {
$teams2[] = $team;
}
else {
$teams2[$index]['dsaldo'] += $team['dsaldo'];
$teams2[$index]['dvoor'] += $team['dvoor'];
$teams2[$index]['dtegen'] += $team['dtegen'];
$teams2[$index]['wedstrijden'] += $team['wedstrijden'];
$teams2[$index]['wgewonnen'] += $team['wgewonnen'];
$teams2[$index]['wgelijk'] += $team['wgelijk'];
$teams2[$index]['wverloren'] += $team['wverloren'];
$teams2[$index]['punten'] += $team['punten'];
}
}
}
//sort data points, goal difference, goals made
foreach($teams2 as $c=>$key) {
$sort_points[] = $key['punten'];
$sort_goal_difference[] = $key['dsaldo'];
$sort_goals[] = $key['dvoor'];
}
array_multisort($sort_points, SORT_DESC, $sort_goal_difference, SORT_DESC,$sort_goals, SORT_DESC, $teams2);
$table ="
";
foreach($teams2 as $teamitem)
{
if($teamitem['name'] == 'K. SV Bredene')
{
$table .="
";
}else{
$table .="
";
}
}
$table .="
".$teamitem['name']." ".$teamitem['wedstrijden']." ".$teamitem['wgewonnen']." ".$teamitem['wgelijk']." ".$teamitem['wverloren']." ".$teamitem['dsaldo']." ".$teamitem['dvoor']." ".$teamitem['dtegen']." ".$teamitem['punten']."
".$teamitem['name']." ".$teamitem['wedstrijden']." ".$teamitem['wgewonnen']." ".$teamitem['wgelijk']." ".$teamitem['wverloren']." ".$teamitem['dsaldo']." ".$teamitem['dvoor']." ".$teamitem['dtegen']." ".$teamitem['punten']."
";
//$block['content'] = print_r($teams2)."
".$table;
$block['content'] = $table;
return $block;
}
function team_exists($teamname, $array) {
$result = -1;
for($i=0; $i 'League Table',
'description' => 'Configuration for League table module',
'page callback' => 'drupal_get_form',
'page arguments' => array('league_table_form'),
'access arguments' => array('access administration pages'),
'type' => MENU_NORMAL_ITEM,
);
return $items;
}
/**
* Form function, called by drupal_get_form()
* in current_posts_menu().
*/
function league_table_form($form, &$form_state) {
$form['legaue_table_max'] = array(
'#type' => 'textfield',
'#title' => t('Maximum number of posts'),
'#default_value' => variable_get('league_table_max', 3),
'#size' => 2,
'#maxlength' => 2,
'#description' => t('The maximum number of links to display in the block.'),
'#required' => TRUE,
);
return system_settings_form($form);
}
function league_table_block($op = 'list', $delta = 0, $edit = array()) {
$multi_id = isset($edit['multiblock_delta']) ? '_'. $edit['multiblock_delta']['#value'] : NULL;
switch ($op) {
case 'mb_enabled':
return 'mb_enabled';
}
}
Comments
Comment #1
intrafusion