XPressME Integration Kit

Trac

source: trunk/wp-content/plugins/xpressme/include/notify_functions.php @ 95

Last change on this file since 95 was 95, checked in by toemon, 16 years ago

XOOPS mainfile.phpのdefine文を事前に読み取りwp-config.phpのDB接続関係を生成することにより、XOOPSシステムを必要なときだけ呼び出す仕組みを作る。
およびイベント通知関係の修正(まだゲストのアクセス権限がないと駄目)

File size: 7.5 KB
Line 
1<?php
2
3function onaction_publish_post_notify($new_status, $old_status, $post)
4{
5        if ($new_status == 'publish'){
6                do_PostNotifications($post->ID,'newpost');
7        }
8}
9
10function onaction_edit_post_notify($post_id)
11{
12        do_PostNotifications($post_id,'editpost');
13}
14
15function onaction_comment_notify($commentID){
16        global $wpdb;
17        $status = $wpdb->get_var("SELECT comment_approved FROM $wpdb->comments WHERE comment_ID = $commentID");
18        $post_id = $wpdb->get_var("SELECT comment_post_ID FROM $wpdb->comments WHERE comment_ID = $commentID");
19
20        if ($status ==1){
21                do_CommentNotifications($commentID, $post_id);
22        } else {
23                do_CommentWaiting($commentID, $post_id);
24        }
25}
26
27function onaction_comment_apobe_notify($commentID){
28        global $wpdb;
29        $comment_type = $wpdb->get_var("SELECT comment_type FROM $wpdb->comments WHERE comment_ID = $commentID");
30        $status = $wpdb->get_var("SELECT comment_approved FROM $wpdb->comments WHERE comment_ID = $commentID");
31        if(is_null($status)) return;
32        if ($status == 1){
33                        onaction_comment_notify($commentID);
34        }
35}
36
37function Notification_triggerEvent($category, $item_id, $event, $extra_tags=array(), $user_list=array(), $omit_user_id=null)
38{
39        global $xoops_db,$xoops_config;
40        //When notifying by a private message,
41        //it is evaded that the data base becomes read-only as a result of the check on the referrer and the method.
42        if (is_wp_cron_page_call() ){
43                $_SERVER['HTTP_REFERER'] = 'http://'. $_SERVER[HTTP_HOST]  . $_SERVER['PHP_SELF'];
44                $_SERVER['REQUEST_METHOD'] = 'POST';
45        }
46        if (is_xmlrpc_call() ){
47                $_SERVER['HTTP_REFERER'] = 'http://'. $_SERVER[HTTP_HOST]  . $_SERVER['PHP_SELF'];
48                $_SERVER['REQUEST_METHOD'] = 'POST';
49        }
50       
51        include_once $xoops_config->xoops_mainfile_path;        // load XOOPS System
52        include_once $xoops_config->xoops_root_path . '/include/notification_functions.php' ;
53        $module_id = get_xpress_modid() ;
54        $notification_handler =& xoops_gethandler( 'notification' ) ;
55        $notification_handler->triggerEvent($category, $item_id, $event, $extra_tags, $user_list, $module_id, $omit_user_id);
56}
57
58function do_CommentWaiting($commentID, $comment_post_ID)
59{
60//      global $xoops_config;
61//      require_once $xoops_config->xoops_mainfile_path;
62//      xoops_mainfile_path;
63//      require_once XOOPS_ROOT_PATH . '/include/notification_functions.php' ;
64//      $notification_handler =& xoops_gethandler( 'notification' ) ;
65        Notification_triggerEvent( 'global' , 0 , 'waiting') ;
66}
67
68
69function do_CommentNotifications($commentID, $comment_post_ID)
70{
71        global $xoops_config , $xoops_db;
72
73        $xpress_prefix = get_wp_prefix() ;
74
75        $table_term_relationships = $xpress_prefix .'term_relationships';
76        $table_term_taxonomy = $xpress_prefix .'term_taxonomy';
77        $table_terms = $xpress_prefix .'terms';
78        $table_categories = $xpress_prefix .'categories';
79        $wp_post = $xpress_prefix .'posts';
80        $wp_options = $xpress_prefix .'options';
81        $wp_users  = $xpress_prefix .'users';
82        $wp_comments  = $xpress_prefix .'comments';
83        $post_id = $comment_post_ID;
84
85        $post_title = get_the_title($post_id);
86        $post_url = get_permalink($post_id). '#comment';
87        $blog_name = get_bloginfo('name');
88
89        // query
90        $sql = "SELECT post_author FROM ".$wp_post." WHERE ID=$comment_post_ID ";
91        $post_author = $xoops_db->get_var($sql);
92
93        $sql = "SELECT display_name  FROM $wp_users WHERE ID ='$post_author'";
94        $user_name = $xoops_db->get_var($sql);
95
96        $comment_tags = array( 'XPRESS_AUTH_NAME' =>$user_name,'XPRESS_BLOG_NAME' =>$blog_name,'XPRESS_POST_TITLE' => $post_title , 'XPRESS_POST_URL' => $post_url ) ;
97        Notification_triggerEvent('global' , 0 , 'comment' , $comment_tags , false);
98        Notification_triggerEvent('author' , $post_author , 'comment' , $comment_tags , false);
99        Notification_triggerEvent('post' , $comment_post_ID , 'comment' , $comment_tags , false);
100
101        // categorie notification
102        if (get_xpress_db_version() < 6124){
103                $sql2 = "SELECT c.cat_ID, c.cat_name FROM ".$table_categories." c, ".$table_post2cat." p2c WHERE c.cat_ID = p2c.category_id AND p2c.post_id=".$comment_post_ID;
104        } else {
105                $sql2  = "SELECT $table_term_relationships.object_id, $table_terms.term_id AS cat_ID, $table_terms.name AS cat_name ";
106                $sql2 .= "FROM $table_term_relationships INNER JOIN ($table_term_taxonomy INNER JOIN $table_terms ON $table_term_taxonomy.term_id = $table_terms.term_id) ON $table_term_relationships.term_taxonomy_id = $table_term_taxonomy.term_taxonomy_id ";
107                $sql2 .= "WHERE ($table_term_relationships.object_id =" . $comment_post_ID.") AND ($table_term_taxonomy.taxonomy='category')";         
108        }
109        $categories = $xoops_db->get_results($sql);
110        foreach($categories as $categorie){
111                $cat_id = $categorie->cat_ID;
112                $cat_name = $categorie->cat_name;
113                $comment_tags = array( 'XPRESS_AUTH_NAME' =>$user_name,'XPRESS_BLOG_NAME' =>$blog_name,'XPRESS_CAT_TITLE' => $cat_name,'XPRESS_POST_TITLE' => $post_title , 'XPRESS_POST_URL' => $post_url ) ;
114                Notification_triggerEvent('category' , $cat_id , 'comment' , $comment_tags , false);
115
116        }
117}
118
119function do_PostNotifications($post_id,$not_event)
120{
121        global $xoops_config, $xoops_db;
122        xpress_debug();
123       
124
125
126         // $not_event:         newpost,editpost ; $commentID, $comment_post_ID)
127         
128        $xpress_prefix = get_wp_prefix() ;
129
130        $table_term_relationships = $xpress_prefix .'term_relationships';
131        $table_term_taxonomy = $xpress_prefix .'term_taxonomy';
132        $table_terms = $xpress_prefix .'terms';
133        $table_categories = $xpress_prefix .'categories';
134        $wp_post = $xpress_prefix .'posts';
135        $wp_options = $xpress_prefix .'options';
136        $wp_users  = $xpress_prefix .'users';
137        $wp_comments  = $xpress_prefix .'comments';
138
139        $post_title = get_the_title($post_id);
140        $post_url = get_permalink($post_id). '#comment';
141        $blog_name = get_bloginfo('name');
142
143        // query
144        $sql = "SELECT post_author FROM ".$wp_post." WHERE ID=$post_id ";
145        $post_author = $xoops_db->get_var($sql);
146
147        $sql = "SELECT display_name  FROM $wp_users WHERE ID ='$post_author'";
148        $user_name = $xoops_db->get_var($sql);
149
150        $posts_tags = array( 'XPRESS_AUTH_NAME' =>$user_name,'XPRESS_BLOG_NAME' =>$blog_name,'XPRESS_POST_TITLE' => $post_title , 'XPRESS_POST_URL' => $post_url ) ;
151
152        switch ($not_event) {
153                case 'newpost' :
154                        Notification_triggerEvent('global' , 0 , 'newpost' , $posts_tags , false);
155                        Notification_triggerEvent('author' , $post_author , 'newpost' , $posts_tags , false);
156
157                        // categorie notification
158                        if (get_xpress_db_version() < 6124){
159                                $sql2 = "SELECT c.cat_ID, c.cat_name FROM ".$table_categories." c, ".$table_post2cat." p2c WHERE c.cat_ID = p2c.category_id AND p2c.post_id=".$post_id;
160                        } else {
161                                $sql2  = "SELECT $table_term_relationships.object_id, $table_terms.term_id AS cat_ID, $table_terms.name AS cat_name ";
162                                $sql2 .= "FROM $table_term_relationships INNER JOIN ($table_term_taxonomy INNER JOIN $table_terms ON $table_term_taxonomy.term_id = $table_terms.term_id) ON $table_term_relationships.term_taxonomy_id = $table_term_taxonomy.term_taxonomy_id ";
163                                $sql2 .= "WHERE ($table_term_relationships.object_id =" . $post_id.") AND ($table_term_taxonomy.taxonomy='category')";         
164                        }
165                        $categories = $xoops_db->get_results($sql);
166                        foreach($categories as $categorie){
167                                $cat_id = $categorie->cat_ID;
168                                $cat_name = $categorie->cat_name;
169                                $posts_tags = array( 'XPRESS_AUTH_NAME' =>$user_name,'XPRESS_BLOG_NAME' =>$blog_name,'XPRESS_CAT_TITLE' => $cat_name,'XPRESS_POST_TITLE' => $post_title , 'XPRESS_POST_URL' => $post_url ) ;
170                                Notification_triggerEvent('category' , $cat_id , 'newpost' , $posts_tags , false);
171                        }
172                        break;
173                case 'editpost' :
174                        Notification_triggerEvent('post' , $post_id , 'editpost' , $posts_tags , false);
175                        break;
176                default :
177        }
178}               
179
180?>
Note: See TracBrowser for help on using the repository browser.