HJI WP Membership Code Reference
  • Namespace
  • Class
  • Tree
  • Deprecated
  • Todo
  • Hook Reference
  • Slipstream API Docs

Namespaces

  • hji
    • AgentRoster
      • controllers
      • models
      • utils
    • common
      • factories
      • interfaces
      • models
      • utils
    • construction
      • admin
        • controllers
        • models
      • core
      • front
        • controllers
      • interfaces
      • models
        • listings
        • subdivisions
      • views
    • geofarms
      • common
      • controllers
      • models
      • widgets
    • homevalue
      • controllers
      • core
        • abstracts
      • models
    • lifestylefinder
    • listingstoblog
      • controllers
    • membership
      • abstracts
      • controllers
      • entities
      • extension
        • abstracts
        • interfaces
      • factories
      • includes
      • interfaces
      • models
        • data
        • webservice
          • abstracts
          • actions
          • interfaces
      • observers
      • services
    • recentsales
      • controllers
      • tinymce
      • widgets
    • ResponsiveIDX
      • abstracts
      • adapters
      • controllers
      • core
        • abstracts
      • entities
      • models
      • services
      • tinymce
      • utils
      • widgets
    • schools
      • controllers
      • tinymce
      • widgets
    • users
      • abstracts
      • admin
        • controllers
        • models
      • controllers
      • core
        • abstracts
      • entities
      • models
      • utils
  • None
  • REL
    • controllers
    • Models
    • Taxonomies
    • Utils
      • Convert
    • widgets

Classes

  • hji\AgentRoster\AgentRoster
  • hji\AgentRoster\controllers\AgentRosterAdmin
  • hji\AgentRoster\controllers\Testimonials
  • hji\AgentRoster\models\TestimonialsModel
  • hji\AgentRoster\utils\ContactForm
  • hji\common\factories\mcePluginFactory
  • hji\common\factories\WidgetTrioFactory
  • hji\common\interfaces\AbstractSettingsModel
  • hji\common\interfaces\Shortcode
  • hji\common\interfaces\Widget
  • hji\common\interfaces\WidgetShortcode
  • hji\common\models\Alerts
  • hji\common\models\GForms
  • hji\common\models\JsVars
  • hji\common\models\mcePluginModel
  • hji\common\models\Notices
  • hji\common\models\PluginJsVars
  • hji\common\utils\APIClient
  • hji\common\utils\Cookies
  • hji\common\utils\GFHelper
  • hji\common\utils\HTTP
  • hji\common\utils\ipAddress
  • hji\common\utils\MetaBoxes
  • hji\common\utils\Modal
  • hji\common\utils\Paths
  • hji\common\utils\SiteInfo
  • hji\common\utils\String
  • hji\common\utils\Updater
  • hji\common\utils\Validator
  • hji\common\utils\View
  • hji\common\utils\Views
  • hji\common\utils\WPCache
  • hji\common\utils\WPHelper
  • hji\construction\admin\AdminController
  • hji\construction\admin\controllers\GeneralPageController
  • hji\construction\admin\models\GeneralPageModel
  • hji\construction\App
  • hji\construction\core\Component
  • hji\construction\core\Controller
  • hji\construction\core\DataModel
  • hji\construction\core\DataObjectPostView
  • hji\construction\core\Model
  • hji\construction\core\Paths
  • hji\construction\core\PostModel
  • hji\construction\core\WebService
  • hji\construction\core\Widget
  • hji\construction\front\controllers\ListingsController
  • hji\construction\front\controllers\SubdivisionsController
  • hji\construction\front\FrontController
  • hji\construction\models\Images
  • hji\construction\models\Labels
  • hji\construction\models\listings\ListingModel
  • hji\construction\models\listings\ListingsGetFilters
  • hji\construction\models\listings\ListingsModel
  • hji\construction\models\listings\ListingsSearchFilters
  • hji\construction\models\NCSearchWidget
  • hji\construction\models\NCSearchWidgetViewModel
  • hji\construction\models\Pagination
  • hji\construction\models\Settings
  • hji\construction\models\subdivisions\SubdivisionModel
  • hji\construction\models\subdivisions\SubdivisionsGetFilters
  • hji\construction\models\subdivisions\SubdivisionsGetOptions
  • hji\construction\models\subdivisions\SubdivisionsModel
  • hji\construction\models\subdivisions\SubdivisionsSearchFilters
  • hji\construction\models\subdivisions\SubdivisionsSearchOptions
  • hji\construction\NewConstruction
  • hji\construction\ServiceContainer
  • hji\construction\views\ListingsView
  • hji\construction\views\SubdivisionsView
  • hji\geofarms\common\ImageResize
  • hji\geofarms\common\RewriteRules
  • hji\geofarms\controllers\AreaCache
  • hji\geofarms\controllers\CMB
  • hji\geofarms\controllers\CPT
  • hji\geofarms\controllers\FrontEnd
  • hji\geofarms\controllers\Settings
  • hji\geofarms\controllers\Shortcodes
  • hji\geofarms\controllers\Slipstream
  • hji\geofarms\controllers\Taxonomy
  • hji\geofarms\controllers\TinyMCE
  • hji\geofarms\controllers\UpdateNeighborhoods
  • hji\geofarms\GeoFarms
  • hji\geofarms\models\CMB
  • hji\geofarms\models\CPT
  • hji\geofarms\models\Settings
  • hji\geofarms\models\Slipstream
  • hji\geofarms\models\Taxonomy
  • hji\geofarms\models\TinyMCE
  • hji\geofarms\widgets\Display
  • hji\geofarms\widgets\Map
  • hji\homevalue\controllers\HomeValueTinyMCE
  • hji\homevalue\controllers\HomeValueWidget
  • hji\homevalue\controllers\Settings
  • hji\homevalue\controllers\Shortcodes
  • hji\homevalue\core\abstracts\Component
  • hji\homevalue\core\Controller
  • hji\homevalue\core\Model
  • hji\homevalue\HomeValue
  • hji\homevalue\models\Settings
  • hji\lifestylefinder\LifestyleFinder
  • hji\listingstoblog\controllers\ImportListings
  • hji\listingstoblog\controllers\Settings
  • hji\listingstoblog\ListingsToBlog
  • hji\membership\abstracts\Component
  • hji\membership\abstracts\Controller
  • hji\membership\abstracts\Model
  • hji\membership\controllers\APIClient
  • hji\membership\controllers\CommonScripts
  • hji\membership\controllers\Dependency
  • hji\membership\controllers\DependencyResolver
  • hji\membership\controllers\Dispatcher
  • hji\membership\controllers\Downloads
  • hji\membership\controllers\GForms
  • hji\membership\controllers\ProductManager
  • hji\membership\controllers\ProductRegistrar
  • hji\membership\controllers\RegistryEntry
  • hji\membership\controllers\RequireJs
  • hji\membership\controllers\Settings
  • hji\membership\controllers\UpdateManager
  • hji\membership\entities\Event
  • hji\membership\entities\UserActionEvent
  • hji\membership\extension\abstracts\Component
  • hji\membership\factories\ProductFactory
  • hji\membership\includes\CustomerInfoSynchronizer
  • hji\membership\interfaces\Product
  • hji\membership\Membership
  • hji\membership\models\APIClientModel
  • hji\membership\models\Customer
  • hji\membership\models\data\Address
  • hji\membership\models\data\Image
  • hji\membership\models\data\Images
  • hji\membership\models\data\Paging
  • hji\membership\models\data\Sorting
  • hji\membership\models\DependencyEntity
  • hji\membership\models\DependencyModel
  • hji\membership\models\PluginEntity
  • hji\membership\models\ProductDependencies
  • hji\membership\models\Settings
  • hji\membership\models\ThemeEntity
  • hji\membership\models\UserActionLogger
  • hji\membership\models\UserSession
  • hji\membership\models\webservice\abstracts\QueryProperties
  • hji\membership\models\webservice\abstracts\WebService
  • hji\membership\models\webservice\abstracts\WebServiceFilters
  • hji\membership\models\webservice\actions\ActionsSearchFilters
  • hji\membership\models\webservice\actions\ActionsWebService
  • hji\membership\models\webservice\WebServiceOptions
  • hji\membership\models\WpCatalog
  • hji\membership\observers\EventDispatcher
  • hji\membership\observers\EventLogger
  • hji\membership\services\CPT_Router
  • hji\membership\services\DependencyInjector
  • hji\membership\services\DependencyInjectorInterface
  • hji\membership\services\Request
  • hji\membership\services\Route
  • hji\membership\services\Router
  • hji\membership\services\ServiceContainer
  • hji\membership\services\SocialGraph
  • hji\recentsales\controllers\Shortcodes
  • hji\recentsales\RecentSales
  • hji\recentsales\tinymce\RecentSales
  • hji\recentsales\widgets\RecentSales
  • hji\ResponsiveIDX\abstracts\FilterSchema
  • hji\ResponsiveIDX\adapters\IdxAdapter
  • hji\ResponsiveIDX\adapters\LegalAdapter
  • hji\ResponsiveIDX\adapters\ListingAdapter
  • hji\ResponsiveIDX\controllers\BaseController
  • hji\ResponsiveIDX\controllers\IdxApp
  • hji\ResponsiveIDX\controllers\Pagination
  • hji\ResponsiveIDX\controllers\RecentlyViewed
  • hji\ResponsiveIDX\controllers\RegistrationForm
  • hji\ResponsiveIDX\controllers\Settings
  • hji\ResponsiveIDX\controllers\Upgrader
  • hji\ResponsiveIDX\core\abstracts\Component
  • hji\ResponsiveIDX\core\Controller
  • hji\ResponsiveIDX\core\Model
  • hji\ResponsiveIDX\entities\ComplianceRule
  • hji\ResponsiveIDX\entities\ListingEntity
  • hji\ResponsiveIDX\models\ComplianceModel
  • hji\ResponsiveIDX\models\ComplianceViewModel
  • hji\ResponsiveIDX\models\FieldLabels
  • hji\ResponsiveIDX\models\HashMap
  • hji\ResponsiveIDX\models\IdxSearchModel
  • hji\ResponsiveIDX\models\MarketMetadata
  • hji\ResponsiveIDX\models\PaginationViewModel
  • hji\ResponsiveIDX\models\QuickSearchViewModel
  • hji\ResponsiveIDX\models\SearchFilters
  • hji\ResponsiveIDX\models\SearchParams
  • hji\ResponsiveIDX\models\SearchResultsViewModel
  • hji\ResponsiveIDX\models\ShortcodesModel
  • hji\ResponsiveIDX\models\SpatialMatchModel
  • hji\ResponsiveIDX\ResponsiveIDX
  • hji\ResponsiveIDX\services\ServiceContainer
  • hji\ResponsiveIDX\tinymce\FeaturedListings
  • hji\ResponsiveIDX\utils\ArrayFormat
  • hji\ResponsiveIDX\utils\PluginDependency
  • hji\ResponsiveIDX\utils\StringFormat
  • hji\ResponsiveIDX\utils\View
  • hji\ResponsiveIDX\widgets\FeaturedListings_TinyMCE
  • hji\ResponsiveIDX\widgets\FeaturedListings_Widget
  • hji\ResponsiveIDX\widgets\QuickSearch_Widget
  • hji\schools\controllers\Shortcodes
  • hji\schools\Schools
  • hji\schools\tinymce\Schools
  • hji\schools\widgets\Schools
  • hji\users\abstracts\AdminPageModel
  • hji\users\abstracts\UserAdminTable
  • hji\users\admin\AdminController
  • hji\users\admin\BaseController
  • hji\users\admin\controllers\ActionsPageController
  • hji\users\admin\controllers\UsersPageController
  • hji\users\admin\models\ActionsPageModel
  • hji\users\admin\models\UsersPageModel
  • hji\users\controllers\GravityForms
  • hji\users\controllers\GravityFormsAdmin
  • hji\users\controllers\RegistrationPrompter
  • hji\users\controllers\Settings
  • hji\users\controllers\SocialAuth
  • hji\users\controllers\User
  • hji\users\controllers\UserPanel
  • hji\users\core\abstracts\Component
  • hji\users\core\Controller
  • hji\users\core\Model
  • hji\users\entities\GFEntry
  • hji\users\entities\User
  • hji\users\entities\UserProfile
  • hji\users\models\ActionsSearchFilters
  • hji\users\models\ActionsWebServiceOptions
  • hji\users\models\FavoritesViewModel
  • hji\users\models\FrontEndNotices
  • hji\users\models\RegistrationNotificationViewModel
  • hji\users\models\Request
  • hji\users\models\Settings
  • hji\users\models\SettingsTab
  • hji\users\models\User
  • hji\users\models\UserActionsModel
  • hji\users\models\UserFactory
  • hji\users\models\UsersSearchModel
  • hji\users\Users
  • hji\users\utils\GravityFormsHelper
  • hji\users\utils\UserActionsTable
  • hji\users\utils\UserAuth
  • hji\users\utils\UserFavoritesTable
  • hji\users\utils\UserFormEntriesTable
  • hji\users\utils\UserListTable
  • hji\users\utils\UserSearchesTable
  • hji\users\utils\UserSessionsTable
  • REL\controllers\Admin
  • REL\controllers\FSBO
  • REL\controllers\PocketListings
  • REL\controllers\rIDXImport
  • REL\Models\ListingViewModel
  • REL\Models\rIDXImport
  • REL\Models\Upgrades
  • REL\RealEstateListings
  • REL\Taxonomies\CustomTaxonomies
  • REL\Utils\Convert\ListingConverter
  • REL\widgets\PocketListingsSearchWidget
  • REL\widgets\PocketListingsWidget
  • SM_API_Client

Interfaces

  • hji\construction\interfaces\IPost
  • hji\membership\extension\interfaces\ExtensionInterface
  • hji\membership\interfaces\CRUD
  • hji\membership\interfaces\Dispatchable
  • hji\membership\interfaces\EventDispatcherInterface
  • hji\membership\interfaces\Loggable
  • hji\membership\models\webservice\interfaces\IGettable
  • hji\membership\models\webservice\interfaces\ISearchable

Functions

  • __admin_redirect
  • get_pocket_listing
  • hji\membership\controllers\__inject_plugin_table
  • hji\membership\controllers\__inject_theme_table
  • hji_user_favorite_toggle
  • hjigf_display
  • hjigf_display_map
  • hjigf_get_community_feature
  • hjigf_get_post_thumbnail
  • hjigf_has_area_map
  • ridx_get_listing
  • ridx_is_results_page
  • ridx_is_single
  • ridx_is_single_print
  • table_hjpl_cache
  1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96  97  98  99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 
<?php
namespace hji\users\utils;

use \hji\common\utils\HTTP;
use hji\common\utils\Views;
use hji\ResponsiveIDX\entities\ListingEntity;
use hji\ResponsiveIDX\models\FieldLabels;
use \hji\users\abstracts\UserAdminTable;
use \hji\common\utils\WPHelper;
use hji\users\Users;

require_once(ABSPATH . 'wp-admin/includes/class-wp-list-table.php');


class UserActionsTable extends UserAdminTable
{
    protected $baseUrl;
    protected $dataModel;
    protected $vars;

    protected $actions = array(
        'avm'                   => 'Home Valuation',
        'form_entry'            => 'Form Entry',
        'users.favorites.search'=> 'Favorites View'
    );


    function __construct($sectionBaseUrl, $dataModel)
    {
        parent::__construct($sectionBaseUrl, $dataModel);

        $this->setViews();
    }


    function getData()
    {
        $options = $this->getSearchOptions();

//        $options['startTime'] = $this->dataModel->getTimeframe();

        $filters = array(
            'user'      => HTTP::getParameter('email')
        );

        $response = $this->dataModel->getData();
        $result = $response->result;

        if (isset($result->actions))
        {
            if (isset($result->users))
            {
                foreach ($result->actions as &$action)
                {
                    foreach ($result->users as $user)
                    {
                        if (isset($action->user) && $user->email == $action->user)
                        {
                            $action->user = $user;
                            continue;
                        }
                    }
                }
            }

            return $result;
        }
        else
        {
            return $this->resultError($result, $filters, $options);
        }
    }


    function column_default($item, $column_name)
    {
        $siteUrl = (isset($item->site) && !empty($item->site)) ? $item->site : null;

        switch($column_name)
        {
            case 'user':

                $name = 'Anonymous';
                $ip   = 'N/A';

                $user = isset($item->$column_name) ? $item->$column_name : null;

                if (is_object($user))
                {
                    $name = ($user->name) ? $user->name : $name;
                    $email = $user->email;
                }
                else if (!empty($user))
                {
                    $name = $user;
                    $email = $user;
                }

                if ($name != 'Anonymous')
                {
                    $url  = $this->_getUserUrl($email);
                    $name = sprintf('<a href="%s"><strong>%s</strong></a><br />%s', $url, $name, $email);
                }

                if (isset($item->ipAddress))
                {
                    $ip = sprintf('<a href="%s">%s</a>', add_query_arg('ipAddress', $item->ipAddress), $item->ipAddress);
                }

                return $name . '<br />IP: ' . $ip;

            case 'action':
                if (isset($item->$column_name))
                {
                    $url = admin_url('admin.php?' . $_SERVER['QUERY_STRING'] . '&tab=' . $item->action);
                    return '<a href="'. $url .'">' . $this->getActionTitle($item->$column_name) . '</a>';
                }

                return 'N/A';

            case 'parameters':
                $view = new Views(Users::$dir . '/classes/views');
                $view->set('siteUrl', $siteUrl);
                $view->set('action', $item->action);

                $parameters = json_decode($item->parameters, true);
                unset($parameters['options']);

                $parameters = ($item->action == 'listings.search') ? $this->_makeFiltersUserReadable($parameters) : $parameters;

                $view->set('parameters', $parameters);
                $view->set('listingUrlPattern', ListingEntity::getShortUrl('%listingId%', '%market%'));

                $listingUrls = array();

                if (isset($parameters['ids']) && isset($parameters['market']))
                {
                    foreach ($parameters['ids'] as $id)
                    {
                        $listingUrls[$id] = $this->_getListingUrl($id, $parameters['market'], $siteUrl);
                    }
                }

                $view->set('listingUrls', $listingUrls);

                return $view->render('actions');

            case 'timestamp':

                $date = WPHelper::toDateTime($item->$column_name);

                return sprintf('<a href="%s">%s</a>', add_query_arg('timeframe', $item->$column_name), $date);

            case 'sessionId':

                $email = null;

                if (isset($item->user) && is_object($item->user))
                {
                    $email = $item->user->email;
                }
                else if (isset($item->user) && !empty($item->user))
                {
                    $email = $item->user;
                }

                if ($email && isset($item->$column_name))
                {
                    return sprintf('<a href="%s">%s</a>', $this->_getUserSession($email, $item->$column_name), 'View User Session');
                }

                return null;
        }
    }


    function get_columns()
    {
        $columns = array(
            'user'      => __('User',       'hji-users'),
            'action'    => __('Action',     'hji-users'),
            'parameters'=> __('Parameters', 'hji-users'),
            'timestamp' => __('Date',       'hji-users'),
            'sessionId' => __('User Session','hji-users'),
        );

        if (isset($_GET['tab']) && $_GET['tab'] != 'all')
        {
            unset($columns['action']);
        }

        return $columns;
    }


    function get_sortable_columns()
    {
        $sortable_columns = array(
            'timestamp' => array('timestamp',false)
        );

        return $sortable_columns;
    }


    function prepare_items()
    {
        $data = $this->getData();

        if (is_wp_error($data))
        {
            return $data;
        }

        // Set table items
//        $this->items = json_decode(json_encode($data->actions), true);
        $this->items = $data->actions;

        // Set column headers
        $this->_column_headers = $this->get_column_info();

        $pagination = array(
            'total_items' => $data->total,
            'total_pages' => $data->paging->count,
            'per_page'    => $data->paging->size,
        );

        $this->set_pagination_args($pagination);
    }


    function getActionTitle($action)
    {
        if (isset($this->actions[$action]))
        {
            return $this->actions[$action];
        }
        else
        {
            $str = str_replace('.', ' ', $action);
            $str = str_replace('listings get', 'listing details', $str);
            $title = str_replace('get', 'lookup', $str);
            return ucwords($title);
        }

        return $action;
    }


    private function _getUserUrl($email)
    {
        $params = array();

        $default = array(
            'page'      => 'hji-users',
            'action'    => 'view',
            'tab'       => 'user',
            'email'     => null
        );

        if (!is_array($email))
        {
            $params['email'] = $email;
        }
        else if (is_array($email))
        {
            $params = $email;
        }

        $params = array_merge($default, $params);

        return admin_url('admin.php?' . http_build_query($params));
    }


    private function _getUserSession($email, $sessionId)
    {
        $params['email'] = $email;
        $params['tab']   = 'analytics';
        $params['item']  = 'sessions';
        $params['ssid']  = $sessionId;

        return $this->_getUserUrl($params);
    }


    private function _makeFiltersUserReadable(array $filters)
    {
        $result = array();

        if (!empty($filters))
        {
            foreach ($filters as $filter => $value)
            {
                if (is_array($value) && $this->_isAssocArray($value))
                {
                    $result = array_merge($result, $this->_makeFiltersUserReadable($value));
                }
                else
                {
                    if (is_array($value))
                    {
                        $value = implode(', ', $value);
                    }

                    $value = ($filter == 'market') ? strtoupper($value) : ((ctype_lower($value)) ? ucwords($value) : $value);
                    $label = FieldLabels::getLabel($filter);
                    $result[] = array(
                        'label' => ($label) ? $label : $filter,
                        'value' => $value
                    );
                }
            }
        }

        return $result;
    }


    private function _isAssocArray($array)
    {
        return array_keys($array) !== range(0, count($array) - 1);
    }


    private function _getListingUrl($listingId, $market, $siteUrl)
    {
        $listingUrl = ListingEntity::getShortUrl($listingId, $market);

        $_siteUrl       = parse_url($siteUrl);
        $_listingUrl    = parse_url($listingUrl);

        // Since Slipstream only records domain name without protocol,
        // parse_url() will return no host, and instead, host value
        // will be under path property

        $siteDomain = (isset($_siteUrl['host'])) ? $_siteUrl['host'] : $_siteUrl['path'];

        if ($siteDomain != $_listingUrl['host'])
        {
            return str_replace($_listingUrl['host'], $siteDomain, $listingUrl);
        }

        return $listingUrl;
    }
}
HJI WP Membership Code Reference API documentation generated by ApiGen