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();
         }
     }
 }