/** * Returns the detail (fields and data) of one user. * * The return have: * - The metadata of each field. * - The data of the user. * - The number of rows. * * If the request parameter "id" is null or 0, the data will be all values of a "new user", * if the "id" is an existing user, the data will be all the values of the user. * * OPTIONAL request parameters: * <pre> * - integer <b>id</b> id of the user to consult. * </pre> * * The return is in JSON format. * * @return void */ public function jsonDetailAction() { $user = new Phprojekt_User_User(); $id = (int) $this->getRequest()->getParam("id"); $user->find($id); $data = array(); $data['id'] = $user->id; $data['username'] = empty($user->username) ? "" : $user->username; $data['firstname'] = empty($user->firstname) ? "" : $user->firstname; $data['lastname'] = empty($user->lastname) ? "" : $user->lastname; $data['status'] = empty($user->status) ? "" : $user->status; $data['admin'] = empty($user->admin) ? "" : $user->admin; $setting = new Phprojekt_Setting(); $setting->setModule('User'); $fields = $setting->getModel()->getFieldDefinition(Phprojekt_ModelInformation_Default::ORDERING_FORM); $values = $setting->getList(0, $fields, $user->id); $values = $values[0]; unset($values['id']); if (!empty($data['id'])) { $data = array_merge($data, $values); } else { foreach ($fields as $field) { if (!array_key_exists($field['key'], $values)) { continue; } if (!is_null($field['default'])) { $data[$field['key']] = $field['default']; } else { $data[$field['key']] = ""; } } } $records = array($data); $metadata = $user->getInformation(Phprojekt_ModelInformation_Default::ORDERING_FORM); $metadata = $metadata->getFieldDefinition(Phprojekt_ModelInformation_Default::ORDERING_FORM); $data = array("metadata" => $metadata, "data" => $records, "numRows" => count($records)); Phprojekt_Converter_Json::echoConvert($data); }