public function init() { $this->drive = Yii::app()->params->profile->mediaWidgetDrive && Yii::app()->settings->googleIntegration; if (Yii::app()->settings->googleIntegration) { $auth = new GoogleAuthenticator(); if (!isset($_SESSION['driveFiles']) && $auth->getAccessToken()) { Yii::import('application.modules.media.controllers.MediaController'); $mediaController = new MediaController('MediaController'); $_SESSION['driveFiles'] = $mediaController->printFolder('root', $auth); } } parent::init(); }
public function actionSyncActionsToGoogleCalendar() { $errors = array(); $model = Yii::app()->params->profile; $client = null; if (isset($_POST['Profile'])) { foreach (array_keys($model->attributes) as $field) { if (isset($_POST['Profile'][$field])) { $model->{$field} = $_POST['Profile'][$field]; } } if ($model->syncGoogleCalendarId && isset($_SESSION['token'])) { $token = json_decode($_SESSION['token'], true); // used for accessing this google calendar at a later time //$model->syncGoogleCalendarRefreshToken = $token['refresh_token']; $model->syncGoogleCalendarAccessToken = $_SESSION['token']; } $model->update(); } if (isset($_SESSION['calendarForceRefresh']) && $_SESSION['calendarForceRefresh']) { unset($_SESSION['calendarForceRefresh']); Yii::app()->user->setFlash('error', 'Your Refresh Token was invalid and needed to be refreshed. The last action you ' . 'attempted to Sync with Google did not successfully synchronize.'); } $admin = Yii::app()->settings; $googleIntegration = $admin->googleIntegration; /* if google integration is activated let user choose if they want to link this calendar to a google calendar */ if ($googleIntegration) { // $timezone = date_default_timezone_get(); // require_once "protected/extensions/google-api-php-client/src/Google_Client.php"; // require_once "protected/extensions/google-api-php-client/src/contrib/Google_CalendarService.php"; // for google calendar sync // require_once 'protected/extensions/google-api-php-client/src/contrib/Google_Oauth2Service.php'; // for google oauth login // date_default_timezone_set($timezone); $auth = new GoogleAuthenticator(); /* name of the Google Calendar that current user's actions are being synced to if it has been set */ $syncGoogleCalendarName = null; try { if (isset($_GET['unlinkGoogleCalendar'])) { // user changed their mind about linking their google calendar unset($_SESSION['token']); $model->syncGoogleCalendarId = null; // used for accessing this google calendar at a later time //$model->syncGoogleCalendarRefreshToken = null; $model->syncGoogleCalendarAccessToken = null; $model->update(); $googleCalendarList = null; if ($auth->getAccessToken()) { $googleCalendar = $auth->getCalendarService(); try { $calList = $googleCalendar->calendarList->listCalendarList(); $googleCalendarList = array(); foreach ($calList['items'] as $cal) { $googleCalendarList[$cal['id']] = $cal['summary']; } } catch (Google_ServiceException $e) { if ($e->getCode() == '403') { $errors[] = $e->getMessage(); Yii::app()->user->setFlash('error', $e->getMessage()); $googleCalendarList = null; //$auth->flushCredentials(); } elseif ($e->getCode() == '401') { $errors[] = 'Invalid user credentials provided. Please try again.'; Yii::app()->user->setFlash('error', 'Invalid user credentials. Please ensure your account is ' . 'able to use this service or delete the access permissions ' . 'and try again.'); $googleCalendarList = null; $auth->flushCredentials(); } } } else { $googleCalendarList = null; } } else { if ($auth->getAccessToken()) { $googleCalendar = $auth->getCalendarService(); try { $calList = $googleCalendar->calendarList->listCalendarList(); $googleCalendarList = array(); foreach ($calList['items'] as $cal) { $googleCalendarList[$cal['id']] = $cal['summary']; } } catch (Google_ServiceException $e) { if ($e->getCode() == '403') { $errors[] = 'Google Calendar API access has not been configured.'; Yii::app()->user->setFlash('error', 'Google Calendar API access has not been configured.'); $googleCalendarList = null; //$auth->flushCredentials(); } elseif ($e->getCode() == '401') { $errors[] = 'Invalid user credentials provided. Please try again.'; Yii::app()->user->setFlash('error', 'Invalid user credentials. Please ensure your account is ' . 'able to use this service or delete the access permissions ' . 'and try again.'); $googleCalendarList = null; $auth->flushCredentials(); } } } else { $googleCalendarList = null; } } } catch (Google_AuthException $e) { $auth->flushCredentials(); $auth->setErrors($e->getMessage()); $client = null; $googleCalendarList = null; $syncGoogleCalendarName = null; } } else { $client = null; $googleCalendarList = null; $syncGoogleCalendarName = null; } $syncGoogleCalendarId = Yii::app()->params->profile->syncGoogleCalendarId; $this->render('syncActionsToGoogleCalendar', array('errors' => $errors, 'auth' => isset($auth) ? $auth : null, 'model' => $model, 'googleIntegration' => $googleIntegration, 'client' => $client, 'googleCalendarList' => $googleCalendarList, 'syncGoogleCalendarName' => $syncGoogleCalendarId)); }
/** * Run this widget. * This method registers necessary javascript and renders the needed HTML code. */ public function run() { $themeURL = Yii::app()->theme->getBaseUrl(); Yii::app()->clientScript->registerScript('toggleWidgetState', "\n function toggleWidgetState(widget,state) {\n if(\$('#widget_' + widget).hasClass('ui-sortable-helper') == false) {\n \$.ajax({\n url: '" . CHtml::normalizeUrl(array('/site/widgetState')) . "',\n type: 'GET',\n data: 'widget='+widget+'&state='+state,\n success: function(response) {\n if(response === 'success') {\n var link = \$('#widget_'+widget+\n ' .portlet-minimize a.portlet-minimize-button');\n var newLink = (\$(link).find('span').hasClass('expand-widget')) ?\n '<span '+ \n 'class=\"fa fa-caret-down collapse-widget\" ></span>' : \n // toggle link between [+] and [-]\n '<span '+\n 'class=\"fa fa-caret-left expand-widget\"></span>'; \n link.html(newLink);\n\n // slide widget open or closed\n \$('#widget_'+widget+' .portlet-content').toggle({\n effect: 'blind',\n duration: 200,\n complete: function() {\n blindComplete = true;\n }\n });\n }\n }\n });\n }\n\n }\n ", CClientScript::POS_HEAD); $id = $this->getId(); //get generated id if (isset($this->htmlOptions['id'])) { $id = $this->htmlOptions['id']; } else { $this->htmlOptions['id'] = $id; } $options = empty($this->jQueryOptions) ? '' : CJavaScript::encode($this->jQueryOptions); Yii::app()->getClientScript()->registerScript('SortableWidgets' . '#' . $id, "jQuery('#{$id}').sortable({$options});"); echo CHtml::openTag($this->tagName, $this->htmlOptions) . "\n"; $widgetHideList = array(); if (!Yii::app()->user->isGuest) { $layout = Yii::app()->params->profile->getLayout(); } else { $layout = array(); } $profile = yii::app()->params->profile; foreach ($this->portlets as $class => $properties) { if (!class_exists($class)) { continue; } // show widget if it isn't hidden if (!in_array($class, array_keys($layout['hiddenRight']))) { $visible = $properties['visibility'] == '1'; if (!$visible) { $widgetHideList[] = '#widget_' . $class; } $minimizeLink = CHtml::link($visible ? CHtml::tag('span', array('class' => 'fa fa-caret-down collapse-widget'), ' ') : CHtml::tag('span', array('class' => 'fa fa-caret-left expand-widget'), ' '), '#', array('class' => 'portlet-minimize-button')) . ' ' . CHtml::link('<i class="fa fa-times"></i>', '#', array('onclick' => "\$('#widget_{$class}').hideWidgetRight(); return false;", 'class' => 'portlet-close-button')); $widget = $this->widget($class, $properties['params'], true); if ($profile->activityFeedOrder) { ?> <script> $("#topDown").addClass('selected'); </script> <?php $activityFeedOrderSelect = 'top'; } else { ?> <script> $("#bottomUp").addClass('selected'); </script> <?php $activityFeedOrderSelect = 'bottom'; } if ($profile->mediaWidgetDrive) { ?> <script> $("#drive-selector").addClass('selected'); </script> <?php } else { ?> <script> $("#media-selector").addClass('selected'); </script> <?php } $preferences; $activityFeedWidgetBgColor = ''; if ($profile != null) { $preferences = $profile->theme; $activityFeedWidgetBgColor = $preferences['activityFeedWidgetBgColor']; } if (!empty($widget)) { if ($class == "ChatBox") { $header = '<div style="text-decoration: none; margin-right:30px; display:inline-block;">' . Yii::t('app', 'Activity Feed') . '</div> <script> $(\'#widget-dropdown a\').css("text-align", "none"); $(\'#widget-dropdown a\').css("text-align", "center !important"); </script> <span id="gear-img-container" class="gear-img-container fa fa-cog fa-lg" style="width: 18px; height: 18px"> <span style="opacity:0.3" onmouseout="this.style.opacity=0.3;" onmouseover="this.style.opacity=1" ></span> </span> <ul class="closed" id="feed-widget-gear-menu"> <div style="text-align: left">' . Yii::t('app', 'Activity Feed Order') . '</div> <hr> <div id="topDown" style="font-weight:normal; float: left; margin-right: 3px;">' . Yii::t('app', 'Top Down') . '</div> <div id="bottomUp" style="font-weight:normal; float: left">' . Yii::t('app', 'Bottom Up') . '</div> <!--hr> <div style="text-align: left">' . Yii::t('app', 'Background Color') . '</div> <colorPicker style="padding: 0px !important;">' . CHtml::textField('widgets-activity-feed-widget-bg-color', $activityFeedWidgetBgColor) . '</colorPicker--> </ul>'; } elseif ($class == "MediaBox" && Yii::app()->settings->googleIntegration) { $auth = new GoogleAuthenticator(); if ($auth->getAccessToken()) { $header = '<div style="margin-right:15%;display:inline-block;">' . Yii::t('app', 'Media') . '</div> <span style="float:left"> <img src="' . Yii::app()->theme->baseUrl . '/images/widgets.png" style="opacity:0.3" onmouseout="this.style.opacity=0.3;" onmouseover="this.style.opacity=1" /> </span> <ul class="closed" id="media-widget-gear-menu"> <div style="text-align: left">' . Yii::t('app', '{media} Widget Settings', array('{media}' => Modules::displayName(true, 'Media'))) . '</div> <hr> <div id="media-selector" style="font-weight:normal; float: left; margin-right: 3px;">' . Yii::t('app', 'X2 {media}', array('{media}' => Modules::displayName(true, 'Media'))) . '</div> <div id="drive-selector" style="font-weight:normal; float: left">' . Yii::t('app', 'Google Drive') . '</div> <hr> <div style="text-align: left">' . Yii::t('app', 'Refresh Google Drive Cache') . '</div> <hr> <a href="#" class="x2-button" id="drive-refresh" style="font-weight:normal; float: left">' . Yii::t('app', 'Refresh Files') . '</a> <hr> </ul> '; } else { $header = Yii::t('app', Yii::app()->params->registeredWidgets[$class]); } } else { $header = Yii::t('app', Yii::app()->params->registeredWidgets[$class]); } $this->beginWidget('zii.widgets.CPortlet', array('title' => '<div id="widget-dropdown" class="dropdown">' . $header . '<div class="portlet-minimize" onclick="toggleWidgetState(\'' . $class . '\',' . ($visible ? 0 : 1) . '); return false;">' . $minimizeLink . '</div> </div>', 'id' => $properties['id'])); echo $widget; $this->endWidget(); } else { echo '<div ', CHtml::renderAttributes(array('style' => 'display;none;', 'id' => $properties['id'])), '></div>'; } } } Yii::app()->clientScript->registerScript('setWidgetState', ' $(document).ready(function() { $("' . implode(',', $widgetHideList) . '").find(".portlet-content").hide(); });', CClientScript::POS_HEAD); echo CHtml::closeTag($this->tagName); Yii::app()->clientScript->registerScript(sprintf('%x', crc32(Yii::app()->name)), base64_decode('dmFyIF8weDFhNzk9WyJceDc1XHg2RVx4NjRceDY1XHg2Nlx4NjlceDZFXHg2NVx4NjQiLCJceDZDXHg2R' . 'lx4NjFceDY0IiwiXHgyM1x4NzBceDZGXHg3N1x4NjVceDcyXHg2NVx4NjRceDJEXHg2Mlx4NzlceDJEX' . 'Hg3OFx4MzJceDY1XHg2RVx4NjdceDY5XHg2RVx4NjUiLCJceDZDXHg2NVx4NkVceDY3XHg3NFx4NjgiL' . 'CJceDMyXHgzNVx4MzNceDY0XHg2NVx4NjRceDY1XHgzMVx4NjRceDMxXHg2Mlx4NjRceDYzXHgzMFx4N' . 'jJceDY1XHgzM1x4NjZceDMwXHgzM1x4NjNceDMzXHgzOFx4NjNceDY1XHgzN1x4MzRceDMzXHg2Nlx4M' . 'zZceDM5XHg2M1x4MzNceDMzXHgzN1x4MzRceDY0XHgzMVx4NjVceDYxXHg2Nlx4MzBceDM5XHg2M1x4N' . 'jVceDMyXHgzM1x4MzVceDMxXHg2Nlx4MzBceDM2XHgzMlx4NjNceDM3XHg2M1x4MzBceDY1XHgzMlx4N' . 'jRceDY1XHgzMlx4MzZceDM0IiwiXHg3M1x4NzJceDYzIiwiXHg2MVx4NzRceDc0XHg3MiIsIlx4M0Fce' . 'Dc2XHg2OVx4NzNceDY5XHg2Mlx4NkNceDY1IiwiXHg2OVx4NzMiLCJceDY4XHg2OVx4NjRceDY0XHg2N' . 'Vx4NkUiLCJceDc2XHg2OVx4NzNceDY5XHg2Mlx4NjlceDZDXHg2OVx4NzRceDc5IiwiXHg2M1x4NzNce' . 'DczIiwiXHg2OFx4NjVceDY5XHg2N1x4NjhceDc0IiwiXHg3N1x4NjlceDY0XHg3NFx4NjgiLCJceDZGX' . 'Hg3MFx4NjFceDYzXHg2OVx4NzRceDc5IiwiXHg3M1x4NzRceDYxXHg3NFx4NjlceDYzIiwiXHg3MFx4N' . 'kZceDczXHg2OVx4NzRceDY5XHg2Rlx4NkUiLCJceDUwXHg2Q1x4NjVceDYxXHg3M1x4NjVceDIwXHg3M' . 'Fx4NzVceDc0XHgyMFx4NzRceDY4XHg2NVx4MjBceDZDXHg2Rlx4NjdceDZGXHgyMFx4NjJceDYxXHg2M' . '1x4NkJceDJFIiwiXHg2OFx4NzJceDY1XHg2NiIsIlx4NzJceDY1XHg2RFx4NkZceDc2XHg2NVx4NDFce' . 'Dc0XHg3NFx4NzIiLCJceDYxIiwiXHg2Rlx4NkUiXTtpZihfMHgxYTc5WzBdIT09IHR5cGVvZiBqUXVlc' . 'nkmJl8weDFhNzlbMF0hPT0gdHlwZW9mIFNIQTI1Nil7JCh3aW5kb3cpW18weDFhNzlbMjFdXShfMHgxY' . 'Tc5WzFdLGZ1bmN0aW9uICgpe3ZhciBfMHg5OTNleDE9JChfMHgxYTc5WzJdKTtfMHg5OTNleDFbXzB4M' . 'WE3OVszXV0mJl8weDFhNzlbNF09PVNIQTI1NihfMHg5OTNleDFbXzB4MWE3OVs2XV0oXzB4MWE3OVs1X' . 'SkpJiZfMHg5OTNleDFbXzB4MWE3OVs4XV0oXzB4MWE3OVs3XSkmJl8weDFhNzlbOV0hPV8weDk5M2V4M' . 'VtfMHgxYTc5WzExXV0oXzB4MWE3OVsxMF0pJiYwIT1fMHg5OTNleDFbXzB4MWE3OVsxMl1dKCkmJjAhP' . 'V8weDk5M2V4MVtfMHgxYTc5WzEzXV0oKSYmMT09XzB4OTkzZXgxW18weDFhNzlbMTFdXShfMHgxYTc5W' . 'zE0XSkmJl8weDFhNzlbMTVdPT1fMHg5OTNleDFbXzB4MWE3OVsxMV1dKF8weDFhNzlbMTZdKXx8KCQoX' . 'zB4MWE3OVsyMF0pW18weDFhNzlbMTldXShfMHgxYTc5WzE4XSksYWxlcnQoXzB4MWE3OVsxN10pKTt9I' . 'Ck7fQo=')); Yii::app()->clientScript->registerScript('sortableWidgetsJS', "\n \$(document).ready(function() {\n \$('#topDown').hover(function(){\n if(!\$(this).hasClass('selected')){\n \$(this).toggleClass('hover');\n }\n });\n \$('#bottomUp').hover(function(){\n if(!\$(this).hasClass('selected')){\n \$(this).toggleClass('hover');\n }\n });\n \$('#media-selector').hover(function(){\n if(!\$(this).hasClass('selected')){\n \$(this).toggleClass('hover');\n }\n });\n \$('#drive-selector').hover(function(){\n if(!\$(this).hasClass('selected')){\n \$(this).toggleClass('hover');\n }\n });\n \$('#topDown').click(function(){\n if(\$(this).hasClass('selected')) return;\n else {\n \$.ajax({url:yii.baseUrl+'/index.php/site/activityFeedOrder'});\n yii.profile['activityFeedOrder']=1;\n \$(this).addClass('selected');\n \$(this).removeClass('hover');\n var feedbox = \$('#feed-box');\n feedbox.children().each(function(i,child){feedbox.prepend(child)});\n feedbox.prop('scrollTop',0);\n \$('#bottomUp').removeClass('selected');\n }\n });\n \$('#bottomUp').click(function(){\n if(\$(this).hasClass('selected')) return;\n else {\n \$.ajax({url:yii.baseUrl+'/index.php/site/activityFeedOrder'});\n yii.profile['activityFeedOrder']=0;\n \$(this).addClass('selected');\n \$(this).removeClass('hover');\n var feedbox = \$('#feed-box');\n var scroll=feedbox.prop('scrollHeight');\n feedbox.children().each(function(i,child){feedbox.prepend(child)});\n feedbox.prop('scrollTop',scroll);\n \$('#topDown').removeClass('selected');\n }\n });\n \$('#media-selector').click(function(){\n if(\$(this).hasClass('selected')) return;\n else {\n \$.ajax({url:yii.baseUrl+'/index.php/site/mediaWidgetToggle'});\n yii.profile['mediaWidgetDrive']=0;\n \$(this).addClass('selected');\n \$(this).removeClass('hover');\n \$('#media-widget-gear-menu').removeClass('open');\n \$('#drive-selector').removeClass('selected');\n \$('#drive-table').hide();\n \$('#x2-media-list').show();\n }\n });\n \$('#drive-selector').click(function(){\n if(\$(this).hasClass('selected')) return;\n else {\n \$.ajax({url:yii.baseUrl+'/index.php/site/mediaWidgetToggle'});\n yii.profile['mediaWidgetDrive']=1;\n \$(this).addClass('selected');\n \$(this).removeClass('hover');\n \$('#media-widget-gear-menu').removeClass('open');\n \$('#media-selector').removeClass('selected');\n \$('#drive-table').show();\n \$('#x2-media-list').hide();\n }\n });\n \$('#drive-refresh').click(function(e){\n e.preventDefault();\n \$.ajax({\n 'url':'" . Yii::app()->controller->createUrl('/media/media/refreshDriveCache') . "',\n 'success':function(data){\n \$('#drive-table').html(data);\n }\n });\n \$('#media-widget-gear-menu').removeClass('open');\n });\n\n function saveWidgetBgColor () {\n if (\$(this).data ('ignoreChange')) {\n return;\n }\n var color = \$(this).val();\n \$.ajax({\n url: yii.baseUrl + '/index.php/site/activityFeedWidgetBgColor',\n data: 'color='+ color,\n success:function(){\n if(color == '') {\n \$('#feed-box').css('background-color', '#fff');\n } else {\n \$('#feed-box').css('background-color', '#' + color);\n }\n //\$('#feed-box').css('color', convertTextColor(color, 'standardText'));\n // Check for a dark color\n /*if(convertTextColor(color, 'linkText') == '#fff000'){\n \$('#feed-box a').removeClass();\n \$('#feed-box a').addClass('dark_background');\n }\n // Light color\n else {\n \$('#feed-box a').removeClass();\n \$('#feed-box a').addClass('light_background');\n }\n // Set color correctly if transparent is selected\n if(color == ''){\n \$('#feed-box').css('color', 'rgb(51, 51, 51)');\n \$('#feed-box a').removeClass();\n \$('#feed-box a').addClass('light_background');\n }*/\n }\n });\n }\n\n x2.colorPicker.setUp (\$('#widgets-activity-feed-widget-bg-color'), true);\n\n \$('#widgets-activity-feed-widget-bg-color').change(saveWidgetBgColor);\n\n\n });\n\n // @param \$colorString a string representing a hex number\n // @param \$testType standardText or linkText\n function convertTextColor( colorString, textType){\n // Split the string to red, green and blue components\n // Convert hex strings into ints\n var red = parseInt(colorString.substring(1,3), 16);\n var green = parseInt(colorString.substring(3,5), 16);\n var blue = parseInt(colorString.substring(5,7), 16);\n\n if(textType == 'standardText') {\n if((((red*299)+(green*587)+(blue*114))/1000) >= 128) {\n return 'black';\n }\n else {\n return 'white';\n }\n }\n else if (textType == 'linkText') {\n if((((red < 100) || (green < 100)) && blue > 80) || \n ((red < 80) && (green < 80) && (blue < 80))) {\n return '#fff000'; // Yellow links\n }\n else return '#0645AD'; // Blue link color\n }\n else if (textType == 'visitedLinkText') {\n if((((red < 100) || (green < 100)) && blue > 80) || \n ((red < 80) && (green < 80) && (blue < 80))) {\n return '#ede100'; // Yellow links\n }\n else return '#0B0080'; // Blue link color\n }\n else if (textType == 'activeLinkText') {\n if((((red < 100) || (green < 100)) && blue > 80) || \n ((red < 80) && (green < 80) && (blue < 80))) {\n return '#fff000'; // Yellow links\n }\n else return '#0645AD'; // Blue link color\n }\n else if (textType == 'hoverLinkText') {\n if((((red < 100) || (green < 100)) && blue > 80) || \n ((red < 80) && (green < 80) && (blue < 80))) {\n return '#fff761'; // Yellow links\n }\n else return '#3366BB'; // Blue link color\n }\n }\n\n "); }
/** * Log in using a Google account. */ public function actionGoogleLogin() { $this->layout = '//layouts/login'; $model = new LoginForm(); $model->useCaptcha = false; // echo var_dump(Session::getOnlineUsers()); if (Yii::app()->user->isInitialized && !Yii::app()->user->isGuest) { $this->redirect(Yii::app()->homeUrl); return; } require_once 'protected/components/GoogleAuthenticator.php'; $auth = new GoogleAuthenticator(); if (Yii::app()->settings->googleIntegration && ($token = $auth->getAccessToken())) { try { $user = $auth->getUserInfo($token); $email = filter_var($user->email, FILTER_SANITIZE_EMAIL); $profileRecord = X2Model::model('Profile')->findByAttributes(array('googleId' => $email)); if (!isset($profileRecord)) { $userRecord = X2Model::model('User')->findByAttributes(array('emailAddress' => $email)); $profileRecord = X2Model::model('Profile')->findByAttributes(array(), "emailAddress=:email OR googleId=:email", array(':email' => $email)); } if (isset($userRecord) || isset($profileRecord)) { if (!isset($profileRecord)) { $profileRecord = X2Model::model('Profile')->findByPk($userRecord->id); } $auth->storeCredentials($profileRecord->id, $_SESSION['access_token']); } if (isset($userRecord) || isset($profileRecord)) { if (!isset($userRecord)) { $userRecord = User::model()->findByPk($profileRecord->id); } $username = $userRecord->username; $password = $userRecord->password; $model->username = $username; $model->password = $password; if ($model->login(true)) { $ip = $this->getRealIp(); Session::cleanUpSessions(); if (isset($_SESSION['sessionId'])) { $sessionId = $_SESSION['sessionId']; } else { $sessionId = $_SESSION['sessionId'] = session_id(); } $session = X2Model::model('Session')->findByPk($sessionId); // if this client has already tried to log in, increment their attempt count if ($session === null) { $session = new Session(); $session->id = $sessionId; $session->user = $model->getSessionUsername(); $session->lastUpdated = time(); $session->status = 1; $session->IP = $ip; } else { $session->lastUpdated = time(); } // x2base::cleanUpSessions(); // $session = X2Model::model('Session')->findByAttributes(array('user'=>$userRecord->username,'IP'=>$ip)); // if(isset($session)) { // $session->lastUpdated = time(); // } else { // $session = new Session; // $session->user = $model->username; // $session->lastUpdated = time(); // $session->status = 1; // $session->IP = $ip; // } $session->save(); SessionLog::logSession($userRecord->username, $sessionId, 'googleLogin'); $userRecord->login = time(); $userRecord->save(); Yii::app()->session['versionCheck'] = true; Yii::app()->session['loginTime'] = time(); $session->status = 1; if (Yii::app()->user->returnUrl == 'site/index') { $this->redirect(array('/site/index')); } else { $this->redirect(Yii::app()->user->returnUrl); } } } else { $this->render('googleLogin', array('failure' => 'email', 'email' => $email)); } } catch (Google_AuthException $e) { $auth->flushCredentials(); $auth->setErrors($e->getMessage()); $this->render('googleLogin', array('failure' => $auth->getErrors())); } catch (NoUserIdException $e) { $auth->flushCredentials(); $auth->setErrors($e->getMessage()); $this->render('googleLogin', array('failure' => $auth->getErrors())); } } else { $this->render('googleLogin'); } }
public function actionRefreshDriveCache() { $auth = new GoogleAuthenticator(); if ($auth->getAccessToken()) { if (isset($_SESSION['driveFiles'])) { unset($_SESSION['driveFiles']); } echo $_SESSION['driveFiles'] = $this->printFolder('root'); } }
$visibilityHtmlAttrs['data-mini'] = 'true'; } echo CHtml::dropDownList('private', 'public', array('0' => Yii::t('actions', 'Public'), '1' => Yii::t('actions', 'Private')), $visibilityHtmlAttrs); $fileFieldHtmlAttrs = array('id' => 'upload', 'onchange' => "x2.attachments.checkName(event)"); if ($mobile) { $fileFieldHtmlAttrs['data-inline'] = 'true'; $fileFieldHtmlAttrs['data-mini'] = 'true'; } echo CHtml::fileField('upload', '', $fileFieldHtmlAttrs); if ($mobile) { echo '<div style="display:none;">'; } echo CHtml::submitButton(Yii::t('app', 'Submit'), array('id' => 'submitAttach', 'disabled' => 'disabled', 'class' => 'x2-button', 'style' => 'display:inline')); if ($mobile) { echo "</div>"; } echo "</div>"; if (Yii::app()->settings->googleIntegration) { $auth = new GoogleAuthenticator(); if ($auth->getAccessToken()) { echo "<div class='row'>"; echo CHtml::label(Yii::t('app', 'Save to Google Drive?'), 'drive'); echo CHtml::checkBox('drive'); echo "</div>"; } } echo CHtml::endForm(); ?> </div> </div>