prefix . 'all_pushnotification_logs'; $all_pushnotification_token = $wpdb->prefix . 'all_pushnotification_token'; $charset_collate = $wpdb->get_charset_collate(); $pushnotification_log_sql = "CREATE TABLE $all_pushnotification_logs ( `log_id` int(11) NOT NULL AUTO_INCREMENT, `push_title` text NOT NULL, `push_message` text NOT NULL, `push_sent` tinyint(4) NOT NULL, `push_send_date` datetime NOT NULL, `devicetoken_id` text NOT NULL, PRIMARY KEY (`log_id`) ) $charset_collate;"; require_once( ABSPATH . 'wp-admin/includes/upgrade.php' ); dbDelta( $pushnotification_log_sql ); $pushnotification_token_sql = "CREATE TABLE $all_pushnotification_token ( `push_token_id` int(11) NOT NULL AUTO_INCREMENT, `device_token` text NOT NULL, `os_type` varchar(10) NOT NULL, `user_id` int(11) NOT NULL, `last_updatedate` datetime NOT NULL, PRIMARY KEY (`push_token_id`) ) $charset_collate;"; require_once( ABSPATH . 'wp-admin/includes/upgrade.php' ); dbDelta( $pushnotification_token_sql ); #Add Custom Upload folder in wp-upload folder $upload_dir = wp_upload_dir(); $userdir = 'ioscerti'; $user_dirname = $upload_dir['basedir'].'/'.$userdir; if ( ! file_exists( $user_dirname ) ) { wp_mkdir_p( $user_dirname ); } } /* Call the Script code */ add_action('admin_init', 'all_push_notification_scripts'); function all_push_notification_scripts() { global $wpdb , $post; if (current_user_can('administrator')) { wp_enqueue_script('jquery'); wp_enqueue_script('validate',plugin_dir_url(__FILE__) .'js/jquery.validate.min.js', array(), '1.0.0', true ); wp_enqueue_script('jquery-ui-selectmenu'); wp_enqueue_script('pqselect.dev',plugin_dir_url(__FILE__) .'js/pqselect.dev.js', array(), '1.0.0', true ); wp_enqueue_style('jquery-ui', plugin_dir_url(__FILE__) . 'css/jquery-ui.css' ); wp_enqueue_style('custom', plugin_dir_url(__FILE__) . 'css/custom.css' ); wp_enqueue_style('pqselect.dev', plugin_dir_url(__FILE__) . 'css/pqselect.dev.css' ); } } /* Call the menu code */ add_action('admin_menu', 'all_pushnotification_forwp_admin_menu'); function all_pushnotification_forwp_admin_menu() { global $wpdb , $post; if ( current_user_can('administrator') ){ add_menu_page('All Push Notifications', 'All Push Notifications', 'administrator','all-Pushnotifications-wp', 'all_pushnotifications_wp_html'); add_submenu_page('all-Pushnotifications-wp', 'Settings', 'Settings', 'publish_posts', 'all-PushNotifications-WP-settings','all_pushnotifications_wp_settings_html' ); add_submenu_page('all-Pushnotifications-wp', 'Custom Notification', 'Custom Notification', 'publish_posts', 'custom-PushNotifications-WP','custom_PushNotifications_wp_html' ); } } # Fires immediately after a new user is registered. add_action('user_register', 'all_PushNotifications_registration_save'); function all_PushNotifications_registration_save( $user_id ) { global $wpdb; $datapost=getallheaders(); $user_device_token=$datapost['device_token']; $user_os_type=$datapost['os_type']; $last_updatedate=current_time( 'mysql' ); $all_pushnotification_token = $wpdb->prefix . 'all_pushnotification_token'; $wpdb->replace($all_pushnotification_token,array('push_token_id' => $user_id,'device_token' => $user_device_token,'os_type' => $user_os_type,'user_id' => $user_id,'last_updatedate' => $last_updatedate),array('%d','%s','%s','%d','%s')); echo $wpdb->last_error; } # Fires immediately after an existing user is updated. add_action( 'profile_update', 'all_PushNotifications_user_update', 10, 2 ); function all_PushNotifications_user_update($user_id,$old_user_data) { global $wpdb; $datapost=getallheaders(); $user_device_token=$datapost['device_token']; $user_os_type=$datapost['os_type']; $last_updatedate=current_time( 'mysql' ); $all_pushnotification_token = $wpdb->prefix . 'all_pushnotification_token'; $wpdb->replace($all_pushnotification_token,array('push_token_id' => $user_id,'device_token' => $user_device_token,'os_type' => $user_os_type,'user_id' => $user_id,'last_updatedate' => $last_updatedate),array('%d','%s','%s','%d','%s')); echo $wpdb->last_error; } function all_PushNotifications_user_login($user_login, $ID) { global $wpdb; $user_id; $user_device_token=$datapost['device_token']; $user_os_type=$datapost['os_type']; $all_pushnotification_token = $wpdb->prefix . 'all_pushnotification_token'; $wpdb->update($all_pushnotification_token,array('device_token' => $user_device_token,'os_type' => $user_os_type,'last_updatedate' => $last_updatedate),array('push_token_id' => $user_id),array('%s','%s','%s'), array( '%d' )); echo $wpdb->last_error; } function all_push_notification_on_logout() { delete_transient('transient_name'); } add_action('wp_logout', 'all_push_notification_on_logout'); # For get all system users with is device token and device type. function all_push_notification_getAllSystemUsers() { global $wpdb; $only_ios = get_option('sendto_ios'); $only_android = get_option('sendto_android'); $all_pushnotification_token = $wpdb->prefix . 'all_pushnotification_token'; $select_all_users = $wpdb->get_results("SELECT device_token,os_type FROM $all_pushnotification_token",ARRAY_A); $all_userDevices = array(); foreach ($select_all_users as $select_sql_data ) { $deviceType = $select_sql_data['os_type']; $deviceToken = $select_sql_data['device_token']; if ($deviceType == 'android' && $only_android =='yes') { array_push($all_userDevices, array('token' => $deviceToken, 'is_Android' => true)); } elseif ($deviceType == 'ios' && $only_ios =='yes') { array_push($all_userDevices, array('token' => $deviceToken, 'is_Android' => false)); } } return $all_userDevices; } # For send notifications on post update/insert/edit. add_action( 'publish_post', 'all_push_notification_savepost_sendnotification', 10, 2 ); function all_push_notification_savepost_sendnotification() { $post_title=sanitize_text_field($_POST['post_title']); $post_content=sanitize_text_field($_POST['post_content']); $PushNotifications_obj=new PushNotifications(); $message = array("title" => $post_title,"message" => $post_content,); $all_userDevices=all_push_notification_getAllSystemUsers(); /* user data will come from get all user Function */ $PushNotifications_obj->send_notification($all_userDevices,$message); } # For send notifications on Comment Post/Insert. add_action('wp_insert_comment','all_push_notification_comment_inserted',99,2); function all_push_notification_comment_inserted($comment_id, $comment_object) { global $wpdb; global $post; $post_author_id = get_post_field ('post_author', $_POST['comment_post_ID']); $post_title='Comment Inserted'; $PushNotifications_obj=new PushNotifications(); $message = array("title" => $post_title,"message" => $_POST['comment']); $all_pushnotification_token = $wpdb->prefix . 'all_pushnotification_token'; $post_author_Device=$wpdb->get_row("SELECT device_token,os_type FROM $all_pushnotification_token where user_id=".$post_author_id,ARRAY_A); $deviceType = $post_author_Device['os_type']; $deviceToken = $post_author_Device['device_token']; $all_userDevices = array(); if ($deviceType == 'android' && $only_android =='yes') { array_push($all_userDevices, array('token' => $deviceToken, 'is_Android' => true)); } elseif ($deviceType == 'ios' && $only_ios =='yes') { array_push($all_userDevices, array('token' => $deviceToken, 'is_Android' => false)); } $PushNotifications_obj->send_notification($all_userDevices,$message); } #Upload Certificate of Ios in custom directory of Upload folder: add_filter('upload_dir', 'all_push_notification_certificate_dir'); function all_push_notification_certificate_dir( $param ){ if(isset( $_SERVER['HTTP_REFERER'] )) { $request_uri_referrer = $_SERVER['HTTP_REFERER']; $request_uri_referrer_parts = explode( 'page=' , $request_uri_referrer ); $current_page_url=$request_uri_referrer_parts[1]; if ($current_page_url=='all-PushNotifications-WP-settings') { $mydir = '/ioscerti'; $param['path'] = $param['basedir'] . $mydir; $param['url'] = $param['baseurl'] . $mydir; } } return $param; } #Upload Certificate Extention: function all_push_notification_push_mime_types($mime_types){ $mime_types['pem'] = 'application/x-pem-file'; //Adding .pem extension $mime_types['p12'] = 'application/x-pkcs12'; //Adding photoshop files return $mime_types; } add_filter('upload_mimes', 'all_push_notification_push_mime_types', 1, 1);