public function execute() { $tp = SJB_System::getTemplateProcessor(); $listing_types = SJB_ListingTypeManager::getAllListingTypesInfo(); $countListings = array(); foreach ($listing_types as $type) { $requested_data = array(); $requested_data['action'] = 'search'; $requested_data['active']['equal'] = '1'; $requested_data['listing_type']['equal'] = $type['id']; $requireApprove = SJB_ListingTypeManager::getWaitApproveSettingByListingType($type['sid']); if ($requireApprove) { $requested_data['status']['equal'] = 'approved'; } $listing = new SJB_Listing(array(), $type['sid']); $id_alias_info = $listing->addIDProperty(); $listing->addActivationDateProperty(); $username_alias_info = $listing->addUsernameProperty(); $listing_type_id_info = $listing->addListingTypeIDProperty(); $listing->addCompanyNameProperty(); if ($type['id'] == 'Resume') { $requested_data['access_type'] = array('accessible' => SJB_UserManager::getCurrentUserSID()); } $criteria = SJB_SearchFormBuilder::extractCriteriaFromRequestData($requested_data, $listing); $aliases = new SJB_PropertyAliases(); $aliases->addAlias($id_alias_info); $aliases->addAlias($username_alias_info); $aliases->addAlias($listing_type_id_info); $searcher = new SJB_ListingSearcher(); $countListings[$type['id']] = $searcher->countRowsByCriteria($criteria, $aliases); } $tp->assign('listings_types', $countListings); $tp->display('count_listings.tpl'); }
public static function getExportPropertyAliases() { $property_aliases = new SJB_PropertyAliases(); $property_aliases->addAlias(array('id' => 'user_group', 'real_id' => 'user_group_sid', 'transform_function' => 'SJB_UserGroupManager::getUserGroupNameBySID')); $property_aliases->addAlias(array('id' => 'product', 'real_id' => 'sid', 'transform_function' => 'SJB_ContractManager::getAllContractsInfoByUserSID')); return $property_aliases; }
public static function getExportPropertyAliases() { $property_aliases = new SJB_PropertyAliases(); $property_aliases->addAlias(array('id' => 'listing_type', 'real_id' => 'listing_type_sid', 'transform_function' => 'SJB_ListingTypeManager::getListingTypeIDBySID')); $property_aliases->addAlias(array('id' => 'username', 'real_id' => 'user_sid', 'transform_function' => 'SJB_UserManager::getUserNameByUserSID')); $property_aliases->addAlias(array('id' => 'extUserID', 'real_id' => 'user_sid', 'transform_function' => 'SJB_UserManager::getExtUserIDByUserSID')); return $property_aliases; }
public function execute() { if (!function_exists('_filter_data')) { function _filter_data(&$array, $key, $pattern) { if (isset($array[$key])) { if (!preg_match($pattern, $array[$key])) { unset($array[$key]); } } } } _filter_data($_REQUEST, 'sorting_field', "/^[_\\w\\d]+\$/"); _filter_data($_REQUEST, 'sorting_order', "/(^DESC\$)|(^ASC\$)/i"); _filter_data($_REQUEST, 'default_sorting_field', "/^[_\\w\\d]+\$/"); _filter_data($_REQUEST, 'default_sorting_order', "/(^DESC\$)|(^ASC\$)/i"); $tp = SJB_System::getTemplateProcessor(); if (!SJB_UserManager::isUserLoggedIn()) { $errors['NOT_LOGGED_IN'] = true; $tp->assign("ERRORS", $errors); $tp->display("error.tpl"); return; } $this->defineRequestedListingTypeID(); if (!$this->listingTypeID) { $tp->assign('listingTypes', SJB_ListingTypeManager::getAllListingTypesInfo()); $tp->display('my_available_listing_types.tpl'); return; } $this->listingTypeSID = SJB_ListingTypeManager::getListingTypeSIDByID($this->listingTypeID); if (!$this->listingTypeSID) { SJB_HelperFunctions::redirect(SJB_HelperFunctions::getSiteUrl() . '/my-listings/'); return; } $currentUser = SJB_UserManager::getCurrentUser(); $userSID = $currentUser->getSID(); $this->requestCriteria = array('user_sid' => array('equal' => $userSID), 'listing_type_sid' => array('equal' => $this->listingTypeSID)); $acl = SJB_Acl::getInstance(); if ($currentUser->isSubuser()) { $subUserInfo = $currentUser->getSubuserInfo(); if (!$acl->isAllowed('subuser_manage_listings', $subUserInfo['sid'])) { $this->requestCriteria['subuser_sid'] = array('equal' => $subUserInfo['sid']); } } SJB_ListingManager::deletePreviewListingsByUserSID($userSID); $searcher = new SJB_ListingSearcher(); // to save criteria in the session different from search_results $criteriaSaver = new SJB_ListingCriteriaSaver('MyListings'); if (isset($_REQUEST['restore'])) { $_REQUEST = array_merge($_REQUEST, $criteriaSaver->getCriteria()); } if (isset($_REQUEST['listings'])) { $listingsSIDs = $_REQUEST['listings']; if (isset($_REQUEST['action_deactivate'])) { $this->executeAction($listingsSIDs, 'deactivate'); } elseif (isset($_REQUEST['action_activate'])) { $redirectToShoppingCard = false; $activatedListings = array(); foreach ($listingsSIDs as $listingSID => $value) { $listingInfo = SJB_ListingManager::getListingInfoBySID($listingSID); $productInfo = !empty($listingInfo['product_info']) ? unserialize($listingInfo['product_info']) : array(); if ($listingInfo['active']) { continue; } else { if (SJB_ListingManager::getIfListingHasExpiredBySID($listingSID) && isset($productInfo['renewal_price']) && $productInfo['renewal_price'] > 0) { $redirectToShoppingCard = true; $listingTypeId = SJB_ListingTypeManager::getListingTypeIDBySID($listingInfo['listing_type_sid']); $newProductName = "Reactivation of \"{$listingInfo['Title']}\" {$listingTypeId}"; $newProductInfo = SJB_ShoppingCart::createInfoForCustomProduct($userSID, $productInfo['product_sid'], $listingSID, $productInfo['renewal_price'], $newProductName, 'activateListing'); SJB_ShoppingCart::createCustomProduct($newProductInfo, $userSID); } else { if ($listingInfo['checkouted'] == 0) { $redirectToShoppingCard = true; } else { if (SJB_ListingManager::activateListingBySID($listingSID, false)) { $listing = SJB_ListingManager::getObjectBySID($listingSID); SJB_Notifications::sendUserListingActivatedLetter($listing, $listing->getUserSID()); $activatedListings[] = $listingSID; } } } } } SJB_BrowseDBManager::addListings($activatedListings); if ($redirectToShoppingCard) { $shoppingUrl = SJB_System::getSystemSettings('SITE_URL') . '/shopping-cart/'; SJB_HelperFunctions::redirect($shoppingUrl); } } else { if (isset($_REQUEST['action_delete'])) { $this->executeAction($listingsSIDs, 'delete'); $allowedPostBeforeCheckout = SJB_Settings::getSettingByName('allow_to_post_before_checkout'); foreach ($listingsSIDs as $listingSID => $value) { if ($allowedPostBeforeCheckout == true) { $this->deleteCheckoutedListingFromShopCart($listingSID, $userSID); } } } elseif (isset($_REQUEST['action_sendToApprove'])) { $processListingsIds = array(); foreach ($listingsSIDs as $listingSID => $value) { $processListingsIds[] = $listingSID; } SJB_ListingManager::setListingApprovalStatus($processListingsIds, 'pending'); } } SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . "/my-listings/{$this->listingTypeID}/"); } $listing = new SJB_Listing(array(), $this->listingTypeSID); $idAliasInfo = $listing->addIDProperty(); $listing->addActivationDateProperty(); $listing->addKeywordsProperty(); $listing->addPicturesProperty(); $listingTypeIdAliasInfo = $listing->addListingTypeIDProperty(); $sortingFields = array(); $innerJoin = array(); $sortingField = SJB_Request::getVar("sorting_field", null); $sortingOrder = SJB_Request::getVar("sorting_order", null); if (isset($sortingField, $sortingOrder)) { $orderInfo = array('sorting_field' => $sortingField, 'sorting_order' => $sortingOrder); } else { $orderInfo = $criteriaSaver->getOrderInfo(); } if ($orderInfo['sorting_field'] == 'applications') { $innerJoin['applications'] = array('count' => 'count(`applications`.id) as appCount', 'join' => 'LEFT JOIN', 'join_field' => 'listing_id', 'join_field2' => 'sid', 'main_table' => 'listings'); $sortingFields['appCount'] = $orderInfo['sorting_order']; $searcher->setGroupByField(array('listings' => 'sid')); } else { if ($orderInfo['sorting_field'] == 'id') { $sortingFields['sid'] = $orderInfo['sorting_order']; } else { if ($orderInfo['sorting_field'] == 'subuser_sid') { $innerJoin['users'] = array('join' => 'LEFT JOIN', 'join_field' => 'sid', 'join_field2' => 'subuser_sid', 'main_table' => 'listings'); $sortingFields['username'] = $orderInfo['sorting_order']; } else { $property = $listing->getProperty($sortingField); if (!empty($property) && $property->isSystem()) { $sortingFields[$orderInfo['sorting_field']] = $orderInfo['sorting_order']; } else { $sortingFields['activation_date'] = 'DESC'; } } } } $this->requestCriteria['sorting_field'] = $orderInfo['sorting_field']; $this->requestCriteria['sorting_order'] = $orderInfo['sorting_order']; $criteria = SJB_SearchFormBuilder::extractCriteriaFromRequestData(array_merge($_REQUEST, $this->requestCriteria), $listing); $aliases = new SJB_PropertyAliases(); $aliases->addAlias($idAliasInfo); $aliases->addAlias($listingTypeIdAliasInfo); $foundListingsSIDs = $searcher->getObjectsSIDsByCriteria($criteria, $aliases, $sortingFields, $innerJoin); $searchFormBuilder = new SJB_SearchFormBuilder($listing); $searchFormBuilder->registerTags($tp); $searchFormBuilder->setCriteria($criteria); // получим информацию о имеющихся листингах $listingsInfo = array(); $currentUserInfo = SJB_UserManager::getCurrentUserInfo(); $contractInfo['extra_info']['listing_amount'] = 0; if ($acl->isAllowed('post_' . $this->listingTypeID)) { $permissionParam = $acl->getPermissionParams('post_' . $this->listingTypeID); if (empty($permissionParam)) { $contractInfo['extra_info']['listing_amount'] = 'unlimited'; } else { $contractInfo['extra_info']['listing_amount'] = $permissionParam; } } $currentUser = SJB_UserManager::getCurrentUser(); $contractsSIDs = $currentUser->getContractID(); $listingsInfo['listingsNum'] = SJB_ContractManager::getListingsNumberByContractSIDsListingType($contractsSIDs, $this->listingTypeID); $listingsInfo['listingsMax'] = $contractInfo['extra_info']['listing_amount']; if ($listingsInfo['listingsMax'] === 'unlimited') { $listingsInfo['listingsLeft'] = 'unlimited'; } else { $listingsInfo['listingsLeft'] = $listingsInfo['listingsMax'] - $listingsInfo['listingsNum']; $listingsInfo['listingsLeft'] = $listingsInfo['listingsLeft'] < 0 ? 0 : $listingsInfo['listingsLeft']; } $tp->assign('listingTypeID', $this->listingTypeID); $tp->assign('listingTypeName', SJB_ListingTypeManager::getListingTypeNameBySID($this->listingTypeSID)); $tp->assign('listingsInfo', $listingsInfo); $tp->display('my_listings_form.tpl'); $page = SJB_Request::getVar('page', 1); $listingsPerPage = $criteriaSaver->getListingsPerPage(); //save 'listings per page' in the session if (empty($listingsPerPage)) { $listingsPerPage = 10; } $listingsPerPage = SJB_Request::getVar('listings_per_page', $listingsPerPage); $criteriaSaver->setSessionForListingsPerPage($listingsPerPage); $criteriaSaver->setSessionForCurrentPage($page); $criteriaSaver->setSessionForCriteria($_REQUEST); $criteriaSaver->setSessionForOrderInfo($orderInfo); $criteriaSaver->setSessionForObjectSIDs($foundListingsSIDs); // get Applications $appsGroups = SJB_Applications::getAppGroupsByEmployer($currentUserInfo['sid']); $apps = array(); foreach ($appsGroups as $group) { $apps[$group['listing_id']] = $group['count']; } $searchCriteriaStructure = $criteriaSaver->createTemplateStructureForCriteria(); $listingSearchStructure = $criteriaSaver->createTemplateStructureForSearch(); /**************** P A G I N G *****************/ if ($listingSearchStructure['current_page'] > $listingSearchStructure['pages_number']) { $listingSearchStructure['current_page'] = $listingSearchStructure['pages_number']; } if ($listingSearchStructure['current_page'] < 1) { $listingSearchStructure['current_page'] = 1; } $sortedFoundListingsSIDsByPages = array_chunk($foundListingsSIDs, $listingSearchStructure['listings_per_page'], true); /************* S T R U C T U R E **************/ $listingsStructure = array(); $listingStructureMetaData = array(); if (isset($sortedFoundListingsSIDsByPages[$listingSearchStructure['current_page'] - 1])) { foreach ($sortedFoundListingsSIDsByPages[$listingSearchStructure['current_page'] - 1] as $sid) { $listing = SJB_ListingManager::getObjectBySID($sid); $listing->addPicturesProperty(); $listingStructure = SJB_ListingManager::createTemplateStructureForListing($listing); $listingsStructure[$listing->getID()] = $listingStructure; if (isset($listingStructure['METADATA'])) { $listingStructureMetaData = array_merge($listingStructureMetaData, $listingStructure['METADATA']); } } } /*************** D I S P L A Y ****************/ $metaDataProvider = SJB_ObjectMother::getMetaDataProvider(); $metadata = array(); $metadata['listing'] = $metaDataProvider->getMetaData($listingStructureMetaData); $waitApprove = SJB_ListingTypeManager::getWaitApproveSettingByListingType($this->listingTypeSID); $tp->assign('show_rates', SJB_Settings::getSettingByName('show_rates')); $tp->assign('show_comments', SJB_Settings::getSettingByName('show_comments')); $tp->assign('METADATA', $metadata); $tp->assign('sorting_field', $listingSearchStructure['sorting_field']); $tp->assign('sorting_order', $listingSearchStructure['sorting_order']); $tp->assign('property', $this->getSortableProperties()); $tp->assign('listing_search', $listingSearchStructure); $tp->assign('search_criteria', $searchCriteriaStructure); $tp->assign('listings', $listingsStructure); $tp->assign('waitApprove', $waitApprove); $tp->assign('apps', $apps); $hasSubusersWithListings = false; $subusers = SJB_UserManager::getSubusers($currentUserInfo['sid']); foreach ($subusers as $subuser) { if ($acl->isAllowed('subuser_add_listings', $subuser['sid']) || $acl->isAllowed('subuser_manage_listings', $subuser['sid'])) { $hasSubusersWithListings = true; break; } } $tp->assign('hasSubusersWithListings', $hasSubusersWithListings); $tp->display('my_listings.tpl'); }
public function execute() { $tp = SJB_System::getTemplateProcessor(); $userInfo = SJB_Authorization::getCurrentUserInfo(); if (empty($userInfo)) { $tp->assign("ERROR", "NOT_LOGIN"); $tp->display("../miscellaneous/error.tpl"); return; } $template = SJB_Request::getVar('template', 'my_invoices.tpl'); $searchTemplate = SJB_Request::getVar('search_template', 'invoice_search_form.tpl'); /***************************************************************/ $_REQUEST['action'] = 'search'; $_REQUEST['user_sid']['equal'] = $userInfo['sid']; if (!isset($_REQUEST['date'])) { $i18n = SJB_ObjectMother::createI18N(); $_REQUEST['date']['not_less'] = $i18n->getDate(date('Y-m-d', time() - 30 * 24 * 60 * 60)); $_REQUEST['date']['not_more'] = $i18n->getDate(date('Y-m-d')); } $invoice = new SJB_Invoice(array()); $invoice->addProperty(array('id' => 'username', 'type' => 'string', 'value' => '', 'is_system' => true)); $aliases = new SJB_PropertyAliases(); $aliases->addAlias(array('id' => 'username', 'real_id' => 'user_sid', 'transform_function' => 'SJB_UserDBManager::getUserSIDsLikeSearchString')); $searchFormBuilder = new SJB_SearchFormBuilder($invoice); $criteriaSaver = new SJB_InvoiceCriteriaSaver(); if (isset($_REQUEST['restore'])) { $_REQUEST = array_merge($_REQUEST, $criteriaSaver->getCriteria()); } $criteria = $searchFormBuilder->extractCriteriaFromRequestData($_REQUEST, $invoice); $searchFormBuilder->setCriteria($criteria); $searchFormBuilder->registerTags($tp); $tp->display($searchTemplate); /********************** S O R T I N G *********************/ $criteria = $searchFormBuilder->extractCriteriaFromRequestData($_REQUEST, $invoice); $searcher = new SJB_InvoiceSearcher(); $foundInvoices = array(); $foundInvoicesInfo = array(); if (SJB_Request::getVar('action', '') == 'search') { $foundInvoices = $searcher->getObjectsByCriteria($criteria, $aliases); $criteriaSaver->setSession($_REQUEST, $searcher->getFoundObjectSIDs()); } elseif (isset($_REQUEST['restore'])) { $foundInvoices = $criteriaSaver->getObjectsFromSession(); } foreach ($foundInvoices as $id => $invoice) { $invoice->addProperty(array('id' => 'sid', 'type' => 'string', 'value' => $invoice->getSID())); $subUserSid = $invoice->getPropertyValue('subuser_sid'); if ($subUserSid) { $payer = SJB_UserManager::getUserNameByUserSID($subUserSid); } else { $userSid = $invoice->getPropertyValue('user_sid'); $payer = SJB_UserManager::getUserNameByUserSID($userSid); } $invoice->addProperty(array('id' => 'payer', 'type' => 'string', 'value' => $payer)); $foundInvoices[$id] = $invoice; $foundInvoicesInfo[$invoice->getSID()] = SJB_InvoiceManager::getInvoiceInfoBySID($invoice->getSID()); } $sortingField = SJB_Request::getVar('sorting_field', 'sid'); $sortingOrder = SJB_Request::getVar('sorting_order', 'DESC'); if ($invoice->propertyIsSet($sortingField)) { $sortArray = array(); $sortedFoundInvoicesInfo = array(); foreach ($foundInvoices as $id => $invoice) { $sortArray[$id] = $invoice->getPropertyValue($sortingField); } if ($sortingOrder == 'ASC') { asort($sortArray); } elseif ($sortingOrder == 'DESC') { arsort($sortArray); } foreach ($sortArray as $id => $value) { $sortedFoundInvoicesInfo[$id] = $foundInvoicesInfo[$id]; } } else { $sortedFoundInvoicesInfo = $foundInvoicesInfo; } $formCollection = new SJB_FormCollection($foundInvoices); $formCollection->registerTags($tp); $subUsers = SJB_UserManager::getSubUsers($userInfo['sid']); $isSubUserExists = !empty($subUsers) ? true : false; $tp->assign('isSubUserExists', $isSubUserExists); $tp->assign('sorting_field', $sortingField); $tp->assign('sorting_order', $sortingOrder); $tp->assign('found_invoices', $sortedFoundInvoicesInfo); $tp->display($template); }
public function execute() { $tp = SJB_System::getTemplateProcessor(); $template = SJB_Request::getVar('template', 'manage_invoices.tpl'); $searchTemplate = SJB_Request::getVar('search_template', 'invoice_search_form.tpl'); $action = SJB_Request::getVar('action_name'); if (!empty($action)) { $invoicesSIDs = SJB_Request::getVar('invoices', array()); $_REQUEST['restore'] = 1; switch ($action) { case 'paid': foreach (array_keys($invoicesSIDs) as $invoiceSID) { $invoice = SJB_InvoiceManager::getObjectBySID($invoiceSID); $userSID = $invoice->getPropertyValue('user_sid'); if (SJB_UserManager::isUserExistsByUserSid($userSID)) { $items = $invoice->getPropertyValue('items'); $productSIDs = $items['products']; foreach ($productSIDs as $key => $productSID) { if ($productSID != -1) { if (SJB_ProductsManager::isProductExists($productSID)) { $productInfo = $invoice->getItemValue($key); $listingNumber = $productInfo['qty']; $contract = new SJB_Contract(array('product_sid' => $productSID, 'numberOfListings' => $listingNumber, 'is_recurring' => $invoice->isRecurring())); $contract->setUserSID($userSID); $contract->setPrice($items['amount'][$key]); if ($contract->saveInDB()) { SJB_ListingManager::activateListingsAfterPaid($userSID, $productSID, $contract->getID(), $listingNumber); SJB_ShoppingCart::deleteItemFromCartBySID($productInfo['shoppingCartRecord'], $userSID); $bannerInfo = $productInfo['banner_info']; if ($productInfo['product_type'] == 'banners' && !empty($bannerInfo)) { $bannersObj = new SJB_Banners(); $bannersObj->addBanner($bannerInfo['title'], $bannerInfo['link'], $bannerInfo['bannerFilePath'], $bannerInfo['sx'], $bannerInfo['sy'], $bannerInfo['type'], 0, $bannerInfo['banner_group_sid'], $bannerInfo, $userSID, $contract->getID()); $bannerGroup = $bannersObj->getBannerGroupBySID($bannerInfo['banner_group_sid']); SJB_AdminNotifications::sendAdminBannerAddedLetter($userSID, $bannerGroup); } if ($contract->isFeaturedProfile()) { SJB_UserManager::makeFeaturedBySID($userSID); } if (SJB_UserNotificationsManager::isUserNotifiedOnSubscriptionActivation($userSID)) { SJB_Notifications::sendSubscriptionActivationLetter($userSID, $productInfo); } } } } else { $type = SJB_Array::getPath($items, 'custom_info/' . $key . '/type'); switch ($type) { case 'featuredListing': $listingId = SJB_Array::getPath($items, 'custom_info/' . $key . '/listing_id'); SJB_ListingManager::makeFeaturedBySID($listingId); break; case 'priorityListing': $listingId = SJB_Array::getPath($items, 'custom_info/' . $key . '/listing_id'); SJB_ListingManager::makePriorityBySID($listingId); break; case 'activateListing': $listingsIds = explode(",", SJB_Array::getPath($items, 'custom_info/' . $key . '/listings_ids')); foreach ($listingsIds as $listingId) { SJB_ListingManager::activateListingBySID($listingId); } break; } } } SJB_Statistics::addStatisticsFromInvoice($invoice); } $total = $invoice->getPropertyValue('total'); if ($total > 0) { $gatewayID = $invoice->getPropertyValue('payment_method'); $gatewayID = isset($gatewayID) ? $gatewayID : 'cash_payment'; $transactionId = md5($invoiceSID . $gatewayID); $transactionInfo = array('transaction_id' => $transactionId, 'invoice_sid' => $invoiceSID, 'amount' => $total, 'payment_method' => $gatewayID, 'user_sid' => $invoice->getPropertyValue('user_sid')); $transaction = new SJB_Transaction($transactionInfo); SJB_TransactionManager::saveTransaction($transaction); } SJB_InvoiceManager::markPaidInvoiceBySID($invoiceSID); SJB_PromotionsManager::markPromotionAsPaidByInvoiceSID($invoiceSID); } SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . "/manage-invoices/"); break; case 'unpaid': foreach (array_keys($invoicesSIDs) as $invoiceSID) { SJB_InvoiceManager::markUnPaidInvoiceBySID($invoiceSID); } SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . '/manage-invoices/'); break; case 'delete': foreach (array_keys($invoicesSIDs) as $invoiceSID) { SJB_InvoiceManager::deleteInvoiceBySID($invoiceSID); } SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . '/manage-invoices/'); break; default: unset($_REQUEST['restore']); break; } } /***************************************************************/ $_REQUEST['action'] = 'search'; $invoice = new SJB_Invoice(array()); $invoice->addProperty(array('id' => 'username', 'type' => 'string', 'value' => '', 'is_system' => true)); $aliases = new SJB_PropertyAliases(); $aliases->addAlias(array('id' => 'username', 'real_id' => 'user_sid', 'transform_function' => 'SJB_UserDBManager::getUserSIDsLikeSearchString')); $searchFormBuilder = new SJB_SearchFormBuilder($invoice); $criteriaSaver = new SJB_InvoiceCriteriaSaver(); if (isset($_REQUEST['restore'])) { $_REQUEST = array_merge($_REQUEST, $criteriaSaver->getCriteria()); } $criteria = $searchFormBuilder->extractCriteriaFromRequestData($_REQUEST, $invoice); $searchFormBuilder->setCriteria($criteria); $searchFormBuilder->registerTags($tp); $tp->display($searchTemplate); /********************** S O R T I N G *********************/ $paginator = new SJB_InvoicePagination(); $innerJoin = false; if ($paginator->sortingField == 'username') { $innerJoin = array('users' => array('sort_field' => array(36 => array('FirstName', 'LastName'), 41 => 'CompanyName'), 'join_field' => 'sid', 'join_field2' => 'user_sid', 'main_table' => 'invoices', 'join' => 'LEFT JOIN')); } $searcher = new SJB_InvoiceSearcher(array('limit' => ($paginator->currentPage - 1) * $paginator->itemsPerPage, 'num_rows' => $paginator->itemsPerPage), $paginator->sortingField, $paginator->sortingOrder, $innerJoin); $foundInvoices = array(); $foundInvoicesInfo = array(); if (SJB_Request::getVar('action', '') == 'search') { $foundInvoices = $searcher->getObjectsByCriteria($criteria, $aliases); if (empty($foundInvoices) && $paginator->currentPage != 1) { SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . '/manage-invoices/?page=1'); } $criteriaSaver->setSession($_REQUEST, $searcher->getFoundObjectSIDs()); } elseif (isset($_REQUEST['restore'])) { $foundInvoices = $criteriaSaver->getObjectsFromSession(); } foreach ($foundInvoices as $id => $invoice) { $subUserSID = $invoice->getPropertyValue('subuser_sid'); if ($subUserSID) { $subUserInfo = SJB_UserManager::getUserInfoBySID($subUserSID); $parentInfo = SJB_UserManager::getUserInfoBySID($subUserInfo['parent_sid']); $username = $parentInfo['CompanyName']; } else { $userSID = $invoice->getPropertyValue('user_sid'); $userInfo = SJB_UserManager::getUserInfoBySID($userSID); if (SJB_UserGroupManager::getUserGroupIDBySID($userInfo['user_group_sid']) == 'Employer') { $username = $userInfo['CompanyName']; } else { if (SJB_UserGroupManager::getUserGroupIDBySID($userInfo['user_group_sid']) == 'JobSeeker') { $username = $userInfo['FirstName'] . ' ' . $userInfo['LastName']; } else { $username = $userInfo['username']; } } } $invoice->addProperty(array('id' => 'sid', 'type' => 'string', 'value' => $invoice->getSID())); $invoice->addProperty(array('id' => 'username', 'type' => 'string', 'value' => $username)); $foundInvoices[$id] = $invoice; $foundInvoicesInfo[$invoice->getSID()] = SJB_InvoiceManager::getInvoiceInfoBySID($invoice->getSID()); $foundInvoicesInfo[$invoice->getSID()]['userExists'] = !empty($username) ? 1 : 0; } /****************************************************************/ $paginator->setItemsCount($searcher->getAffectedRows()); $form_collection = new SJB_FormCollection($foundInvoices); $form_collection->registerTags($tp); $tp->assign('paginationInfo', $paginator->getPaginationInfo()); $tp->assign("found_invoices", $foundInvoicesInfo); $tp->display($template); }
function _getListingSidCollectionFromRequest() { $listing = new SJB_Listing(array(), $this->listing_type_sid); $id_alias_info = $listing->addIDProperty(); $listing->addActivationDateProperty(); $listing->addFeaturedProperty(); $listing->addFeaturedLastShowedProperty(); $username_alias_info = $listing->addUsernameProperty(); $listing_type_id_info = $listing->addListingTypeIDProperty(); $listing->addCompanyNameProperty(); // select only accessible listings by user sid // see SearchCriterion.php, AccessibleCriterion class if ($this->listing_type_id == 'Resume') { $this->requested_data['access_type'] = array('accessible' => SJB_UserManager::getCurrentUserSID()); } $criteria = $this->criteria_saver->getCriteria(); if (isset($this->requested_data['PostedWithin']['multi_like'][0]) || isset($criteria['PostedWithin']['multi_like'][0])) { $within_period = ''; if (isset($this->requested_data['PostedWithin']['multi_like'][0])) { $within_period = $this->requested_data['PostedWithin']['multi_like'][0]; unset($this->requested_data['PostedWithin']['multi_like']); } if (isset($criteria['PostedWithin']['multi_like'][0])) { $within_period = $criteria['PostedWithin']['multi_like'][0]; unset($criteria['PostedWithin']); } $i18n = SJB_I18N::getInstance(); $this->requested_data['activation_date']['not_less'] = $i18n->getDate(date('Y-m-d', strtotime("- {$within_period} days"))); } if (isset($this->requested_data['CompanyName']['multi_like_and'][0]) || isset($criteria['CompanyName']['multi_like_and'][0])) { if (isset($this->requested_data['CompanyName']['multi_like_and'][0])) { $companyName = $this->requested_data['CompanyName']['multi_like_and'][0]; unset($this->requested_data['CompanyName']); } if (isset($criteria['CompanyName']['multi_like_and'][0])) { $companyName = $criteria['CompanyName']['multi_like_and'][0]; unset($criteria['CompanyName']); } $userName = SJB_UserManager::getUserNameByCompanyName($companyName); if ($userName) { $this->requested_data['username']['equal'] = $userName; } } $criteria = SJB_SearchFormBuilder::extractCriteriaFromRequestData(array_merge($criteria, $this->requested_data), $listing); $aliases = new SJB_PropertyAliases(); $aliases->addAlias($id_alias_info); $aliases->addAlias($username_alias_info); $aliases->addAlias($listing_type_id_info); $sortingFields = array(); if ($this->usePriority) { $sortingFields['priority'] = 'DESC'; } $innerJoin = array(); $orderInfo = $this->criteria_saver->getOrderInfo(); if (is_array($orderInfo['sorting_field'])) { $requestedSortingField = array(); foreach ($orderInfo['sorting_field'] as $orderInfoProperty) { $fieldName = strstr($orderInfoProperty, '_', true); $id = $this->getLocationProperty($fieldName, $listing, $orderInfoProperty); if (!empty($id)) { switch ($orderInfoProperty) { case 'Location_State': $innerJoin['states'] = array('stateName' => '`states`.`state_code`', 'join' => 'LEFT JOIN', 'join_field' => 'sid', 'join_field2' => $orderInfoProperty, 'main_table' => 'listings'); break; case 'Location_Country': $innerJoin['countries'] = array('countryName' => '`countries`.`country_name`', 'join' => 'LEFT JOIN', 'join_field' => 'sid', 'join_field2' => $orderInfoProperty, 'main_table' => 'listings'); break; default: break; } $sortingFields[$orderInfoProperty] = $orderInfo['sorting_order']; $requestedSortingField[] = $orderInfoProperty; } $this->requested_data['sorting_field'] = $requestedSortingField; $this->requested_data['sorting_order'] = $orderInfo['sorting_order']; } } else { $property = $listing->getProperty($orderInfo['sorting_field']); if (!empty($property) && $property->isSystem()) { $sortingFields[$orderInfo['sorting_field']] = $orderInfo['sorting_order']; if ($property->getID() == 'CompanyName') { $innerJoin['users'] = array('join' => 'INNER JOIN', 'join_field' => 'sid', 'join_field2' => 'user_sid', 'main_table' => 'listings'); } $this->requested_data['sorting_field'] = $orderInfo['sorting_field']; $this->requested_data['sorting_order'] = $orderInfo['sorting_order']; } else { $sortingFields['activation_date'] = 'DESC'; $this->requested_data['sorting_field'] = 'activation_date'; $this->requested_data['sorting_order'] = 'DESC'; } } $searcher = new SJB_ListingSearcher(); if ($this->listingsLimit) { $searcher->setLimit($this->listingsLimit); } $this->listing_search_structure['sorting_field'] = $this->requested_data['sorting_field']; $this->listing_search_structure['sorting_order'] = $this->requested_data['sorting_order']; return $searcher->getObjectsSIDsByCriteria($criteria, $aliases, $sortingFields, $innerJoin, $this->relevance); }
public function execute() { $tp = SJB_System::getTemplateProcessor(); $template = SJB_Request::getVar('template', 'users.tpl'); $searchTemplate = SJB_Request::getVar('search_template', 'user_search_form.tpl'); $passedParametersViaUri = SJB_UrlParamProvider::getParams(); $userGroupID = $passedParametersViaUri ? array_shift($passedParametersViaUri) : false; $userGroupSID = $userGroupID ? SJB_UserGroupManager::getUserGroupSIDByID($userGroupID) : null; $errors = array(); /********** A C T I O N S W I T H U S E R S **********/ $action = SJB_Request::getVar('action_name'); if (!empty($action)) { $users_sids = SJB_Request::getVar('users', array()); $_REQUEST['restore'] = 1; switch ($action) { case 'approve': foreach ($users_sids as $user_sid => $value) { $username = SJB_UserManager::getUserNameByUserSID($user_sid); SJB_UserManager::setApprovalStatusByUserName($username, 'Approved'); SJB_UserManager::activateUserByUserName($username); SJB_UserDBManager::deleteActivationKeyByUsername($username); if (!SJB_SocialPlugin::getProfileSocialID($user_sid)) { SJB_Notifications::sendUserWelcomeLetter($user_sid); } else { SJB_Notifications::sendUserApprovedLetter($user_sid); } } SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . SJB_Navigator::getURI()); break; case 'reject': $rejection_reason = SJB_Request::getVar('rejection_reason', ''); foreach ($users_sids as $user_sid => $value) { $username = SJB_UserManager::getUserNameByUserSID($user_sid); SJB_UserManager::setApprovalStatusByUserName($username, 'Rejected', $rejection_reason); SJB_UserManager::deactivateUserByUserName($username); SJB_Notifications::sendUserRejectedLetter($user_sid); } SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . SJB_Navigator::getURI()); break; case 'activate': foreach ($users_sids as $user_sid => $value) { $username = SJB_UserManager::getUserNameByUserSID($user_sid); $userinfo = SJB_UserManager::getUserInfoByUserName($username); SJB_UserManager::activateUserByUserName($username); if ($userinfo['approval'] == 'Approved') { SJB_UserDBManager::deleteActivationKeyByUsername($username); SJB_Notifications::sendUserApprovedLetter($user_sid); } } SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . SJB_Navigator::getURI()); break; case 'deactivate': foreach ($users_sids as $user_sid => $value) { $username = SJB_UserManager::getUserNameByUserSID($user_sid); SJB_UserManager::deactivateUserByUserName($username); } SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . SJB_Navigator::getURI()); break; case 'delete': foreach (array_keys($users_sids) as $user_sid) { try { SJB_UserManager::deleteUserById($user_sid); } catch (Exception $e) { $errors[] = $e->getMessage(); } } SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . SJB_Navigator::getURI()); break; case 'send_activation_letter': foreach ($users_sids as $user_sid => $value) { SJB_Notifications::sendUserActivationLetter($user_sid); } SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . SJB_Navigator::getURI()); break; case 'change_product': $productToChange = SJB_Request::getVar('product_to_change'); if (empty($productToChange)) { $productToChange = 0; } foreach ($users_sids as $user_sid => $value) { $user = SJB_UserManager::getObjectBySID($user_sid); // UNSUBSCRIBE selected if ($productToChange == 0) { SJB_ContractManager::deleteAllContractsByUserSID($user_sid); } else { $productInfo = SJB_ProductsManager::getProductInfoBySID($productToChange); $listingNumber = SJB_Request::getVar('number_of_listings', null); if (is_null($listingNumber) && !empty($productInfo['number_of_listings'])) { $listingNumber = $productInfo['number_of_listings']; } $contract = new SJB_Contract(array('product_sid' => $productToChange, 'numberOfListings' => $listingNumber, 'is_recurring' => 0)); $contract->setUserSID($user_sid); $contract->saveInDB(); if ($contract->isFeaturedProfile()) { SJB_UserManager::makeFeaturedBySID($user_sid); } } } SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . SJB_Navigator::getURI()); break; case 'ban_ip': $cantBanUsers = array(); foreach ($users_sids as $user_sid => $value) { $user = SJB_UserManager::getUserInfoBySID($user_sid); if ($user['ip'] && !SJB_IPManager::getBannedIPByValue($user['ip'])) { SJB_IPManager::makeIPBanned($user['ip']); } else { $cantBanUsers[] = $user['username']; } } if ($cantBanUsers) { $tp->assign('cantBanUsers', $cantBanUsers); } else { SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . SJB_Navigator::getURI()); } break; case 'unban_ip': $cantUnbanIPs = array(); foreach ($users_sids as $user_sid => $value) { $user = SJB_UserManager::getUserInfoBySID($user_sid); if ($user['ip'] !== '') { if (SJB_IPManager::getBannedIPByValue($user['ip'])) { SJB_IPManager::makeIPEnabledByValue($user['ip']); } elseif (SJB_UserManager::checkBan($errors, $user['ip'])) { $cantUnbanIPs[] = $user['ip']; } } } if ($cantUnbanIPs) { $tp->assign('rangeIPs', $cantUnbanIPs); } else { SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . SJB_Navigator::getURI()); } break; default: unset($_REQUEST['restore']); break; } if (empty($errors)) { SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . SJB_Navigator::getURI()); } } /***************************************************************/ $_REQUEST['action'] = 'search'; $user = new SJB_User(array(), $userGroupSID); $user->addProperty(array('id' => 'user_group', 'type' => 'list', 'value' => '', 'is_system' => true, 'list_values' => SJB_UserGroupManager::getAllUserGroupsIDsAndCaptions())); $user->addProperty(array('id' => 'registration_date', 'type' => 'date', 'value' => '', 'is_system' => true)); $user->addProperty(array('id' => 'approval', 'caption' => 'Approval', 'type' => 'list', 'list_values' => array(array('id' => 'Pending', 'caption' => 'Pending'), array('id' => 'Approved', 'caption' => 'Approved'), array('id' => 'Rejected', 'caption' => 'Rejected')), 'length' => '10', 'is_required' => false, 'is_system' => true)); // get array of accessible products $productsSIDs = SJB_ProductsManager::getProductsIDsByUserGroupSID($userGroupSID); $products = array(); foreach ($productsSIDs as $key => $productSID) { $product = SJB_ProductsManager::getProductInfoBySID($productSID); $products[$key] = $product; if (!empty($product['pricing_type']) && $product['pricing_type'] == 'volume_based' && !empty($product['volume_based_pricing'])) { $volumeBasedPricing = $product['volume_based_pricing']; $minListings = min($volumeBasedPricing['listings_range_from']); $maxListings = max($volumeBasedPricing['listings_range_to']); $countListings = array(); for ($i = $minListings; $i <= $maxListings; $i++) { $countListings[] = $i; } $products[$key]['count_listings'] = $countListings; } } $user->addProperty(array('id' => 'product', 'type' => 'list', 'value' => '', 'list_values' => $products, 'is_system' => true)); $aliases = new SJB_PropertyAliases(); $aliases->addAlias(array('id' => 'user_group', 'real_id' => 'user_group_sid', 'transform_function' => 'SJB_UserGroupManager::getUserGroupSIDByID')); $aliases->addAlias(array('id' => 'product', 'real_id' => 'product_sid')); $_REQUEST['user_group']['equal'] = $userGroupSID; $search_form_builder = new SJB_SearchFormBuilder($user); $criteria_saver = new SJB_UserCriteriaSaver(); if (isset($_REQUEST['restore'])) { $_REQUEST = array_merge($_REQUEST, $criteria_saver->getCriteria()); } $criteria = $search_form_builder->extractCriteriaFromRequestData($_REQUEST, $user); $search_form_builder->setCriteria($criteria); $search_form_builder->registerTags($tp); $userGroupInfo = SJB_UserGroupManager::getUserGroupInfoBySID($userGroupSID); if (SJB_Request::getVar('online', '') == '1') { $tp->assign("online", true); } $tp->assign('userGroupInfo', $userGroupInfo); $tp->assign('products', $products); $tp->assign('selectedProduct', isset($_REQUEST['product']['simple_equal']) ? $_REQUEST['product']['simple_equal'] : ''); $tp->display($searchTemplate); /********************** S O R T I N G *********************/ $paginator = new SJB_UsersPagination($userGroupInfo, SJB_Request::getVar('online', ''), $template); $firstLastName = ''; if (!empty($_REQUEST['FirstName']['equal'])) { $name['FirstName']['any_words'] = $name['LastName']['any_words'] = $_REQUEST['FirstName']['equal']; $firstLastName = $_REQUEST['FirstName']; unset($_REQUEST['FirstName']); $_REQUEST['FirstName']['fields_or'] = $name; } $criteria = $search_form_builder->extractCriteriaFromRequestData($_REQUEST, $user); $inner_join = false; // if search by product field if (isset($_REQUEST['product']['simple_equal']) && $_REQUEST['product']['simple_equal'] != '') { $inner_join = array('contracts' => array('join_field' => 'user_sid', 'join_field2' => 'sid', 'join' => 'INNER JOIN')); } if (SJB_Request::getVar('online', '') == '1') { $maxLifeTime = ini_get("session.gc_maxlifetime"); $currentTime = time(); $innerJoinOnline = array('user_session_data_storage' => array('join_field' => 'user_sid', 'join_field2' => 'sid', 'select_field' => 'session_id', 'join' => 'INNER JOIN', 'where' => "AND unix_timestamp(`user_session_data_storage`.`last_activity`) + {$maxLifeTime} > {$currentTime}")); if ($inner_join) { $inner_join = array_merge($inner_join, $innerJoinOnline); } else { $inner_join = $innerJoinOnline; } } $searcher = new SJB_UserSearcher(array('limit' => ($paginator->currentPage - 1) * $paginator->itemsPerPage, 'num_rows' => $paginator->itemsPerPage), $paginator->sortingField, $paginator->sortingOrder, $inner_join); $found_users = array(); $found_users_sids = array(); if (SJB_Request::getVar('action', '') == 'search') { $found_users = $searcher->getObjectsSIDsByCriteria($criteria, $aliases); $criteria_saver->setSession($_REQUEST, $searcher->getFoundObjectSIDs()); } elseif (isset($_REQUEST['restore'])) { $found_users = $criteria_saver->getObjectsFromSession(); } foreach ($found_users as $id => $userID) { $user_info = SJB_UserManager::getUserInfoBySID($userID); $contractInfo = SJB_ContractManager::getAllContractsInfoByUserSID($user_info['sid']); $user_info['products'] = count($contractInfo); $found_users[$id] = $user_info; } $paginator->setItemsCount($searcher->getAffectedRows()); $sorted_found_users_sids = $found_users_sids; /****************************************************************/ $tp->assign("userGroupInfo", $userGroupInfo); $tp->assign("found_users", $found_users); $searchFields = ''; foreach ($_REQUEST as $key => $val) { if (is_array($val)) { foreach ($val as $fieldName => $fieldValue) { if (is_array($fieldValue)) { foreach ($fieldValue as $fieldSubName => $fieldSubValue) { $searchFields .= "&{$key}[{$fieldSubName}]=" . array_pop($fieldSubValue); } } else { $searchFields .= "&{$key}[{$fieldName}]={$fieldValue}"; } } } } $tp->assign('paginationInfo', $paginator->getPaginationInfo()); $tp->assign("searchFields", $searchFields); $tp->assign("found_users_sids", $sorted_found_users_sids); $tp->assign('errors', $errors); $tp->display($template); }
private function sendSearchedNotifications() { $savedSearches = SJB_SavedSearches::getAutoNotifySavedSearches(); $listing = new SJB_Listing(); $this->notifiedSavedSearchesSID = array(); $notificationsLimit = (int) SJB_Settings::getSettingByName('num_of_listings_sent_in_email_alerts'); foreach ($savedSearches as $savedSearch) { $searcher = new SJB_ListingSearcher(); $listing->addActivationDateProperty(); $dataSearch = unserialize($savedSearch['data']); $dataSearch['active']['equal'] = 1; $dateArray = explode('-', $savedSearch['last_send']); $savedSearch['last_send'] = strftime($this->lang['date_format'], mktime(0, 0, 0, $dateArray[1], $dateArray[2], $dateArray[0])); $dataSearch['activation_date']['not_less'] = $savedSearch['last_send']; $dataSearch['activation_date']['not_more'] = $this->currentDate; $listingTypeSID = 0; if ($dataSearch['listing_type']['equal']) { $listingTypeID = $dataSearch['listing_type']['equal']; $listingTypeSID = SJB_ListingTypeManager::getListingTypeSIDByID($listingTypeID); if (SJB_ListingTypeManager::getWaitApproveSettingByListingType($listingTypeSID)) { $dataSearch['status']['equal'] = 'approved'; } } $idAliasInfo = $listing->addIDProperty(); $usernameAliasInfo = $listing->addUsernameProperty(); $listingTypeIDInfo = $listing->addListingTypeIDProperty(); $aliases = new SJB_PropertyAliases(); $aliases->addAlias($idAliasInfo); $aliases->addAlias($usernameAliasInfo); $aliases->addAlias($listingTypeIDInfo); $dataSearch['access_type'] = array('accessible' => $savedSearch['user_sid']); $criteria = SJB_SearchFormBuilder::extractCriteriaFromRequestData($dataSearch, $listing); $searcher->found_object_sids = array(); $searcher->setLimit($notificationsLimit); $foundListingsIDs = $searcher->getObjectsSIDsByCriteria($criteria, $aliases); if (count($foundListingsIDs)) { $savedSearch['activation_date'] = $savedSearch['last_send']; if (SJB_Notifications::sendUserNewListingsFoundLetter($foundListingsIDs, $savedSearch['user_sid'], $savedSearch, $listingTypeSID)) { SJB_Statistics::addStatistics('sentAlert', $listingTypeSID, $savedSearch['sid']); SJB_DB::query('UPDATE `saved_searches` SET `last_send` = CURDATE() WHERE `sid` = ?n', $savedSearch['sid']); } $this->notifiedSavedSearchesSID[] = $savedSearch['sid']; } } }
public function execute() { $listingTypeSid = SJB_Request::getVar('listing_type_sid', false); $template_processor = SJB_System::getTemplateProcessor(); if (isset($_REQUEST['restore']) && isset($listingSearcher['criteria_values']['listing_type_sid'])) { $listingSearcher = SJB_Session::getValue('ListingSearcher', null); $listingTypeSid = $listingSearcher['criteria_values']['listing_type_sid']['equal']; } $listingTypeInfo = SJB_ListingTypeManager::getListingTypeInfoBySID($listingTypeSid); $template_processor->assign('showApprovalStatusField', $listingTypeInfo['waitApprove']); $template_processor->assign('listingsType', SJB_ListingTypeManager::createTemplateStructure($listingTypeInfo)); $show_search_form = true; if (empty($_REQUEST['action']) && empty($_REQUEST['restore'])) { $show_search_form = false; } $template_processor->assign('show_search_form', $show_search_form); /**************** S E A R C H F O R M ****************/ $listing = SJB_ObjectMother::createListing(array(), $listingTypeSid); $id_alias_info = $listing->addIDProperty(); $username_alias_info = $listing->addUsernameProperty(); $productAliasInfo = $listing->addProductProperty($listingTypeSid); $listing->addCompanyNameProperty(); $listing->addActivationDateProperty(); $listing->addExpirationDateProperty(); $listing->addActiveProperty(); $listing->addKeywordsProperty(); $listing->addDataSourceProperty(); $listing->addPriorityProperty(); $aliases = new SJB_PropertyAliases(); $aliases->addAlias($username_alias_info); $aliases->addAlias($id_alias_info); $aliases->addAlias($productAliasInfo); $search_form_builder = new SJB_SearchFormBuilder($listing); $criteria_saver = SJB_ObjectMother::createListingCriteriaSaver(); $keywords = NULL; if (isset($_REQUEST['restore'])) { $_REQUEST = array_merge($_REQUEST, $criteria_saver->getCriteria()); $criteria = $criteria_saver->getCriteria(); $listingSid = SJB_Array::getPath($criteria, 'sid') ? $criteria['sid']['equal'] : ''; $keywords = SJB_Array::getPath($criteria, 'keywords') ? $criteria['keywords']['like'] : $listingSid; } if ($listingTypeSid) { $_REQUEST['listing_type_sid'] = array('equal' => $listingTypeSid); } $template_processor->assign('companyName', isset($_REQUEST['company_name']['like']) ? $_REQUEST['company_name']['like'] : ''); $template_processor->assign('idKeyword', isset($_REQUEST['idKeyword']) ? $_REQUEST['idKeyword'] : $keywords); $this->prepareRequestedCriteria(); $criteria = SJB_SearchFormBuilder::extractCriteriaFromRequestData($_REQUEST, $listing); $search_form_builder->setCriteria($criteria); $search_form_builder->registerTags($template_processor); $template_processor->display("manage_listings.tpl"); /************* S E A R C H F O R M R E S U L T S *************/ $paginator = new SJB_ListingPagination($listingTypeInfo); $searcher = SJB_ObjectMother::createListingSearcher(); $inner_join = array(); if (SJB_Request::getVar('action', '') == 'search' || isset($_REQUEST['restore'])) { if (!isset($_REQUEST['restore'])) { $criteria_saver->resetSearchResultsDisplay(); } if (isset($_REQUEST['company_name']['like']) && $_REQUEST['company_name']['like'] != '') { $inner_join = array('users' => array('join_field' => 'sid', 'join_field2' => 'user_sid', 'main_table' => 'listings', 'join' => 'INNER JOIN')); } $foundListingsSIDs = $searcher->getObjectsSIDsByCriteria($criteria, $aliases, array(), $inner_join); //get found listing sids if (empty($foundListingsSIDs) && $paginator->currentPage != 1) { if ($listingTypeInfo['id'] == 'Job' || $listingTypeInfo['id'] == 'Resume') { SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . '/manage-' . strtolower($listingTypeInfo['id']) . 's/?page=1&restore=1'); } else { SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . '/manage-' . strtolower($listingTypeInfo['id']) . '-listings/?page=1&restore=1'); } } $criteria_saver->setSessionForListingsPerPage($paginator->itemsPerPage); $criteria_saver->setSessionForCurrentPage($paginator->currentPage); $criteria_saver->setSessionForCriteria($_REQUEST); $orderInfo = array('sorting_field' => $paginator->sortingField, 'sorting_order' => $paginator->sortingOrder); $criteria_saver->setSessionForOrderInfo($orderInfo); } else { $criteria_saver->resetSearchResultsDisplay(); return; } $criteria_saver->setSessionForObjectSIDs($foundListingsSIDs); $listing_search_structure = $criteria_saver->createTemplateStructureForSearch(); /**************** S O R T I N G *****************/ $empty_listing = SJB_ObjectMother::createListing(array(), $listingTypeSid); $empty_listing->addPicturesProperty(); $empty_listing->addIDProperty(); $empty_listing->addListingTypeIDProperty(); $empty_listing->addActivationDateProperty(); $empty_listing->addExpirationDateProperty(); $empty_listing->addUsernameProperty(); $empty_listing->addPicturesProperty(); $empty_listing->addNumberOfViewsProperty(); $empty_listing->addActiveProperty(); $empty_listing->addKeywordsProperty(); $empty_listing->addDataSourceProperty(); $listing->addRejectReasonProperty(); if ($empty_listing->propertyIsSet($listing_search_structure['sorting_field']) && !empty($foundListingsSIDs)) { $sorting_field = $listing_search_structure['sorting_field']; $sorting_order = $listing_search_structure['sorting_order']; switch ($sorting_field) { case 'username': $ids = join(", ", $foundListingsSIDs); $sql = "\tSELECT\t\tlistings.*\n\t\t\t\t\t\tFROM \t\tlistings\n\t\t\t\t\t\tLEFT JOIN\tusers on listings.user_sid = users.sid\n\t\t\t\t\t\tWHERE \t\tlistings.sid IN ({$ids})\n\t\t\t\t\t\tORDER BY users.username {$sorting_order}"; $listings_info = SJB_DB::query($sql); break; case 'listing_type': $ids = join(", ", $foundListingsSIDs); $sql = "\tSELECT\t\tlistings.*\n\t\t\t\t\t\tFROM \t\tlistings\n\t\t\t\t\t\tLEFT JOIN\tlisting_types on listings.listing_type_sid = listing_types.sid\n\t\t\t\t\t\tWHERE \t\tlistings.sid IN ({$ids})\n\t\t\t\t\t\tORDER BY listing_types.id {$sorting_order}"; $listings_info = SJB_DB::query($sql); break; case 'id': $ids = join(", ", $foundListingsSIDs); $sql = "\tSELECT\t\tlistings.*\n\t\t\t\t\t\tFROM \t\tlistings\n\t\t\t\t\t\tWHERE\t\tlistings.sid IN ({$ids})\n\t\t\t\t\t\tORDER BY sid {$sorting_order}"; $listings_info = SJB_DB::query($sql); break; default: $property = $empty_listing->getProperty($sorting_field); $listing_request_creator = new SJB_ListingRequestCreator($foundListingsSIDs, array('property' => $property, 'sorting_order' => $sorting_order)); $listings_info = SJB_DB::query($listing_request_creator->getRequest()); break; } $listings_sids = array(); foreach ($listings_info as $listing_info) { $listings_sids[$listing_info['sid']] = $listing_info['sid']; } $sortedFoundListingsSIDs = array_keys($listings_sids); $criteria_saver->setSessionForObjectSIDs($sortedFoundListingsSIDs); } else { $sortedFoundListingsSIDs = $foundListingsSIDs; $criteria_saver->setSessionForObjectSIDs($foundListingsSIDs); } /**************** P A G I N G *****************/ $sortedFoundListingsSIDsByPages = array_chunk($sortedFoundListingsSIDs, $paginator->itemsPerPage, true); $paginator->setItemsCount(count($sortedFoundListingsSIDs)); /************* S T R U C T U R E **************/ $listings_structure = array(); if (isset($sortedFoundListingsSIDsByPages[$paginator->currentPage - 1])) { foreach ($sortedFoundListingsSIDsByPages[$paginator->currentPage - 1] as $sid) { $listing = SJB_ListingManager::getObjectBySID($sid); $listing->addPicturesProperty(); $listings_structure[$listing->getID()] = SJB_ListingManager::createTemplateStructureForListing($listing); } } /*************** D I S P L A Y ****************/ $template_processor->assign("search_criteria", $criteria_saver->createTemplateStructureForCriteria()); $template_processor->assign('paginationInfo', $paginator->getPaginationInfo()); $template_processor->assign('listings', $listings_structure); $template_processor->display('display_results.tpl'); }
private function getListingSidCollectionFromRequest($requested_data, $listing_type_sid, $criteria_saver) { $listing = new SJB_Listing(array(), $listing_type_sid); $id_alias_info = $listing->addIDProperty(); $listing->addActivationDateProperty(); $username_alias_info = $listing->addUsernameProperty(); $listing_type_id_info = $listing->addListingTypeIDProperty(); $listing->addCompanyNameProperty(); // select only accessible listings by user sid // see SearchCriterion.php, AccessibleCriterion class $requested_data['access_type'] = array('accessible' => SJB_UserManager::getCurrentUserSID()); $criteria = $criteria_saver->getCriteria(); $criteria = SJB_SearchFormBuilder::extractCriteriaFromRequestData(array_merge($criteria, $requested_data), $listing); $aliases = new SJB_PropertyAliases(); $aliases->addAlias($id_alias_info); $aliases->addAlias($username_alias_info); $aliases->addAlias($listing_type_id_info); $sortingFields = array(); $orderInfo = $criteria_saver->getOrderInfo(); $property = $listing->getProperty($orderInfo['sorting_field']); if (!empty($property) && $property->isSystem()) { $sortingFields = array('priority' => 'desc', $orderInfo['sorting_field'] => $orderInfo['sorting_order']); } $searcher = new SJB_ListingSearcher(); return $searcher->getObjectsSIDsByCriteria($criteria, $aliases, $sortingFields); }
/** * @param $fieldName * @param $fieldID * @param SJB_SearchResultsTP $stp * @param $userField * @return mixed */ public static function countListingsByFieldName($fieldName, $fieldID, $stp, $userField) { $refineSearchLimit = SJB_Settings::getSettingByName('refine_search_items_limit'); $limit = $refineSearchLimit ? ' LIMIT 0, ' . $refineSearchLimit : ''; $listing = new SJB_Listing(array(), $stp->listing_type_sid); $id_alias_info = $listing->addIDProperty(); $listing->addActivationDateProperty(); $listing->addFeaturedProperty(); $username_alias_info = $listing->addUsernameProperty(); $listing_type_id_info = $listing->addListingTypeIDProperty(); $listing->addCompanyNameProperty(); $requestedCriteria = $stp->criteria_saver->getCriteria(); if (isset($requestedCriteria['PostedWithin']) && $requestedCriteria['PostedWithin']['multi_like'][0] != '') { $within_period = $requestedCriteria['PostedWithin']['multi_like'][0]; $i18n = SJB_I18N::getInstance(); $requestedCriteria['activation_date']['not_less'] = $i18n->getDate(date('Y-m-d', strtotime("- {$within_period} days"))); unset($requestedCriteria['PostedWithin']); } if (isset($requestedCriteria['CompanyName']['multi_like_and'][0])) { $userName = SJB_UserManager::getUserNameByCompanyName($requestedCriteria['CompanyName']['multi_like_and'][0]); unset($requestedCriteria['CompanyName']); if ($userName) { $requestedCriteria['username']['equal'] = $userName; } } $criteria = SJB_SearchFormBuilder::extractCriteriaFromRequestData($requestedCriteria, $listing); $aliases = new SJB_PropertyAliases(); $aliases->addAlias($id_alias_info); $aliases->addAlias($username_alias_info); $aliases->addAlias($listing_type_id_info); $aliases->changeAliasValuesInCriteria($criteria); $sqlTranslator = new SJB_SearchSqlTranslator('listings'); $whereStatement = $sqlTranslator->_getWhereStatement($criteria); $objectSids = implode(',', $stp->found_listings_sids); if ($userField == 1) { $field = SJB_UserProfileFieldManager::getFieldInfoBySID($fieldID); } else { $field = SJB_ListingFieldDBManager::getListingFieldInfoBySID($fieldID); } $result = array(); $cache = SJB_Cache::getInstance(); if (!empty($field['parent_sid'])) { $parentInfo = SJB_ListingFieldManager::getFieldInfoBySID($field['parent_sid']); $fieldName = $parentInfo['id'] . "_" . $fieldName; $field['id'] = $fieldName; $field['parentID'] = $parentInfo['id']; } switch ($field['type']) { case 'list': case 'multilist': if ($userField == 1) { $query = "SELECT up.`{$fieldName}` as caption, count(`listings`.`sid`) as count\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t FROM `listings`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t INNER JOIN `users` `up` ON `listings`.`user_sid` = `up`.`sid`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t {$whereStatement}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t AND up.`{$fieldName}` != ''\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t GROUP BY `up`.`{$fieldName}` ORDER BY count DESC"; if (!($result = $cache->load(md5($query)))) { $result = SJB_DB::query($query); $cache->save($result, md5($query), array(SJB_Cache::TAG_LISTINGS, SJB_Cache::TAG_USERS)); } } else { $query = "SELECT `{$fieldName}` as caption, count(`{$fieldName}`) as count FROM `listings` {$whereStatement} AND `{$fieldName}` != '' GROUP BY `{$fieldName}` ORDER BY count DESC"; if (!($result = $cache->load(md5($query)))) { $result = SJB_DB::query($query); $cache->save($result, md5($query), array(SJB_Cache::TAG_LISTINGS)); } } self::breakMultiCategory($result); $newResult = array(); $listItem = new SJB_ListingFieldListItemManager(); foreach ($result as $key => $val) { if (!empty($field['parent_sid'])) { $caption = ''; if ($field['id'] == $field['parentID'] . '_State') { $listValues = SJB_StatesManager::getStatesNamesByCountry(false, true, $field['display_as']); } else { $listValues = $field['list_values']; } foreach ($listValues as $listValue) { if ($listValue['id'] == $val['caption']) { $caption = $listValue['caption']; break; } } } else { $itemInfo = $listItem->getListItemBySID($val['caption']); $caption = $itemInfo ? $itemInfo->getValue() : null; } if ($caption != null) { $newResult[$key]['count'] = $val['count']; $newResult[$key]['value'] = $caption; $newResult[$key]['sid'] = $val['caption']; } } arsort($newResult); $result = $newResult; if (count($result) > $refineSearchLimit) { $result = array_slice($result, 0, $refineSearchLimit); } break; case 'tree': $query = "SELECT `lt`.`sid` as `sid`, `lt`.`caption` as `value`, count(`listings`.`sid`) as `count`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tFROM `listings`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tLEFT JOIN `listing_field_tree` `lt` ON `lt`.`field_sid` = {$field['sid']} AND find_in_set(`lt`.`sid`, `listings`.`{$fieldName}`)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{$whereStatement} GROUP BY `lt`.`sid` having `lt`.`sid` IS NOT NULL ORDER BY `count` DESC {$limit}"; if (!($propertyValue = $cache->load(md5($query)))) { $propertyValue = SJB_DB::query($query); $cache->save($propertyValue, md5($query), array(SJB_Cache::TAG_LISTINGS, SJB_Cache::TAG_FIELDS)); } foreach ($propertyValue as $value) { $result[$value['sid']] = $value; } break; default: if ($userField == 1) { $companyColumn = "up.`{$fieldName}`"; $query = "SELECT {$companyColumn} as `value`, count(listings.`sid`) as `count`\n\t\t\t\t\t\t\t\t\t\t\t FROM `listings`\n\t\t\t\t\t\t\t\t\t\t\t INNER JOIN `users` `up` ON `listings`.`user_sid` = `up`.`sid`\n\t\t\t\t\t\t\t\t\t\t\t {$whereStatement}\n\t\t\t\t\t\t\t\t\t\t\t GROUP BY {$companyColumn} ORDER BY `count` DESC {$limit}"; if (!($result = $cache->load(md5($query)))) { $result = SJB_DB::query($query); $cache->save($result, md5($query), array(SJB_Cache::TAG_LISTINGS, SJB_Cache::TAG_USERS)); } } else { if ($field['type'] == 'complex') { $query = "SELECT `value`, count(`value`) as count FROM `listings_properties` WHERE `id`='{$fieldName}' AND `value` != '' AND `object_sid` in ({$objectSids}) GROUP BY `value` ORDER BY count DESC {$limit}"; } else { $query = "SELECT `{$fieldName}` as value, count(`{$fieldName}`) as count FROM `listings` {$whereStatement} AND `{$fieldName}` != '' GROUP BY `{$fieldName}` ORDER BY count DESC {$limit}"; } if (!($result = $cache->load(md5($query)))) { $result = SJB_DB::query($query); $cache->save($result, md5($query), array(SJB_Cache::TAG_LISTINGS)); } } break; } $returnArr['caption'] = $field['caption']; $returnArr['values'] = $result; return $returnArr; }
public function execute() { $tp = SJB_System::getTemplateProcessor(); $errors = array(); /********** A C T I O N S W I T H T R A N S A C T I O N S **********/ $action = SJB_Request::getVar('action_name', SJB_Request::getVar('action', false)); $transactions_sids = SJB_Request::getVar('transactions', false); if ($action && $transactions_sids) { $_REQUEST['restore'] = 1; if ($action == 'delete') { // DELETE foreach ($transactions_sids as $transaction_sid => $value) { SJB_TransactionManager::deleteTransactionBySID($transaction_sid); } } else { unset($_REQUEST['restore']); } } /********** D E F A U L T V A L U E S F O R S E A R C H **********/ $_REQUEST['action'] = 'filter'; $i18n = SJB_ObjectMother::createI18N(); if (!isset($_REQUEST['date'])) { $_REQUEST['date']['not_less'] = $i18n->getDate(date('Y-m-d', time() - 30 * 24 * 60 * 60)); $_REQUEST['date']['not_more'] = $i18n->getDate(date('Y-m-d', time() + 24 * 60 * 60)); } else { if (!$i18n->isValidDate($_REQUEST['date']['not_less']) && !empty($_REQUEST['date']['not_less'])) { $errors[] = 'INVALID_PERIOD_FROM'; } if (!$i18n->isValidDate($_REQUEST['date']['not_more']) && !empty($_REQUEST['date']['not_more'])) { $errors[] = 'INVALID_PERIOD_TO'; } } /************************ S E A R C H F O R M ***************************/ $transaction = new SJB_Transaction(); $transaction->addProperty(array('id' => 'username', 'type' => 'string', 'value' => '', 'is_system' => true)); $aliases = new SJB_PropertyAliases(); $aliases->addAlias(array('id' => 'username', 'real_id' => 'user_sid', 'transform_function' => 'SJB_UserManager::getUserSIDsLikeUsername')); $search_form_builder = new SJB_SearchFormBuilder($transaction); $criteria_saver = new SJB_TransactionCriteriaSaver(); if (isset($_REQUEST['restore'])) { $_REQUEST = array_merge($_REQUEST, $criteria_saver->getCriteria()); } $criteria = $search_form_builder->extractCriteriaFromRequestData($_REQUEST, $transaction); $search_form_builder->setCriteria($criteria); $search_form_builder->registerTags($tp); $tp->display('payment_form.tpl'); /******************** S E A R C H ************************/ $paginator = new SJB_TransactionHistoryPagination(); $searcher = new SJB_TransactionSearcher($paginator); if (SJB_Request::getVar('action', '') == 'filter') { $transactions = $searcher->getObjectsByCriteria($criteria, $aliases); if (empty($transactions) && $paginator->currentPage != 1) { SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . '/payments/?page=1'); } $criteria_saver->setSession($_REQUEST, $searcher->getFoundObjectSIDs()); } elseif (isset($_REQUEST['restore'])) { $transactions = $criteria_saver->getObjectsFromSession(); } $paginator->setItemsCount($searcher->getAffectedRows()); $found_trans = array(); $found_trans_sids = array(); foreach ($transactions as $transaction) { $user_sid = $transaction->getPropertyValue('user_sid'); $username = SJB_UserManager::getUserNameByUserSID($user_sid); $transaction->addProperty(array('id' => 'username', 'type' => 'string', 'value' => $username)); $found_trans[$transaction->getSID()] = $transaction; $found_trans_sids[$transaction->getSID()] = $transaction->getSID(); } $sorted_found_trans_sids = $found_trans_sids; $form_collection = new SJB_FormCollection($found_trans); $form_collection->registerTags($tp); $tp->assign('paginationInfo', $paginator->getPaginationInfo()); $tp->assign('errors', $errors); $tp->assign('found_transactions_sids', $sorted_found_trans_sids); $tp->display('payments.tpl'); }