public function ProfileController_MyProfileEdit_Create($Sender, $Args) { $sfYaml = Gdn::Factory('sfYaml'); $Sender->UserID = ArrayValue(0, $Args, ''); $Sender->UserName = ArrayValue(1, $Args, ''); $Sender->GetUserInfo($Sender->UserID, $Sender->UserName); $SessionUserID = Gdn::Session()->UserID; if ($Sender->User->UserID != $SessionUserID) { $Sender->Permission('Garden.Users.Edit'); $MyMetaUserID = $Sender->User->UserID; } else { $MyMetaUserID = $SessionUserID = Gdn::Session()->UserID; } if (file_exists(dirname(__FILE__) . DS . 'mymeta.yml')) { $Meta = $sfYaml->load(dirname(__FILE__) . DS . 'mymeta.yml'); $Sender->SetData('Example', false); } else { if (file_exists(dirname(__FILE__) . DS . 'mymeta.yml.example')) { $Meta = $sfYaml->load(dirname(__FILE__) . DS . 'mymeta.yml.example'); $Sender->SetData('Example', true); } } $Sender->Form = new Gdn_Form(); $ValidationFailed = false; if ($Sender->Form->AuthenticatedPostBack() === FALSE) { $Sender->Form->SetData($Sender->MyProfile); } else { $Data = $Sender->Form->FormValues(); $Validation = new Gdn_Validation(); foreach ($Data as $DataI => $DataV) { $Field = $Meta['MyMeta'][$DataI]; if (GetValue('required', $Field)) { $Validation->ApplyRule($DataI, 'Required', sprintf(T('%s is required'), $Field['name'])); } foreach (GetValue('requiredwith', $Field) as $RequiredWith) { if (!GetValue($RequiredWith, $Datarequired)) { $Validation->ApplyRule($RequiredWith, 'Required', sprintf(T('%s is required with %s'), $Meta['MyMeta'][$RequiredWith]['name'], $Field['name'])); } } if (empty($DataV)) { continue; } if ($V = GetValue('validate', $Field)) { if (strpos($V, 'Validate') === 0) { //Begins with $V = substr($V, 8); if (function_exists($V)) { $Validation->AddRule($V, 'function:' . $V); } else { if (function_exists($V)) { $Validation->AddRule($V, 'function:Validate' . $V); } } } $Validation->ApplyRule($DataI, $V, sprintf(T('%s not valid'), $Field['name'])); } if ($R = GetValue('validateregex', $Field)) { $Validation->AddRule($DataI, 'regex:`^' . $R . '$`i'); $Validation->ApplyRule($DataI, $DataI, sprintf(T('%s not valid'), $Field['name'])); } if ($M = GetValue('maxchar', $Field)) { $Validation->AddRule('MaxLen' . $DataI, 'regex:`^.{0,' . $M . '}$`is'); $Validation->ApplyRule($DataI, 'MaxLen' . $DataI, sprintf(T('%s not cannot be longer than %s chars'), $Field['name'], $M)); } } $Validation->Validate($Data); if (count($Validation->Results()) == 0) { $MyMeta = array_intersect_key($Data, $Meta['MyMeta']); UserModel::SetMeta($MyMetaUserID, $MyMeta, 'MyMeta.'); } else { $ValidationFailed = true; } $Sender->Form->SetValidationResults($Validation->Results()); } if (!$ValidationFailed) { $Data = UserModel::GetMeta($MyMetaUserID, 'MyMeta.%', 'MyMeta.'); } $MyMeta = array_intersect_key($Data, $Meta['MyMeta']); $Sender->SetData('Fields', $Meta['MyMeta']); $Sender->SetData('MyMeta', $MyMeta); $Sender->View = dirname(__FILE__) . DS . 'views' . DS . 'edit.php'; $Sender->Render(); }