X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=plugins%2FUserFlag%2FUserFlagPlugin.php;h=27ebefb05377612d783d8bb41d391dc4dbef0327;hb=011c545b90466ac92e66cb3c1464af81c207eaac;hp=e6ad3e37d31f5b289b8125e1ca46f7b4866babfa;hpb=a2090ecc97f93894ba6f833acde5f44058988510;p=quix0rs-gnu-social.git diff --git a/plugins/UserFlag/UserFlagPlugin.php b/plugins/UserFlag/UserFlagPlugin.php index e6ad3e37d3..27ebefb053 100644 --- a/plugins/UserFlag/UserFlagPlugin.php +++ b/plugins/UserFlag/UserFlagPlugin.php @@ -60,93 +60,38 @@ class UserFlagPlugin extends Plugin $schema = Schema::get(); // For storing user-submitted flags on profiles - - $schema->ensureTable('user_flag_profile', - array(new ColumnDef('profile_id', 'integer', null, - false, 'PRI'), - new ColumnDef('user_id', 'integer', null, - false, 'PRI'), - new ColumnDef('created', 'datetime', null, - false, 'MUL'), - new ColumnDef('cleared', 'datetime', null, - true, 'MUL'))); - + $schema->ensureTable('user_flag_profile', User_flag_profile::schemaDef()); return true; } /** * Add our actions to the URL router * - * @param Net_URL_Mapper $m URL mapper for this hit + * @param URLMapper $m URL mapper for this hit * * @return boolean hook return */ - function onRouterInitialized($m) + public function onRouterInitialized(URLMapper $m) { $m->connect('main/flag/profile', array('action' => 'flagprofile')); $m->connect('main/flag/clear', array('action' => 'clearflag')); - $m->connect('admin/profile/flag', array('action' => 'adminprofileflag')); + $m->connect('panel/profile/flag', array('action' => 'adminprofileflag')); return true; } - /** - * Auto-load our classes if called - * - * @param string $cls Class to load - * - * @return boolean hook return - */ - function onAutoload($cls) - { - switch (strtolower($cls)) - { - case 'flagprofileaction': - case 'adminprofileflagaction': - case 'clearflagaction': - include_once INSTALLDIR.'/plugins/UserFlag/' . - strtolower(mb_substr($cls, 0, -6)) . '.php'; - return false; - case 'flagprofileform': - case 'clearflagform': - include_once INSTALLDIR.'/plugins/UserFlag/' . strtolower($cls . '.php'); - return false; - case 'user_flag_profile': - include_once INSTALLDIR.'/plugins/UserFlag/'.ucfirst(strtolower($cls)).'.php'; - return false; - default: - return true; - } - } - /** * Add a 'flag' button to profile page * - * @param Action &$action The action being called + * @param Action $action The action being called * @param Profile $profile Profile being shown * * @return boolean hook result */ - function onEndProfilePageActionsElements(&$action, $profile) + function onEndProfilePageActionsElements($action, $profile) { - $user = common_current_user(); - - if (!empty($user) && ($user->id != $profile->id)) { - - $action->elementStart('li', 'entity_flag'); - - if (User_flag_profile::exists($profile->id, $user->id)) { - // @todo FIXME: Add a title explaining what 'flagged' means? - // TRANS: Message added to a profile if it has been flagged for review. - $action->element('p', 'flagged', _('Flagged')); - } else { - $form = new FlagProfileForm($action, $profile, - array('action' => 'showstream', - 'nickname' => $profile->nickname)); - $form->show(); - } - - $action->elementEnd('li'); - } + $this->showFlagButton($action, $profile, + array('action' => 'showstream', + 'nickname' => $profile->nickname)); return true; } @@ -160,37 +105,40 @@ class UserFlagPlugin extends Plugin */ function onEndProfileListItemActionElements($item) { - $user = common_current_user(); - - if (!empty($user)) { - - list($action, $args) = $item->action->returnToArgs(); - - $args['action'] = $action; - - $form = new FlagProfileForm($item->action, $item->profile, $args); - - $item->action->elementStart('li', 'entity_flag'); - $form->show(); - $item->action->elementEnd('li'); - } + list($action, $args) = $item->action->returnToArgs(); + $args['action'] = $action; + $this->showFlagButton($item->action, $item->profile, $args); return true; } /** - * Initialize any flagging buttons on the page - * - * @param Action $action action being shown + * Actually output a flag button. If the target profile has already been + * flagged by the current user, a null-action faux button is shown. * - * @return boolean hook result + * @param Action $action + * @param Profile $profile + * @param array $returnToArgs */ - function onEndShowScripts($action) + protected function showFlagButton($action, $profile, $returnToArgs) { - $action->inlineScript('if ($(".form_entity_flag").length > 0) { '. - '$(".form_entity_flag").bind("click", function() {'. - 'SN.U.FormXHR($(this)); return false; }); }'); - return true; + $user = common_current_user(); + + if (!empty($user) && ($user->id != $profile->id)) { + + $action->elementStart('li', 'entity_flag'); + + if (User_flag_profile::exists($profile->id, $user->id)) { + // @todo FIXME: Add a title explaining what 'flagged' means? + // TRANS: Message added to a profile if it has been flagged for review. + $action->element('p', 'flagged', _m('Flagged')); + } else { + $form = new FlagProfileForm($action, $profile, $returnToArgs); + $form->show(); + } + + $action->elementEnd('li'); + } } /** @@ -227,7 +175,7 @@ class UserFlagPlugin extends Plugin * * @return boolean hook result */ - function onEndBlockProfile($user, $profile) + function onEndBlockProfile(User $user, Profile $profile) { if ($this->flagOnBlock && !User_flag_profile::exists($profile->id, $user->id)) { @@ -248,9 +196,9 @@ class UserFlagPlugin extends Plugin * * @return boolean hook result */ - function onProfileDeleteRelated($profile, &$related) + public function onProfileDeleteRelated(Profile $profile, array &$related) { - $related[] = 'user_flag_profile'; + $related[] = 'User_flag_profile'; return true; } @@ -279,12 +227,12 @@ class UserFlagPlugin extends Plugin * * @return boolean hook value */ - function onPluginVersion(&$versions) + function onPluginVersion(array &$versions) { $url = 'http://status.net/wiki/Plugin:UserFlag'; $versions[] = array('name' => 'UserFlag', - 'version' => STATUSNET_VERSION, + 'version' => GNUSOCIAL_VERSION, 'author' => 'Evan Prodromou', 'homepage' => $url, 'rawdescription' =>