Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- * System Plugin for Joomla! - Title change
- *
- */
- defined('_JEXEC') or die;
- jimport('joomla.plugin.plugin');
- use Joomla\Registry\Registry;
- /**
- * Class PlgSystemTitlechange
- *
- * @since 1.0.0
- */
- class PlgUserPromoterdaten extends JPlugin
- {
- /**
- * Application object
- *
- * @var JApplicationCms
- * @since 3.2
- */
- protected $app;
- /**
- * Database object
- *
- * @var JDatabaseDriver
- * @since 3.2
- */
- protected $db;
- /**
- * Constructor
- *
- * @param object &$subject Instance of JEventDispatcher
- * @param array $config Configuration
- *
- * @since 1.0.0
- */
- public function __construct(&$subject, $config)
- {
- parent::__construct($subject, $config);
- }
- /**
- * Utility method to act on a user after it has been saved.
- *
- * This method sends a registration email to new users created in the backend.
- *
- * @param array $user Holds the new user data.
- * @param boolean $isnew True if a new user is stored.
- * @param boolean $success True if user was successfully stored in the database.
- * @param string $msg Message.
- *
- * @return void
- *
- * @since 1.6
- */
- public function onUserAfterSave($user, $isnew, $success, $msg)
- {
- $data = JFactory::getApplication()->input->post->get('jform', array(), 'array');
- var_dump($data);
- var_dump($user);
- var_dump($isnew);
- var_dump($success);
- var_dump($msg);
- die;
- }
- public function onContentPrepareForm($form, $data)
- {
- if (!($form instanceof JForm))
- {
- $this->_subject->setError('JERROR_NOT_A_FORM');
- return false;
- }
- // Check we are manipulating a valid form,
- // may also want to check whether this is frontend or admin depending on where all you want to affect
- // JFactory::getApplication()->isAdmin()
- $name = $form->getName();
- if (!in_array($name, array('com_admin.profile', 'com_users.user', 'com_users.profile', 'com_users.registration')))
- {
- return true;
- }
- // remove fields on frontend
- if (!JFactory::getApplication()->isAdmin())
- {
- // $form->removeField('username');
- $form->removeField('password1');
- $form->removeField('password2');
- $form->removeField('email2');
- }
- return true;
- }
- //onUserBeforeSave
- public function onUserBeforeSave($user, $isnew, $new)
- {
- $data = JFactory::getApplication()->input->post->get('jform', array(), 'array');
- $data['username'] = $data['email1'];
- $data['email2'] = $data['email1'];
- JFactory::getApplication()->input->post->set('jform', $data);
- return $user = &$data;
- }
- /**
- * This method should handle any login logic and report back to the subject
- *
- * @param array $user Holds the user data
- * @param array $options Array holding options (remember, autoregister, group)
- *
- * @return boolean True on success
- *
- * @since 1.5
- */
- public function onUserLogin($user, $options = array())
- {
- $instance = $this->_getUser($user, $options);
- // If _getUser returned an error, then pass it back.
- if ($instance instanceof Exception)
- {
- return false;
- }
- // If the user is blocked, redirect with an error
- if ($instance->block == 1)
- {
- $this->app->enqueueMessage(JText::_('JERROR_NOLOGIN_BLOCKED'), 'warning');
- return false;
- }
- // Authorise the user based on the group information
- if (!isset($options['group']))
- {
- $options['group'] = 'USERS';
- }
- // Check the user can login.
- $result = $instance->authorise($options['action']);
- if (!$result)
- {
- $this->app->enqueueMessage(JText::_('JERROR_LOGIN_DENIED'), 'warning');
- return false;
- }
- // Mark the user as logged in
- $instance->guest = 0;
- $session = JFactory::getSession();
- // Grab the current session ID
- $oldSessionId = $session->getId();
- // Fork the session
- $session->fork();
- $session->set('user', $instance);
- // Ensure the new session's metadata is written to the database
- $this->app->checkSession();
- // Purge the old session
- $query = $this->db->getQuery(true)
- ->delete('#__session')
- ->where($this->db->quoteName('session_id') . ' = ' . $this->db->quote($oldSessionId));
- try
- {
- $this->db->setQuery($query)->execute();
- }
- catch (RuntimeException $e)
- {
- // The old session is already invalidated, don't let this block logging in
- }
- // Hit the user last visit field
- $instance->setLastVisit();
- // Add "user state" cookie used for reverse caching proxies like Varnish, Nginx etc.
- $conf = JFactory::getConfig();
- $cookie_domain = $conf->get('cookie_domain', '');
- $cookie_path = $conf->get('cookie_path', '/');
- if ($this->app->isSite())
- {
- $this->app->input->cookie->set("joomla_user_state", "logged_in", 0, $cookie_path, $cookie_domain, 0);
- }
- return true;
- }
- /**
- * This method should handle any logout logic and report back to the subject
- *
- * @param array $user Holds the user data.
- * @param array $options Array holding options (client, ...).
- *
- * @return bool True on success
- *
- * @since 1.5
- */
- public function onUserLogout($user, $options = array())
- {
- $my = JFactory::getUser();
- $session = JFactory::getSession();
- // Make sure we're a valid user first
- if ($user['id'] == 0 && !$my->get('tmp_user'))
- {
- return true;
- }
- // Check to see if we're deleting the current session
- if ($my->id == $user['id'] && $options['clientid'] == $this->app->getClientId())
- {
- // Hit the user last visit field
- $my->setLastVisit();
- // Destroy the php session for this user
- $session->destroy();
- }
- // Enable / Disable Forcing logout all users with same userid
- $forceLogout = $this->params->get('forceLogout', 1);
- if ($forceLogout)
- {
- $query = $this->db->getQuery(true)
- ->delete($this->db->quoteName('#__session'))
- ->where($this->db->quoteName('userid') . ' = ' . (int) $user['id'])
- ->where($this->db->quoteName('client_id') . ' = ' . (int) $options['clientid']);
- try
- {
- $this->db->setQuery($query)->execute();
- }
- catch (RuntimeException $e)
- {
- return false;
- }
- }
- // Delete "user state" cookie used for reverse caching proxies like Varnish, Nginx etc.
- $conf = JFactory::getConfig();
- $cookie_domain = $conf->get('cookie_domain', '');
- $cookie_path = $conf->get('cookie_path', '/');
- if ($this->app->isSite())
- {
- $this->app->input->cookie->set("joomla_user_state", "", time() - 86400, $cookie_path, $cookie_domain, 0);
- }
- return true;
- }
- /**
- * This method will return a user object
- *
- * If options['autoregister'] is true, if the user doesn't exist yet they will be created
- *
- * @param array $user Holds the user data.
- * @param array $options Array holding options (remember, autoregister, group).
- *
- * @return JUser
- *
- * @since 1.5
- */
- protected function _getUser($user, $options = array())
- {
- $instance = JUser::getInstance();
- $id = (int) JUserHelper::getUserId($user['username']);
- if ($id)
- {
- $instance->load($id);
- return $instance;
- }
- // TODO : move this out of the plugin
- $config = JComponentHelper::getParams('com_users');
- // Hard coded default to match the default value from com_users.
- $defaultUserGroup = $config->get('new_usertype', 2);
- $instance->id = 0;
- $instance->name = $user['fullname'];
- $instance->username = $user['username'];
- $instance->password_clear = $user['password_clear'];
- // Result should contain an email (check).
- $instance->email = $user['email'];
- $instance->groups = array($defaultUserGroup);
- // If autoregister is set let's register the user
- $autoregister = isset($options['autoregister']) ? $options['autoregister'] : $this->params->get('autoregister', 1);
- if ($autoregister)
- {
- if (!$instance->save())
- {
- JLog::add('Error in autoregistration for user ' . $user['username'] . '.', JLog::WARNING, 'error');
- }
- }
- else
- {
- // No existing user and autoregister off, this is a temporary user.
- $instance->set('tmp_user', true);
- }
- return $instance;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement