static function findResponsesByProfile($id) { $extf = 'gnusocialprofileextensionfield'; $extr = 'gnusocialprofileextensionresponse'; $sql = "SELECT {$extr}.*, {$extf}.title, {$extf}.description, {$extf}.type, {$extf}.systemname FROM {$extr} JOIN {$extf} ON {$extr}.extension_id={$extf}.id WHERE {$extr}.profile_id = {$id}"; $response = new GNUsocialProfileExtensionResponse(); $response->query($sql); $responses = array(); while ($response->fetch()) { $responses[] = clone $response; } return $responses; }
/** * GNU Social * Copyright (C) 2010, Free Software Foundation, Inc. * * PHP version 5 * * LICENCE: * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * * @category Widget * @package GNU Social * @author Max Shinn <*****@*****.**> * @copyright 2010 Free Software Foundation, Inc. * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 */ function gnusocial_profile_merge(&$profile) { $responses = GNUsocialProfileExtensionResponse::findResponsesByProfile($profile->id); $profile->customfields = array(); foreach ($responses as $response) { $title = $response->systemname; $profile->{$title} = $response->value; $profile->customfields[] = $title; } }
function onEndProfileSaveForm($action) { $fields = GNUsocialProfileExtensionField::allFields(); $user = common_current_user(); $profile = $user->getProfile(); foreach ($fields as $field) { $val = $action->trimmed($field->systemname); $response = new GNUsocialProfileExtensionResponse(); $response->profile_id = $profile->id; $response->extension_id = $field->id; if ($response->find()) { $response->fetch(); $response->value = $val; if ($response->validate()) { if (empty($val)) { $response->delete(); } else { $response->update(); } } } else { $response->value = $val; $response->insert(); } } }