Jump to content
  • 0

не находит метод


crautcher
 Share

Question

в класе фейсбук написал метод:


function SetAppLg($local){
global $lg;
$ulg = FacebookApp :: getLgByLocale($local);
if ($ulg == 'ru' || $ulg='lt')
$lg = $ulg ;
else
$lg = 'lt' ;
}

класс экстендс этот , вызываю метод


function ExecDefault(){
$Fb = facebook::getAuthorized() ;
$facebook = new facebook;
if ( $Fb['profile']) {
$this -> SetAppLg ($Fb['profile']['locale']); //tut
$sql = Sql::getInstance('horo');
$Fb ['profile'] ['Token'] = $facebook ->getAccessToken() ;
$this -> AutoregFbUser ( $Fb ['profile']);
$this -> AutoLogin ($Fb ['profile'] );
$this -> setVar ('logoutLink', $facebook->getLogoutUrl () );
}
else {
$this -> setVar ( 'loginLink' , $facebook-> getLoginUrl (
array (
'canvas' => 1,
'scope' => 'email,offline_access,publish_stream,user_birthday',
'redirect_uri' => facebook::getConfig( 'appUrl' )
)
) );
}
$this -> setVar ('redirect','http://'. facebook::getConfig( "domain" ) .'/');
$this -> output ( "fbapp" );
}

пишет , чет за фак ? другии методы то пашут

Fatal error: Call to undefined method ActionFbApp::SetAppLg() in /var/www/absolux/astro/action/action.fbapp.php on line 9

Edited by crautcher
Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0

глаза сломал, не вижу строчки 9 в приведённом коде.

наследование точно указали? дайте полностью под спойлерами код обоих классов на всякий случай, если это возможно.

Link to comment
Share on other sites

  • 0

глаза сломал, не вижу строчки 9 в приведённом коде.

наследование точно указали? дайте полностью под спойлерами код обоих классов на всякий случай, если это возможно.

для кого я писал комент "//tut" ?

всё работало без метода , значит наследование верное

файл 1:

<?php
class ActionFacebook extends BasicAction {
public $loginInfo='';

function add($id) {
$date = date('Y-m-d');
$sql = Sql::getInstance('horo');
$sql -> run ("UPDATE `FacebookStat` SET `count` = count + 1 WHERE `id` = '" . addslashes($id) . "' AND `date` = '" . $date ."'");
if ($sql -> get_affected_rows() == 0) {
$sql -> run ("INSERT INTO `FacebookStat` (`id`, `date`, `count`) VALUES ('" . addslashes($id) . "', '" . $date . "', '1')");
}
}

function GetBirthDate($profile){
if (empty($profile['birthday']) || is_null($profile['birthday'])) return false;
$tmp = explode("/", $profile['birthday']);
$birthdate =array('day' =>$tmp[1],'month' =>$tmp[0],'year' =>$tmp[2]);
return $birthdate;
}

function AutoregFbUser ($user_info){
$sql = Sql::getInstance('horo');
$sql -> query (" SELECT * from Login where Email = '". $user_info['email'] ."' ", $rows);
if ( $rows == 0 ){
$this -> RegisterUser ($user_info);
$sql -> run ("update Login SET IsEmail = 1 where Email = '". $user_info['email'] ."' ");
$bd = $this->GetBirthDate($user_info['profile']);
$LoginInfo = $this->GetLoginInfo($user_info['email']);
if (!empty($LoginInfo[0]['LoginID']) && ($LoginInfo[0]['LoginID']) && ($bd))
$sql->run("insert into HoroUserInfo (LoginID , BirthDate , TimeZone , UpdateDate) values('". $LoginInfo[0]['LoginID'] ."' , '". $bd['year'] ."-". $bd['month'] ."-". $bd['day'] ." 00:00:00' , 'Europe/Vilnius' , '". date('Y') ."-". date('m') ."-". date('d') ." ". date('H') .":". date('i') .":". date('s') ."' ) ");
elseif (!empty($LoginInfo[0]['LoginID']) && ($LoginInfo[0]['LoginID']) )
$sql->run("insert into HoroUserInfo (LoginID , BirthDate , TimeZone , UpdateDate) values('". $LoginInfo[0]['LoginID'] ."' , '". date('Y') ."-". date('m')."-". date('d') ." 00:00:00' , 'Europe/Vilnius' , '". date('Y') ."-". date('m') ."-". date('d') ." ". date('H') .":". date('i') .":". date('s') ."' ) ");
}
$sql -> query (" SELECT * from FacebookJointing where fbEmail = '".addslashes( $user_info['email'] ) ."' ", $rows);
if ( $rows == 0 )
$this->add('5');
}



function RegisterUser ($user_info) {
global $sid , $cfg, $sql;
$post = array ('horoscope' => '', 'redirect' => '', 'Login' => $user_info['id'], 'Password' => $user_info['id'] , 'Email' => $user_info["email"] );
$errors = array();
$args = array();
$basic = Basic::make ($post, $cfg ["main"] ["id"], 0);
if ($basic) {
$basic -> disableSendMail(true); print($basic -> insert() );
if ($basic -> insert() ) {
if (isset ($_COOKIE ['jRef'])) {
$joinStat = new JoinStatistic($sql);
$joinStat -> insert($basic -> LoginID, substr ($sid, -3), $_COOKIE ['jRef']);
setcookie ('jRef', '', time() - 3600 * 24, '/');
}
$action = new Action();
$action -> log_joins ($basic -> LoginID, substr ($sid, -3), $basic -> aLogin["PartnerID"]);
}
}
}

function GetLoginInfo($email){
if (!empty($this->loginInfo))
return $this->loginInfo;
$sql = Sql::getInstance ('horo');
$loginInfo = $sql -> getListFromQuery ("SELECT * FROM Login where Email ='". $email ."' limit 1");
return $loginInfo;
}

function AutoLogin ($fbUserInfo) {
global $session,$sid;
$sql = Sql::getInstance ('horo');
$LoginInfo = $this->GetLoginInfo($fbUserInfo['email']);
if (! FacebookApp::getUserByKey('LoginID', $LoginInfo[0]['LoginID'] )) {
$data = array ('LoginID' => $LoginInfo[0]['LoginID'] , 'fbID' => $fbUserInfo['id'], 'fbEmail' => $fbUserInfo['email'] , 'mailingList' => '1');
FacebookApp::accountJointing($data);
}
FacebookApp::setAccessToken($fbUserInfo['id'], $fbUserInfo['Token']);
$sql->run("update FacebookJointing set mailingList= 1 WHERE LoginID = '".addslashes( $LoginInfo[0]['LoginID'] ) ."' ");
$sql->run("UPDATE Login SET IsNews = 1 where LoginID='".addslashes ( $LoginInfo[0]['LoginID'] ) ."'");
$LoginInfo = $sql -> getListFromQuery ("SELECT * FROM Auth where LoginID ='". $LoginInfo[0]['LoginID'] ."' limit 1");
if ( isset ($LoginInfo [0] ['Login']) && isset ($LoginInfo [0] ['Password']) ){
$auth = new Auth ($LoginInfo[0]['Login'] , "", $LoginInfo[0]['Password'] , null);
if ($auth -> access) {
$sid = $session -> create ($auth -> LoginID, $LoginInfo[0]['Login'] , $auth -> CanServices);
$action = new Action ();
$action -> log_logins ($auth -> LoginID, substr ($sid, -3), $auth -> PartnerID, $auth -> isUniqueDayLogin , $auth -> isUniqueMonthLogin);
return $sid;
}
else return false;
}



function SetAppLg($local){
global $lg;
$ulg = FacebookApp :: getLgByLocale($local); die($ulg);
if ($ulg == 'ru' || $ulg='lt')
$lg = $ulg ;
else
$lg = 'lt' ;
}

}

а файл 2 состоит пока ток из того метода

Edited by crautcher
Link to comment
Share on other sites

  • 0

а если ActionFbApp наследник, к чему новый создаёте внутри?

 $facebook = new facebook; 

это не экшн а просто фейбук , в нём функционал работи на стороне фейсбука , а этот на стороне моего серва

Link to comment
Share on other sites

  • 0

а __construct() у второго вашего класса-наследника (ActionFbApp, как я понимаю), есть?

нет , только 1 метод и всё .

как всегда ложаюсь на мелочах , фигурную скобки не верно закрыл , выходит метод внутри другого, извеняюсь за потраченое время

Link to comment
Share on other sites

  • 0

проверяйте скобки {}. у вас вложенность функций у родительского класса похоже нарушена.

ну вот, уже и сами нашли :)

PS: значит IDE хорошая нужна, которая бы следила за этим. я eclipse пользуюсь, но он довольно громоздкий, на java.

Edited by Быколай
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy