manage-twitter-users.php
156 lines
| 5.3 KiB
| text/x-php
|
PhpLexer
| r1 | <?php | |||
| require_once('include/admin.inc.php'); | ||||
| auth_redirect(); // Require logged in user to access this page. | ||||
| if( isset($_POST['action']) && $_POST['action'] == 'new' ) { | ||||
| check_nonce('new-twitter-user'); | ||||
| r5 | ||||
| if(! $mtdb->query( sprintf('INSERT INTO twitter_user(username) VALUES("%s")', mysqli_real_escape_string( $mtdb->link, md5( microtime() )) ) ) ) { | ||||
| r1 | adminlog("Error on insertion of new twitter user.", MTS_TWITTER, MTA_INSERT, E_WARNING); | |||
| r5 | mtdie("Error on insertion of new twitter user: ". htmlentities(mysqli_error()), 'SQL Error'); | |||
| r1 | } else { | |||
| //$name = sanitize_username($_POST['name']); | ||||
| r5 | ||||
| $id = mysqli_insert_id(); | ||||
| r1 | $connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET); | |||
| $request_token = $connection->getRequestToken(OAUTH_CALLBACK . "&id=$id"); | ||||
| r5 | ||||
| r1 | if ($connection->http_code !== 200 ) { | |||
| adminlog("Twitter getRequestToken failed. HTTP code: $connection->http_code", MTS_TWITTER, MTA_MODIFY); | ||||
| mtdie("Could not connect to twitter.com."); | ||||
| } | ||||
| r5 | ||||
| r1 | echo $id . '<br/>'; | |||
| r5 | ||||
| r1 | setOAuthTokens( $id, $request_token['oauth_token'], $request_token['oauth_token_secret'], md5(microtime()) ); | |||
| r5 | ||||
| r1 | adminlog("New twitter user created successfully.", MTS_TWITTER, MTA_ADD); | |||
| $url = $connection->getAuthorizeURL($request_token['oauth_token']); | ||||
| //echo $url; | ||||
| _redirect($url); | ||||
| r5 | exit(); | |||
| r1 | } | |||
| } | ||||
| if( isset($_REQUEST['action']) && $_REQUEST['action'] == 'twittercallback' && isset($_REQUEST['id'])) { | ||||
| # twitter userID = ID | ||||
| $id = (int)$_REQUEST['id']; | ||||
| $row = $mtdb->getRow( sprintf('SELECT id, username, oauth_token, oauth_token_secret, oauth_access_token FROM twitter_user WHERE id=%d LIMIT 1', $id)); | ||||
| r5 | ||||
| r1 | # Compare token in database with token from twitter. If they differ, bail. | |||
| if( $row->oauth_token != $_REQUEST['oauth_token'] ) { | ||||
| # token is old, drop from database | ||||
| if(!$mtdb->query("DELETE FROM twitter_user WHERE id = '$id'") ) { | ||||
| adminlog('Error deleting temporary twitter user ' . $id, MTS_TWITTER, MTA_DELETE, E_ERROR); | ||||
| mtdie('Error deleting temporary twitter user.', 'SQL Error'); | ||||
| } | ||||
| $error.='<p>OAuth Token are Old</p>'; | ||||
| } else { | ||||
| # token is good, save the new Access Token to the database | ||||
| $connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $row->oauth_token, $row->oauth_token_secret); | ||||
| r5 | ||||
| r1 | $access_token = $connection->getAccessToken($_REQUEST['oauth_verifier']); | |||
| r5 | ||||
| r1 | if (200 == $connection->http_code) { | |||
| # successful | ||||
| $info.='<p>Successfully obtained OAuth Access Token.</p>'; | ||||
| $content = $connection->get('account/verify_credentials'); | ||||
| $username = $content->screen_name; | ||||
| setOAuthTokens($id, $access_token['oauth_token'], $access_token['oauth_token_secret'], $username); | ||||
| adminlog("Successfully received OAuth Access Tokens for twitter user.", MTS_TWITTER, MTA_MODIFY, E_WARNING); | ||||
| //print_r($content); | ||||
| r5 | ||||
| r1 | } else { | |||
| # fail | ||||
| if( !$mtdb->query("DELETE FROM twitter_user WHERE id = '$id'") ) { | ||||
| adminlog('Error deleting specified twitter user ' . $id, MTS_TWITTER, MTA_DELETE, E_ERROR); | ||||
| mtdie('Error deleting the specified twitter user.', 'SQL Error'); | ||||
| } | ||||
| $info.='<p>Failed to get OAuth Access Token for ' . $username . '.</p>'; | ||||
| adminlog("Failed to get OAuth Access Tokens for twitter user.", MTS_TWITTER, MTA_MODIFY, E_ERROR); | ||||
| } | ||||
| r5 | ||||
| r1 | } | |||
| } | ||||
| $twitter_users = $mtdb->getAll('SELECT id, username, oauth_token, oauth_token_secret, oauth_access_token FROM twitter_user ORDER BY username'); | ||||
| adminhead('Manage Twitter Users'); | ||||
| adminmenu(); | ||||
| ?> | ||||
| <h2>Manage Twitter Users</h2> | ||||
| <p>Make changes to the twitter accounts which we can post to.</p> | ||||
| <p><a href="post-twitter.php"><- Done</a></p> | ||||
| <table class="widefat"> | ||||
| <thead> | ||||
| <tr> | ||||
| <th scope="col" style="text-align: center;">ID #</th> | ||||
| <th scope="col">Twitter.com Username</th> | ||||
| <th scope="col">oauth_token</th> | ||||
| <th scope="col">oauth_token_secret</th> | ||||
| <th scope="col">Authorized</th> | ||||
| <th scope="col"></th> | ||||
| </tr> | ||||
| </thead> | ||||
| <tbody id="the-list"> | ||||
| <?php | ||||
| $alternate=false; | ||||
| foreach( $twitter_users as $s ) { | ||||
| $alternate=!$alternate; | ||||
| r5 | ||||
| r1 | ?> | |||
| <tr id="twitteruser-<?php echo $s->id; ?>" <?php if($alternate) echo 'class="alternate"'; ?>> | ||||
| <th scope="row" style="text-align: center;"><?php echo $s->id; ?></th> | ||||
| <td><?php echo htmlentities($s->username); ?></td> | ||||
| <td><?php echo htmlentities($s->oauth_token); ?></td> | ||||
| <td><?php echo htmlentities($s->oauth_token_secret); ?></td> | ||||
| r5 | <td><?php | |||
| r1 | $connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $s->oauth_token, $s->oauth_token_secret); | |||
| $content = $connection->get('account/verify_credentials'); | ||||
| if( isset($content->profile_image_url)) { | ||||
| echo '<img src="' . $content->profile_image_url . '" />'; | ||||
| } else { | ||||
| echo 'Not Authorized'; | ||||
| } | ||||
| ?></td> | ||||
| <td style="text-align: center;"><a class="delete" href="delete-twitter-user.php?id=<?php echo (int)$s->id; ?>">Delete</a></td> | ||||
| </tr> | ||||
| <?php | ||||
| } | ||||
| ?> | ||||
| </tbody> | ||||
| </table> | ||||
| <form enctype="multipart/form-data" name="create-user" id="create-user" action="manage-twitter-users.php" method="post"> | ||||
| <?php nonce_field('new-twitter-user'); ?> | ||||
| <input type="hidden" name="action" value="new" /> | ||||
| <h3>Add Twitter User</h3> | ||||
| <!-- <div class="narrow"> | ||||
| <table class="editform" width="100%" cellspacing="2" cellpadding="5"> | ||||
| <tr> | ||||
| <th scope="row" width="33%">Username</th> | ||||
| <td width="66%">@<input name="name" type="text" id="name" value="" /></td> | ||||
| </tr> | ||||
| </table> | ||||
| --> | ||||
| <p class="submit"><input type="submit" value="Add Twitter User »" name="submit" /></p> | ||||
| <!-- </div> --> | ||||
| </form> | ||||
| <?php | ||||
| adminfooter(); | ||||
| ?> | ||||
