~xibo-maintainers/xibo/tuttle

« back to all changes in this revision

Viewing changes to server/lib/pages/user.class.php

  • Committer: Dan Garner
  • Date: 2014-09-19 11:56:41 UTC
  • mfrom: (332.8.73 server-170-alpha)
  • Revision ID: dan@xibo.org.uk-20140919115641-pwvuhq0cy4xkmytq
MergedĀ lp:~dangarner/xibo/server-170alpha

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
 */ 
21
21
defined('XIBO') or die("Sorry, you are not allowed to directly access this page.<br /> Please press the back button in your browser.");
22
22
 
23
 
class userDAO 
24
 
{
25
 
        private $db;
26
 
        private $user;
 
23
include_once('lib/data/usergroup.data.class.php');
 
24
 
 
25
class userDAO extends baseDAO {
27
26
        
28
 
        /**
29
 
         * Contructor
30
 
         *
31
 
         * @param database $db
32
 
         */
33
 
        function __construct(database $db, user $user) 
34
 
        {
35
 
        $this->db   =& $db;
36
 
        $this->user =& $user;
37
 
 
38
 
        // Include the group data classes
39
 
        include_once('lib/data/usergroup.data.class.php');
40
 
        }
41
 
 
42
27
    /**
43
28
     * Controls which pages are to be displayed
44
29
     * @return 
53
38
        Theme::Set('filter_id', 'XiboFilterPinned' . uniqid('filter'));
54
39
        Theme::Set('pager', ResponseManager::Pager($id));
55
40
 
56
 
        // Button URL's
57
 
        Theme::Set('user_form_add_url', 'index.php?p=user&q=DisplayForm');
58
 
        Theme::Set('myapplications_form_add_url', 'index.php?p=user&q=MyApplications');
59
 
 
60
41
        if (Kit::IsFilterPinned('user_admin', 'Filter')) {
61
 
            Theme::Set('filter_pinned', 'checked');
62
 
            Theme::Set('filter_username', Session::Get('user_admin', 'filter_username'));
63
 
            Theme::Set('filter_usertypeid', Session::Get('user_admin', 'filter_usertypeid'));
 
42
            $filter_pinned = 1;
 
43
            $filter_username = Session::Get('user_admin', 'filter_username');
 
44
            $filter_usertypeid = Session::Get('user_admin', 'filter_usertypeid');
64
45
        }
65
46
        else {
66
 
            Theme::Set('filter_usertypeid', 0);
 
47
            $filter_pinned = 0;
 
48
            $filter_username = NULL;
 
49
            $filter_usertypeid = NULL;
67
50
        }
68
51
 
69
 
        // List of Displays this user has permission for
 
52
        $formFields = array();
 
53
        $formFields[] = FormManager::AddText('filter_username', __('Name'), $filter_username, NULL, 'n');
 
54
 
70
55
        $usertypes = $this->db->GetArray("SELECT usertypeID, usertype FROM usertype ORDER BY usertype");
71
56
        array_unshift($usertypes, array('usertypeID' => 0, 'usertype' => 'All'));
72
 
        Theme::Set('usertype_field_list', $usertypes);
73
 
 
74
 
        // Render the Theme and output
75
 
        Theme::Render('user_page');
 
57
        $formFields[] = FormManager::AddCombo(
 
58
            'filter_usertypeid', 
 
59
            __('User Type'), 
 
60
            $filter_usertypeid,
 
61
            $usertypes,
 
62
            'usertypeID',
 
63
            'usertype',
 
64
            NULL, 
 
65
            't');
 
66
        
 
67
        $formFields[] = FormManager::AddCheckbox('XiboFilterPinned', __('Keep Open'), 
 
68
            $filter_pinned, NULL, 
 
69
            'k');
 
70
 
 
71
        // Call to render the template
 
72
        Theme::Set('header_text', __('Users'));
 
73
        Theme::Set('form_fields', $formFields);
 
74
        Theme::Render('grid_render');
 
75
    }
 
76
 
 
77
    function actionMenu() {
 
78
 
 
79
        return array(
 
80
                array('title' => __('Add User'),
 
81
                    'class' => 'XiboFormButton',
 
82
                    'selected' => false,
 
83
                    'link' => 'index.php?p=user&q=DisplayForm',
 
84
                    'help' => __('Add a new User'),
 
85
                    'onclick' => ''
 
86
                    ),
 
87
                array('title' => __('My Applications'),
 
88
                    'class' => 'XiboFormButton',
 
89
                    'selected' => false,
 
90
                    'link' => 'index.php?p=user&q=MyApplications',
 
91
                    'help' => __('View my authenticated applications'),
 
92
                    'onclick' => ''
 
93
                    ),
 
94
                array('title' => __('Filter'),
 
95
                    'class' => '',
 
96
                    'selected' => false,
 
97
                    'link' => '#',
 
98
                    'help' => __('Open the filter form'),
 
99
                    'onclick' => 'ToggleFilterView(\'Filter\')'
 
100
                    )
 
101
            );                   
76
102
    }
77
103
 
78
104
    /**
84
110
        $db         =& $this->db;
85
111
        $user       =& $this->user;
86
112
        $response   = new ResponseManager();
87
 
 
88
113
        // Capture the filter options
89
114
        // User ID
90
115
        $filter_username = Kit::GetParam('filter_username', _POST, _STRING);
116
141
 
117
142
        $sql .= " ORDER by UserName";
118
143
        
119
 
        Debug::LogEntry('audit', $sql);
 
144
        //Debug::LogEntry('audit', $sql);
120
145
 
121
146
        // Load results into an array
122
147
        $users = $db->GetArray($sql);
127
152
            trigger_error(__('Error getting list of users'), E_USER_ERROR);
128
153
        }
129
154
 
 
155
        $cols = array(
 
156
                array('name' => 'UserName', 'title' => __('Name')),
 
157
                array('name' => 'homepage', 'title' => __('Homepage')),
 
158
                array('name' => 'email', 'title' => __('Email'))
 
159
            );
 
160
        Theme::Set('table_cols', $cols);
 
161
 
130
162
        $rows = array();
131
163
 
132
164
        foreach ($users as $row) {
133
165
 
134
 
            $row['loggedin'] = ($row['loggedin'] == 1) ? Theme::Image('act.gif') : Theme::Image('disact.gif');
135
166
            $row['groupid'] = $user->getGroupFromID($row['UserID'], true);
136
167
 
137
168
            // Super admins have some buttons
192
223
 
193
224
        Theme::Set('table_rows', $rows);
194
225
        
195
 
        $table = Theme::RenderReturn('user_page_grid');
 
226
        $table = Theme::RenderReturn('table_render');
196
227
        
197
228
        $response->SetGridResponse($table);
198
229
        $response->Respond();
212
243
        $db =& $this->db;
213
244
        $response = new ResponseManager();
214
245
 
215
 
        $username = Kit::GetParam('username', _POST, _STRING);
216
 
        $password = Kit::GetParam('password', _POST, _STRING);
 
246
        $username = Kit::GetParam('edit_username', _POST, _STRING);
 
247
        $password = Kit::GetParam('edit_password', _POST, _STRING);
217
248
        $email = Kit::GetParam('email', _POST, _STRING);
218
249
        $usertypeid     = Kit::GetParam('usertypeid', _POST, _INT);
219
250
        $homepage = Kit::GetParam('homepage', _POST, _STRING);
303
334
        $response       = new ResponseManager();
304
335
 
305
336
        $userID = Kit::GetParam('userid', _POST, _INT, 0);
306
 
        $username   = Kit::GetParam('username', _POST, _STRING);
307
 
        $email      = Kit::GetParam('email', _POST, _STRING);
 
337
        $username   = Kit::GetParam('edit_username', _POST, _STRING);
 
338
        $email      = Kit::GetParam('edit_email', _POST, _STRING);
308
339
        $usertypeid     = Kit::GetParam('usertypeid', _POST, _INT, 0);
309
340
        $homepage   = Kit::GetParam('homepage', _POST, _STRING, 'dashboard');
310
341
        $retired = Kit::GetParam('retired', _POST, _CHECKBOX);
430
461
                trigger_error($userGroupObject->GetErrorMessage(), E_USER_ERROR);
431
462
 
432
463
            // Delete the user
433
 
            $sqldel = "DELETE FROM user";
434
 
            $sqldel .= " WHERE UserID = %d"; 
435
 
 
436
 
            if (!$db->query(sprintf($sqldel, $userid)))
437
 
            {
438
 
                trigger_error($db->error());
439
 
                trigger_error(__("This user has been active, you may only retire them."), E_USER_ERROR);
440
 
            }
441
 
 
442
 
            // We should delete this users sessions record.
443
 
            $SQL = "DELETE FROM session WHERE userID = %d ";
444
 
 
445
 
            if (!$db->query(sprintf($SQL, $userid)))
446
 
            {
447
 
                trigger_error($db->error());
448
 
                trigger_error(__("If logged in, this user will be deleted once they log out."), E_USER_ERROR);
449
 
            }
 
464
            Kit::ClassLoader('userdata');
 
465
            $user = new UserData($this->db);
 
466
            $user->userId = $userid;
 
467
            if (!$user->Delete())
 
468
                trigger_error($user->GetErrorMessage(), E_USER_ERROR);
450
469
 
451
470
            $response->SetFormSubmitResponse(__('User Deleted.'));
452
471
            $response->Respond();
466
485
 
467
486
        // Set some information about the form
468
487
        Theme::Set('form_id', 'UserForm');
469
 
        
 
488
 
 
489
        // Are we an edit?
470
490
        if ($userid != 0) {
471
491
 
 
492
            $form_title = 'Edit Form';
 
493
            $form_help_link = HelpManager::Link('User', 'Edit');
472
494
            Theme::Set('form_action', 'index.php?p=user&q=EditUser');
473
495
            Theme::Set('form_meta', '<input type="hidden" name="userid" value="' . $userid . '" />');
474
496
 
489
511
                trigger_error(__('Error getting user information.'), E_USER_ERROR);
490
512
            }
491
513
 
492
 
            Theme::Set('username', Kit::ValidateParam($aRow['UserName'], _USERNAME));
493
 
            Theme::Set('password', Kit::ValidateParam($aRow['UserPassword'], _PASSWORD));
494
 
            Theme::Set('usertypeid', Kit::ValidateParam($aRow['usertypeid'], _INT));
495
 
            Theme::Set('email', Kit::ValidateParam($aRow['email'], _STRING));
496
 
            Theme::Set('homepage', Kit::ValidateParam($aRow['homepage'], _STRING));
497
 
            Theme::Set('retired', Kit::ValidateParam($aRow['Retired'], _INT));
498
 
            Theme::Set('retired_option_checked', ((Kit::ValidateParam($aRow['Retired'], _INT) == 0) ? '' : ' checked'));
 
514
            // Store some information for later use
 
515
            $username = Kit::ValidateParam($aRow['UserName'], _USERNAME);
 
516
            $password = Kit::ValidateParam($aRow['UserPassword'], _PASSWORD);
 
517
            $usertypeid = Kit::ValidateParam($aRow['usertypeid'], _INT);
 
518
            $email = Kit::ValidateParam($aRow['email'], _STRING);
 
519
            $homepage = Kit::ValidateParam($aRow['homepage'], _STRING);
 
520
            $retired = Kit::ValidateParam($aRow['Retired'], _INT);
499
521
 
500
 
            $theme_file = 'user_form_edit';
501
 
            $form_title = 'Edit Form';
502
 
            $form_help_link = HelpManager::Link('User', 'Edit');
 
522
            $retiredFormField = FormManager::AddCheckbox('retired', __('Retired?'), 
 
523
                $retired, __('Is this user retired?'),
 
524
                'r');
503
525
        }
504
526
        else {
505
527
 
 
528
            $form_title = 'Add Form';
 
529
            $form_help_link = HelpManager::Link('User', 'Add');
506
530
            Theme::Set('form_action', 'index.php?p=user&q=AddUser');
507
531
 
508
532
            // We are adding a new user
516
540
                trigger_error("Can not get Usertype information", E_USER_ERROR);
517
541
            }
518
542
 
519
 
            Theme::Set('usertypeid', $usertypeid);
520
 
 
521
 
            // List of values for the inital user group
522
 
            $userGroupList = $db->GetArray('SELECT GroupID, `Group` FROM `group` WHERE IsUserSpecific = 0 AND IsEveryone = 0 ORDER BY 2');
523
 
            Theme::Set('user_group_field_list', $userGroupList);
524
 
 
525
 
            $theme_file = 'user_form_add';
526
 
            $form_title = 'Add Form';
527
 
            $form_help_link = HelpManager::Link('User', 'Add');
 
543
            // Defaults
 
544
            $username = NULL;
 
545
            $password = NULL;
 
546
            $email = NULL;
 
547
            $homepage = NULL;
 
548
            $retired = NULL;
 
549
 
 
550
            // List of values for the initial user group
 
551
            $userGroupField = FormManager::AddCombo(
 
552
                    'groupid', 
 
553
                    __('Initial User Group'), 
 
554
                    NULL,
 
555
                    $db->GetArray('SELECT GroupID, `Group` FROM `group` WHERE IsUserSpecific = 0 AND IsEveryone = 0 ORDER BY 2'),
 
556
                    'GroupID',
 
557
                    'Group',
 
558
                    __('What is the initial user group for this user?'), 
 
559
                    'g');
528
560
        }
529
561
 
530
 
        // List of homepages for both forms
531
 
        Theme::Set('homepage_field_list', array(array("homepageid" => "dashboard", 'homepage' => 'Icon Dashboard'), 
532
 
            array("homepageid" => "mediamanager", 'homepage' => 'Media Dashboard'), 
533
 
            array("homepageid" => "statusdashboard", 'homepage' => 'Status Dashboard')));
 
562
        // Render the return and output
 
563
        $formFields = array();
 
564
        $formFields[] = FormManager::AddText('edit_username', __('User Name'), $username, 
 
565
            __('The Login Name of the user.'), 'n', 'required');
 
566
 
 
567
        $formFields[] = FormManager::AddPassword('edit_password', __('Password'), $password, 
 
568
            __('The Password for this user.'), 'p', 'required');
 
569
 
 
570
        $formFields[] = FormManager::AddText('email', __('Email'), $email, 
 
571
            __('The Email Address for this user.'), 'e', NULL);
 
572
 
 
573
        $formFields[] = FormManager::AddCombo(
 
574
                    'homepage', 
 
575
                    __('Homepage'), 
 
576
                    $homepage,
 
577
                    array(
 
578
                        array("homepageid" => "dashboard", 'homepage' => 'Icon Dashboard'), 
 
579
                        array("homepageid" => "mediamanager", 'homepage' => 'Media Dashboard'), 
 
580
                        array("homepageid" => "statusdashboard", 'homepage' => 'Status Dashboard')
 
581
                    ),
 
582
                    'homepageid',
 
583
                    'homepage',
 
584
                    __('Homepage for this user. This is the page they will be taken to when they login.'), 
 
585
                    'h');
534
586
 
535
587
        // Only allow the selection of a usertype if we are a super admin
536
588
        $SQL = 'SELECT usertypeid, usertype FROM usertype';
537
589
        if ($user->usertypeid != 1)
538
590
            $SQL .= ' WHERE UserTypeID = 3';
539
591
 
540
 
        Theme::Set('usertype_field_list', $db->GetArray($SQL));
541
 
 
542
 
        // Render the return and output
543
 
        $form = Theme::RenderReturn($theme_file);
544
 
 
545
 
        $response->SetFormRequestResponse($form, $form_title, '550px', '320px');
 
592
        $formFields[] = FormManager::AddCombo(
 
593
                    'usertypeid', 
 
594
                    __('User Type'), 
 
595
                    $usertypeid,
 
596
                    $db->GetArray($SQL),
 
597
                    'usertypeid',
 
598
                    'usertype',
 
599
                    __('What is this users type?'), 
 
600
                    't', NULL, ($user->usertypeid == 1));
 
601
 
 
602
        // Add the user group field if set
 
603
        if (isset($userGroupField) && is_array($userGroupField))
 
604
            $formFields[] = $userGroupField;
 
605
 
 
606
        if (isset($retiredFormField) && is_array($retiredFormField))
 
607
            $formFields[] = $retiredFormField;
 
608
 
 
609
        Theme::Set('form_fields', $formFields);
 
610
 
 
611
        $response->SetFormRequestResponse(NULL, $form_title, '550px', '320px');
546
612
        $response->AddButton(__('Help'), 'XiboHelpRender("' . $form_help_link . '")');
547
613
        $response->AddButton(__('Cancel'), 'XiboDialogClose()');
548
614
        $response->AddButton(__('Save'), '$("#UserForm").submit()');
566
632
        Theme::Set('form_action', 'index.php?p=user&q=DeleteUser');
567
633
        Theme::Set('form_meta', '<input type="hidden" name="userid" value="' . $userid . '" />');
568
634
 
569
 
        $form = Theme::RenderReturn('user_form_delete');
 
635
        Theme::Set('form_fields', array(FormManager::AddMessage(__('Are you sure you want to delete? You may not be able to delete this user if they have associated content. You can retire users by using the Edit Button.'))));
570
636
 
571
 
                $response->SetFormRequestResponse($form, __('Delete this User?'), '430px', '200px');
 
637
                $response->SetFormRequestResponse(NULL, __('Delete this User?'), '430px', '200px');
572
638
        $response->AddButton(__('Help'), 'XiboHelpRender("' . HelpManager::Link('User', 'Delete') . '")');
573
639
                $response->AddButton(__('No'), 'XiboDialogClose()');
574
640
                $response->AddButton(__('Yes'), '$("#UserDeleteForm").submit()');
590
656
        Theme::Set('form_action', 'index.php?p=user&q=SetUserHomepage');
591
657
        Theme::Set('form_meta', '<input type="hidden" name="userid" value="' . $userid . '" />');
592
658
 
593
 
        // List of homepages
594
 
        Theme::Set('homepage_field_list', array(array("homepageid" => "dashboard", 'homepage' => 'dashboard'), array("homepageid" => "mediamanager", 'homepage' => 'mediamanager')));
595
 
        Theme::Set('homepage', $this->user->GetHomePage($userid));
596
 
 
597
 
        $form = Theme::RenderReturn('user_form_set_homepage');
598
 
 
599
 
        $response->SetFormRequestResponse($form, __('Set the homepage for this user'), '350px', '150px');
 
659
        // Render the return and output
 
660
        $formFields = array();
 
661
 
 
662
        $formFields[] = FormManager::AddCombo(
 
663
                    'homepage', 
 
664
                    __('Homepage'), 
 
665
                    $this->user->GetHomePage($userid),
 
666
                    array(
 
667
                        array("homepageid" => "dashboard", 'homepage' => 'Icon Dashboard'), 
 
668
                        array("homepageid" => "mediamanager", 'homepage' => 'Media Dashboard'), 
 
669
                        array("homepageid" => "statusdashboard", 'homepage' => 'Status Dashboard')
 
670
                    ),
 
671
                    'homepageid',
 
672
                    'homepage',
 
673
                    __('The users Homepage. This should not be changed until you want to reset their homepage.'), 
 
674
                    'h');
 
675
 
 
676
        Theme::Set('form_fields', $formFields);
 
677
 
 
678
        $response->SetFormRequestResponse(NULL, __('Set the homepage for this user'), '350px', '150px');
600
679
        $response->AddButton(__('Help'), 'XiboHelpRender("' . HelpManager::Link('User', 'SetHomepage') . '")');
601
680
        $response->AddButton(__('Cancel'), 'XiboDialogClose()');
602
681
        $response->AddButton(__('Save'), '$("#SetUserHomePageForm").submit()');
685
764
        Theme::Set('form_id', 'ChangePasswordForm');
686
765
        Theme::Set('form_action', 'index.php?p=user&q=ChangePassword');
687
766
 
688
 
        $form = Theme::RenderReturn('user_form_change_password');
689
 
 
690
 
        $response->SetFormRequestResponse($form, __('Change Password'), '450', '300');
 
767
        $formFields = array();
 
768
        $formFields[] = FormManager::AddPassword('oldPassword', __('Current Password'), NULL, 
 
769
            __('Please enter your current password'), 'p', 'required');
 
770
 
 
771
        $formFields[] = FormManager::AddPassword('newPassword', __('New Password'), NULL, 
 
772
            __('Please enter your new password'), 'n', 'required');
 
773
 
 
774
        $formFields[] = FormManager::AddPassword('retypeNewPassword', __('Retype New Password'), NULL, 
 
775
            __('Please repeat the new Password.'), 'r', 'required');
 
776
        
 
777
        Theme::Set('form_fields', $formFields);
 
778
 
 
779
        $response->SetFormRequestResponse(NULL, __('Change Password'), '450', '300');
691
780
        $response->AddButton(__('Help'), 'XiboHelpRender("' . HelpManager::Link('User', 'ChangePassword') . '")');
692
781
        $response->AddButton(__('Close'), 'XiboDialogClose()');
693
782
        $response->AddButton(__('Save'), '$("#ChangePasswordForm").submit()');
736
825
        Theme::Set('form_action', 'index.php?p=user&q=SetPassword');
737
826
        Theme::Set('form_meta', '<input type="hidden" name="UserId" value="' . $userId . '" />');
738
827
 
739
 
        $form = Theme::RenderReturn('user_form_set_password');
740
 
 
741
 
        $response->SetFormRequestResponse($form, __('Set Password'), '450', '300');
 
828
        $formFields = array();
 
829
        $formFields[] = FormManager::AddPassword('newPassword', __('New Password'), NULL, 
 
830
            __('The new Password for this user.'), 'p', 'required');
 
831
 
 
832
        $formFields[] = FormManager::AddPassword('retypeNewPassword', __('Retype New Password'), NULL, 
 
833
            __('Repeat the new Password for this user.'), 'r', 'required');
 
834
        
 
835
        Theme::Set('form_fields', $formFields);
 
836
 
 
837
        $response->SetFormRequestResponse(NULL, __('Set Password'), '450', '300');
742
838
        $response->AddButton(__('Help'), 'XiboHelpRender("' . HelpManager::Link('User', 'SetPassword') . '")');
743
839
        $response->AddButton(__('Close'), 'XiboDialogClose()');
744
840
        $response->AddButton(__('Save'), '$("#SetPasswordForm").submit()');