@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Guarantee that Maniphest paging clauses strictly progress

Ref T7548. Some of these clauses are not guaranteed to select only rows following the cursor.

+7 -15
+7 -15
src/applications/maniphest/query/ManiphestTaskQuery.php
··· 1054 1054 $app_columns = $this->buildApplicationSearchPagination($conn_r, $cursor); 1055 1055 if ($app_columns) { 1056 1056 $columns = array_merge($columns, $app_columns); 1057 - $columns[] = array( 1058 - 'name' => 'task.id', 1059 - 'value' => (int)$cursor->getID(), 1060 - 'type' => 'int', 1061 - ); 1062 1057 } else { 1063 1058 switch ($this->orderBy) { 1064 1059 case self::ORDER_PRIORITY: ··· 1082 1077 ); 1083 1078 break; 1084 1079 case self::ORDER_CREATED: 1085 - $columns[] = array( 1086 - 'name' => 'task.id', 1087 - 'value' => (int)$cursor->getID(), 1088 - 'type' => 'int', 1089 - ); 1080 + // This just uses the ID column, below. 1090 1081 break; 1091 1082 case self::ORDER_MODIFIED: 1092 1083 $columns[] = array( ··· 1101 1092 'value' => $cursor->getTitle(), 1102 1093 'type' => 'string', 1103 1094 ); 1104 - $columns[] = array( 1105 - 'name' => 'task.id', 1106 - 'value' => $cursor->getID(), 1107 - 'type' => 'int', 1108 - ); 1109 1095 break; 1110 1096 default: 1111 1097 throw new Exception("Unknown order query '{$this->orderBy}'!"); 1112 1098 } 1113 1099 } 1100 + 1101 + $columns[] = array( 1102 + 'name' => 'task.id', 1103 + 'value' => $cursor->getID(), 1104 + 'type' => 'int', 1105 + ); 1114 1106 1115 1107 return $this->buildPagingClauseFromMultipleColumns( 1116 1108 $conn_r,