Example #1
0
 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();
 }
Example #2
0
 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));
 }
Example #3
0
 /**
  * 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    ");
 }
Example #4
0
 /**
  * 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');
     }
 }
Example #5
0
 public function actionRefreshDriveCache()
 {
     $auth = new GoogleAuthenticator();
     if ($auth->getAccessToken()) {
         if (isset($_SESSION['driveFiles'])) {
             unset($_SESSION['driveFiles']);
         }
         echo $_SESSION['driveFiles'] = $this->printFolder('root');
     }
 }
Example #6
0
    $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>