123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- <?php
- if (!defined('STATUSNET')) {
- exit(1);
- }
- include_once $dir . '/lib/profiletools.php';
- class GNUsocialProfileExtensionsPlugin extends Plugin
- {
- function onCheckSchema()
- {
- $schema = Schema::get();
- $schema->ensureTable('GNUsocialProfileExtensionField', GNUsocialProfileExtensionField::schemaDef());
- $schema->ensureTable('GNUsocialProfileExtensionResponse', GNUsocialProfileExtensionResponse::schemaDef());
-
- }
- function onRouterInitialized($m)
- {
- $m->connect(':nickname/bio', array('action' => 'bio'));
- $m->connect('admin/profilefields', array('action' => 'profilefieldsAdminPanel'));
- $m->connect('notice/respond', array('action' => 'newresponse'));
- return true;
- }
- function onEndProfileFormData($action)
- {
- $fields = GNUsocialProfileExtensionField::allFields();
- $user = common_current_user();
- $profile = $user->getProfile();
- gnusocial_profile_merge($profile);
- foreach ($fields as $field) {
- $action->elementStart('li');
- $fieldname = $field->systemname;
- if ($field->type == 'str') {
- $action->input($fieldname, $field->title,
- ($action->arg($fieldname)) ? $action->arg($fieldname) : $profile->$fieldname,
- $field->description);
- }
- else if ($field->type == 'text') {
- $action->textarea($fieldname, $field->title,
- ($action->arg($fieldname)) ? $action->arg($fieldname) : $profile->$fieldname,
- $field->description);
- }
- $action->elementEnd('li');
- }
- }
- 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();
- }
- }
- }
-
- function onEndShowStyles($action)
- {
- $action->cssLink('/plugins/GNUsocialProfileExtensions/res/style.css');
- }
- function onEndShowScripts($action)
- {
- $action->script('plugins/GNUsocialProfileExtensions/js/profile.js');
- }
- function onEndAdminPanelNav($nav)
- {
- if (AdminPanelAction::canAdmin('profilefields')) {
- $action_name = $nav->action->trimmed('action');
- $nav->out->menuItem(
- '/admin/profilefields',
- _m('Profile Fields'),
- _m('Custom profile fields'),
- $action_name == 'profilefieldsadminpanel',
- 'nav_profilefields_admin_panel'
- );
- }
- return true;
- }
- function onStartPersonalGroupNav(Menu $nav, Profile $target, Profile $scoped=null)
- {
- $nav->out->menuItem(common_local_url('bio',
- array('nickname' => $nav->action->trimmed('nickname'))), _('Bio'),
- _('The user\'s extended profile'), $nav->action->trimmed('action') == 'bio', 'nav_bio');
- }
-
- function onShowStreamNoticeList($notice, $action, &$pnl)
- {
-
- $newnotice = new Notice();
- $newnotice->profile_id = $action->user->id;
- $newnotice->orderBy('modified DESC');
- $newnotice->whereAdd('reply_to IS NULL');
- $newnotice->limit(($action->page-1)*NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1);
- $newnotice->find();
- $pnl = new NoticeTree($newnotice, $action);
- return false;
- }
- }
|