trackAction('wordpress', 'Blog Created', $domain); } /** * Edit Post Action Tracker */ function owa_editPostActionTracker($post_id, $post) { // we don't want to track autosaves... if(wp_is_post_autosave($post)) { return; } $owa = owa_getInstance(); $label = $post->post_title; $owa->trackAction('wordpress', $post->post_type.' edited', $label); } /** * Post Action Tracker */ function owa_postActionTracker($new_status, $old_status, $post) { // we don't want to track autosaves... if(wp_is_post_autosave($post)) { return; } if ($new_status === 'draft' && $old_status === 'draft') { return; } elseif ($new_status === 'publish' && $old_status != 'publish') { $action_name = $post->post_type.' publish'; } elseif ($new_status === $old_status) { $action_name = $post->post_type.' edit'; } if ($action_name) { $owa = owa_getInstance(); owa_coreAPI::debug(sprintf("new: %s, old: %s, post: %s", $new_status, $old_status, print_r($post, true))); $label = $post->post_title; $owa->trackAction('wordpress', $action_name, $label); } } /** * New Attachment Action Tracker */ function owa_editAttachmentActionTracker($post_id) { $owa = owa_getInstance(); $post = get_post($post_id); $label = $post->post_title; $owa->trackAction('wordpress', 'Attachment Edit', $label); } /** * New Attachment Action Tracker */ function owa_newAttachmentActionTracker($post_id) { $owa = owa_getInstance(); $post = get_post($post_id); $label = $post->post_title; $owa->trackAction('wordpress', 'Attachment Created', $label); } /** * User Registration Action Tracker */ function owa_userRegistrationActionTracker($user_id) { $owa = owa_getInstance(); $user = get_userdata($user_id); if (!empty($user->first_name) && !empty($user->last_name)) { $label = $user->first_name.' '.$user->last_name; } else { $label = $user->display_name; } $owa->trackAction('wordpress', 'User Registration', $label); } /** * User Login Action Tracker */ function owa_userLoginActionTracker($user_id) { $owa = owa_getInstance(); $label = $user_id; $owa->trackAction('wordpress', 'User Login', $label); } /** * Profile Update Action Tracker */ function owa_userProfileUpdateActionTracker($user_id, $old_user_data = '') { $owa = owa_getInstance(); $user = get_userdata($user_id); if (!empty($user->first_name) && !empty($user->last_name)) { $label = $user->first_name.' '.$user->last_name; } else { $label = $user->display_name; } $owa->trackAction('wordpress', 'User Profile Update', $label); } /** * Password Reset Action Tracker */ function owa_userPasswordResetActionTracker($user) { $owa = owa_getInstance(); $label = $user->display_name; $owa->trackAction('wordpress', 'User Password Reset', $label); } /** * Trackback Action Tracker */ function owa_trackbackActionTracker($comment_id) { $owa = owa_getInstance(); $label = $comment_id; $owa->trackAction('wordpress', 'Trackback', $label); } /** * Singleton Method * * Returns an instance of OWA * * @return $owa object */ function &owa_getInstance() { static $owa; if( empty( $owa ) ) { require_once(OWA_BASE_CLASSES_DIR.'owa_wp.php'); // create owa instance w/ config $owa = new owa_wp(); $owa->setSiteId( md5( get_settings( 'siteurl' ) ) ); $owa->setSetting( 'base', 'report_wrapper', 'wrapper_wordpress.tpl' ); $owa->setSetting( 'base', 'link_template', '%s&%s' ); $owa->setSetting( 'base', 'main_url', '../wp-admin/index.php?page=owa' ); $owa->setSetting( 'base', 'main_absolute_url', get_bloginfo('url').'/wp-admin/index.php?page=owa' ); $owa->setSetting( 'base', 'action_url', get_bloginfo('url').'/index.php?owa_specialAction' ); $owa->setSetting( 'base', 'api_url', get_bloginfo('url').'/index.php?owa_apiAction' ); $owa->setSetting( 'base', 'is_embedded', true ); // needed as old installs might have this turned on by default... $owa->setSetting( 'base', 'delay_first_hit', false ); // Access WP current user object to check permissions $current_user = owa_getCurrentWpUser(); //print_r($current_user); // Set OWA's current user info and mark as authenticated so that // downstream controllers don't have to authenticate $cu =&owa_coreAPI::getCurrentUser(); if (isset($current_user->user_login)) { $cu->setUserData('user_id', $current_user->user_login); owa_coreAPI::debug("Wordpress User_id: ".$current_user->user_login); } if (isset($current_user->user_email)) { $cu->setUserData('email_address', $current_user->user_email); } if (isset($current_user->first_name)) { $cu->setUserData('real_name', $current_user->first_name.' '.$current_user->last_name); $cu->setRole(owa_translate_role($current_user->roles)); } owa_coreAPI::debug("Wordpress User Role: ".print_r($current_user->roles, true)); owa_coreAPI::debug("Wordpress Translated OWA User Role: ".$cu->getRole()); $cu->setAuthStatus(true); } return $owa; } function owa_getCurrentWpUser() { // Access WP current user object to check permissions global $current_user; get_currentuserinfo(); return $current_user; } // translates wordpress roles to owa roles function owa_translate_role($roles) { if (!empty($roles)) { if (in_array('administrator', $roles)) { $owa_role = 'admin'; } elseif (in_array('editor', $roles)) { $owa_role = 'viewer'; } elseif (in_array('author', $roles)) { $owa_role = 'viewer'; } elseif (in_array('contributor', $roles)) { $owa_role = 'viewer'; } elseif (in_array('subscriber', $roles)) { $owa_role = 'everyone'; } else { $owa_role = 'everyone'; } } else { $owa_role = 'everyone'; } return $owa_role; } function owa_handleSpecialActionRequest() { $owa = owa_getInstance(); owa_coreAPI::debug("hello from WP special action handler"); return $owa->handleSpecialActionRequest(); } function owa_logComment($id, $comment_data = '') { if ( $comment_data === 'approved' || $comment_data === 1 ) { $owa = owa_getInstance(); $label = ''; $owa->trackAction('wordpress', 'comment', $label); } } function owa_logCommentEdit($new_status, $old_status, $comment) { if ($new_status === 'approved') { if (isset($comment->comment_author)) { $label = $comment->comment_author; } else { $label = ''; } $owa = owa_getInstance(); $owa->trackAction('wordpress', 'comment', $label); } } /** * Prints helper page tags to the of pages. * */ function owa_insertPageTags() { // Don't log if the page request is a preview - Wordpress 2.x or greater if (function_exists('is_preview')) { if (is_preview()) { return; } } $owa = owa_getInstance(); $page_properties = $owa->getAllEventProperties($owa->pageview_event); $cmds = ''; if ( $page_properties ) { $page_properties_json = json_encode( $page_properties ); $cmds .= "owa_cmds.push( ['setPageProperties', $page_properties_json] );"; } //$wgOut->addInlineScript( $cmds ); $options = array( 'cmds' => $cmds ); $owa->placeHelperPageTags(true, $options); } /** * This is the main logging controller that is called on each request. * */ function owa_main() { //global $user_level; $owa = owa_getInstance(); owa_coreAPI::debug('wp main request method'); //Check to see if this is a Feed Reeder if( $owa->getSetting('base', 'log_feedreaders') && is_feed() ) { $event = $owa->makeEvent(); $event->setEventType('base.feed_request'); $event->set('feed_format', $_GET['feed']); // Process the request by calling owa return $owa->trackEvent($event); } // Set the type and title of the page $page_type = owa_get_page_type(); $owa->setPageType( $page_type ); // Get Title of Page $owa->setPageTitle( owa_get_title( $page_type ) ); } /** * Determines the title of the page being requested * * @param string $page_type * @return string $title */ function owa_get_title($page_type) { if ($page_type == "Home"): $title = get_bloginfo('name'); elseif ($page_type == "Search Results"): $title = "Search Results for \"".$_GET['s']."\""; elseif ($page_type == "Page" || "Post"): $title = wp_title($sep = '', $display = 0); elseif ($page_type == "Author"): $title = wp_title($sep = '', $display = 0); elseif ($page_type == "Category"): $title = wp_title($sep = '', $display = 0); elseif ($page_type == "Month"): $title = wp_title($sep = '', $display = 0); elseif ($page_type == "Day"): $title = wp_title($sep = '', $display = 0); elseif ($page_type == "Year"): $title = wp_title($sep = '', $display = 0); elseif ($page_type == "Time"): $title = wp_title($sep = '', $display = 0); elseif ($page_type == "Feed"): $title = wp_title($sep = '', $display = 0); endif; return $title; } /** * Determines the type of page being requested * * @return string $type */ function owa_get_page_type() { if (is_home()): $type = "Home"; elseif (is_attachment()): $type = "Attachment"; elseif (is_page()): $type = "Page"; // general page catch, should be after more specific post types elseif (is_single()): $type = "Post"; elseif (is_feed()): $type = "Feed"; elseif (is_author()): $type = "Author"; elseif (is_category()): $type = "Category"; elseif (is_search()): $type = "Search Results"; elseif (is_month()): $type = "Month"; elseif (is_day()): $type = "Day"; elseif (is_year()): $type = "Year"; elseif (is_time()): $type = "Time"; elseif (is_tag()): $type = "Tag"; elseif (is_tax()): $type = "Taxonomy"; // general archive catch, should be after specific archive types elseif (is_archive()): $type = "Archive"; else: $type = '(not set)'; endif; return $type; } /** * Wordpress filter function adds a GUID to the feed URL. * * @param array $binfo * @return string $newbinfo */ function add_feed_sid($binfo) { $owa = owa_getInstance(); $test = strpos($binfo, "feed="); if ($test == true): $newbinfo = $owa->add_feed_tracking($binfo); else: $newbinfo = $binfo; endif; return $newbinfo; } /** * Adds tracking source param to links in feeds * * @param string $link * @return string */ function owa_post_link($link) { $owa = owa_getInstance(); return $owa->add_link_tracking($link); } /** * Schema and setting installation * */ function owa_install() { define('OWA_INSTALLING', true); $params = array(); //$params['do_not_fetch_config_from_db'] = true; $owa = owa_getInstance($params); $owa->setSetting('base', 'cache_objects', false); $public_url = get_bloginfo('wpurl').'/wp-content/plugins/owa/'; $install_params = array('site_id' => md5(get_settings('siteurl')), 'name' => get_bloginfo('name'), 'domain' => get_settings('siteurl'), 'description' => get_bloginfo('description'), 'action' => 'base.installEmbedded', 'db_type' => 'mysql', 'db_name' => DB_NAME, 'db_host' => DB_HOST, 'db_user' => DB_USER, 'db_password' => DB_PASSWORD, 'public_url' => $public_url ); $owa->handleRequest($install_params); } /** * Adds Analytics sub tab to admin dashboard screens. * */ function owa_dashboard_menu() { if (function_exists('add_submenu_page')): add_submenu_page('index.php', 'OWA Dashboard', 'Analytics', 1, dirname(__FILE__), 'owa_pageController'); endif; return; } /** * Produces the analytics dashboard * */ function owa_dashboard_report() { $owa = owa_getInstance(); $params = array(); $params['do'] = 'base.reportDashboard'; echo $owa->handleRequest($params); return; } function owa_pageController() { $owa = owa_getInstance(); $do = owa_coreAPI::getRequestParam('do'); $params = array(); if (empty($do)) { $params['do'] = 'base.reportDashboard'; } echo $owa->handleRequest($params); } /** * Adds Options page to admin interface * */ function owa_options_menu() { if (function_exists('add_options_page')): add_options_page('Options', 'OWA', 8, basename(__FILE__), 'owa_options_page'); endif; return; } /** * Generates Options Management Page * */ function owa_options_page() { $owa = owa_getInstance(); $params = array(); $params['view'] = 'base.options'; $params['subview'] = 'base.optionsGeneral'; echo $owa->handleRequest($params); return; } /** * Parses string to get the major and minor version of the * instance of wordpress that is running * * @param string $version * @return array */ function owa_parse_version($version) { $version_array = explode(".", $version); return $version_array; } ?>