コード例 #1
0
ファイル: server.php プロジェクト: sabrinahung/test_cms
 /**
  * Upload users
  */
 public function upload($form)
 {
     // TODO To be replaced by JInput (buggy at that time)
     $files = JRequest::getVar('jform', null, 'files', 'array');
     $sid = (int) $form['id'];
     if ($files['type']['file'] == 'text/csv') {
         $handle = fopen($files['tmp_name']['file'], "r");
         do {
             $data = fgetcsv($handle);
             if ($data && count($data) == 4) {
                 $user = JUser::getInstance();
                 if ($id = intval(JUserHelper::getUserId($data[0]))) {
                     $user->load($id);
                 }
                 $user->username = $data[0];
                 $user->name = $data[1];
                 $user->email = $data[2];
                 $user->groups = array();
                 $groups = explode(',', $data[3]);
                 foreach ($groups as $group) {
                     if (is_numeric($group)) {
                         $user->groups[] = intval($group);
                     } else {
                         $user->groups = array_merge((array) $user->groups, (array) ExternalloginHelper::getGroups($group));
                     }
                 }
                 if ($user->save()) {
                     $db = JFactory::getDbo();
                     $query = $db->getQuery(true);
                     $query->insert('#__externallogin_users')->columns('server_id, user_id')->values((int) $sid . ',' . (int) $user->id);
                     $db->setQuery($query);
                     $db->execute();
                 }
             }
         } while ($data);
         fclose($handle);
         return true;
     } else {
         $this->setError('COM_EXTERNALLOGIN_ERROR_BAD_FILE');
         return false;
     }
 }
コード例 #2
0
ファイル: caslogin.php プロジェクト: sabrinahung/test_cms
 /**
  * External Login event
  *
  * @param   JAuthenticationResponse  &$response  Response to the login process
  *
  * @return	void|true
  *
  * @since	2.0.0
  */
 public function onExternalLogin(&$response)
 {
     if (isset($this->success)) {
         // Prepare response
         $server = $this->server;
         $params = $server->params;
         $sid = $server->id;
         $response->status = JAuthentication::STATUS_SUCCESS;
         $response->server = $server;
         $response->type = 'system.caslogin';
         $response->message = '';
         // Compute username
         $response->username = $this->xpath->evaluate($params->get('username_xpath'), $this->success);
         // Compute email
         $response->email = $this->xpath->evaluate($params->get('email_xpath'), $this->success);
         // Compute name
         $response->fullname = $this->xpath->evaluate($params->get('name_xpath'), $this->success);
         // Compute groups
         if ($params->get('group_xpath')) {
             $groups = $this->xpath->query($params->get('group_xpath'), $this->success);
             if ($groups && $groups->length > 0) {
                 // Log message
                 if ($params->get('log_groups', 0)) {
                     JLog::add(new ExternalloginLogEntry('Successful detection of groups for user "' . $response->username . '" on server ' . $sid, JLog::INFO, 'system-caslogin-groups'));
                 }
                 $response->groups = array();
                 // Loop on each group attribute
                 for ($i = 0; $i < $groups->length; $i++) {
                     $group = (string) $groups->item($i)->nodeValue;
                     if (is_numeric($group) && $params->get('group_integer', 0)) {
                         // Log message
                         if ($params->get('log_groups', 0)) {
                             JLog::add(new ExternalloginLogEntry('Found integer group ' . $group . ' of groups for user "' . $response->username . '" on server ' . $sid, JLog::INFO, 'system-caslogin-groups'));
                         }
                         // Group is numeric
                         $dbo = JFactory::getDbo();
                         $query = $dbo->getQuery(true);
                         $query->select('id')->from('#__usergroups')->where('id = ' . (int) $group);
                         $dbo->setQuery($query);
                         if ($dbo->loadResult()) {
                             // Log message
                             if ($params->get('log_groups', 0)) {
                                 JLog::add(new ExternalloginLogEntry('Added integer group ' . $group . ' of groups for user "' . $response->username . '" on server ' . $sid, JLog::INFO, 'system-caslogin-groups'));
                             }
                             $response->groups[] = $group;
                         }
                     } else {
                         // Log message
                         if ($params->get('log_groups', 0)) {
                             JLog::add(new ExternalloginLogEntry('Found string group(s) "' . $group . '" for user "' . $response->username . '" on server ' . $sid, JLog::INFO, 'system-caslogin-groups'));
                         }
                         // Group is not numeric, extract the groups
                         $newgroups = (array) ExternalloginHelper::getGroups($group, $params->get('group_separator', ''));
                         $response->groups = array_merge($response->groups, $newgroups);
                         // Log message
                         if ($params->get('log_groups', 0)) {
                             if (empty($newgroups)) {
                                 JLog::add(new ExternalloginLogEntry('No Joomla! groups found from "' . $group . '" on server ' . $sid, JLog::INFO, 'system-caslogin-groups'));
                             } else {
                                 JLog::add(new ExternalloginLogEntry('Added groups (' . implode(',', $newgroups) . ') for user "' . $response->username . '" on server ' . $sid, JLog::INFO, 'system-caslogin-groups'));
                             }
                         }
                     }
                 }
             } else {
                 // Log message
                 if ($params->get('log_groups', 0)) {
                     JLog::add(new ExternalloginLogEntry('Unsuccessful detection of groups for user "' . $response->username . '" on server ' . $sid, JLog::WARNING, 'system-caslogin-groups'));
                 }
             }
         }
         return true;
     }
 }