function userlistAction() { // assuming that the CleanQuery plugin has already stripped empty parameters if (isset($_GET) && is_array($_GET) && !empty($_GET)) { $path = ''; array_walk($_GET, array('AccountController', 'encodeParam')); foreach ($_GET as $key => $value) { if ($key != 'filter' && $key != 'submit_user_filter') { $path .= '/' . $key . '/' . $value; } } $uri = $_SERVER['REQUEST_URI']; $path = substr($uri, 0, strpos($uri, '?')) . $path; $this->getResponse()->setRedirect($path, $this->_permanent ? 301 : 302); $this->getResponse()->sendResponse(); return; } // Get requests $params = $this->getRequest()->getParams(); // Get page nummber and items per page $page = isset($params['page']) ? $params['page'] : 1; $count = isset($params['count']) ? $params['count'] : 10; $order = isset($params['order']) ? $params['order'] : null; $list = isset($params['list']) ? $params['list'] : null; if ($order == "username") { $order = "usr.login_name_usr"; } elseif ($order == "joined") { $order = "usr.created_usr"; } elseif ($order == "login") { $order = "usr.last_login_usr"; } elseif ($order == "content") { $order = "contentCount"; } else { $order = null; } if ($list != "asc" && $list != "desc") { $list = null; } if (isset($order) && isset($list)) { $sort = $order . " " . $list; } // Filter form data $formData['username'] = isset($params['username']) ? $params['username'] : ''; $formData['city'] = isset($params['city']) ? $params['city'] : ''; //$formData['country'] = isset($params['country']) ? $params['country'] : 0; $formData['contentlimit'] = isset($params['contentlimit']) ? $params['contentlimit'] : null; $formData['counttype'] = isset($params['counttype']) ? $params['counttype'] : 0; // Get country listing $userCountry = new Default_Model_UserCountry(); $formData['countryList'] = $userCountry->getCountryList(); // Reorder country listing and add all countries option $temp[0] = $this->view->translate('userlist-filter-country-all'); foreach ($formData['countryList'] as $k => $v) { $temp[$v['id_ctr']] = $v['name_ctr']; } $formData['countryList'] = $temp; //Set array patterns $pat_sql = array("%", "_"); $pat_def = array("*", "?"); //Replace * and ? characters $formData['username'] = str_replace($pat_def, $pat_sql, $formData['username']); $formData['city'] = str_replace($pat_def, $pat_sql, $formData['city']); // Get user listing $user = new Default_Model_User(); $userListing = $user->getUserListing($formData, $page, $count, $sort); $userIdList = array(); foreach ($userListing as $u) { array_push($userIdList, $u['id_usr']); } // Get total content count $userCount = $user->getUserCountBySearch($formData); // Calculate total page count $pageCount = ceil($userCount / $count); // User list search form $userSearch = new Default_Form_UserListSearchForm(null, $formData); $url = $this->_urlHelper->url(array('controller' => 'account', 'action' => 'userlist', 'language' => $this->view->language), 'lang_default', true); $userSearch->setAction($url)->setMethod('get'); $this->view->userSearch = $userSearch; // Custom pagination to fix memory error on large amount of data $paginator = new Zend_View(); $paginator->setScriptPath('../application/views/scripts'); $paginator->pageCount = $pageCount; $paginator->currentPage = $page; $paginator->pagesInRange = 10; /* if (!empty($userListing)) { // Content pagination $paginator = Zend_Paginator::factory($userListing); // Set items per page $paginator->setItemCountPerPage($count); // Get items by page $paginator->getItemsByPage($page); // Set current page number $paginator->setCurrentPageNumber($page); Zend_Paginator::setDefaultScrollingStyle('Sliding'); $view = new Zend_View(); $paginator->setView($view); // Set paginator for view $this->view->userListPaginator = $paginator; } // end if */ // Set to view $this->view->userPaginator = $paginator; $this->view->userListData = $userListing; $this->view->userList = $userIdList; $this->view->count = $count; $this->view->userCount = $userCount; $this->view->page = $page; }
function userlistAction() { // assuming that the CleanQuery plugin has already stripped empty parameters if (isset($_GET) && is_array($_GET) && !empty($_GET)) { $path = ''; array_walk($_GET, array('AccountController', 'encodeParam')); foreach ($_GET as $key => $value) { if ($key != 'filter' && $key != 'submit_user_filter') { $path .= '/' . $key . '/' . $value; } } $uri = $_SERVER['REQUEST_URI']; $path = substr($uri, 0, strpos($uri, '?')) . $path; $this->getResponse()->setRedirect($path, $this->_permanent ? 301 : 302); $this->getResponse()->sendResponse(); return; } $url_array = array('controller' => 'account', 'action' => 'userlist', 'language' => $this->view->language); $url = $this->_urlHelper->url($url_array, 'lang_default', true); // Get requests $params = $this->getRequest()->getParams(); // Get page nummber and items per page $page = isset($params['page']) ? $params['page'] : 1; $count = isset($params['count']) ? $params['count'] : 10; $order = isset($params['order']) ? $params['order'] : null; $list = isset($params['list']) ? $params['list'] : null; if ($list != "asc" && $list != "desc") { $list = null; } // Filter form data $formData['username'] = isset($params['username']) ? $params['username'] : ''; $formData['city'] = isset($params['city']) ? $params['city'] : ''; $formData['country'] = isset($params['country']) ? $params['country'] : 0; $formData['group'] = isset($params['group']) ? $params['group'] : ''; $formData['exactg'] = isset($params['exactg']) ? $params['exactg'] : 0; //$formData['contentlimit'] = isset($params['contentlimit']) ? $params['contentlimit'] : null; //$formData['counttype'] = isset($params['counttype']) ? $params['counttype'] : 0; if ($list == "asc") { $listName = "ascending"; } elseif ($list == "desc") { $listName = "descending"; } else { $listName = "ascending"; } $orderList = array("username" => $this->view->translate('userlist-orderlist-username', $listName), "login" => $this->view->translate('userlist-orderlist-login', $listName), "joined" => $this->view->translate('userlist-orderlist-joined', $listName), "content" => $this->view->translate('userlist-orderlist-content', $listName), "views" => $this->view->translate('userlist-orderlist-views', $listName), "rating" => $this->view->translate('userlist-orderlist-rating', $listName), "popularity" => $this->view->translate('userlist-orderlist-popularity', $listName), "comments" => $this->view->translate('userlist-orderlist-comments', $listName)); $userCountries = null; $userCities = null; $userLocations = $this->getAllCitiesAndCountries(); if (isset($userLocations['countries'])) { $userCountries = json_encode($userLocations['countries']); } if (isset($userLocations['cities'])) { $userCities = json_encode($userLocations['cities']); } $formData['countries'][] = $this->view->translate('userlist-filter-country-all'); if (isset($userLocations['countries'])) { foreach ($userLocations['countries'] as $country) { $formData['countries'][$country['countryIso']] = $country['name']; } } $pat_sql = array("%", "_"); $pat_def = array("*", "?"); //Replace * and ? characters to % and _ characters for mysql LIKE $formData['username'] = str_replace($pat_def, $pat_sql, $formData['username']); $formData['city'] = str_replace($pat_def, $pat_sql, $formData['city']); $formData['group'] = str_replace($pat_def, $pat_sql, $formData['group']); $userModel = new Default_Model_User(); //variable initializations (to avoid notice errors :p) $pageCount = null; $userContents = null; $listSize = null; $userIdList = null; $userListing = null; $topNames = null; $topList = null; $topCountry = null; $topGroup = null; $topCity = null; //This is code to fetch search results if ($url != $this->_urlHelper->url()) { $listSize = 1; // Get user listing $userListing = $userModel->getUserListing($formData, $page, $count, $order, $list, $listSize); $userContents = array(); $cache = Zend_Registry::get('short_cache'); foreach ($userListing as $user) { // Get cache from registry if (is_array($user['contents']) && sizeof($user['contents']) > 0) { //Content ID:s are saved to cache which is used by ajax in user search $cache->save($user['contents'], 'UserContentsList_' . $user['id_usr']); $contentsArray = $userModel->getUserContentList($user['contents'], 3); } else { $contentsArray = null; } if (!is_array($contentsArray) || sizeof($contentsArray) < 1) { $userContents[$user['id_usr']] = array(); } else { $userContents[$user['id_usr']] = $contentsArray; } } $userIdList = array(); foreach ($userListing as $u) { $userIdList[] = $u['id_usr']; } // Calculate total page count $pageCount = ceil($listSize / $count); } else { //Here is Top list code :) $auth = Zend_Auth::getInstance(); $userid = null; if ($auth->hasIdentity()) { $userid = $auth->getIdentity()->user_id; } $topListClasses = $userModel->getUserTopList(); $topListUsers = $topListClasses['Users']; $topListCountries = $topListClasses['Countries']; $topListCities = $topListClasses['Cities']; $topListGroups = $topListClasses['Groups']; if ($userid) { $topListUsers->addUser($userid); } $topList = $topListUsers->getTopList(); if ($userid) { $topListCountries->addUser($userid); } $topCountry = $topListCountries->getTopList(); if ($userid) { $topListCities->addUser($userid); } $topCity = $topListCities->getTopList(); $topGroup = $topListGroups->getTopList(); } if (!$topNames) { $topNames[] = "Count"; $topNames[] = "View"; $topNames[] = "Popularity"; $topNames[] = "Rating"; $topNames[] = "Comment"; $topNames[] = "Amount"; } $topListBoxes = array('Users' => $topList, 'Groups' => $topGroup, 'Cities' => $topCity, 'Countries' => $topCountry); //print_r($topListBoxes);die; // User list search form $userSearch = new Default_Form_UserListSearchForm(null, $formData); $order = isset($order) ? $order : "username"; $list = isset($list) ? $list : "asc"; $form_url_path = array_merge($url_array, array('order' => $order, 'list' => $list)); $form_url = $this->_urlHelper->url($form_url_path, 'lang_default', true); $userSearch->setAction($form_url)->setMethod('get'); $parsedUrl = ""; foreach ($params as $key => $param) { if ($key == "controller" || $key == "action" || $key == "module" || $key == "language") { continue; } $parsedUrl .= "/{$key}/{$param}"; } $parsedUrl = str_replace("%", "%25", $parsedUrl); $this->view->userSearch = $userSearch; // Custom pagination to fix memory error on large amount of data $paginator = new Zend_View(); $paginator->setScriptPath('../application/views/scripts'); $paginator->pageCount = $pageCount; $paginator->currentPage = $page; $paginator->pagesInRange = 10; // Set to view $this->view->userPaginator = $paginator; $this->view->userListData = $userListing; $this->view->userList = $userIdList; $this->view->count = $count; $this->view->userCount = $listSize; $this->view->list = $listName; $this->view->top = $topList; $this->view->topListBoxes = $topListBoxes; $this->view->topCountry = $topCountry; $this->view->parsedUrl = $parsedUrl; $this->view->topNames = $topNames; $this->view->page = $page; $this->view->order = $orderList; $this->view->lastOrder = $order; $this->view->cities = $userCities; $this->view->countries = $userCountries; $this->view->userContents = $userContents; }