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; }