~yoboy-leguesh/ubuntu-fr-doc/maj20150810a

« back to all changes in this revision

Viewing changes to lib/plugins/usermanager/admin.php

  • Committer: YoBoY
  • Date: 2015-11-11 10:05:14 UTC
  • Revision ID: yoboy.leguesh@gmail.com-20151111100514-bw7p06lrhban4g2t
Mise à jour vers Dokuwiki 2015-08-10a avec nos patchs

Show diffs side-by-side

added added

removed removed

Lines of Context:
31
31
    protected $_edit_userdata = array();
32
32
    protected $_disabled = '';      // if disabled set to explanatory string
33
33
    protected $_import_failures = array();
 
34
    protected $_lastdisabled = false; // set to true if last user is unknown and last button is hence buggy
34
35
 
35
36
    /**
36
37
     * Constructor
37
38
     */
38
 
    public function admin_plugin_usermanager(){
 
39
    public function __construct(){
39
40
        /** @var DokuWiki_Auth_Plugin $auth */
40
41
        global $auth;
41
42
 
58
59
        }
59
60
    }
60
61
 
61
 
     /**
62
 
      * Return prompt for admin menu
63
 
      */
 
62
    /**
 
63
     * Return prompt for admin menu
 
64
     *
 
65
     * @param string $language
 
66
     * @return string
 
67
     */
64
68
    public function getMenuText($language) {
65
69
 
66
70
        if (!is_null($this->_auth))
71
75
 
72
76
    /**
73
77
     * return sort order for position in admin menu
 
78
     *
 
79
     * @return int
74
80
     */
75
81
    public function getMenuSort() {
76
82
        return 2;
77
83
    }
78
84
 
79
85
    /**
 
86
     * @return int current start value for pageination
 
87
     */
 
88
    public function getStart() {
 
89
        return $this->_start;
 
90
    }
 
91
 
 
92
    /**
 
93
     * @return int number of users per page
 
94
     */
 
95
    public function getPagesize() {
 
96
        return $this->_pagesize;
 
97
    }
 
98
 
 
99
    /**
 
100
     * @param boolean $lastdisabled
 
101
     */
 
102
    public function setLastdisabled($lastdisabled) {
 
103
        $this->_lastdisabled = $lastdisabled;
 
104
    }
 
105
 
 
106
    /**
80
107
     * Handle user request
 
108
     *
 
109
     * @return bool
81
110
     */
82
111
    public function handle() {
83
112
        global $INPUT;
128
157
 
129
158
    /**
130
159
     * Output appropriate html
 
160
     *
 
161
     * @return bool
131
162
     */
132
163
    public function html() {
133
164
        global $ID;
191
222
                 */
192
223
                $groups = join(', ',$grps);
193
224
                ptln("    <tr class=\"user_info\">");
194
 
                ptln("      <td class=\"centeralign\"><input type=\"checkbox\" name=\"delete[".$user."]\" ".$delete_disable." /></td>");
 
225
                ptln("      <td class=\"centeralign\"><input type=\"checkbox\" name=\"delete[".hsc($user)."]\" ".$delete_disable." /></td>");
195
226
                if ($editable) {
196
 
                    ptln("    <td><a href=\"".wl($ID,array('fn[edit]['.hsc($user).']' => 1,
 
227
                    ptln("    <td><a href=\"".wl($ID,array('fn[edit]['.$user.']' => 1,
197
228
                                                           'do' => 'admin',
198
229
                                                           'page' => 'usermanager',
199
230
                                                           'sectok' => getSecurityToken())).
210
241
        ptln("    <tbody>");
211
242
        ptln("      <tr><td colspan=\"5\" class=\"centeralign\">");
212
243
        ptln("        <span class=\"medialeft\">");
213
 
        ptln("          <input type=\"submit\" name=\"fn[delete]\" ".$delete_disable." class=\"button\" value=\"".$this->lang['delete_selected']."\" id=\"usrmgr__del\" />");
214
 
        ptln("        </span>");
 
244
        ptln("          <button type=\"submit\" name=\"fn[delete]\" id=\"usrmgr__del\" ".$delete_disable.">".$this->lang['delete_selected']."</button>");
 
245
        ptln("        ");
215
246
        ptln("        <span class=\"mediaright\">");
216
 
        ptln("          <input type=\"submit\" name=\"fn[start]\" ".$page_buttons['start']." class=\"button\" value=\"".$this->lang['start']."\" />");
217
 
        ptln("          <input type=\"submit\" name=\"fn[prev]\" ".$page_buttons['prev']." class=\"button\" value=\"".$this->lang['prev']."\" />");
218
 
        ptln("          <input type=\"submit\" name=\"fn[next]\" ".$page_buttons['next']." class=\"button\" value=\"".$this->lang['next']."\" />");
219
 
        ptln("          <input type=\"submit\" name=\"fn[last]\" ".$page_buttons['last']." class=\"button\" value=\"".$this->lang['last']."\" />");
 
247
        ptln("          <button type=\"submit\" name=\"fn[start]\" ".$page_buttons['start'].">".$this->lang['start']."</button>");
 
248
        ptln("          <button type=\"submit\" name=\"fn[prev]\" ".$page_buttons['prev'].">".$this->lang['prev']."</button>");
 
249
        ptln("          <button type=\"submit\" name=\"fn[next]\" ".$page_buttons['next'].">".$this->lang['next']."</button>");
 
250
        ptln("          <button type=\"submit\" name=\"fn[last]\" ".$page_buttons['last'].">".$this->lang['last']."</button>");
220
251
        ptln("        </span>");
221
252
        if (!empty($this->_filter)) {
222
 
            ptln("    <input type=\"submit\" name=\"fn[search][clear]\" class=\"button\" value=\"".$this->lang['clear']."\" />");
 
253
            ptln("    <button type=\"submit\" name=\"fn[search][clear]\">".$this->lang['clear']."</button>");
223
254
        }
224
 
        ptln("        <input type=\"submit\" name=\"fn[export]\" class=\"button\" value=\"".$export_label."\" />");
 
255
        ptln("        <button type=\"submit\" name=\"fn[export]\">".$export_label."</button>");
225
256
        ptln("        <input type=\"hidden\" name=\"do\"    value=\"admin\" />");
226
257
        ptln("        <input type=\"hidden\" name=\"page\"  value=\"usermanager\" />");
227
258
 
325
356
 
326
357
        // save current $user, we need this to access details if the name is changed
327
358
        if ($user)
328
 
          ptln("          <input type=\"hidden\" name=\"userid_old\"  value=\"".$user."\" />",$indent);
 
359
          ptln("          <input type=\"hidden\" name=\"userid_old\"  value=\"".hsc($user)."\" />",$indent);
329
360
 
330
361
        $this->_htmlFilterSettings($indent+10);
331
362
 
332
 
        ptln("          <input type=\"submit\" name=\"fn[".$cmd."]\" class=\"button\" value=\"".$this->lang[$cmd]."\" />",$indent);
 
363
        ptln("          <button type=\"submit\" name=\"fn[".$cmd."]\">".$this->lang[$cmd]."</button>",$indent);
333
364
        ptln("        </td>",$indent);
334
365
        ptln("      </tr>",$indent);
335
366
        ptln("    </tbody>",$indent);
338
369
        if ($notes) {
339
370
            ptln("    <ul class=\"notes\">");
340
371
            foreach ($notes as $note) {
341
 
                ptln("      <li><span class=\"li\">".$note."</span></li>",$indent);
 
372
                ptln("      <li><span class=\"li\">".$note."</li>",$indent);
342
373
            }
343
374
            ptln("    </ul>");
344
375
        }
370
401
            $fieldtype = 'text';
371
402
            $autocomp  = '';
372
403
        }
 
404
        $value = hsc($value);
373
405
 
374
406
        echo "<tr $class>";
375
407
        echo "<td><label for=\"$id\" >$label: </label></td>";
424
456
        ptln('  <form action="'.wl($ID).'" method="post" enctype="multipart/form-data">',$indent);
425
457
        formSecurityToken();
426
458
        ptln('    <label>'.$this->lang['import_userlistcsv'].'<input type="file" name="import" /></label>',$indent);
427
 
        ptln('    <input type="submit" name="fn[import]" value="'.$this->lang['import'].'" />',$indent);
 
459
        ptln('    <button type="submit" name="fn[import]">'.$this->lang['import'].'</button>',$indent);
428
460
        ptln('    <input type="hidden" name="do"    value="admin" />',$indent);
429
461
        ptln('    <input type="hidden" name="page"  value="usermanager" />',$indent);
430
462
 
738
770
        global $auth;
739
771
        global $INPUT;
740
772
 
 
773
        $user = array();
741
774
        $user[0] = ($clean) ? $auth->cleanUser($INPUT->str('userid')) : $INPUT->str('userid');
742
775
        $user[1] = $INPUT->str('userpass');
743
776
        $user[2] = $INPUT->str('username');
764
797
        $this->_filter = array();
765
798
 
766
799
        if ($op == 'new') {
767
 
            list($user,$pass,$name,$mail,$grps) = $this->_retrieveUser(false);
 
800
            list($user,/* $pass */,$name,$mail,$grps) = $this->_retrieveUser(false);
768
801
 
769
802
            if (!empty($user)) $this->_filter['user'] = $user;
770
803
            if (!empty($name)) $this->_filter['name'] = $name;
816
849
 
817
850
        $disabled = 'disabled="disabled"';
818
851
 
 
852
        $buttons = array();
819
853
        $buttons['start'] = $buttons['prev'] = ($this->_start == 0) ? $disabled : '';
820
854
 
821
855
        if ($this->_user_total == -1) {
825
859
            $buttons['last'] = $buttons['next'] = (($this->_start + $this->_pagesize) >= $this->_user_total) ? $disabled : '';
826
860
        }
827
861
 
 
862
        if ($this->_lastdisabled) {
 
863
            $buttons['last'] = $disabled;
 
864
        }
 
865
 
828
866
        return $buttons;
829
867
    }
830
868
 
937
975
     * Returns cleaned user data
938
976
     *
939
977
     * @param array $candidate raw values of line from input file
940
 
     * @param $error
941
 
     * @return array|bool cleaned data or false
 
978
     * @param string $error
 
979
     * @return array|false cleaned data or false
942
980
     */
943
981
    protected function _cleanImportUser($candidate, & $error){
944
982
        global $INPUT;
951
989
        $INPUT->set('usergroups', $candidate[4]);
952
990
 
953
991
        $cleaned = $this->_retrieveUser();
954
 
        list($user,$pass,$name,$mail,$grps) = $cleaned;
 
992
        list($user,/* $pass */,$name,$mail,/* $grps */) = $cleaned;
955
993
        if (empty($user)) {
956
994
            $error = $this->lang['import_error_baduserid'];
957
995
            return false;
1021
1059
 
1022
1060
    /**
1023
1061
     * wrapper for is_uploaded_file to facilitate overriding by test suite
 
1062
     *
 
1063
     * @param string $file filename
 
1064
     * @return bool
1024
1065
     */
1025
1066
    protected function _isUploadedFile($file) {
1026
1067
        return is_uploaded_file($file);
1031
1072
     *
1032
1073
     * @deprecated    remove when dokuwiki php requirement increases to 5.3+
1033
1074
     *                also associated unit test & mock access method
 
1075
     *
 
1076
     * @param string $csv string to parse
 
1077
     * @return array
1034
1078
     */
1035
1079
    protected function _getcsv($csv) {
1036
1080
        return function_exists('str_getcsv') ? str_getcsv($csv) : $this->str_getcsv($csv);
1041
1085
     * loosely based on www.php.net/str_getcsv#88311
1042
1086
     *
1043
1087
     * @deprecated    remove when dokuwiki php requirement increases to 5.3+
 
1088
     *
 
1089
     * @param string $str string to parse
 
1090
     * @return array
1044
1091
     */
1045
1092
    protected function str_getcsv($str) {
1046
1093
        $fp = fopen("php://temp/maxmemory:1048576", 'r+');    // 1MiB