Esempio n. 1
0
/**
 * Register with facebook
 */
function registerWithFacebook()
{
    // flush if already logged in
    Zend_Auth::getInstance()->clearIdentity();
    $session = new Zend_Session_Namespace('Default');
    $email = $session->fb_user_email;
    $avatar = $session->fb_avatar;
    // do not allow direct access - without fb_user_email inside session
    if (!$session->fb_user_email) {
        Zend_Controller_Action_HelperBroker::getStaticHelper('Redirector')->gotoUrl('');
    }
    require_once 'Form.php';
    $registerwithfacebook_form = new Addon_FacebookRegisterForm();
    $Profiles = new Application_Model_Profiles();
    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
        if ($registerwithfacebook_form->isValid($_POST)) {
            $name = $registerwithfacebook_form->getValue('name');
            $user = $Profiles->createRow();
            $user->name = $name;
            $user->email = $email;
            $user->password = '';
            $user->activationkey = 'activated';
            $user->language = Zend_Registry::get('config')->get('default_language');
            $user = $Profiles->createNewUser($user, 'facebook');
            // update last login date
            $ProfilesMeta = new Application_Model_ProfilesMeta();
            $ProfilesMeta->metaUpdate('last_login', Application_Plugin_Common::now(), $user->id);
            $Storage = new Application_Model_Storage();
            $StorageAdapter = $Storage->getAdapter();
            $defaultres = 64;
            $bigres = Zend_Registry::get('config')->get('avatar_size') ? Zend_Registry::get('config')->get('avatar_size') : $defaultres;
            // get the image
            $c = new Zend_Http_Client();
            $c->setUri($avatar);
            $result = $c->request('GET');
            $img = imagecreatefromstring($result->getBody());
            // create regular avatar image, resample and store
            $imgname = 'profileimage_' . $name . '.jpg';
            imagejpeg($img, TMP_PATH . '/' . $imgname);
            Application_Plugin_ImageLib::resample(TMP_PATH . '/' . $imgname, TMP_PATH . '/' . $imgname, $defaultres, $defaultres, false);
            $new_filename = $StorageAdapter->moveFileToStorage($imgname, 'avatar');
            $Profiles->updateField($name, 'avatar', $new_filename);
            // create big avatar image, resample and store
            $imgname = 'bigprofileimage_' . $name . '.jpg';
            imagejpeg($img, TMP_PATH . '/' . $imgname);
            Application_Plugin_ImageLib::resample(TMP_PATH . '/' . $imgname, TMP_PATH . '/' . $imgname, $bigres, $bigres, false);
            $big_avatar = $StorageAdapter->moveFileToStorage($imgname, 'avatar');
            $ProfilesMeta->metaUpdate('big_avatar', $big_avatar, $user->id);
            // free img resource
            imagedestroy($img);
            // login user
            $emailAuthAdapter = Application_Plugin_Common::getEmailAuthAdapter($email);
            $auth = Zend_Auth::getInstance();
            $auth->authenticate($emailAuthAdapter);
            $identity = $emailAuthAdapter->getResultRowObject();
            $authStorage = $auth->getStorage();
            $authStorage->write($identity);
            // clear session data
            $session->fb_user_email = '';
            $session->fb_user_display_name = '';
            $session->fb_avatar = '';
            $user_id = $user->id;
            // trigger hooks
            Zend_Registry::get('hooks')->trigger('hook_firsttimelogin', $user_id);
            // show welcome message
            Application_Plugin_Alerts::success(Zend_Registry::get('Zend_Translate')->translate('Welcome to the network.'), 'on');
            Zend_Controller_Action_HelperBroker::getStaticHelper('Redirector')->gotoUrl('');
        }
    }
    echo $registerwithfacebook_form;
}
Esempio n. 2
0
 /**
  * Register submit
  */
 public function submitRegisterForm($form)
 {
     if ($form->isValid($_POST)) {
         $Profiles = new Application_Model_Profiles();
         $name = $form->getValue('regname');
         $email = $form->getValue('regemail');
         $hash = new Application_Plugin_Phpass();
         $password = $hash->HashPassword($form->getValue('regpassword'));
         $user = $Profiles->createRow();
         $user->name = $name;
         $user->email = $email;
         $user->password = $password;
         if (Zend_Registry::get('config')->get('user_activation_disabled')) {
             // create new user withot activation & login
             $user->activationkey = 'activated';
             $new_profile = $Profiles->createNewUser($user);
             // auto-login user and store identity
             $authAdapter = Application_Plugin_Common::getAuthAdapter();
             $authAdapter->setIdentity($new_profile->email)->setCredential('whatever')->setCredentialTreatment('autologin');
             $auth = Zend_Auth::getInstance();
             $auth->authenticate($authAdapter);
             $identity = $authAdapter->getResultRowObject();
             $authStorage = $auth->getStorage();
             $authStorage->write($identity);
             // update last login date
             $ProfilesMeta = new Application_Model_ProfilesMeta();
             $ProfilesMeta->metaUpdate('last_login', Application_Plugin_Common::now(), $identity->id);
             // show welcome message
             Application_Plugin_Alerts::success($this->view->translate('Welcome to the network.'), 'on');
         } else {
             // create activation key and sent it to user email
             $key = $Profiles->generateActivationKey($email);
             $user->activationkey = $key;
             $ret = Application_Plugin_Common::sendActivationEmail($email, $name, $key);
             // email has been sent, proceed
             if ($ret) {
                 // show success message
                 Application_Plugin_Alerts::info(Zend_Registry::get('Zend_Translate')->translate('Please Check your Inbox and come back after you activate your account.'), 'off');
                 // build url
                 $base_url = Application_Plugin_Common::getFullBaseUrl();
                 $resendactivation_link = $base_url . '/index/activate/resend/' . $user->name;
                 Application_Plugin_Alerts::info('<a href="' . $resendactivation_link . '">' . Zend_Registry::get('Zend_Translate')->translate('Click here to resend the activation email') . '</a>', 'off', false);
                 // create new user
                 $new_profile = $Profiles->createNewUser($user);
             } else {
                 // show error message
                 Application_Plugin_Alerts::error(Zend_Registry::get('Zend_Translate')->translate('Something went wrong, email was not sent.'), 'off');
                 Zend_Controller_Action_HelperBroker::getStaticHelper('Redirector')->gotoUrl('');
                 return;
             }
         }
         // flush url
         Zend_Controller_Action_HelperBroker::getStaticHelper('Redirector')->gotoUrl('');
     }
     return $form;
 }