Conditions | 19 |
Paths | 47 |
Total Lines | 79 |
Code Lines | 48 |
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 |
||
106 | public function process() |
||
107 | { |
||
108 | if (!$this->tempFile) { |
||
109 | throw new Exception("Temporary sitemap file has not been set"); |
||
110 | } |
||
111 | |||
112 | if (!file_exists($this->tempFile)) { |
||
113 | throw new Exception("Temporary file $this->tempFile has been deleted!"); |
||
114 | } |
||
115 | |||
116 | $remainingChildren = $this->pagesToProcess; |
||
117 | |||
118 | // if there's no more, we're done! |
||
119 | if (!count($remainingChildren)) { |
||
120 | $this->completeJob(); |
||
121 | $this->isComplete = true; |
||
122 | return; |
||
123 | } |
||
124 | |||
125 | // lets process our first item - note that we take it off the list of things left to do |
||
126 | $ID = array_shift($remainingChildren); |
||
127 | |||
128 | // get the page |
||
129 | $page = Versioned::get_by_stage('Page', 'Live', '"SiteTree_Live"."ID" = '.$ID); |
||
130 | |||
131 | if (!$page || !$page->Count()) { |
||
132 | $this->addMessage("Page ID #$ID could not be found, skipping"); |
||
133 | } else { |
||
134 | $page = $page->First(); |
||
135 | } |
||
136 | |||
137 | if ($page && $page instanceof Page && !($page instanceof ErrorPage)) { |
||
138 | if ($page->canView() && (!isset($page->Priority) || $page->Priority > 0)) { |
||
139 | $created = $page->dbObject('Created'); |
||
140 | $now = new DBDatetime(); |
||
141 | $now->value = date('Y-m-d H:i:s'); |
||
142 | $versions = $page->Version; |
||
143 | $timediff = $now->format('U') - $created->format('U'); |
||
144 | |||
145 | // Check how many revisions have been made over the lifetime of the |
||
146 | // Page for a rough estimate of it's changing frequency. |
||
147 | $period = $timediff / ($versions + 1); |
||
148 | |||
149 | if ($period > 60*60*24*365) { // > 1 year |
||
150 | $page->ChangeFreq = 'yearly'; |
||
151 | } elseif ($period > 60*60*24*30) { // > ~1 month |
||
152 | $page->ChangeFreq = 'monthly'; |
||
153 | } elseif ($period > 60*60*24*7) { // > 1 week |
||
154 | $page->ChangeFreq = 'weekly'; |
||
155 | } elseif ($period > 60*60*24) { // > 1 day |
||
156 | $page->ChangeFreq = 'daily'; |
||
157 | } elseif ($period > 60*60) { // > 1 hour |
||
158 | $page->ChangeFreq = 'hourly'; |
||
159 | } else { // < 1 hour |
||
160 | $page->ChangeFreq = 'always'; |
||
161 | } |
||
162 | |||
163 | // do the generation of the file in a temporary location |
||
164 | $content = $page->renderWith('SitemapEntry'); |
||
165 | |||
166 | $fp = fopen($this->tempFile, "a"); |
||
167 | if (!$fp) { |
||
168 | throw new Exception("Could not open $this->tempFile for writing"); |
||
169 | } |
||
170 | fputs($fp, $content, strlen($content)); |
||
171 | fclose($fp); |
||
172 | } |
||
173 | } |
||
174 | |||
175 | // and now we store the new list of remaining children |
||
176 | $this->pagesToProcess = $remainingChildren; |
||
177 | $this->currentStep++; |
||
178 | |||
179 | if (!count($remainingChildren)) { |
||
180 | $this->completeJob(); |
||
181 | $this->isComplete = true; |
||
182 | return; |
||
183 | } |
||
184 | } |
||
185 | |||
208 |
Since your code implements the magic setter
_set
, this function will be called for any write access on an undefined variable. You can add the@property
annotation to your class or interface to document the existence of this variable.Since the property has write access only, you can use the @property-write annotation instead.
Of course, you may also just have mistyped another name, in which case you should fix the error.
See also the PhpDoc documentation for @property.