Example #1
0
File: oauth.php Project: anqh/anqh
 /**
  * Update old token.
  *
  * @param   Model_User_External  $external
  * @param   string               $token
  * @return  boolean              If old matches provider
  */
 protected function _update_token(Model_User_External &$external, $token)
 {
     if ($external->loaded() && $external->provider == $this->consumer->get_provider()) {
         $external->token = $token['access_token'];
         $external->modified = time();
         $external->expires = time() + (int) $token['expires'];
         $external->save();
         return true;
     }
     return false;
 }
Example #2
0
    /**
     * Render view.
     *
     * @return  string
     */
    public function content()
    {
        ob_start();
        $facebook = $this->consumer ? $this->load_facebook() : false;
        $tabs = array('basic' => '<i class="hidden-sm fa fa-fw fa-user"></i> ' . __('Profile'), 'auth' => '<i class="hidden-sm fa fa-fw fa-key"></i> ' . __('Username & Email'), 'facebook' => '<i class="hidden-sm fa fa-fw fa-facebook"></i> ' . 'Facebook', 'forum' => '<i class="hidden-sm fa fa-fw fa-comments"></i> ' . __('Forum'));
        echo Form::open();
        ?>

<?php 
        if ($this->errors) {
            ?>
<div class="alert alert-danger">
	<strong><?php 
            echo __('Error happens!');
            ?>
</strong>
	<ul>
		<?php 
            foreach ((array) $this->errors as $error) {
                ?>
		<li><?php 
                echo $error;
                ?>
</li>
		<?php 
            }
            ?>
	</ul>
</div>
<?php 
        }
        ?>

<ul class="nav nav-pills nav-stacked col-sm-2">
	<?php 
        foreach ($tabs as $tab => $title) {
            ?>
	<li<?php 
            echo $tab == $this->tab ? ' class="active"' : '';
            ?>
>
		<a href="#settings-<?php 
            echo $tab;
            ?>
" data-toggle="tab"><?php 
            echo $title;
            ?>
</a>
	</li>
	<?php 
        }
        ?>
</ul>

<div class="tab-content col-md-10">

	<div id="settings-basic" class="tab-pane<?php 
        echo $this->tab == 'basic' ? ' active' : '';
        ?>
">
		<fieldset id="fields-basic" class="col-sm-6">

			<div class="row">
			<div class="col-sm-10">
				<?php 
        echo Form::input_wrap('avatar', $this->user->avatar_url, null, __('Avatar'), Arr::get($this->errors, 'avatar'));
        ?>
			</div>
			<div class="col-sm-2">
				<?php 
        echo HTML::avatar($this->user->avatar_url, null, null, false);
        ?>
			</div>
			</div>


			<?php 
        echo Form::input_wrap('name', $this->user->name, null, __('Name'), Arr::get($this->errors, 'name'));
        ?>

			<?php 
        echo Form::radios_wrap('name_visibility', array(Model_User::NAME_VISIBLE => __('Visible'), Model_User::NAME_HIDDEN => __('Hidden')), $this->user->setting('user.name'), null, null, null, null, true);
        ?>

			<?php 
        echo Form::input_wrap('homepage', $this->user->homepage, null, __('Homepage'), Arr::get($this->errors, 'homepage'));
        ?>

			<?php 
        echo Form::radios_wrap('gender', array('f' => '<i class="fa fa-female female"></i> ' . __('Female'), 'm' => '<i class="fa fa-male male"></i> ' . __('Male'), 'o' => __('Other')), $this->user->gender, null, __('Gender'), Arr::get($this->errors, 'gender'), null, true);
        ?>

			<?php 
        echo Form::input_wrap('dob', $this->user->dob ? Date::format('DMYYYY', $this->user->dob) : null, array('class' => 'date', 'maxlength' => 10, 'size' => 7, 'placeholder' => 'd.m.yyyy'), __('Date of Birth'), Arr::get($this->errors, 'dob'));
        ?>

			<?php 
        echo Form::radios_wrap('dob_visibility', array(Model_User::DOB_VISIBLE => __('Visible'), Model_User::DOB_DATEONLY => __('Date only in profile'), Model_User::DOB_HIDDEN => __('Hidden')), $this->user->setting('user.dob'), null, null, null, null, true);
        ?>

		</fieldset>

		<fieldset id="fields-location" class="col-md-6">

			<?php 
        echo Form::input_wrap('location', $this->user->location, null, __('Where you at?'), Arr::get($this->errors, 'location'), __('e.g. <em>"Helsinki"</em> or <em>"Asema-aukio, Helsinki"</em>'));
        ?>

			<?php 
        echo Form::input_wrap('city_name', $this->user->city_name, null, __('City'), Arr::get($this->errors, 'city_name'));
        ?>

			<div id="map"></div>
		</fieldset>
	</div>


	<div id="settings-auth" class="tab-pane<?php 
        echo $this->tab == 'auth' ? ' active' : '';
        ?>
">
		<fieldset id="fields-basic" class="col-md-6">

			<?php 
        echo Form::input_wrap('username', $this->user->username, array('required', 'placeholder' => __('Required')), __('Username'), Arr::get($this->errors, 'username'));
        ?>

			<?php 
        echo Form::input_wrap('email', $this->user->email, array('required', 'placeholder' => __('Required')), __('Email'), Arr::get($this->errors, 'email'));
        ?>

			<?php 
        echo Form::password_wrap('password', null, array('placeholder' => __('Optional')), __('New password'), Arr::get($this->errors, 'password'), __('Size <em>does</em> matter - the longer, the better.'));
        ?>

			<?php 
        echo Form::password_wrap('current_password', null, array('placeholder' => __('Required')), __('Current password'), Arr::get($this->errors, 'current_password'), __('For your protection we require your current password.'));
        ?>

		</fieldset>
	</div>


	<div id="settings-facebook" class="tab-pane<?php 
        echo $this->tab == 'facebook' ? ' active' : '';
        ?>
">
		<fieldset id="fields-connections" class="col-md-6">

		<?php 
        if (!$this->external || !$this->external->loaded()) {
            ?>

			<?php 
            echo HTML::anchor(Route::url('oauth', array('action' => 'login', 'provider' => 'facebook')), '<i class="fa fa-facebook"></i> ' . __('Connect to Facebook'), array('class' => 'btn btn-primary btn-lg', 'title' => __('Connect with your Facebook account')));
            ?>

		<?php 
        } elseif (is_array($facebook)) {
            $avatar = 'https://graph.facebook.com/' . $facebook['id'] . '/picture';
            ?>

			<div class="media">
				<?php 
            echo HTML::avatar($avatar, null, 'pull-left facebook', false);
            ?>
				<div class="media-body">
					<?php 
            echo HTML::anchor($facebook['link'], HTML::chars($facebook['name']), array('target' => '_blank'));
            ?>
					<?php 
            echo Form::checkbox_wrap('avatar', $avatar, $this->user->avatar_url == $avatar, null, __('Set as your avatar'));
            ?>
					<?php 
            echo Form::checkbox_wrap('picture', $avatar . '?type=large', $this->user->picture == $avatar . '?type=large', null, __('Set as your profile image'));
            ?>
					<?php 
            echo HTML::anchor(Route::url('oauth', array('action' => 'disconnect', 'provider' => 'facebook')), '<i class="icon-facebook"></i> ' . __('Disconnect your Facebook account'), array('class' => 'btn btn-danger facebook-delete', 'title' => __('Disconnect your Facebook account')));
            ?>
				</div>
			</div>

		<?php 
        } elseif ($facebook) {
            ?>

			<?php 
            echo $facebook;
            ?>

			<?php 
            echo HTML::anchor(Route::url('oauth', array('action' => 'disconnect', 'provider' => 'facebook')), '<i class="icon-facebook"></i> ' . __('Disconnect your Facebook account'), array('class' => 'btn btn-danger facebook-delete', 'title' => __('Disconnect your Facebook account')));
            ?>

		<?php 
        }
        ?>

		</fieldset>
	</div>


	<div id="settings-forum" class="tab-pane<?php 
        echo $this->tab == 'forum' ? ' active' : '';
        ?>
">
		<fieldset id="fields-forum" class="col-md-6">

			<?php 
        echo Form::input_wrap('title', $this->user->title, null, __('Title'), Arr::get($this->errors, 'title'));
        ?>

			<?php 
        echo Form::textarea_wrap('signature', $this->user->signature, array('class' => 'monospace', 'rows' => 5), true, __('Signature'), Arr::get($this->errors, 'signature'));
        ?>

		</fieldset>
	</div>

</div>

<div class="row">
	<fieldset class="col-xs-12 text-center">
		<br>
		<?php 
        echo Form::hidden('latitude', $this->user->latitude);
        ?>
		<?php 
        echo Form::hidden('longitude', $this->user->longitude);
        ?>

		<?php 
        echo Form::csrf();
        ?>
		<?php 
        echo Form::button('save', __('Save'), array('type' => 'submit', 'class' => 'btn btn-success btn-lg'));
        ?>
		<?php 
        echo HTML::anchor(URL::user($this->user), __('Cancel'), array('class' => 'cancel'));
        ?>
	</fieldset>
</div>


<?php 
        echo Form::close();
        echo $this->javascript();
        return ob_get_clean();
    }
Example #3
0
 /**
  * Attempt to login with 3rd party account
  *
  * @param   Model_User_External  $external
  * @return  boolean
  */
 public function external_login(Model_User_External $external)
 {
     if ($external->loaded() && ($user = new Model_User($external->user_id))) {
         return $user->loaded() && $this->complete_login($user);
     }
     return false;
 }