16 import(
'classes.publicationFormat.PublicationFormat');
17 import(
'lib.pkp.classes.submission.RepresentationDAO');
18 import(
'lib.pkp.classes.plugins.PKPPubIdPluginDAO');
24 function getById($representationId, $publicationId =
null, $contextId =
null) {
25 $params = array((
int) $representationId);
26 if ($publicationId) $params[] = (int) $publicationId;
27 if ($contextId) $params[] = (int) $contextId;
31 FROM publication_formats pf
33 JOIN publications p ON (p.publication_id = pf.publicationId)
34 JOIN submissions s ON (s.submission_id=p.submission_id)':
'') .
'
35 WHERE pf.publication_format_id=?' .
36 ($publicationId?
' AND pf.publication_id = ?':
'') .
37 ($contextId?
' AND s.context_id = ?':
''),
42 if ($result->RecordCount() != 0) {
43 $returner = $this->
_fromRow($result->GetRowAssoc(
false));
58 function getBySetting($settingName, $settingValue, $publicationId =
null, $pressId =
null) {
59 $params = array($settingName);
63 FROM publication_formats pf ';
65 $sql .=
'INNER JOIN publications p ON p.publication_id = pf.publication_id
66 INNER JOIN submissions s ON s.submission_id = p.submission_id ';
68 if (is_null($settingValue)) {
69 $sql .=
'LEFT JOIN publication_format_settings pfs ON pf.publication_format_id = pfs.publication_format_id AND pfs.setting_name = ?
70 WHERE (pfs.setting_value IS NULL OR pfs.setting_value = \'\')';
72 $params[] = (string) $settingValue;
73 $sql .=
'INNER JOIN publication_format_settings pfs ON pf.publication_format_id = pfs.publication_format_id
74 WHERE pfs.setting_name = ? AND pfs.setting_value = ?';
78 $params[] = (int) $publicationId;
79 $sql .=
' AND pf.publication_id = ?';
83 $params[] = (int) $pressId;
84 $sql .=
' AND s.context_id = ?';
87 $orderByContextId = $pressId ?
's.context_id, ' :
'';
88 $sql .=
' ORDER BY ' . $orderByContextId .
'pf.seq, pf.publication_format_id';
89 $result = $this->
retrieve($sql, $params);
91 $publicationFormats = array();
92 while (!$result->EOF) {
93 $publicationFormats[] = $this->
_fromRow($result->GetRowAssoc(
false));
98 return $publicationFormats;
111 function getByPubId($pubIdType, $pubId, $publicationId =
null, $pressId =
null) {
112 $publicationFormat =
null;
113 if (!empty($pubId)) {
114 $publicationFormats = $this->
getBySetting(
'pub-id::'.$pubIdType, $pubId, $publicationId, $pressId);
115 if (!empty($publicationFormats)) {
116 assert(count($publicationFormats) == 1);
117 $publicationFormat = $publicationFormats[0];
120 return $publicationFormat;
134 FROM publication_formats pf
135 WHERE pf.url_path = ?
136 AND pf.publication_id = ?',
143 if ($result->RecordCount() != 0) {
144 $publicationFormat = $this->
_fromRow($result->GetRowAssoc(
false));
145 } elseif (is_int($representationId) || ctype_digit($representationId)) {
146 $publicationFormat = $this->
getById($representationId);
150 return $publicationFormat ??
null;
157 $params = array((
int) $publicationId);
158 if ($contextId) $params[] = (int) $contextId;
163 FROM publication_formats pf ' .
165 'INNER JOIN publications p ON (pf.publication_id=p.publication_id)
166 INNER JOIN submissions s ON (s.submission_id = p.submission_id) '
168 'WHERE pf.publication_id=? '
169 . ($contextId?
' AND s.context_id = ? ':
'')
184 $params = array((
int) $pressId);
187 FROM publication_formats pf
188 JOIN publications p ON (p.publication_id = pf.publication_id)
189 JOIN submissions s ON (s.submission_id = p.submission_id)
190 WHERE s.context_id = ?
204 $params = array((
int) $publicationId);
208 FROM publication_formats
209 WHERE publication_id = ? AND is_approved=1
223 $this->
update(
'DELETE FROM publication_format_settings WHERE publication_format_id = ?', (
int) $representationId);
224 return $this->
update(
'DELETE FROM publication_formats WHERE publication_format_id = ?', (
int) $representationId);
233 'publication_format_settings',
235 array(
'publication_format_id' => $publicationFormat->getId())
253 function _fromRow($row, $params = array(), $callHooks =
true) {
257 $publicationFormat->setIsApproved($row[
'is_approved']);
258 $publicationFormat->setEntryKey($row[
'entry_key']);
259 $publicationFormat->setPhysicalFormat($row[
'physical_format']);
260 $publicationFormat->setSequence((
int) $row[
'seq']);
261 $publicationFormat->setId((
int) $row[
'publication_format_id']);
262 $publicationFormat->setData(
'publicationId', (
int) $row[
'publication_id']);
263 $publicationFormat->setFileSize($row[
'file_size']);
264 $publicationFormat->setFrontMatter($row[
'front_matter']);
265 $publicationFormat->setBackMatter($row[
'back_matter']);
266 $publicationFormat->setHeight($row[
'height']);
267 $publicationFormat->setHeightUnitCode($row[
'height_unit_code']);
268 $publicationFormat->setWidth($row[
'width']);
269 $publicationFormat->setWidthUnitCode($row[
'width_unit_code']);
270 $publicationFormat->setThickness($row[
'thickness']);
271 $publicationFormat->setThicknessUnitCode($row[
'thickness_unit_code']);
272 $publicationFormat->setWeight($row[
'weight']);
273 $publicationFormat->setWeightUnitCode($row[
'weight_unit_code']);
274 $publicationFormat->setProductCompositionCode($row[
'product_composition_code']);
275 $publicationFormat->setProductFormDetailCode($row[
'product_form_detail_code']);
276 $publicationFormat->setCountryManufactureCode($row[
'country_manufacture_code']);
277 $publicationFormat->setImprint($row[
'imprint']);
278 $publicationFormat->setProductAvailabilityCode($row[
'product_availability_code']);
279 $publicationFormat->setTechnicalProtectionCode($row[
'technical_protection_code']);
280 $publicationFormat->setReturnableIndicatorCode($row[
'returnable_indicator_code']);
281 $publicationFormat->setRemoteURL($row[
'remote_url']);
282 $publicationFormat->setData(
'urlPath', $row[
'url_path']);
283 $publicationFormat->setIsAvailable($row[
'is_available']);
286 'publication_format_settings',
287 'publication_format_id',
288 $row[
'publication_format_id'],
292 if ($callHooks)
HookRegistry::call(
'PublicationFormatDAO::_fromRow', array(&$publicationFormat, &$row));
294 return $publicationFormat;
304 'INSERT INTO publication_formats
305 (is_approved, entry_key, physical_format, publication_id, seq, file_size, front_matter, back_matter, height, height_unit_code, width, width_unit_code, thickness, thickness_unit_code, weight, weight_unit_code, product_composition_code, product_form_detail_code, country_manufacture_code, imprint, product_availability_code, technical_protection_code, returnable_indicator_code, remote_url, url_path, is_available)
307 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)',
309 (
int) $publicationFormat->getIsApproved(),
310 $publicationFormat->getEntryKey(),
311 (
int) $publicationFormat->getPhysicalFormat(),
312 (
int) $publicationFormat->getData(
'publicationId'),
313 (
int) $publicationFormat->getSequence(),
314 $publicationFormat->getFileSize(),
315 $publicationFormat->getFrontMatter(),
316 $publicationFormat->getBackMatter(),
317 $publicationFormat->getHeight(),
318 $publicationFormat->getHeightUnitCode(),
319 $publicationFormat->getWidth(),
320 $publicationFormat->getWidthUnitCode(),
321 $publicationFormat->getThickness(),
322 $publicationFormat->getThicknessUnitCode(),
323 $publicationFormat->getWeight(),
324 $publicationFormat->getWeightUnitCode(),
325 $publicationFormat->getProductCompositionCode(),
326 $publicationFormat->getProductFormDetailCode(),
327 $publicationFormat->getCountryManufactureCode(),
328 $publicationFormat->getImprint(),
329 $publicationFormat->getProductAvailabilityCode(),
330 $publicationFormat->getTechnicalProtectionCode(),
331 $publicationFormat->getReturnableIndicatorCode(),
332 $publicationFormat->getRemoteURL(),
333 $publicationFormat->getData(
'urlPath'),
334 (
int) $publicationFormat->getIsAvailable(),
338 $publicationFormat->setId($this->
_getInsertId(
'publication_formats',
'publication_format_id'));
341 return $publicationFormat->getId();
350 'UPDATE publication_formats
359 height_unit_code = ?,
363 thickness_unit_code = ?,
365 weight_unit_code = ?,
366 product_composition_code = ?,
367 product_form_detail_code = ?,
368 country_manufacture_code = ?,
370 product_availability_code = ?,
371 technical_protection_code = ?,
372 returnable_indicator_code = ?,
376 WHERE publication_format_id = ?',
378 (
int) $publicationFormat->getIsApproved(),
379 $publicationFormat->getEntryKey(),
380 (
int) $publicationFormat->getPhysicalFormat(),
381 (
int) $publicationFormat->getSequence(),
382 $publicationFormat->getFileSize(),
383 $publicationFormat->getFrontMatter(),
384 $publicationFormat->getBackMatter(),
385 $publicationFormat->getHeight(),
386 $publicationFormat->getHeightUnitCode(),
387 $publicationFormat->getWidth(),
388 $publicationFormat->getWidthUnitCode(),
389 $publicationFormat->getThickness(),
390 $publicationFormat->getThicknessUnitCode(),
391 $publicationFormat->getWeight(),
392 $publicationFormat->getWeightUnitCode(),
393 $publicationFormat->getProductCompositionCode(),
394 $publicationFormat->getProductFormDetailCode(),
395 $publicationFormat->getCountryManufactureCode(),
396 $publicationFormat->getImprint(),
397 $publicationFormat->getProductAvailabilityCode(),
398 $publicationFormat->getTechnicalProtectionCode(),
399 $publicationFormat->getReturnableIndicatorCode(),
400 $publicationFormat->getRemoteURL(),
401 $publicationFormat->getData(
'urlPath'),
402 (
int) $publicationFormat->getIsAvailable(),
403 (
int) $publicationFormat->getId()
415 return array(
'name');
422 $additionalFields = parent::getAdditionalFieldNames();
423 $additionalFields[] =
'pub-id::publisher-id';
424 return $additionalFields;
430 function pubIdExists($pubIdType, $pubId, $excludePubObjectId, $contextId) {
433 FROM publication_format_settings pft
434 INNER JOIN publication_formats pf ON pft.publication_format_id = pf.publication_format_id
435 INNER JOIN publications p ON p.publication_id = pf.publication_id
436 INNER JOIN submissions s ON p.submission_id = s.submission_id
437 WHERE pft.setting_name = ?
438 AND pft.setting_value = ?
439 AND pf.publication_format_id <> ?
440 AND s.context_id = ?',
442 'pub-id::'.$pubIdType,
444 (
int) $excludePubObjectId,
448 $returner = $result->fields[0] ? true :
false;
458 'publication_format_id',
'locale',
'setting_name'
460 $updateArray = array(
461 'publication_format_id' => (
int) $pubObjectId,
463 'setting_name' =>
'pub-id::'.$pubIdType,
464 'setting_type' =>
'string',
465 'setting_value' => (
string)$pubId
467 $this->
replace(
'publication_format_settings', $updateArray, $idFields);
474 $settingName =
'pub-id::'.$pubIdType;
476 'DELETE FROM publication_format_settings WHERE setting_name = ? AND publication_format_id = ?',
489 $settingName =
'pub-id::'.$pubIdType;
492 while ($format = $formats->next()) {
494 'DELETE FROM publication_format_settings WHERE setting_name = ? AND publication_format_id = ?',
497 (
int)$format->getId()