function form_get_data_from_profile($form_id, $entity)
{
    $metadata = get_metadata_for_entity($entity->getGUID());
    // beginning of workaround
    // sadly Elgg 1.1 fails to enforce access controls for get_metadata_for_entity
    // see http://trac.elgg.org/elgg/ticket/531
    // so I need to do this dance to workaround this
    $good_metadata = array();
    if ($metadata) {
        foreach ($metadata as $m) {
            // get_metadata does enforce the access controls, so use that
            $good_m = get_metadata($m->id);
            if ($good_m) {
                $good_metadata[] = $good_m;
            }
        }
    }
    $metadata = $good_metadata;
    // end of workaround
    $data = array();
    $fields = form_get_fields($form_id);
    if ($fields) {
        foreach ($fields as $field) {
            $internalname = $field->internal_name;
            // not too efficient but the metadata doesn't seem to be keyed
            foreach ($metadata as $m) {
                // set an array if there are multiple metadata items with the same name
                // otherwise a single value
                // currently only the tags and checkbox groups fields return multiple values
                if ($m->name == $internalname) {
                    if (!isset($data[$internalname])) {
                        $data[$internalname] = new StdClass();
                        $data[$internalname]->value = $m->value;
                    } else {
                        if (is_array($data[$internalname]->value)) {
                            $data[$internalname]->value[] = $m->value;
                        } else {
                            $data[$internalname]->value = array($data[$internalname]->value, $m->value);
                        }
                    }
                    $data[$internalname]->access_id = $m->access_id;
                }
            }
        }
    }
    return $data;
}
 *
 */
// Load Elgg engine
require_once dirname(dirname(dirname(__FILE__))) . "/engine/start.php";
// Load form model
require_once dirname(__FILE__) . "/models/model.php";
// Define context
set_context('form:admin');
admin_gatekeeper();
global $CONFIG;
$form_id = get_input('id', 0);
$username = get_input('username', '');
$profile = get_input('profile', '');
if ($form_id) {
    $form = get_entity($form_id);
    if ($form) {
        $fields = form_get_fields($form_id);
        $owner = get_entity($form->owner_guid);
        $username = $owner->username;
        $vars = array('form' => $form, 'fields' => $fields, 'form_username' => $username);
        $title = sprintf(elgg_echo('form:manage_form_title'), $form->title, $form->name);
    } else {
        register_error(elgg_echo('form:bad_form_id'));
        forward($CONFIG->wwwroot . 'pg/form/' . $username);
    }
} else {
    $vars = array('form' => '', 'form_username' => $username, 'profile' => $profile);
    $title = elgg_echo('form:create_form_title');
}
$body = elgg_view('form/forms/manage_form', $vars);
page_draw($title, elgg_view_layout("two_column_left_sidebar", '', elgg_view_title($title) . $body));
function form_view_entities($entities, $form, $viewtype)
{
    global $CONFIG;
    $html = '';
    $qs = $_SERVER["QUERY_STRING"];
    if (is_array($entities) && sizeof($entities) > 0) {
        if (in_array($viewtype, array('list', 'display'))) {
            $commentable = $form->allow_comments;
            $recommendable = $form->allow_recommendations;
        } else {
            $commentable = $false;
            $recommendable = $false;
        }
        foreach ($entities as $entity) {
            $form_data_id = $entity->getGUID();
            $entity_url = $entity->getURL();
            $md_get = get_metadata_for_entity($form_data_id);
            $md = array();
            foreach ($md_get as $m) {
                if (isset($md[$m->name])) {
                    if (!is_array($md[$m->name]->value)) {
                        $md[$m->name]->value = array($md[$m->name]->value);
                    }
                    $md[$m->name]->value[] = $m->value;
                } else {
                    $md[$m->name] = new StdClass();
                    $md[$m->name]->value = $m->value;
                    $md[$m->name]->name = $m->name;
                }
            }
            // add title and description
            $extras = array('title' => $entity->title, 'description' => $entity->description);
            foreach ($extras as $k => $v) {
                $md[$k] = new StdClass();
                $md[$k]->value = $v;
                $md[$k]->name = $k;
            }
            $vars = array();
            $form_id = $form->getGUID();
            $fields = form_get_fields($form_id);
            if ($fields) {
                foreach ($fields as $field) {
                    $internalname = $field->internal_name;
                    if (isset($md[$internalname])) {
                        $item = $md[$internalname];
                        $vars[$item->name] = form_get_field_output($form, $field, $item->value);
                        if ($field->field_type == 'image_upload') {
                            $vars[$item->name . ':thumb'] = elgg_view($view, array('value' => $item->value, 'size' => 'small'));
                        } else {
                            if ($field->field_type == 'video_box') {
                                $vars[$item->name . ':thumb'] = elgg_view($view, array('value' => $item->value, 'size' => 'thumb'));
                            }
                        }
                    } else {
                        // just return empty strings
                        $vars[$internalname] = '';
                        if ($field->field_type == 'image_upload') {
                            $vars[$internalname . ':thumb'] = '';
                        } else {
                            if ($field->field_type == 'video_box') {
                                $vars[$internalname . ':thumb'] = '';
                            }
                        }
                    }
                }
            }
            $comment_bit = '';
            $recommend_bit = '';
            if ($commentable) {
                if ($viewtype == 'display') {
                    $comment_bit = elgg_view_comments($entity);
                } else {
                    $num_comments = elgg_count_comments($entity);
                    if ($num_comments == 1) {
                        $comment_bit = $num_comments . elgg_echo('form:comment');
                    } else {
                        $comment_bit = $num_comments . elgg_echo('form:comments');
                    }
                }
            }
            if ($recommendable) {
                $number_of_recommendations = count_annotations($form_data_id, 'object', 'form_data', 'form:recommendation');
                // count_annotations had a bug, but should be fixed now, so comment out this workaround
                //$number_of_recommendations = form_count(get_annotations($form_data_id, 'object', 'form_data', 'form:recommendation', 1, 0, 500));
                if (isloggedin() && $viewtype == 'display') {
                    $number_of_my_recommendations = form_count(get_annotations($form_data_id, 'object', 'form_data', 'form:recommendation', 1, $_SESSION['user']->getGUID()));
                    $user_guid = $_SESSION['user']->getGUID();
                    if ($number_of_my_recommendations == 0) {
                        $recommendation_template = '<a href="%s">' . elgg_echo("form:recommend_this") . '</a>';
                        $my_recommend_bit = ' [' . sprintf($recommendation_template, $CONFIG->wwwroot . 'action/form/manage_form_data?form_action=recommend&d=' . $form_data_id) . ']';
                    } else {
                        $my_recommend_bit = '';
                    }
                } else {
                    $my_recommend_bit = '';
                }
                if ($number_of_recommendations == 1) {
                    $recommend_bit = sprintf(elgg_echo('form:recommendation'), $number_of_recommendations) . $my_recommend_bit;
                } else {
                    $recommend_bit = sprintf(elgg_echo('form:recommendations'), $number_of_recommendations) . $my_recommend_bit;
                }
            }
            if ($viewtype == 'list') {
                if ($recommend_bit && $comment_bit) {
                    $annotation_bit = $recommend_bit . ', ' . $comment_bit;
                } else {
                    $annotation_bit = $recommend_bit . $comment_bit;
                }
            } else {
                $annotation_bit = $recommend_bit . '<br /><br />' . $comment_bit;
            }
            if (trim($form->list_template) || trim($form->display_template)) {
                $vars['_url'] = $CONFIG->wwwroot;
                $vars['_user_message_link'] = '<a href="' . $CONFIG->wwwroot . 'mod/messages/send.php?send_to=' . $entity->owner_guid . '">' . elgg_echo('form:send_a_message') . '</a>';
                $vars['_full_view_link'] = '<a href="' . $entity_url . '">' . elgg_echo('form:full_view') . '</a>';
                $vars['_full_view_url'] = $entity_url;
                $vars['_friendlytime'] = friendly_time($entity->time_created);
                $owner_entity = $entity->getOwnerEntity();
                $owner_url = $owner_entity->getUrl();
                $vars['_owner_url'] = $owner_url;
                $vars['_owner_name'] = $owner_entity->name;
                $vars['_owner_username'] = $owner_entity->username;
                $vars['_owner_message_link'] = $vars['_user_message_link'];
                $vars['_owner_icon'] = elgg_view("profile/icon", array('entity' => $owner_entity, 'size' => 'small'));
                $vars['_annotations'] = $annotation_bit;
            }
            if ($viewtype == 'display') {
                $template = $form->display_template;
                if (trim($template)) {
                    $content = form_parse_template($template, $vars);
                    $content = form_language_template($content);
                } else {
                    $content = elgg_view('form/default_form_data_display', array('entity' => $entity, 'annotations' => $annotation_bit));
                }
            } else {
                if ($viewtype == 'list') {
                    $template = $form->list_template;
                    if (trim($template)) {
                        $content = form_parse_template($template, $vars);
                        $content = form_language_template($content);
                    } else {
                        $content = elgg_view('form/default_form_data_listing', array('entity' => $entity, 'annotations' => $annotation_bit));
                    }
                } else {
                    $content = sprintf(elgg_echo('form:submitted'), friendly_time($entity->time_created));
                    if ($entity->time_updated != $entity->time_created) {
                        $content .= ", " . sprintf(elgg_echo('form:updated'), friendly_time($entity->time_updated));
                    }
                }
            }
            $html .= $content;
        }
    }
    return $html;
}