function getMappedFields($field_list, $id) { $res = array(); $debug = FALSE; require_once $GLOBALS["where_framework"] . "/lib/lib.field.php"; $fl = new FieldList(); $field_map_info = $this->getFieldMap(); $field_map = $field_map_info["map"]; $map_custom_fields = $field_map_info["custom_fields"]; if ($debug) { echo "<pre>\n"; print_r($field_map_info); } //--DEBUG--// unset($field_map_info); $fl->setFieldEntryTable($this->_getMapFromTable()); $user_field_arr = $fl->showFieldForUserArr(array($id), $field_list); // to cache: arr[id]=res if ($debug) { print_r($user_field_arr); } //--DEBUG--// if (is_array($user_field_arr[$id])) { $field_val = $user_field_arr[$id]; } else { $field_val = array(); } // This way we are going to load only the information // about the fields we really need. $field_list = $field_list + $map_custom_fields; if ($debug) { print_r($field_list); } //--DEBUG--// $field_info = $fl->getFieldsFromArray($field_list); // to cache? maybe one for all if ($debug) { print_r($field_info); } //--DEBUG--// // $mro: Map Resource Object (array) // We'll use this later to read predefined fields names $mro = array(); foreach ($this->getResourceList("list") as $code => $resource) { require_once $resource["class_path"] . $resource["class_file"]; $mro[$code] = new $resource["class_name"](); } // Creating empty schema that will contain useful information // like field description.. foreach ($mro as $resource => $resource_obj) { foreach ($resource_obj->getRawPredefinedFields() as $code) { $res[$resource]["predefined"][$code]["description"] = $resource_obj->getPredefinedFieldLabel($code); $res[$resource]["predefined"][$code]["value"] = ""; } } foreach ($field_info as $field_id => $info) { if (isset($field_map[$field_id])) { $type = $field_map[$field_id]["type"]; $resource = $field_map[$field_id]["resource"]; $new_id = $field_map[$field_id]["map_to"]; if ($type == "custom") { $res[$resource][$type][$new_id]["description"] = $field_info[$new_id][FIELD_INFO_TRANSLATION]; } $res[$resource][$type][$new_id]["value"] = $field_val[$field_id]; } else { if (!isset($field_map[$field_id]) && !in_array($field_id, $map_custom_fields)) { $resource = "_not_mapped"; $type = "custom"; $res[$resource][$type][$field_id]["description"] = $field_info[$field_id][FIELD_INFO_TRANSLATION]; $res[$resource][$type][$field_id]["value"] = $field_val[$field_id]; if ($debug && empty($field_val[$field_id])) { echo $field_id . " :: "; } } } } if ($debug) { print_r($res); echo "\n</pre>\n"; } //--DEBUG--// return $res; }
public function multimod_actionTask() { if (!$this->permissions['mod_user']) { $output = array('success' => false, 'message' => $this->_getErrorMessage('no permission')); echo $this->json->encode($output); return; } $output = false; $users_str = Get::req('users', DOTY_STRING, ""); if (!$users_str) { $output = array('success' => false, 'message' => $this->_getErrorMessage('invalid input')); echo $this->json->encode($output); return; } $users = explode(",", $users_str); if (empty($users)) { $output = array('success' => false, 'message' => $this->_getErrorMessage('invalid input')); echo $this->json->encode($output); return; } $info = new stdClass(); $to_update = Get::req('to_change', DOTY_MIXED, array()); $count_updated = 0; if (!empty($to_update)) { foreach ($to_update as $property) { } } //read input data $sel_properties = Get::req('multimod_sel', DOTY_MIXED, array()); $pref_properties = Get::req('multimod_selpref', DOTY_MIXED, array()); $field_properties = Get::req('multimod_selfield', DOTY_MIXED, array()); //validate input data $info = new stdClass(); if (isset($sel_properties['firstname'])) { $info->firstname = Get::req('firstname', DOTY_STRING, ""); } if (isset($sel_properties['lastname'])) { $info->lastname = Get::req('lastname', DOTY_STRING, ""); } if (isset($sel_properties['email'])) { $info->email = Get::req('email', DOTY_STRING, ""); } if (isset($sel_properties['password'])) { $pwd_1 = Get::req('new_password', DOTY_STRING, ""); $pwd_2 = Get::req('new_password_confirm', DOTY_STRING, ""); if ($pwd_1 == $pwd_2) { $info->password = $pwd_1; } else { $output = array('success' => false, 'message' => $this->_getErrorMessage('password mismatch')); echo $this->json->encode($output); return; } } if (isset($sel_properties['force_change'])) { $info->force_change = Get::req('force_change', DOTY_INT, 0) > 0; } if (isset($sel_properties['level'])) { $info->level = Get::req('level', DOTY_STRING, ""); } /* if (isset($sel_properties['facebook_id'])) $info->facebook_id = Get::req('facebook_id', DOTY_STRING, ""); if (isset($sel_properties['twitter_id'])) $info->twitter_id = Get::req('twitter_id', DOTY_STRING, ""); if (isset($sel_properties['linkedin_id'])) $info->linkedin_id = Get::req('linkedin_id', DOTY_STRING, ""); if (isset($sel_properties['google_id'])) $info->google_id = Get::req('google_id', DOTY_STRING, ""); */ if (!empty($field_properties)) { require_once _adm_ . '/lib/lib.field.php'; $fields = new FieldList(); $selected_fields = array_keys($field_properties); $finfo = $fields->getFieldsFromArray($selected_fields); $field_info = array(); foreach ($finfo as $id_field => $data) { $input_data = Get::req('field_' . $data[FIELD_INFO_TYPE], DOTY_MIXED, array()); if (isset($input_data[$id_field])) { $value_to_set = ""; switch ($data[FIELD_INFO_TYPE]) { case "": $value_to_set = Format::dateDb($input_data[$id_field], 'date'); break; default: $value_to_set = $input_data[$id_field]; } $field_info[$id_field] = $value_to_set; } } $info->__fields = $field_info; } if (!empty($pref_properties)) { $info->__preferences = $pref_properties; } $res = $this->model->updateMultipleUsers($users, $info); if (!$res) { $output = array('success' => false, 'message' => $this->_getErrorMessage('server error')); } else { $output = array('success' => true, 'update' => $count_updated); } echo $this->json->encode($output); }