Skip to content

Commit 0b6a68c

Browse files
committed
Merge branch 'master-pw3'
Update master branch to ProcessWire 3 version of module. ProcessWire 2 version of module is now maintained in branch master-pw2
2 parents 79b1b01 + 5086bf9 commit 0b6a68c

File tree

25 files changed

+5268
-856
lines changed

25 files changed

+5268
-856
lines changed

FieldtypeWebmentions/FieldtypeWebmentions.module

Lines changed: 68 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
1-
<?php
1+
<?php namespace ProcessWire;
2+
3+
use DateTime;
4+
use PDO;
5+
26

37
/**
48
* ProcessWire Webmentions Fieldtype
59
*
610
* A field that stores webmentions for a single Page.
711
*
8-
* @author Gregor Morrill, http://gregorlove.com
9-
* @see http://indiewebcamp.com/webmention
12+
* @author Gregor Morrill, https://gregorlove.com
13+
* @see https://webmention.net/
1014
*/
1115

1216
$dirname = dirname(__FILE__);
@@ -16,6 +20,13 @@ require_once($dirname . '/WebmentionList.php');
1620

1721
class FieldtypeWebmentions extends FieldtypeMulti
1822
{
23+
/**
24+
* Current database schema fieldtype tables
25+
* @var int SCHEMA_VERSION
26+
*/
27+
const SCHEMA_VERSION = 1;
28+
29+
1930
/**
2031
* Provide module information to ProcessWire
2132
* @access public
@@ -25,7 +36,7 @@ class FieldtypeWebmentions extends FieldtypeMulti
2536
{
2637
return array(
2738
'title' => __('Webmentions', __FILE__),
28-
'version' => 111,
39+
'version' => 200,
2940
'summary' => __('Field that stores webmentions for a single Page', __FILE__),
3041
);
3142
} # end method getModuleInfo()
@@ -57,7 +68,7 @@ class FieldtypeWebmentions extends FieldtypeMulti
5768
$webmentionArray = new WebmentionArray();
5869
$webmentionArray->setPage($page);
5970
$webmentionArray->setField($field);
60-
$webmentionArray->setTrackChanges(TRUE);
71+
$webmentionArray->setTrackChanges(true);
6172
return $webmentionArray;
6273
} # end method getBlankValue()
6374

@@ -108,7 +119,7 @@ class FieldtypeWebmentions extends FieldtypeMulti
108119

109120
if ( !$inputfield )
110121
{
111-
return NULL;
122+
return null;
112123
}
113124

114125
$inputfield->class = $this->className();
@@ -185,7 +196,7 @@ class FieldtypeWebmentions extends FieldtypeMulti
185196
$webmention->set($key, $val);
186197
}
187198

188-
$webmention->resetTrackChanges(TRUE);
199+
$webmention->resetTrackChanges(true);
189200
$webmentionArray->add($webmention);
190201
}
191202

@@ -194,7 +205,7 @@ class FieldtypeWebmentions extends FieldtypeMulti
194205
$webmentionArray->sort('-updated');
195206
}
196207

197-
$webmentionArray->resetTrackChanges(TRUE);
208+
$webmentionArray->resetTrackChanges(true);
198209

199210
return $webmentionArray;
200211
} # end method ___wakeupValue()
@@ -294,33 +305,54 @@ class FieldtypeWebmentions extends FieldtypeMulti
294305
*/
295306
public function getDatabaseSchema(Field $field)
296307
{
297-
$schemaVersion = (int) $field->schemaVersion;
308+
$table_exists = in_array($field->getTable(), $this->database->getTables());
309+
$current_schema_version = (int) $field->schemaVersion;
310+
$new_schema_version = null;
298311

299-
if ( !$schemaVersion )
312+
# if: table exists; perform schema updates as necessary
313+
if ( $table_exists )
300314
{
301-
$database = $this->wire('database');
302-
$table = $database->escapeTable($field->getTable());
303315

304-
try
305-
{
306-
$database->query("ALTER TABLE `$table` ADD content_plain TEXT");
307-
$schemaVersion = 1;
308-
}
309-
catch ( Exception $e )
316+
# update to schema version 1
317+
if ( $current_schema_version < 1 )
310318
{
319+
$table = $this->database->escapeTable($field->getTable());
320+
321+
try
322+
{
323+
$this->database->query("ALTER TABLE `$table` ADD content_plain TEXT");
324+
$new_schema_version = 1;
325+
}
326+
catch ( Exception $e )
327+
{
328+
$this->message('Altering schema failed: %s', $e->getMessage(), Notice::log);
329+
}
330+
311331
}
312332

313333
}
334+
# else: table doesn't exist yet; use latest schema
335+
else
336+
{
337+
$this->message(sprintf('Setting initial schema version of field “%s” to: %d', $field->name, self::SCHEMA_VERSION), Notice::log);
338+
$field->schemaVersion = self::SCHEMA_VERSION;
339+
$field->save();
340+
} # end if
314341

315-
if ( ((int) $field->schemaVersion) < $schemaVersion )
342+
# if: update schema version if necessary
343+
if ( $current_schema_version < $new_schema_version )
316344
{
317-
$this->message("Updating schema version of '{$field->name}' from $field->schemaVersion to $schemaVersion", Notice::log);
318-
$field->schemaVersion = $schemaVersion;
345+
$message = sprintf('Updating schema version of field “%s” from: %d to: %d',
346+
$field->name,
347+
$current_schema_version,
348+
$new_schema_version
349+
);
350+
$this->message($message, Notice::log);
351+
$field->schemaVersion = $new_schema_version;
319352
$field->save();
320353
}
321354

322-
$schemaVersion = $field->schemaVersion;
323-
355+
$current_schema_version = $field->schemaVersion;
324356
$schema = parent::getDatabaseSchema($field);
325357

326358
$schema['data'] = 'text';
@@ -335,7 +367,7 @@ class FieldtypeWebmentions extends FieldtypeMulti
335367
$schema['is_rsvp'] = "tinyint(1) unsigned NOT NULL DEFAULT '0'";
336368
$schema['content'] = 'text';
337369

338-
if ( $schemaVersion > 0 )
370+
if ( $current_schema_version > 0 )
339371
{
340372
$schema['content_plain'] = 'text';
341373
}
@@ -354,7 +386,7 @@ class FieldtypeWebmentions extends FieldtypeMulti
354386
$schema['status'] = "tinyint(3) NOT NULL DEFAULT '0'";
355387
$schema['visibility'] = "tinyint(3) NOT NULL DEFAULT '0'";
356388
$schema['created'] = "timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'";
357-
$schema['deleted'] = "timestamp NULL DEFAULT NULL";
389+
$schema['deleted'] = "timestamp null DEFAULT null";
358390

359391
$schema['keys']['primary'] = "PRIMARY KEY (`id`)";
360392
$schema['keys']['pages_id_sort'] = "KEY `pages_id_sort` (`pages_id`, `sort`)";
@@ -377,7 +409,7 @@ class FieldtypeWebmentions extends FieldtypeMulti
377409

378410
if ( !$page->id || !$field->id )
379411
{
380-
return FALSE;
412+
return false;
381413
}
382414

383415
$allItems = $page->get($field->name);
@@ -386,12 +418,12 @@ class FieldtypeWebmentions extends FieldtypeMulti
386418

387419
if ( !$allItems )
388420
{
389-
return FALSE;
421+
return false;
390422
}
391423

392424
if ( !$allItems->isChanged() && !$page->isChanged($field->name) )
393425
{
394-
return TRUE;
426+
return true;
395427
}
396428

397429
$itemsRemoved = $allItems->getItemsRemoved();
@@ -436,7 +468,7 @@ class FieldtypeWebmentions extends FieldtypeMulti
436468

437469
if ( !count($items) )
438470
{
439-
return TRUE;
471+
return true;
440472
}
441473

442474
$values = $this->sleepValue($page, $field, $items);
@@ -483,14 +515,14 @@ class FieldtypeWebmentions extends FieldtypeMulti
483515
$sql .= 'sort=' . ++$maxSort;
484516
}
485517

486-
if ( FALSE === $database->exec($sql) )
518+
if ( false === $database->exec($sql) )
487519
{
488520
$this->error("Error saving item $value[id] in savePageField", Notice::log);
489521
}
490522

491523
}
492524

493-
return TRUE;
525+
return true;
494526
} # end method ___savePageField()
495527

496528

@@ -574,14 +606,14 @@ class FieldtypeWebmentions extends FieldtypeMulti
574606

575607

576608
/**
577-
* For FieldtypeMulti interface, return NULL to indicate that the field is not auto-joinable
609+
* For FieldtypeMulti interface, return null to indicate that the field is not auto-joinable
578610
* @param Field $field
579611
* @param DatabaseQuerySelect $query
580612
* @access public
581613
*/
582614
public function getLoadQueryAutojoin(Field $field, DatabaseQuerySelect $query)
583615
{
584-
return NULL;
616+
return null;
585617
} # end method getLoadQueryAutojoin()
586618

587619

@@ -611,7 +643,7 @@ class FieldtypeWebmentions extends FieldtypeMulti
611643

612644
$limit = 10;
613645
$start = 0;
614-
$desc = TRUE;
646+
$desc = true;
615647
$sort = 'created';
616648
$database = $this->wire('database');
617649
$table = $database->escapeTable($field->getTable());
@@ -726,7 +758,7 @@ class FieldtypeWebmentions extends FieldtypeMulti
726758
$webmentionPages[$page->id] = $page;
727759
}
728760

729-
$webmention->resetTrackChanges(TRUE);
761+
$webmention->resetTrackChanges(true);
730762
$webmentions->add($webmention);
731763

732764
if ( $page->id )
@@ -747,3 +779,4 @@ class FieldtypeWebmentions extends FieldtypeMulti
747779
} # end method find()
748780

749781
}
782+

FieldtypeWebmentions/WebmentionArray.php

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,24 @@
1-
<?php
1+
<?php namespace ProcessWire;
22

33
/**
44
* ProcessWire FieldtypeWebmentions > WebmentionArray
55
*
6-
* @author Gregor Morrill, http://gregorlove.com
7-
* @see http://indiewebcamp.com/webmention
6+
* @author Gregor Morrill, https://gregorlove.com
7+
* @see https://webmention.net/
88
*/
99

1010
class WebmentionArray extends PaginatedArray implements WirePaginatable
1111
{
1212
/**
1313
* Page that owns these webmentions, required to use the renderForm() or getWebmentionForm() methods.
1414
*/
15-
protected $page = NULL;
15+
protected $page = null;
1616

1717

1818
/**
1919
* Field object associated with this WebmentionArray
2020
*/
21-
protected $field = NULL;
21+
protected $field = null;
2222

2323

2424
/**
@@ -53,11 +53,11 @@ public function isValidItem($item)
5353
$item->setField($this->field);
5454
}
5555

56-
return TRUE;
56+
return true;
5757
}
5858
else
5959
{
60-
return FALSE;
60+
return false;
6161
}
6262

6363
} # end method isValidItem()
@@ -162,3 +162,4 @@ public function getField()
162162
}
163163

164164
}
165+

FieldtypeWebmentions/WebmentionItem.php

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
<?php
1+
<?php namespace ProcessWire;
22

33
/**
44
* ProcessWire FieldtypeWebmentions > WebmentionItem
55
*
6-
* @author Gregor Morrill, http://gregorlove.com
7-
* @see http://indiewebcamp.com/webmention
6+
* @author Gregor Morrill, https://gregorlove.com
7+
* @see https://webmention.net/
88
*/
99

1010
class WebmentionItem extends WireData
@@ -85,15 +85,15 @@ public function __construct()
8585
$this->set('author_photo', '');
8686
$this->set('author_logo', '');
8787
$this->set('author_url', '');
88-
$this->set('published', NULL);
88+
$this->set('published', null);
8989
$this->set('published_offset', 0);
90-
$this->set('updated', NULL);
90+
$this->set('updated', null);
9191
$this->set('updated_offset', 0);
9292
$this->set('status', self::statusPending);
9393
$this->set('visibility', self::visibilityPublic);
9494
$this->set('sort', 0);
9595
$this->set('microformats', '');
96-
$this->set('created', NULL);
96+
$this->set('created', null);
9797
$this->prevStatus = self::statusPending;
9898
} # end method __construct()
9999

@@ -125,7 +125,7 @@ public function set($key, $value)
125125
case 'author_photo':
126126
case 'author_logo':
127127
case 'author_url':
128-
$value = wire('sanitizer')->url($value, array('allowRelative' => FALSE));
128+
$value = wire('sanitizer')->url($value, array('allowRelative' => false));
129129
break;
130130
}
131131

@@ -213,3 +213,4 @@ public function isApproved()
213213
} # end method isApproved()
214214

215215
}
216+

0 commit comments

Comments
 (0)