Newer
Older
* @file
* A module for flash game websites.
*/
* Implements hook_menu().
*/
function flashgame_menu() {
$items = array();
$items['admin/config/media/flashgame'] = array(
'title' => 'Flash Games setting',
'description' => 'Configuration for Flashgames',
'page callback' => 'drupal_get_form',
'page arguments' => array('flashgame_admin_settings'),
'access arguments' => array('administer site configuration'),
* Form generation function for flashgame config page.
*/
function flashgame_admin_settings($form, &$form_state) {
$types = node_type_get_names();
$form['flashgame_nodetypes'] = array(
'#type' => 'select',
'#title' => t('Content types'),
'#description' => t('Select content types for miniclip games'),
'#options' => $types,
'#default_value' => variable_get('flashgame_nodetypes'),
);
* Implements hook_preprocess_node().
*/
function flashgame_preprocess_node(&$variables) {
$types = variable_get('flashgame_nodetypes');
$cur_type = $variables['type'];
if ($types) {
foreach ($types as $type) {
if ($cur_type == $type) {
drupal_add_js('http://www.miniclip.com/js/game-embed.js', 'external');
}
}
}
* Implements hook_field_formatter_info().
*/
'miniclip' => array(
'label' => t('Miniclip game'),
'field types' => array('text'),
),
'flash' => array(
'label' => t('Flash'),
'description' => t('For show as a flash file'),
'field types' => array('file'),
'settings' => array(
'width' => 640,
'height' => 480,
),
),
);
* Implements hook_field_formatter_settings_form().
*/
function flashgame_field_formatter_settings_form($field, $instance, $view_mode, $form, &$form_state) {
$display = $instance['display'][$view_mode];
$settings = $display['settings'];
$element = array(
'width' => array(
'#title' => t('width'),
'#type' => 'textfield',
'#size' => 20,
'#default_value' => 640,
'height' => array(
'#title' => t('height'),
'#type' => 'textfield',
'#size' => 20,
'#default_value' => 480,
* Implements hook_field_formatter_settings_summary().
*/
function flashgame_field_formatter_settings_summary($field, $instance, $view_mode) {
$display = $instance['display'][$view_mode];
$settings = $display['settings'];
$summary = t('Height:@height | Width:@width', array(
'@height' => $settings['height'],
'@width' => $settings['width'],
* Implements hook_field_formatter_view().
*/
function flashgame_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
$element = array();
$settings = $display['settings'];
switch ($display['type']) {
case 'miniclip':
foreach ($items as $delta => $item) {
$game = array();
$game = _flashgame_split('/', $item['value']);
$index = count($game) - 2;
$embed = '<div id="miniclip-game-embed" data-game-name=' . $game[$index] . ' data-theme="1" data-width='
. $settings['width'] . ' data-height=' . $settings['height'] . '></div>';
$element[$delta] = array('#markup' => $embed);
case 'flash':
foreach ($items as $delta => $item) {
$url = empty($item['uri']) ? '' : file_create_url($item['uri']);
$embed = '<embed src = "' . $url . '" width = "' . $settings['width'] . '" height = "' . $settings['height'] . '" />';
$element[$delta] = array('#markup' => $embed);
* A helper function for split strings by a given character.
*/
function _flashgame_split($s, $str) {
$ret = array();
$tmp = '';
for ($i = 0; $i < drupal_strlen($str); $i++) {
$char = drupal_substr($str, $i, 1);
if ($char == $s) {
$ret[] = $tmp;
$tmp = '';
}
else {
$tmp .= $char;
}
}
if ($tmp) {
$ret[] = $tmp;
}
return $ret;
}