<?php

$Members = new PerchMembers_Members($API);
$MemberForms = new PerchMembers_Forms($API);
$message = false;
$HTML = $API->get('HTML');
if (isset($_GET['id']) && $_GET['id'] != '') {
    $formID = (int) $_GET['id'];
    $MemberForm = $MemberForms->find($formID);
    $details = $MemberForm->to_array();
    $settings = PerchUtil::json_safe_decode($MemberForm->formSettings(), true);
    $heading1 = 'Editing a Member Form';
}
$heading2 = 'Form details';
$Form = $API->get('Form');
$Form->require_field('formTitle', 'Required');
if ($Form->submitted()) {
    $postvars = array('formTitle');
    $data = $Form->receive($postvars);
    $result = false;
    if (is_object($MemberForm)) {
        $postvars = array('moderate', 'moderator_email', 'default_tags');
        $settings_data = $Form->receive($postvars);
        if (!isset($settings_data['moderate'])) {
            $settings_data['moderate'] = '0';
        }
        $data['formSettings'] = PerchUtil::json_safe_encode($settings_data);
        $result = $MemberForm->update($data);
    }
    $message = $HTML->success_message('The form has been successfully updated. Return to %sform listing%s', '<a href="' . $API->app_path() . '/forms/">', '</a>');
    if (is_object($MemberForm)) {
 public function register_with_form($SubmittedForm)
 {
     $key = $SubmittedForm->id . (isset($SubmittedForm->form_attributes['type']) ? '.' . $SubmittedForm->form_attributes['type'] : '');
     $Forms = new PerchMembers_Forms($this->api);
     $Form = $Forms->find_or_create($key);
     $do_login = false;
     if (is_object($Form)) {
         $form_settings = PerchUtil::json_safe_decode($Form->formSettings(), true);
         $member = array('memberAuthType' => 'native', 'memberEmail' => '', 'memberPassword' => '', 'memberStatus' => 'pending', 'memberCreated' => date('Y-m-d H:i:s'));
         $data = $SubmittedForm->data;
         $properties = array();
         foreach ($data as $key => $val) {
             if (array_key_exists($key, $this->field_aliases)) {
                 $member[$this->field_aliases[$key]] = $val;
                 $key = $this->field_aliases[$key];
             }
             if (!in_array($key, $this->static_fields)) {
                 $properties[$key] = $val;
             }
         }
         $member['memberProperties'] = PerchUtil::json_safe_encode($properties);
         // Password
         $clear_pwd = $member['memberPassword'];
         if (defined('PERCH_NONPORTABLE_HASHES') && PERCH_NONPORTABLE_HASHES) {
             $portable_hashes = false;
         } else {
             $portable_hashes = true;
         }
         $Hasher = new PasswordHash(8, $portable_hashes);
         $member['memberPassword'] = $Hasher->HashPassword($clear_pwd);
         $Member = $this->create($member);
         $member = array('memberAuthID' => $Member->memberID());
         if (isset($form_settings['moderate']) && $form_settings['moderate'] == '1') {
             if (isset($form_settings['moderator_email'])) {
                 $this->_email_moderator($form_settings['moderator_email'], $Member);
             }
         } else {
             $member['memberStatus'] = 'active';
             $do_login = true;
         }
         $Member->update($member);
         if (isset($form_settings['default_tags']) && $form_settings['default_tags'] != '') {
             $tags = explode(',', $form_settings['default_tags']);
             if (PerchUtil::count($tags)) {
                 foreach ($tags as $tagDisplay) {
                     $expiry = false;
                     if (strpos($tagDisplay, '|') > 0) {
                         $parts = explode('|', $tagDisplay);
                         $tagDisplay = $parts[0];
                         $expiry = $parts[1];
                     }
                     $tagDisplay = trim($tagDisplay);
                     $tag = PerchUtil::urlify($tagDisplay);
                     $Member->add_tag($tag, $tagDisplay, $expiry);
                 }
             }
         }
         if (is_object($Member) && $do_login) {
             $key = base64_encode('login:perch_members:login/login_form.html');
             $data = array('email' => $Member->memberEmail(), 'password' => $clear_pwd, 'pos');
             $files = array();
             $Perch = Perch::fetch();
             $Perch->dispatch_form($key, $data, $files);
         }
         if (is_object($Member) && $clear_pwd === '__auto__') {
             $Member->update(array('memberPassword' => null));
         }
     }
 }
<?php

$HTML = $API->get('HTML');
$Members = new PerchMembers_Members($API);
$MemberForms = new PerchMembers_Forms($API);
$Paging = $API->get('Paging');
$Paging->set_per_page(20);
$Lang = $API->get('Lang');
$forms = $MemberForms->all();