Ошибок больше нет, но теперь появилась другая ошибка.
Код:
Fatal error: Call to a member function save() on a non-object in /storage/home/srv44892/inetpub/components/controller.php on line 85
Решила долго не думая посмотреть в другое место, может подскажите как из этого извлечь полезное?
Свернуть ↑
PHP код:
<?php
// no direct access
defined('_JEXEC') or die('Restricted access');
jimport('joomla.application.component.model');
JTable::addIncludePath( JPATH_COMPONENT . DS . 'tables' );
class JusersModelJusers extends JModel {
private $_UserID, $_jAccounts;
// Constructor
function __construct() {
parent::__construct();
}
// Get User ID
public function _UserID() {
$user =& JFactory::getUser();
// // if User not Guest
if (!$user->guest) {
$this->_UserID = $user->id;
return $this->_UserID;
// // if User Guest
} else {
return false;
}
}
// Get accounts
public function getjAccounts() {
if (empty($this->_jAccounts))
{
$db = &$this->getDBO();
$UserID = $this->_UserID();
$query = 'SELECT * FROM '.$db->nameQuote('#__accounts').' WHERE `user_id`= '.$UserID;
$db->setQuery($query);
$this->_jAccounts = $db->loadObjectList();
return $this->_jAccounts;
}
}
// Get count user acc
public function getjUserCountAcc() {
if (empty($this->_jUserCountAcc))
{
$db = &$this->getDBO();
$UserID = $this->_UserID();
$query = 'SELECT COUNT(*) FROM '.$db->nameQuote('#__accounts').' WHERE `user_id`= '.$UserID;
$db->setQuery($query);
$this->_jUserCountAcc = $db->loadResult();
return $this->_jUserCountAcc;
}
}
// EOF
}
?>
Свернуть ↑Развернуть ↓
И второй кусок:
Свернуть ↑
PHP код:
<?php
// no direct access
defined('_JEXEC') or die('Restricted access');
jimport( 'joomla.application.component.view');
jimport ('joomla.html.parameter');
class JusersViewJusers extends JView {
function display($tpl = null) {
// Get data from model
$jAccData = &$this->get('jAccounts');
$rows = &$this->get('UserID');
$jUserCountAcc = &$this->get('jUserCountAcc');
$component = JComponentHelper::getComponent('com_jusers');
$params = new JParameter( $component->params );
$jLimitAcc = $params->get('jlimitacc');
$jAccess = $jLimitAcc - $jUserCountAcc;
// Send data to TMPL
$this->assignRef('rows', $rows);
$this->assignRef('jAccData', $jAccData);
$this->assignRef('jAccess', $jAccess);
$this->assignRef('jUserCountAcc', $jUserCountAcc);
// Initialization TMPL
parent::display($tpl);
}
}
?>
Свернуть ↑Развернуть ↓
И третий кусочек:
PHP код:
<div id="jUsersBlock1">
<?php if ($this->jAccess >= 1 ) { ?>
<div class="jBlock1"><a href="/register">
<div id="jAdd"></div></a>
</div>
Из этого всего нужно добавить тот же <?php if ($this->jAccess >= 1 ) { ?> в
Свернуть ↑
PHP код:
<?php
// no direct access
defined('_JEXEC') or die('Restricted access');
jimport('joomla.application.component.model');
//jimport('jwebcom.jconn');
JTable::addIncludePath( JPATH_COMPONENT . DS . 'tables' );
class JusersModelJregister extends JModel {
// Constructor
function __construct() {
parent::__construct();
}
//
public function save($post) {
global $mainframe;
$table = &$this->getTable();
//// Input Data ////
$jLogin = $post ['login'];
$jPassword = $post ['password'];
$jPassword1 = $post['password1'];
$jEmail = $post ['email'];
$jComments = $post['comments'];
$jPattern = '[^a-z,^A-Z,^0-9]';
$jDB = &JFactory::getJDbo();
$db = &JFactory::getDBO();
//// Check Empty Input Data ////
//// Check Empty Login ////
if (empty($jLogin)) {
JError::raiseNotice( '', 'REGISTRATION_EMPTY_LOGIN' );
return false;
}
//// Check Empty Password ////
if (empty($jPassword)) {
JError::raiseNotice( '', 'REGISTRATION_EMPTY_PASS' );
return false;
}
//// Check Empty Password ////
if (empty($jPassword1)) {
JError::raiseNotice( '', 'REGISTRATION_EMPTY_PASS1' );
return false;
}
/// Check reEnter Password ///
if ($jPassword <> $jPassword1) {
JError::raiseNotice( '', 'REGISTRATION_NOT_PASS2' );
return false;
}
//// Check Login in DB ////
if ($jLogin) {
//// Server DB ////
$querys = 'SELECT count(`login`) FROM #__accounts WHERE login = '.$jDB->Quote($jLogin);
$jDB->setQuery($querys);
if ($jDB->loadResult()) {
JError::raiseNotice( '', 'REGISTRATION_ALREADY_REGISTRED_ON_SERVER' );
return false; /// STOP if Login in use ///
} else {
//// Joomla DB ////
$query = 'SELECT count(`login`) FROM #__jaccounts WHERE `login`= '.$db->Quote($jLogin);
$db->setQuery($query);
if ($db->loadResult()) {
JError::raiseNotice( '', 'REGISTRATION_ALREADY_REGISTRED' );
return false; /// STOP if Login in use ///
}
/// IF LOGIN NOT IN USE in Joomla DB and Server DB ///
/// WRITE DATA in Server DB ///
$jPassCode = base64_encode(pack('H*', sha1($jPassword)));
$query = 'INSERT INTO accounts (login, password, access_level)
VALUES ('.$jDB->Quote($post ['login']).', '.$jDB->Quote($jPassCode).', 0)';
$jDB->setQuery($query);
if (!$jDB->query()) { /// STOP if error ///
JError::raiseError( 500, $jDB->stderr() );
return false;
}
}
}
// привязываем поля формы к таблице
if (!$table->bind($post)) {
$this->setError($table->getError());
return false;
}
// проверяем данные
if ($table->check($post)) {
if (!$table->store($post)) {
$this->setError($table->getError());
return false;
}
} else {
$this->setError($table->getError());
return false;
}
return true;
}
}
?>
Свернуть ↑Развернуть ↓
Суть такова: если на мастер аккаунте больше 5 игровых аккаунтов, возвращаем ошибку.
Не понимаю