We could not synchronize checks via GitHub's checks API since Scrutinizer's GitHub App is not installed for this repository.
| Total Complexity | 93 |
| Total Lines | 600 |
| Duplicated Lines | 0 % |
| Changes | 0 | ||
Complex classes like Basket often do a lot of different things. To break such a class down, we need to identify a cohesive component within that class. A common approach to find such a component is to look for fields/methods that share the same prefixes, or suffixes.
Once you have determined the fields that belong together, you can apply the Extract Class refactoring. If the component makes sense as a sub-class, Extract Subclass is also a candidate, and is often faster.
While breaking up the class, it is a good idea to analyze how other classes use Basket, and based on these observations, apply Extract Interface, too.
| 1 | <?php |
||
| 25 | class Basket extends \Kitodo\Dlf\Common\AbstractPlugin { |
||
| 26 | public $scriptRelPath = 'Classes/Plugins/Basket.php'; |
||
| 27 | |||
| 28 | /** |
||
| 29 | * The main method of the PlugIn |
||
| 30 | * |
||
| 31 | * @access public |
||
| 32 | * |
||
| 33 | * @param string $content: The PlugIn content |
||
| 34 | * @param array $conf: The PlugIn configuration |
||
| 35 | * |
||
| 36 | * @return string The content that is displayed on the website |
||
| 37 | */ |
||
| 38 | public function main($content, $conf) { |
||
| 39 | $this->init($conf); |
||
| 40 | // Don't cache the output. |
||
| 41 | $this->setCache(FALSE); |
||
| 42 | // Load template file. |
||
| 43 | $this->getTemplate(); |
||
| 44 | $subpartArray['entry'] = $this->cObj->getSubpart($this->template, '###ENTRY###'); |
||
|
1 ignored issue
–
show
|
|||
| 45 | $markerArray['###JS###'] = ''; |
||
|
1 ignored issue
–
show
|
|||
| 46 | // get user session |
||
| 47 | $sessionId = $GLOBALS['TSFE']->fe_user->id; |
||
| 48 | if ($GLOBALS['TSFE']->loginUser) { |
||
| 49 | $insertArray['fe_user_id'] = $GLOBALS['TSFE']->fe_user->user['uid']; |
||
|
1 ignored issue
–
show
|
|||
| 50 | $query = $GLOBALS['TYPO3_DB']->SELECTquery( |
||
| 51 | '*', |
||
| 52 | 'tx_dlf_basket', |
||
| 53 | 'tx_dlf_basket.fe_user_id='.intval($insertArray['fe_user_id']) |
||
| 54 | .Helper::whereClause('tx_dlf_basket'), |
||
| 55 | '', |
||
| 56 | '', |
||
| 57 | '1' |
||
| 58 | ); |
||
| 59 | } else { |
||
| 60 | $GLOBALS['TSFE']->fe_user->setKey('ses', 'tx_dlf_basket', ''); |
||
| 61 | $GLOBALS['TSFE']->fe_user->sesData_change = TRUE; |
||
| 62 | $GLOBALS['TSFE']->fe_user->storeSessionData(); |
||
| 63 | $query = $GLOBALS['TYPO3_DB']->SELECTquery( |
||
| 64 | '*', |
||
| 65 | 'tx_dlf_basket', |
||
| 66 | 'tx_dlf_basket.session_id='.$GLOBALS['TYPO3_DB']->fullQuoteStr($sessionId, 'tx_dlf_basket') |
||
| 67 | .Helper::whereClause('tx_dlf_basket'), |
||
| 68 | '', |
||
| 69 | '', |
||
| 70 | '1' |
||
| 71 | ); |
||
| 72 | } |
||
| 73 | $result = $GLOBALS['TYPO3_DB']->sql_query($query); |
||
| 74 | // session already exists |
||
| 75 | if ($GLOBALS['TYPO3_DB']->sql_num_rows($result) == 0) { |
||
| 76 | // create new basket in db |
||
| 77 | $insertArray['session_id'] = $sessionId; |
||
| 78 | $insertArray['doc_ids'] = ''; |
||
| 79 | $insertArray['label'] = ''; |
||
| 80 | $insertArray['l18n_diffsource'] = ''; |
||
| 81 | $GLOBALS['TYPO3_DB']->exec_INSERTquery('tx_dlf_basket', $insertArray); |
||
| 82 | $result = $GLOBALS['TYPO3_DB']->sql_query($query); |
||
| 83 | } |
||
| 84 | $basketData = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($result); |
||
| 85 | $piVars = $this->piVars; |
||
| 86 | // action add to basket |
||
| 87 | if (!empty($this->piVars['id']) |
||
| 88 | && $this->piVars['addToBasket']) { |
||
| 89 | $returnData = $this->addToBasket($this->piVars, $basketData); |
||
| 90 | $basketData = $returnData['basketData']; |
||
| 91 | $markerArray['###JS###'] = $returnData['jsOutput']; |
||
| 92 | } else { |
||
| 93 | $basketData['doc_ids'] = json_decode($basketData['doc_ids']); |
||
| 94 | } |
||
| 95 | // action remove from basket |
||
| 96 | if ($this->piVars['basket_action'] == 'remove') { |
||
| 97 | // remove entry from list |
||
| 98 | unset($piVars['basket_action']); |
||
| 99 | if (isset($this->piVars['selected'])) { |
||
| 100 | $basketData = $this->removeFromBasket($piVars, $basketData); |
||
| 101 | } |
||
| 102 | } |
||
| 103 | // action remove from basket |
||
| 104 | if ($this->piVars['basket_action'] == 'open') { |
||
| 105 | // open selected documents |
||
| 106 | unset($piVars['basket_action']); |
||
| 107 | if (isset($this->piVars['selected'])) { |
||
| 108 | $basketData = $this->openFromBasket($piVars, $basketData); |
||
| 109 | } |
||
| 110 | } |
||
| 111 | // action print from basket |
||
| 112 | if ($this->piVars['print_action']) { |
||
| 113 | // open selected documents |
||
| 114 | unset($piVars['print_action']); |
||
| 115 | if (isset($this->piVars['selected'])) { |
||
| 116 | $basketData = $this->printDocument($piVars, $basketData); |
||
| 117 | } |
||
| 118 | } |
||
| 119 | // action send mail |
||
| 120 | if ($this->piVars['mail_action']) { |
||
| 121 | if (isset($this->piVars['selected'])) { |
||
| 122 | $this->sendMail($this->piVars); |
||
| 123 | } |
||
| 124 | } |
||
| 125 | // set marker |
||
| 126 | $markerArray['###ACTION###'] = $this->pi_getPageLink($GLOBALS['TSFE']->id); |
||
| 127 | $markerArray['###LISTTITLE###'] = $this->pi_getLL('basket', '', TRUE); |
||
| 128 | if ($basketData['doc_ids']) { |
||
| 129 | if (is_object($basketData['doc_ids'])) { |
||
| 130 | $basketData['doc_ids'] = get_object_vars($basketData['doc_ids']); |
||
| 131 | } |
||
| 132 | $markerArray['###COUNT###'] = sprintf($this->pi_getLL('count'), count($basketData['doc_ids'])); |
||
| 133 | } else { |
||
| 134 | $markerArray['###COUNT###'] = sprintf($this->pi_getLL('count'), 0); |
||
| 135 | } |
||
| 136 | // get mail addresses |
||
| 137 | $resultMail = $GLOBALS['TYPO3_DB']->exec_SELECTquery( |
||
| 138 | '*', |
||
| 139 | 'tx_dlf_mail', |
||
| 140 | '1=1' |
||
| 141 | .Helper::whereClause('tx_dlf_mail'), |
||
| 142 | '', |
||
| 143 | 'tx_dlf_mail.sorting', |
||
| 144 | '' |
||
| 145 | ); |
||
| 146 | if ($GLOBALS['TYPO3_DB']->sql_num_rows($resultMail) > 0) { |
||
| 147 | $mailForm = '<select name="tx_dlf[mail_action]">'; |
||
| 148 | $mailForm .= '<option value="">'.$this->pi_getLL('chooseMail', '', TRUE).'</option>'; |
||
| 149 | while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($resultMail)) { |
||
| 150 | $mailForm .= '<option value="'.$row['uid'].'">'.$row['name'].' ('.$row['mail'].')</option>'; |
||
| 151 | } |
||
| 152 | $mailForm .= '</select><input type="submit">'; |
||
| 153 | } |
||
| 154 | // mail action form |
||
| 155 | $markerArray['###MAILACTION###'] = $mailForm; |
||
| 156 | // remove action form |
||
| 157 | $markerArray['###REMOVEACTION###'] = ' |
||
| 158 | <select name="tx_dlf[basket_action]"> |
||
| 159 | <option value="">'.$this->pi_getLL('chooseAction', '', TRUE).'</option> |
||
| 160 | <option value="open">'.$this->pi_getLL('download', '', TRUE).'</option> |
||
| 161 | <option value="remove">'.$this->pi_getLL('remove', '', TRUE).'</option> |
||
| 162 | </select> |
||
| 163 | <input type="submit"> |
||
| 164 | '; |
||
| 165 | // get mail addresses |
||
| 166 | $resultPrinter = $GLOBALS['TYPO3_DB']->exec_SELECTquery( |
||
| 167 | '*', |
||
| 168 | 'tx_dlf_printer', |
||
| 169 | '1=1' |
||
| 170 | .Helper::whereClause('tx_dlf_printer'), |
||
| 171 | '', |
||
| 172 | '', |
||
| 173 | '' |
||
| 174 | ); |
||
| 175 | $printForm = ''; |
||
| 176 | if ($GLOBALS['TYPO3_DB']->sql_num_rows($resultPrinter) > 0) { |
||
| 177 | $printForm = '<select name="tx_dlf[print_action]">'; |
||
| 178 | $printForm .= '<option value="">'.$this->pi_getLL('choosePrinter', '', TRUE).'</option>'; |
||
| 179 | while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($resultPrinter)) { |
||
| 180 | $printForm .= '<option value="'.$row['uid'].'">'.$row['label'].'</option>'; |
||
| 181 | } |
||
| 182 | $printForm .= '</select><input type="submit" />'; |
||
| 183 | } |
||
| 184 | // print action form |
||
| 185 | $markerArray['###PRINTACTION###'] = $printForm; |
||
| 186 | $entries = ''; |
||
| 187 | if (isset($basketData['doc_ids'])) { |
||
| 188 | // get each entry |
||
| 189 | foreach ($basketData['doc_ids'] as $value) { |
||
| 190 | $entries .= $this->getEntry($value, $subpartArray); |
||
| 191 | } |
||
| 192 | } else { |
||
| 193 | $entries = ''; |
||
| 194 | } |
||
| 195 | // basket go to |
||
| 196 | if ($this->conf['targetBasket'] && $this->conf['basketGoToButton'] && $this->piVars['id']) { |
||
| 197 | $label = $this->pi_getLL('goBasket', '', TRUE); |
||
| 198 | $basketConf = [ |
||
| 199 | 'parameter' => $this->conf['targetBasket'], |
||
| 200 | 'title' => $label |
||
| 201 | ]; |
||
| 202 | $markerArray['###BASKET###'] = $this->cObj->typoLink($label, $basketConf); |
||
| 203 | } else { |
||
| 204 | $markerArray['###BASKET###'] = ''; |
||
| 205 | } |
||
| 206 | $content = $this->cObj->substituteMarkerArray($this->cObj->substituteSubpart($this->template, '###ENTRY###', $entries, TRUE), $markerArray); |
||
| 207 | return $this->pi_wrapInBaseClass($content); |
||
| 208 | } |
||
| 209 | |||
| 210 | /** |
||
| 211 | * Return one basket entry |
||
| 212 | * |
||
| 213 | * @access protected |
||
| 214 | * |
||
| 215 | * @param array $data: DocumentData |
||
| 216 | * @param array $template: Template information |
||
| 217 | * |
||
| 218 | * @return string One basket entry |
||
| 219 | */ |
||
| 220 | protected function getEntry($data, $template) { |
||
| 221 | if (is_object($data)) { |
||
| 222 | $data = get_object_vars($data); |
||
| 223 | } |
||
| 224 | $id = $data['id']; |
||
| 225 | $startpage = $data['startpage']; |
||
| 226 | $endpage = $data['endpage']; |
||
| 227 | $startX = $data['startX']; |
||
| 228 | $startY = $data['startY']; |
||
| 229 | $endX = $data['endX']; |
||
| 230 | $endY = $data['endY']; |
||
| 231 | $rotation = $data['rotation']; |
||
| 232 | $docData = $this->getDocumentData($id, $data); |
||
| 233 | $markerArray['###BASKETDATA###'] = $docData['downloadLink']; |
||
|
1 ignored issue
–
show
|
|||
| 234 | $arrayKey = $id.'_'.$startpage; |
||
| 235 | if (isset($startX)) { |
||
| 236 | $arrayKey .= '_'.$startX; |
||
| 237 | } |
||
| 238 | if (isset($endX)) { |
||
| 239 | $arrayKey .= '_'.$endX; |
||
| 240 | } |
||
| 241 | $controlMark = '<input value="'.$id.'" name="tx_dlf[selected]['.$arrayKey.'][id]" type="checkbox">'; |
||
| 242 | $controlMark .= '<input value="'.$startpage.'" name="tx_dlf[selected]['.$arrayKey.'][startpage]" type="hidden">'; |
||
| 243 | $controlMark .= '<input value="'.$endpage.'" name="tx_dlf[selected]['.$arrayKey.'][endpage]" type="hidden">'; |
||
| 244 | // add hidden fields for detail information |
||
| 245 | if ($startX) { |
||
| 246 | $controlMark .= '<input type="hidden" name="tx_dlf[selected]['.$arrayKey.'][startX]" value="'.$startX.'">'; |
||
| 247 | $controlMark .= '<input type="hidden" name="tx_dlf[selected]['.$arrayKey.'][startY]" value="'.$startY.'">'; |
||
| 248 | $controlMark .= '<input type="hidden" name="tx_dlf[selected]['.$arrayKey.'][endX]" value="'.$endX.'">'; |
||
| 249 | $controlMark .= '<input type="hidden" name="tx_dlf[selected]['.$arrayKey.'][endY]" value="'.$endY.'">'; |
||
| 250 | $controlMark .= '<input type="hidden" name="tx_dlf[selected]['.$arrayKey.'][rotation]" value="'.$rotation.'">'; |
||
| 251 | } |
||
| 252 | // return one entry |
||
| 253 | $markerArray['###CONTROLS###'] = $controlMark; |
||
| 254 | $markerArray['###NUMBER###'] = $docData['record_id']; |
||
| 255 | return $this->cObj->substituteMarkerArray($this->cObj->substituteSubpart($template['entry'], '###ENTRY###', '', TRUE), $markerArray); |
||
| 256 | } |
||
| 257 | |||
| 258 | /** |
||
| 259 | * Adds documents to the basket |
||
| 260 | * |
||
| 261 | * @access protected |
||
| 262 | * |
||
| 263 | * @param array $_piVars: piVars |
||
| 264 | * @param array $basketData: basket data |
||
| 265 | * |
||
| 266 | * @return array Basket data and Javascript output |
||
| 267 | */ |
||
| 268 | protected function addToBasket($_piVars, $basketData) { |
||
| 269 | $output = ''; |
||
| 270 | if (!$_piVars['startpage']) { |
||
| 271 | $page = 0; |
||
| 272 | } else { |
||
| 273 | $page = intval($_piVars['startpage']); |
||
| 274 | } |
||
| 275 | if ($page != NULL || $_piVars['addToBasket'] == 'list') { |
||
| 276 | $documentItem = [ |
||
| 277 | 'id' => intval($_piVars['id']), |
||
| 278 | 'startpage' => intval($_piVars['startpage']), |
||
| 279 | 'endpage' => !isset($_piVars['endpage']) || $_piVars['endpage'] === "" ? "" : intval($_piVars['endpage']), |
||
| 280 | 'startX' => !isset($_piVars['startX']) || $_piVars['startX'] === "" ? "" : intval($_piVars['startX']), |
||
| 281 | 'startY' => !isset($_piVars['startY']) || $_piVars['startY'] === "" ? "" : intval($_piVars['startY']), |
||
| 282 | 'endX' => !isset($_piVars['endX']) || $_piVars['endX'] === "" ? "" : intval($_piVars['endX']), |
||
| 283 | 'endY' => !isset($_piVars['endY']) || $_piVars['endY'] === "" ? "" : intval($_piVars['endY']), |
||
| 284 | 'rotation' => !isset($_piVars['rotation']) || $_piVars['rotation'] === "" ? "" : intval($_piVars['rotation']) |
||
| 285 | ]; |
||
| 286 | // update basket |
||
| 287 | if (!empty($basketData['doc_ids'])) { |
||
| 288 | $items = json_decode($basketData['doc_ids']); |
||
| 289 | $items = get_object_vars($items); |
||
| 290 | } else { |
||
| 291 | $items = []; |
||
| 292 | } |
||
| 293 | // get document instance to load further information |
||
| 294 | $document = Document::getInstance($documentItem['id'], 0); |
||
| 295 | // set endpage for toc and subentry based on logid |
||
| 296 | if (($_piVars['addToBasket'] == 'subentry') or ($_piVars['addToBasket'] == 'toc')) { |
||
| 297 | $smLinks = $document->smLinks; |
||
| 298 | $pageCounter = sizeof($smLinks['l2p'][$_piVars['logId']]); |
||
| 299 | $documentItem['endpage'] = ($documentItem['startpage'] + $pageCounter) - 1; |
||
| 300 | } |
||
| 301 | // add whole document |
||
| 302 | if ($_piVars['addToBasket'] == 'list') { |
||
| 303 | $documentItem['endpage'] = $document->numPages; |
||
| 304 | } |
||
| 305 | $arrayKey = $documentItem['id'].'_'.$page; |
||
| 306 | if (!empty($documentItem['startX'])) { |
||
| 307 | $arrayKey .= '_'.$documentItem['startX']; |
||
| 308 | } |
||
| 309 | if (!empty($documentItem['endX'])) { |
||
| 310 | $arrayKey .= '_'.$documentItem['endX']; |
||
| 311 | } |
||
| 312 | // do not add more than one identical object |
||
| 313 | if (!in_array($arrayKey, $items)) { |
||
| 314 | $items[$arrayKey] = $documentItem; |
||
| 315 | // replace url param placeholder |
||
| 316 | $pdfParams = str_replace("##startpage##", $documentItem['startpage'], $this->conf['pdfparams']); |
||
| 317 | $pdfParams = str_replace("##docId##", $document->recordId, $pdfParams); |
||
| 318 | $pdfParams = str_replace("##startx##", $documentItem['startX'], $pdfParams); |
||
| 319 | $pdfParams = str_replace("##starty##", $documentItem['startY'], $pdfParams); |
||
| 320 | $pdfParams = str_replace("##endx##", $documentItem['endX'], $pdfParams); |
||
| 321 | $pdfParams = str_replace("##endy##", $documentItem['endY'], $pdfParams); |
||
| 322 | $pdfParams = str_replace("##rotation##", $documentItem['rotation'], $pdfParams); |
||
| 323 | if ($documentItem['startpage'] != $documentItem['endpage']) { |
||
| 324 | $pdfParams = str_replace("##endpage##", $documentItem['endpage'], $pdfParams); |
||
| 325 | } else { |
||
| 326 | // remove parameter endpage |
||
| 327 | $pdfParams = str_replace(",##endpage##", '', $pdfParams); |
||
| 328 | } |
||
| 329 | $pdfGenerateUrl = $this->conf['pdfgenerate'].$pdfParams; |
||
| 330 | if ($this->conf['pregeneration']) { |
||
| 331 | // send ajax request to webapp |
||
| 332 | $output .= ' |
||
| 333 | <script> |
||
| 334 | $(document).ready(function(){ |
||
| 335 | $.ajax({ |
||
| 336 | url: "'.$pdfGenerateUrl.'", |
||
| 337 | }).done(function() { |
||
| 338 | }); |
||
| 339 | }); |
||
| 340 | </script>'; |
||
| 341 | } |
||
| 342 | } |
||
| 343 | $update = ['doc_ids' => json_encode($items)]; |
||
| 344 | $GLOBALS['TYPO3_DB']->exec_UPDATEquery('tx_dlf_basket', 'uid='.intval($basketData['uid']), $update); |
||
| 345 | $basketData['doc_ids'] = $items; |
||
| 346 | } |
||
| 347 | return ['basketData' => $basketData, 'jsOutput' => $output]; |
||
| 348 | } |
||
| 349 | |||
| 350 | /** |
||
| 351 | * Removes selected documents from basket |
||
| 352 | * |
||
| 353 | * @access protected |
||
| 354 | * |
||
| 355 | * @param array $_piVars: plugin variables |
||
| 356 | * @param array $basketData: array with document information |
||
| 357 | * |
||
| 358 | * @return array basket data |
||
| 359 | */ |
||
| 360 | protected function removeFromBasket($_piVars, $basketData) { |
||
| 361 | if (!empty($basketData['doc_ids'])) { |
||
| 362 | $items = $basketData['doc_ids']; |
||
| 363 | $items = get_object_vars($items); |
||
| 364 | } |
||
| 365 | foreach ($_piVars['selected'] as $value) { |
||
| 366 | if (isset($value['id'])) { |
||
| 367 | $arrayKey = $value['id'].'_'.$value['startpage']; |
||
| 368 | if (isset($value['startX'])) { |
||
| 369 | $arrayKey .= '_'.$value['startX']; |
||
| 370 | } |
||
| 371 | if (isset($value['endX'])) { |
||
| 372 | $arrayKey .= '_'.$value['endX']; |
||
| 373 | } |
||
| 374 | if (isset($items[$arrayKey])) { |
||
| 375 | unset($items[$arrayKey]); |
||
| 376 | } |
||
| 377 | } |
||
| 378 | } |
||
| 379 | if (empty($items)) { |
||
| 380 | $update = ['doc_ids' => '']; |
||
| 381 | } else { |
||
| 382 | $update = ['doc_ids' => json_encode($items)]; |
||
| 383 | } |
||
| 384 | $GLOBALS['TYPO3_DB']->exec_UPDATEquery('tx_dlf_basket', 'uid='.intval($basketData['uid']), $update); |
||
| 385 | $basketData['doc_ids'] = $items; |
||
| 386 | return $basketData; |
||
| 387 | } |
||
| 388 | |||
| 389 | /** |
||
| 390 | * Open selected documents from basket |
||
| 391 | * |
||
| 392 | * @access protected |
||
| 393 | * |
||
| 394 | * @param array $_piVars: plugin variables |
||
| 395 | * @param array $basketData: array with document information |
||
| 396 | * |
||
| 397 | * @return array basket data |
||
| 398 | */ |
||
| 399 | protected function openFromBasket($_piVars, $basketData) { |
||
| 410 | } |
||
| 411 | |||
| 412 | /** |
||
| 413 | * Returns the downloadurl configured in the basket |
||
| 414 | * |
||
| 415 | * @access protected |
||
| 416 | * |
||
| 417 | * @param integer $id: Document id |
||
| 418 | * |
||
| 419 | * @return mixed download url or false |
||
| 420 | */ |
||
| 421 | protected function getDocumentData($id, $data) { |
||
| 422 | // get document instance to load further information |
||
| 423 | $document = Document::getInstance($id, 0); |
||
| 424 | if ($document) { |
||
| 425 | // replace url param placeholder |
||
| 426 | $urlParams = str_replace("##page##", intval($data['page']), $this->conf['pdfparams']); |
||
| 427 | $urlParams = str_replace("##docId##", $document->recordId, $urlParams); |
||
| 428 | $urlParams = str_replace("##startpage##", intval($data['startpage']), $urlParams); |
||
| 429 | if ($data['startpage'] != $data['endpage']) { |
||
| 430 | $urlParams = str_replace("##endpage##", $data['endpage'] === "" ? "" : intval($data['endpage']), $urlParams); |
||
| 431 | } else { |
||
| 432 | // remove parameter endpage |
||
| 433 | $urlParams = str_replace(",##endpage##", '', $urlParams); |
||
| 434 | } |
||
| 435 | $urlParams = str_replace("##startx##", $data['startX'] === "" ? "" : intval($data['startX']), $urlParams); |
||
| 436 | $urlParams = str_replace("##starty##", $data['startY'] === "" ? "" : intval($data['startY']), $urlParams); |
||
| 437 | $urlParams = str_replace("##endx##", $data['endX'] === "" ? "" : intval($data['endX']), $urlParams); |
||
| 438 | $urlParams = str_replace("##endy##", $data['endY'] === "" ? "" : intval($data['endY']), $urlParams); |
||
| 439 | $urlParams = str_replace("##rotation##", $data['rotation'] === "" ? "" : intval($data['rotation']), $urlParams); |
||
| 440 | $downloadUrl = $this->conf['pdfgenerate'].$urlParams; |
||
| 441 | $title = $document->getTitle($id, TRUE); |
||
| 442 | if (empty($title)) { |
||
| 443 | $title = $this->pi_getLL('noTitle', '', TRUE); |
||
| 444 | } |
||
| 445 | // Set page and cutout information |
||
| 446 | $info = ''; |
||
| 447 | if ($data['startX'] != '' && $data['endX'] != '') { |
||
| 448 | // cutout |
||
| 449 | $info .= $this->pi_getLL('cutout', '', TRUE).' '; |
||
| 450 | } |
||
| 451 | if ($data['startpage'] == $data['endpage']) { |
||
| 452 | // One page |
||
| 453 | $info .= $this->pi_getLL('page', '', TRUE).' '.$data['startpage']; |
||
| 454 | } else { |
||
| 455 | $info .= $this->pi_getLL('page', '', TRUE).' '.$data['startpage'].'-'.$data['endpage']; |
||
| 456 | } |
||
| 457 | $downloadLink = '<a href="'.$downloadUrl.'" target="_blank">'.$title.'</a> ('.$info.')'; |
||
| 458 | if ($data['startpage'] == $data['endpage']) { |
||
| 459 | $pageNums = 1; |
||
| 460 | } else { |
||
| 461 | $pageNums = $data['endpage'] - $data['startpage']; |
||
| 462 | } |
||
| 463 | return [ |
||
| 464 | 'downloadUrl' => $downloadUrl, |
||
| 465 | 'downloadLink' => $downloadLink, |
||
| 466 | 'pageNums' => $pageNums, |
||
| 467 | 'urlParams' => $urlParams, |
||
| 468 | 'record_id' => $document->recordId, |
||
| 469 | ]; |
||
| 470 | } |
||
| 471 | return FALSE; |
||
| 472 | } |
||
| 473 | |||
| 474 | /** |
||
| 475 | * Send mail with pdf download url |
||
| 476 | * |
||
| 477 | * @access protected |
||
| 478 | * |
||
| 479 | * @return void |
||
| 480 | */ |
||
| 481 | protected function sendMail() { |
||
| 482 | // send mail |
||
| 483 | $mailId = $this->piVars['mail_action']; |
||
| 484 | // get id from db and send selected doc downloadlink |
||
| 485 | $resultMail = $GLOBALS['TYPO3_DB']->exec_SELECTquery( |
||
| 486 | '*', |
||
| 487 | 'tx_dlf_mail', |
||
| 488 | 'tx_dlf_mail.uid='.intval($mailId) |
||
| 489 | .Helper::whereClause('tx_dlf_mail'), |
||
| 490 | '', |
||
| 491 | '', |
||
| 492 | '1' |
||
| 493 | ); |
||
| 494 | $mailData = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($resultMail); |
||
| 495 | $mailText = $this->pi_getLL('mailBody', '', TRUE)."\n"; |
||
| 496 | $numberOfPages = 0; |
||
| 497 | $pdfUrl = $this->conf['pdfdownload']; |
||
| 498 | // prepare links |
||
| 499 | foreach ($this->piVars['selected'] as $docValue) { |
||
| 500 | if ($docValue['id']) { |
||
| 501 | $explodeId = explode("_", $docValue['id']); |
||
| 502 | $docData = $this->getDocumentData($explodeId[0], $docValue); |
||
| 503 | $pdfUrl .= $docData['urlParams'].$this->conf['pdfparamseparator']; |
||
| 504 | $pages = (abs(intval($docValue['startpage']) - intval($docValue['endpage']))); |
||
| 505 | if ($pages === 0) { |
||
| 506 | $numberOfPages = $numberOfPages + 1; |
||
| 507 | } else { |
||
| 508 | $numberOfPages = $numberOfPages + $pages; |
||
| 509 | } |
||
| 510 | } |
||
| 511 | } |
||
| 512 | // Remove leading/tailing pdfparamseperator |
||
| 513 | $pdfUrl = trim($pdfUrl, $this->conf['pdfparamseparator']); |
||
| 514 | $mailBody = $mailText.$pdfUrl; |
||
| 515 | // Get hook objects. |
||
| 516 | $hookObjects = Helper::getHookObjects($this->scriptRelPath); |
||
| 517 | // Hook for getting a customized mail body. |
||
| 518 | foreach ($hookObjects as $hookObj) { |
||
| 519 | if (method_exists($hookObj, 'customizeMailBody')) { |
||
| 520 | $mailBody = $hookObj->customizeMailBody($mailText, $pdfUrl); |
||
| 521 | } |
||
| 522 | } |
||
| 523 | $from = \TYPO3\CMS\Core\Utility\MailUtility::getSystemFrom(); |
||
| 524 | // send mail |
||
| 525 | $mail = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Mail\MailMessage::class); |
||
| 526 | // Prepare and send the message |
||
| 527 | |||
| 528 | // subject |
||
| 529 | ->setSubject($this->pi_getLL('mailSubject', '', TRUE)) |
||
| 530 | // Set the From address with an associative array |
||
| 531 | ->setFrom($from) |
||
| 532 | // Set the To addresses with an associative array |
||
| 533 | ->setTo([$mailData['mail'] => $mailData['name']]) |
||
| 534 | ->setBody($mailBody, 'text/html') |
||
| 535 | ->send(); |
||
| 536 | // protocol |
||
| 537 | $insertArray = [ |
||
| 538 | 'pid' => $this->conf['pages'], |
||
| 539 | 'file_name' => $pdfUrl, |
||
| 540 | 'count_pages' => $numberOfPages, |
||
| 541 | 'crdate' => time(), |
||
| 542 | ]; |
||
| 543 | if ($GLOBALS["TSFE"]->loginUser) { |
||
| 544 | // internal user |
||
| 545 | $insertArray['user_id'] = $GLOBALS["TSFE"]->fe_user->user['uid']; |
||
| 546 | $insertArray['name'] = $GLOBALS["TSFE"]->fe_user->user['username']; |
||
| 547 | $insertArray['label'] = 'Mail: '.$mailData['mail']; |
||
| 548 | } else { |
||
| 549 | // external user |
||
| 550 | $insertArray['user_id'] = 0; |
||
| 551 | $insertArray['name'] = 'n/a'; |
||
| 552 | $insertArray['label'] = 'Mail: '.$mailData['mail']; |
||
| 553 | } |
||
| 554 | // add action to protocol |
||
| 555 | $GLOBALS['TYPO3_DB']->exec_INSERTquery('tx_dlf_actionlog', $insertArray); |
||
| 556 | } |
||
| 557 | |||
| 558 | /** |
||
| 559 | * Sends document information to an external printer (url) |
||
| 560 | * |
||
| 561 | * @access protected |
||
| 562 | * |
||
| 563 | * @return void |
||
| 564 | */ |
||
| 565 | protected function printDocument() { |
||
| 625 | } |
||
| 626 | } |
||
| 627 |
This function has been deprecated. The supplier of the function has supplied an explanatory message.
The explanatory message should give you some clue as to whether and when the function will be removed and what other function to use instead.