| Conditions | 21 | 
| Paths | 50 | 
| Total Lines | 105 | 
| Lines | 0 | 
| Ratio | 0 % | 
| Changes | 0 | ||
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
| 1 | <?php  | 
            ||
| 26 | public function sendBulk($page)  | 
            ||
| 27 |     { | 
            ||
| 28 | $subscriberManager = new SubscriberManager();  | 
            ||
| 29 |         if (!$subscriberManager->isenabled()) { | 
            ||
| 30 | return 0;  | 
            ||
| 31 | }  | 
            ||
| 32 | |||
| 33 | /** @var DokuWiki_Auth_Plugin $auth */  | 
            ||
| 34 | global $auth;  | 
            ||
| 35 | global $conf;  | 
            ||
| 36 | global $USERINFO;  | 
            ||
| 37 | /** @var Input $INPUT */  | 
            ||
| 38 | global $INPUT;  | 
            ||
| 39 | $count = 0;  | 
            ||
| 40 | |||
| 41 | $subscriptions = $subscriberManager->subscribers($page, null, ['digest', 'list']);  | 
            ||
| 42 | |||
| 43 | // remember current user info  | 
            ||
| 44 | $olduinfo = $USERINFO;  | 
            ||
| 45 |         $olduser = $INPUT->server->str('REMOTE_USER'); | 
            ||
| 46 | |||
| 47 |         foreach ($subscriptions as $target => $users) { | 
            ||
| 48 |             if (!$this->lock($target)) { | 
            ||
| 49 | continue;  | 
            ||
| 50 | }  | 
            ||
| 51 | |||
| 52 |             foreach ($users as $user => $info) { | 
            ||
| 53 | list($style, $lastupdate) = $info;  | 
            ||
| 54 | |||
| 55 | $lastupdate = (int)$lastupdate;  | 
            ||
| 56 |                 if ($lastupdate + $conf['subscribe_time'] > time()) { | 
            ||
| 57 | // Less than the configured time period passed since last  | 
            ||
| 58 | // update.  | 
            ||
| 59 | continue;  | 
            ||
| 60 | }  | 
            ||
| 61 | |||
| 62 | // Work as the user to make sure ACLs apply correctly  | 
            ||
| 63 | $USERINFO = $auth->getUserData($user);  | 
            ||
| 64 |                 $INPUT->server->set('REMOTE_USER', $user); | 
            ||
| 65 |                 if ($USERINFO === false) { | 
            ||
| 66 | continue;  | 
            ||
| 67 | }  | 
            ||
| 68 |                 if (!$USERINFO['mail']) { | 
            ||
| 69 | continue;  | 
            ||
| 70 | }  | 
            ||
| 71 | |||
| 72 |                 if (substr($target, -1, 1) === ':') { | 
            ||
| 73 | // subscription target is a namespace, get all changes within  | 
            ||
| 74 | $changes = getRecentsSince($lastupdate, null, getNS($target));  | 
            ||
| 
                                                                                                    
                        
                         | 
                |||
| 75 |                 } else { | 
            ||
| 76 | // single page subscription, check ACL ourselves  | 
            ||
| 77 |                     if (auth_quickaclcheck($target) < AUTH_READ) { | 
            ||
| 78 | continue;  | 
            ||
| 79 | }  | 
            ||
| 80 | $meta = p_get_metadata($target);  | 
            ||
| 81 | $changes = [$meta['last_change']];  | 
            ||
| 82 | }  | 
            ||
| 83 | |||
| 84 | // Filter out pages only changed in small and own edits  | 
            ||
| 85 | $change_ids = [];  | 
            ||
| 86 |                 foreach ($changes as $rev) { | 
            ||
| 87 | $n = 0;  | 
            ||
| 88 | while (!is_null($rev) && $rev['date'] >= $lastupdate &&  | 
            ||
| 89 |                         ($INPUT->server->str('REMOTE_USER') === $rev['user'] || | 
            ||
| 90 |                             $rev['type'] === DOKU_CHANGE_TYPE_MINOR_EDIT)) { | 
            ||
| 91 | $pagelog = new PageChangeLog($rev['id']);  | 
            ||
| 92 | $rev = $pagelog->getRevisions($n++, 1);  | 
            ||
| 93 | $rev = (count($rev) > 0) ? $rev[0] : null;  | 
            ||
| 94 | }  | 
            ||
| 95 | |||
| 96 |                     if (!is_null($rev) && $rev['date'] >= $lastupdate) { | 
            ||
| 97 | // Some change was not a minor one and not by myself  | 
            ||
| 98 | $change_ids[] = $rev['id'];  | 
            ||
| 99 | }  | 
            ||
| 100 | }  | 
            ||
| 101 | |||
| 102 | // send it  | 
            ||
| 103 |                 if ($style === 'digest') { | 
            ||
| 104 |                     foreach ($change_ids as $change_id) { | 
            ||
| 105 | $this->sendDigest(  | 
            ||
| 106 | $USERINFO['mail'],  | 
            ||
| 107 | $change_id,  | 
            ||
| 108 | $lastupdate  | 
            ||
| 109 | );  | 
            ||
| 110 | $count++;  | 
            ||
| 111 | }  | 
            ||
| 112 |                 } else { | 
            ||
| 113 |                     if ($style === 'list') { | 
            ||
| 114 | $this->sendList($USERINFO['mail'], $change_ids, $target);  | 
            ||
| 115 | $count++;  | 
            ||
| 116 | }  | 
            ||
| 117 | }  | 
            ||
| 118 | // TODO: Handle duplicate subscriptions.  | 
            ||
| 119 | |||
| 120 | // Update notification time.  | 
            ||
| 121 | $subscriberManager->add($target, $user, $style, time());  | 
            ||
| 122 | }  | 
            ||
| 123 | $this->unlock($target);  | 
            ||
| 124 | }  | 
            ||
| 125 | |||
| 126 | // restore current user info  | 
            ||
| 127 | $USERINFO = $olduinfo;  | 
            ||
| 128 |         $INPUT->server->set('REMOTE_USER', $olduser); | 
            ||
| 129 | return $count;  | 
            ||
| 130 | }  | 
            ||
| 131 | |||
| 262 |