123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- <?php
- /**
- * @file
- * Provide better intergration into the rules module
- */
- /**
- * Implements hook_rules_action_info() on behalf of the twitter module.
- */
- function twitter_actions_rules_action_info() {
- return array(
- 'rules_core_twitter_actions_set_status_action' => array(
- 'label' => t('Post a message to Twitter'),
- 'group' => t('Twitter'),
- 'parameter' => array(
- 'message' => array(
- 'type' => 'text',
- 'label' => t('Message'),
- 'description' => t("The content of the tweet."),
- ),
- 'sender' => array(
- 'type' => 'user',
- 'label' => t('Sender'),
- 'description' => t("User whose Twitter account will be used."),
- ),
- ),
- 'base' => 'twitter_actions_set_status',
- 'access callback' => 'rules_twitter_actions_access_callback',
- ),
- );
- }
- /**
- * Fetches Twitter account info and submits with the message to the Twitter API
- *
- * @param $message
- * The message to post
- * @param $sender
- * The Drupal user that has a Twitter account
- */
- function twitter_actions_set_status($message, $sender) {
- if ($twitter_uid = db_query("SELECT twitter_uid FROM {twitter_account} WHERE uid = :uid", array(':uid' => $sender->uid))->fetchField()) {
- module_load_include('inc', 'twitter');
- $twitter_account = twitter_account_load($twitter_uid);
- twitter_set_status($twitter_account, $message);
- }
- else {
- watchdog('twitter', 'Twitter authentication failed. Please check your account name and try again.', array(), WATCHDOG_ERROR);
- }
- }
- /**
- * Implements hook_rules_condition_info().
- */
- function twitter_actions_rules_condition_info() {
- $defaults = array(
- 'group' => t('Twitter'),
- 'parameter' => array(
- 'user' => array(
- 'type' => 'user',
- 'label' => t('User'),
- 'description' => t('The user to be checked for.'),
- ),
- ),
- 'named parameter' => TRUE,
- 'access callback' => 'rules_twitter_actions_access_callback',
- );
- $items['rules_core_twitter_conditions_user_has_linked'] = $defaults + array(
- 'label' => t('User has linked Twitter account'),
- 'help' => t('Evaluates to TRUE in case there is a record in the twitter_account for the provided user.'),
- 'base' => 'twitter_actions_has_linked',
- );
- $items['rules_core_twitter_conditions_text_is_under_140'] = array(
- 'group' => t('Twitter'),
- 'named parameter' => TRUE,
- 'parameter' => array(
- 'text' => array(
- 'type' => 'text',
- 'label' => t('Text to check'),
- ),
- ),
- 'label' => t('Text is under 140 characters'),
- 'help' => t('Returns TRUE if the length of the text is 140 or less.'),
- 'base' => 'twitter_actions_less_140',
- );
- return $items;
- }
- /**
- * The callback function for the Rules condition
- * @param $element
- * $element['user']: The user to be checked for.
- * @return
- * TRUE if the user has linked his/her Twitter account.
- */
- function twitter_actions_has_linked($element) {
- return db_query("SELECT twitter_uid FROM {twitter_account} WHERE uid = :uid", array(':uid' => $element['user']->uid))->fetchField() ? TRUE : FALSE;
- }
- /**
- * The callback function for the Rules condition
- * @param $element
- * $element['user']: The user to be checked for.
- * @return
- * TRUE if the user has linked his/her Twitter account.
- */
- function twitter_actions_less_140($element) {
- return strlen($element['text']) < 141;
- }
- /**
- * The callback function to access the condition
- */
- function rules_twitter_actions_access_callback($type, $name) {
- return user_access('add twitter accounts');
- }
|