Page MenuHomeIn-Portal Phabricator

users_item.php
No OneTemporary

File Metadata

Created
Mon, Sep 29, 11:47 PM

users_item.php

<?php
/**
* @version $Id: users_item.php 15677 2013-01-17 18:52:50Z alex $
* @package In-Portal
* @copyright Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
* @license GNU/GPL
* In-Portal is Open Source software.
* This means that this software may have been modified pursuant
* the GNU General Public License, and as distributed it includes
* or is derivative of works licensed under the GNU General Public License
* or other free or open source software licenses.
* See http://www.in-portal.org/license for copyright notices and details.
*/
defined('FULL_PATH') or die('restricted access!');
class UsersItem extends kDBItem {
/**
* Returns IDs of groups to which user belongs and membership is not expired
*
* @param bool $force_reload
* @return Array
* @access public
*/
public function getMembershipGroups($force_reload = false)
{
$user_groups = $this->Application->RecallVar('UserGroups');
if ( $user_groups === false || $force_reload ) {
// primary group goes first
$sql = 'SELECT GroupId
FROM ' . TABLE_PREFIX . 'UserGroupRelations
WHERE (PortalUserId = ' . $this->GetID() . ') AND ( (MembershipExpires IS NULL) OR (MembershipExpires >= ' . adodb_mktime() . ') )
ORDER BY IF(GroupId = ' . $this->GetDBField('PrimaryGroupId') . ', 1, 0) DESC';
$groups = $this->Conn->GetCol($sql);
$user_helper = $this->Application->recallObject('UserHelper');
/* @var $user_helper UserHelper */
$user_groups = Array ();
$ip_restrictions = $user_helper->getGroupsWithIPRestrictions();
foreach ($groups as $group_id) {
if ( !isset($ip_restrictions[$group_id]) || kUtil::ipMatch($ip_restrictions[$group_id], "\n") ) {
$user_groups[] = $group_id;
}
}
return $user_groups;
}
return explode(',', $user_groups);
}
function sendEmails()
{
switch ( $this->GetDBField('Status') ) {
case STATUS_ACTIVE:
$event_name = $this->Application->ConfigValue('User_Password_Auto') ? 'USER.VALIDATE' : 'USER.ADD';
$this->Application->emailAdmin($event_name);
$this->Application->emailUser($event_name, $this->GetID());
break;
case STATUS_PENDING:
$this->Application->emailAdmin('USER.ADD.PENDING');
$this->Application->emailUser('USER.ADD.PENDING', $this->GetID());
break;
}
}
/**
* Checks that user is subscriber only
*
* @return bool
*/
public function isSubscriberOnly()
{
return $this->GetDBField('PrimaryGroupId') == $this->Application->ConfigValue('User_SubscriberGroup');
}
/**
* Checks that user is subscribed
*
* @return bool
*/
public function isSubscribed()
{
$group_id = $this->Application->ConfigValue('User_SubscriberGroup');
$sql = 'SELECT GroupId
FROM ' . TABLE_PREFIX . 'UserGroupRelations
WHERE (PortalUserId = ' . $this->GetID() . ') AND (GroupId = ' . $group_id . ')';
return $this->Conn->GetOne($sql);
}
/**
* Creates a record in the database table with current item' values
*
* @param mixed $force_id Set to TRUE to force creating of item's own ID or to value to force creating of passed id. Do not pass 1 for true, pass exactly TRUE!
* @param bool $system_create
* @return bool
* @access public
*/
public function Create($force_id = false, $system_create = false)
{
$ret = parent::Create($force_id, $system_create);
if ( $ret ) {
// find out how to synchronize user only when it's copied to live table
$sync_manager = $this->Application->recallObject('UsersSyncronizeManager', null, Array (), Array ('InPortalSyncronize'));
/* @var $sync_manager UsersSyncronizeManager */
$sync_manager->performAction('createUser', $this->FieldValues);
}
return $ret;
}
/**
* Updates previously loaded record with current item' values
*
* @access public
* @param int $id Primary Key Id to update
* @param Array $update_fields
* @param bool $system_update
* @return bool
* @access public
*/
public function Update($id = null, $update_fields = null, $system_update = false)
{
$ret = parent::Update($id, $update_fields, $system_update);
if ( $ret ) {
// find out how to synchronize user only when it's copied to live table
$sync_manager = $this->Application->recallObject('UsersSyncronizeManager', null, Array (), Array ('InPortalSyncronize'));
/* @var $sync_manager UsersSyncronizeManager */
$sync_manager->performAction('updateUser', $this->FieldValues);
}
return $ret;
}
/**
* Deletes the record from database
*
* @param int $id
* @return bool
* @access public
*/
public function Delete($id = null)
{
$ret = parent::Delete($id);
if ( $ret ) {
$sync_manager = $this->Application->recallObject('UsersSyncronizeManager', null, Array (), Array ('InPortalSyncronize'));
/* @var $sync_manager UsersSyncronizeManager */
$sync_manager->performAction('deleteUser', $this->FieldValues);
}
return $ret;
}
function setName($full_name)
{
$full_name = explode(' ', $full_name);
if (count($full_name) > 2) {
$last_name = array_pop($full_name);
$first_name = implode(' ', $full_name);
}
else {
$last_name = $full_name[1];
$first_name = $full_name[0];
}
$this->SetDBField('FirstName', $first_name);
$this->SetDBField('LastName', $last_name);
}
/**
* Generates new password for given user
*
* @param int $length
* @return string
* @access public
*/
public function generatePassword($length = 10)
{
$password = kUtil::generatePassword($length);
$this->SetField('Password', $password);
$this->SetField('VerifyPassword', $password);
return $password;
}
}

Event Timeline