"edit",
"e" => "edit minor",
"C" => "create",
"D" => "delete",
"R" => "revert"
);
var $_summary = null;
var $_payload = null;
public function setPayload($payload){
$this->_payload = $payload;
}
public function attic_write ( $filename ) {
if ( strpos ( $filename, 'data/attic' ) !== false ) {
return true;
}
else {
return false;
}
}
public function valid_namespace ( ) {
global $INFO;
$validNamespaces = $this -> getConf ( 'namespaces' );
if ( !empty ( $validNamespaces ) ) {
$validNamespacesArr = explode ( ',', $validNamespaces );
foreach ( $validNamespacesArr as $namespace ) {
if ( strpos( $namespace, $INFO['namespace'] ) === 0 ) {
return true;
}
}
return false;
} else {
return true;
}
}
public function set_event ( $event ) {
$this -> _opt = print_r ( $event, true );
$changeType = $event -> data['changeType'];
$event_type = $this -> _event_type[$changeType];
$summary = $event -> data['summary'];
if ( !empty ( $summary ) ) {
$this -> _summary = $summary;
}
if ( $event_type == 'create' && $this -> getConf ( 'notify_create' ) == 1 ) {
$this -> _event = 'create';
return true;
} elseif ( $event_type == 'edit' && $this -> getConf ( 'notify_edit' ) == 1 ) {
$this -> _event = 'edit';
return true;
} elseif ( $event_type == 'edit minor' && ( $this -> getConf ( 'notify_edit' ) == 1 ) && ( $this -> getConf ( 'notify_edit_minor' ) == 1 ) ) {
$this -> _event = 'edit minor';
return true;
} elseif ( $event_type == 'delete' && $this -> getConf ( 'notify_delete' ) == 1 ) {
$this -> _event = 'delete';
return true;
} else {
return false;
}
}
public function set_payload_text ( $event ) {
global $conf;
global $lang;
global $INFO;
$event_name = '';
$embed_color = hexdec ( "37474f" ); // default value
switch ( $this -> _event ) {
case 'create':
$title = $this -> getLang ( 't_created' );
$event_name = $this -> getLang ( 'e_created' );
$embed_color = hexdec ( "00cc00" );
break;
case 'edit':
$title = $this -> getLang ( 't_updated' );
$event_name = $this -> getLang ( 'e_updated' );
$embed_color = hexdec ( "00cccc" );
break;
case 'edit minor':
$title = $this -> getLang ( 't_minor_upd' );
$event_name = $this -> getLang ( 'e_minor_upd' );
$embed_color = hexdec ( "00cccc" );
break;
case 'delete':
$title = $this -> getLang ( 't_removed' );
$event_name = $this -> getLang ( 'e_removed' );
$embed_color = hexdec ( "cc0000" );
break;
}
if ( $this -> getConf ( 'notify_show_name' ) === 'real name' ) {
$user = $INFO['userinfo']['name'];
} elseif ( $this -> getConf ( 'notify_show_name' ) === 'username' ) {
$user = $_SERVER['REMOTE_USER'];
} else {
throw new Exception('invalid notify_show_name value');
}
$link = $this -> _get_url ( $event, null );
$page = $event -> data['id'];
//$description = "{$user} {$event_name} [__{$page}__]({$link})";
$description = $user.' '.$event_name.' '.$page.'
';
if ( $this -> _event != 'delete' ) {
$oldRev = $INFO['meta']['last_change']['date'];
if ( !empty ( $oldRev ) ) {
$diffURL = $this -> _get_url ( $event, $oldRev );
//$description .= " \([" . $this -> getLang ( 'compare' ) . "]({$diffURL})\)";
$description .= ''.$this -> getLang ( 'compare' ).'
';
}
}
$summary = $this -> _summary;
if ( ( strpos ( $this -> _event, 'edit' ) !== false ) && $this -> getConf ( 'notify_show_summary' ) ) {
if ( $summary ) {
//$description .= "\n" . $lang['summary'] . ": " . $summary;
$description .= $lang['summary'] . ": " . $summary;
}
}
$footer = array ( "text" => "Dokuwiki MatrixNotifier v1.2.2" );
$payload = array ( "embeds" =>
array (
["title" => $title, "color" => $embed_color, "description" => $description, "footer" => $footer]
),
);
$this -> _payload = $payload;
}
private function _get_url ( $event = null, $Rev ) {
global $ID;
global $conf;
$oldRev = $event -> data['oldRevision'];
$page = $event -> data['id'];
if ( ( $conf['userewrite'] == 1 || $conf['userewrite'] == 2 ) && $conf['useslash'] == true )
$page = str_replace ( ":", "/", $page );
switch ( $conf['userewrite'] ) {
case 0:
$url = DOKU_URL . "doku.php?id={$page}";
break;
case 1:
$url = DOKU_URL . $page;
break;
case 2:
$url = DOKU_URL . "doku.php/{$page}";
break;
}
if ( $Rev != null ) {
switch ( $conf['userewrite'] ) {
case 0:
$url .= "&do=diff&rev={$Rev}";
break;
case 1:
case 2:
$url .= "?do=diff&rev={$Rev}";
break;
}
}
return $url;
}
public function submit_payload ( ) {
global $conf;
$client = new MatrixClient( $this -> getConf ( 'server' ) );
$token = $client->login($this -> getConf ( 'username' ), $this -> getConf ( 'password' ) );
$room = $client -> joinRoom( $this -> getConf ( 'room' ) );
$response = $room->sendHtml(''.$this -> _payload['embeds'][0]['title'].'