public function execute() { $tp = SJB_System::getTemplateProcessor(); $listing_field_sid = SJB_Request::getVar('listing_sid', null); $errors = array(); $listingTypes = array(); if (!is_null($listing_field_sid)) { $listing_field = SJB_ListingFieldManager::getFieldInfoBySID($listing_field_sid); $listing_type_id = 'Job/Resume'; if ($listing_field['listing_type_sid'] != 0) { $listing_type_id = SJB_ListingTypeManager::getListingTypeIDBySID($listing_field['listing_type_sid']); array_push($listingTypes, SJB_ListingTypeManager::getListingTypeInfoBySID(SJB_Array::get($listing_field, 'listing_type_sid'))); } else { $listingTypes = SJB_ListingTypeManager::getAllListingTypesInfo(); } $tp->assign('listingTypesInfo', $listingTypes); $tp->assign('listing_type_id', $listing_type_id); $tp->assign('listing_sid', $listing_field_sid); $tp->assign('listing_field_info', $listing_field); $tp->assign('listing_type_sid', $listing_field['listing_type_sid']); } else { $errors[] = 'The system cannot proceed as Listing SID is not set'; } $tp->assign('errors', $errors); $tp->display('attention_listing_type_field.tpl'); }
public function isAccessible() { $listingId = SJB_Request::getVar('listing_id', null); $listingInfo = SJB_ListingManager::getListingInfoBySID($listingId); $listingTypeId = SJB_ListingTypeManager::getListingTypeIDBySID($listingInfo['listing_type_sid']); $listingType = !in_array($listingTypeId, array('Resume', 'Job')) ? "{$listingTypeId}_listings" : $listingTypeId . 's'; $this->setPermissionLabel('manage_' . strtolower($listingType)); return parent::isAccessible(); }
public function execute() { $templateProcessor = SJB_System::getTemplateProcessor(); $listingSid = isset($_REQUEST['listing_id']) ? $_REQUEST['listing_id'] : null; $listing = SJB_ListingManager::getObjectBySID($listingSid); if (!is_null($listing) && !$listing->isActive()) { $listingInfo = SJB_ListingManager::getListingInfoBySID($listingSid); $productInfo = !empty($listingInfo['product_info']) ? unserialize($listingInfo['product_info']) : array(); if (isset($listingInfo['complete']) && $listingInfo['complete'] == 1 && $listingInfo['checkouted'] == 1) { $subTotalPrice = 0; // проверить истек ли листинг, если истек , прайс прировнять к renewal_price if (SJB_ListingManager::getIfListingHasExpiredBySID($listing->getID()) && isset($productInfo['renewal_price'])) { $subTotalPrice = $productInfo['renewal_price']; } $userSid = $listing->getUserSID(); $productSid = $productInfo['product_sid']; $listingTitle = $listing->getProperty('Title')->getValue(); $listingTypeSid = $listing->getListingTypeSID(); $listingTypeId = SJB_ListingTypeManager::getListingTypeIDBySID($listingTypeSid); $newProductName = "Reactivation of \"{$listingTitle}\" {$listingTypeId}"; $newProductInfo = SJB_ShoppingCart::createInfoForCustomProduct($userSid, $productSid, $listingSid, $subTotalPrice, $newProductName, 'activateListing'); if ($subTotalPrice <= 0) { if (SJB_ListingManager::activateListingBySID($listing->getSID())) { SJB_Notifications::sendUserListingActivatedLetter($listing, $listing->getUserSID()); } } else { SJB_ShoppingCart::createCustomProduct($newProductInfo, $userSid); $shoppingUrl = SJB_System::getSystemSettings('SITE_URL') . '/shopping-cart/'; SJB_HelperFunctions::redirect($shoppingUrl); } $templateProcessor->assign('listingTypeID', SJB_ListingTypeManager::getListingTypeIDBySID($listingTypeSid)); } elseif ($listingInfo['checkouted'] == 0) { $productsInfoFromShopppingCart = SJB_ShoppingCart::getProductsInfoFromCartByProductSID($productInfo['product_sid'], $listing->getUserSID()); if (empty($productsInfoFromShopppingCart)) { $productInfoToShopCart = SJB_ProductsManager::getProductInfoBySID($productInfo['product_sid']); $productInfo['number_of_listings'] = 1; $productObj = new SJB_Product($productInfoToShopCart, $productInfoToShopCart['product_type']); $productObj->setNumberOfListings($productInfoToShopCart['number_of_listings']); $productInfoToShopCart['price'] = $productObj->getPrice(); SJB_ShoppingCart::addToShoppingCart($productInfoToShopCart, $listing->getUserSID()); } SJB_HelperFunctions::redirect(SJB_System::getSystemsettings('SITE_URL') . '/shopping-cart/'); } else { $errors['LISTING_IS_NOT_COMPLETE'] = 1; } } elseif (is_null($listingSid)) { $errors['INVALID_LISTING_ID'] = 1; } elseif (!is_null($listing) && $listing->isActive()) { $errors['LISTING_ALREADY_ACTIVE'] = 1; } else { $errors['WRONG_LISTING_ID_SPECIFIED'] = 1; } $templateProcessor->assign("errors", isset($errors) ? $errors : null); $templateProcessor->display("pay_for_listing.tpl"); }
public function execute() { $template_processor = SJB_System::getTemplateProcessor(); $listingId = SJB_Request::getVar('listing_id', null, 'default', 'int'); $listingType = SJB_Request::getVar('listing_type', null); if (!$listingType) { if ($listingId) { $listingInfo = SJB_ListingManager::getListingInfoBySID($listingId); $listingType = SJB_ListingTypeManager::getListingTypeIDBySID($listingInfo['listing_type_sid']); } else { $listingType = 'job'; } } $displayForm = SJB_Request::getVar('displayForm', false); $error = null; if (!SJB_Acl::getInstance()->isAllowed('save_' . trim($listingType))) { $error = 'DENIED_SAVE_LISTING'; } if (SJB_UserManager::isUserLoggedIn()) { if (!$error) { if (!is_null($listingId)) { if (SJB_UserManager::isUserLoggedIn()) { SJB_SavedListings::saveListingOnDB($listingId, SJB_UserManager::getCurrentUserSID()); SJB_Statistics::addStatistics('saveListing', SJB_ListingTypeManager::getListingTypeSIDByID($listingType), $listingId); } else { SJB_SavedListings::saveListingInCookie($listingId); } $template_processor->assign('saved_listing', SJB_SavedListings::getSavedListingsByUserAndListingSid(SJB_UserManager::getCurrentUserSID(), $listingId)); } else { $error = 'LISTING_ID_NOT_SPECIFIED'; } } $params = SJB_Request::getVar('params', false); $searchId = SJB_Request::getVar('searchId', false); $page = SJB_Request::getVar('page', false); $template_processor->assign("params", $params); $template_processor->assign("searchId", $searchId); $template_processor->assign("page", $page); $template_processor->assign("listing_type", $listingType); $template_processor->assign("listing_sid", $listingId); $template_processor->assign("from_login", SJB_Request::getVar("from_login", false)); $template_processor->assign("error", $error); $template_processor->assign("displayForm", $displayForm); $template_processor->assign("view", SJB_Request::getVar('view')); $template_processor->display("save_listing.tpl"); } else { $template_processor->assign("return_url", base64_encode(SJB_Navigator::getURIThis() . "&from_login=1")); $template_processor->assign("ajaxRelocate", true); $template_processor->display("../users/login.tpl"); } }
/** * @param $listingSid * @return string */ public static function getBitlyShortenUrlByListingSid($listingSid) { $listingInfo = SJB_ListingManager::getListingInfoBySID($listingSid); $listingType = strtolower(SJB_ListingTypeManager::getListingTypeIDBySID($listingInfo["listing_type_sid"])); $listingLongUrl = SJB_System::getSystemSettings("USER_SITE_URL") . "/display-{$listingType}/{$listingSid}/"; self::$_shortenUrl = self::getListingBitlyShortedUrlBySid($listingSid); if (empty(self::$_shortenUrl)) { $oAuthUrl = self::$_bitlyOauthApi . "shorten?access_token=" . self::getBitlyTokenId() . "&longUrl=" . urlencode($listingLongUrl); $output = json_decode(self::bitlyCurl($oAuthUrl)); if (isset($output->{"data"}->{"hash"})) { self::$_shortenUrl = $output->{"data"}->{"url"}; self::saveBitlyShortenUrlByListingSid($listingSid); } else { return $listingLongUrl; } } return self::$_shortenUrl; }
public function savePermissions($request, $product) { $acl = SJB_Acl::getInstance(); $resources = $acl->getResources(); $type = 'product'; $role = $product->getSID(); $serialized_extra_info = unserialize($product->getPropertyValue('serialized_extra_info')); $pricingType = $serialized_extra_info['pricing_type']; $listingTypeSid = $serialized_extra_info['listing_type_sid']; $listingTypeId = strtolower(SJB_ListingTypeManager::getListingTypeIDBySID($listingTypeSid)); $userGroupSID = $product->getPropertyValue('user_group_sid'); $groupPermissions = SJB_DB::query('select * from `permissions` where `type` = ?s and `role` = ?s', 'group', $userGroupSID); SJB_Acl::clearPermissions($type, $role); foreach ($groupPermissions as $key => $groupPermission) { $groupPermissions[$groupPermission['name']] = $groupPermission; unset($groupPermissions[$key]); } foreach ($resources as $name => $resource) { $params = isset($request[$name . '_params']) ? $request[$name . '_params'] : ''; $params1 = isset($request[$name . '_params1']) ? $request[$name . '_params1'] : ''; $value = isset($request[$name]) ? $request[$name] : ''; $message = isset($request[$name . '_message']) ? $request[$name . '_message'] : ''; if ($name == 'post_' . $listingTypeId) { $value = 'allow'; if ($pricingType == 'fixed') { $params = $product->getPropertyValue('number_of_listings'); } } elseif ($name == 'add_featured_listings' && (!empty($serialized_extra_info['featured']) || !empty($serialized_extra_info['upgrade_to_featured_listing_price']))) { $value = 'allow'; } elseif ($name == 'add_priority_listings' && (!empty($serialized_extra_info['priority']) || !empty($serialized_extra_info['upgrade_to_priority_listing_price']))) { $value = 'allow'; } if (empty($value) && isset($groupPermissions[$name])) { $value = 'inherit'; $message = $groupPermissions[$name]['message']; $params = $groupPermissions[$name]['params']; } elseif ($value == 'deny' && $params1) { $params = $params1; } SJB_Acl::allow($name, $type, $role, $value, $params, $message); } }
public function execute() { $listingSid = SJB_Request::getVar("listing_id", null, 'default', 'int'); if ($listingSid) { $listing = SJB_ListingManager::getObjectBySID($listingSid); if (!is_null($listing) && !$listing->isPriority()) { $productInfo = $listing->getProductInfo(); if ($productInfo['priority']) { SJB_ListingManager::makePriorityBySID($listingSid); } else { $userSid = $listing->getUserSID(); $productSid = $productInfo['product_sid']; $subTotalPrice = $productInfo['upgrade_to_priority_listing_price']; $listingTitle = $listing->getProperty('Title')->getValue(); $listingTypeSid = $listing->getListingTypeSID(); $listingTypeId = SJB_ListingTypeManager::getListingTypeIDBySID($listingTypeSid); $newProductName = "Upgrade of \"{$listingTitle}\" {$listingTypeId} to priority"; $newProductInfo = SJB_ShoppingCart::createInfoForCustomProduct($userSid, $productSid, $listingSid, $subTotalPrice, $newProductName, 'priorityListing'); if ($subTotalPrice <= 0) { SJB_InvoiceManager::generateInvoice($newProductInfo, $userSid, $subTotalPrice, SJB_System::getSystemSettings('SITE_URL') . '/make-priority/'); SJB_ListingManager::makeFeaturedBySID($listingSid); } else { SJB_ShoppingCart::createCustomProduct($newProductInfo, $userSid); $shoppingUrl = SJB_System::getSystemSettings('SITE_URL') . '/shopping-cart/'; SJB_HelperFunctions::redirect($shoppingUrl); } } } else { if (is_null($listing)) { $errors['INVALID_LISTING_ID'] = 1; } else { $errors['LISTING_ALREADY_PRIORITY'] = 1; } } } else { $errors['PARAMETERS_MISSED'] = 1; } $tp = SJB_System::getTemplateProcessor(); $tp->assign("errors", isset($errors) ? $errors : null); $tp->display("make_listing_priority.tpl"); }
public function execute() { $tp = SJB_System::getTemplateProcessor(); $errors = array(); $listingTypeSID = 0; if (isset($_REQUEST['passed_parameters_via_uri'])) { $params = SJB_FixedUrlParamProvider::getParams($_REQUEST); if ($params) { $listingTypeID = array_pop($params); $listingTypeSID = SJB_ListingTypeManager::getListingTypeSIDByID($listingTypeID); } } if (!$listingTypeSID) { $errors['WRONG_LISTING_TYPE_ID_SPECIFIED'] = true; } else { $listing = new SJB_Listing(array(), $listingTypeSID); $listing->addIDProperty(); $listing->addActivationDateProperty(); $listing->addUsernameProperty(); $listing->addKeywordsProperty(); $listing->addPicturesProperty(); $listing->addListingTypeIDProperty(); $listing->addPostedWithinProperty(); $listingTypeID = SJB_ListingTypeManager::getListingTypeIDBySID($listing->listing_type_sid); $display_form = new SJB_Form($listing); $display_form->registerTags($tp); $form_fields = $display_form->getFormFieldsInfo(); $listing_structure = SJB_ListingManager::createTemplateStructureForListing($listing); $metaDataProvider = SJB_ObjectMother::getMetaDataProvider(); $tp->assign('METADATA', array('listing' => $metaDataProvider->getMetaData($listing_structure['METADATA']), 'form_fields' => $metaDataProvider->getFormFieldsMetadata($form_fields))); $tp->assign('form_fields', $form_fields); $tp->filterThenAssign('listing', $listing_structure); $formBuilder = SJB_FormBuilderManager::getFormBuilder(SJB_FormBuilderManager::FORM_BUILDER_TYPE_DISPLAY, $listingTypeID); $formBuilder->setChargedTemplateProcessor($tp); $tp->assign('listingTypeInfo', SJB_ListingTypeManager::getListingTypeInfoBySID($listingTypeSID)); $tp->assign('currentTheme', SJB_TemplateSupplier::getUserCurrentTheme()); } $tp->assign('errors', $errors); $tp->display('bf_displaylisting.tpl'); }
public function execute() { $listing_id = SJB_Request::getVar('listing_id', null); $listing_info = SJB_ListingManager::getListingInfoBySID($listing_id); $listingTypeSID = SJB_ListingTypeManager::getListingTypeIDBySID($listing_info['listing_type_sid']); $field_id = SJB_Request::getVar('field_id', null); $current_user_sid = SJB_UserManager::getCurrentUserSID(); $owner_sid = SJB_ListingManager::getUserSIDByListingSID($listing_id); $errors = array(); if (is_null($listing_id) || is_null($field_id)) { $errors['PARAMETERS_MISSED'] = 1; } else { if (is_null($listing_info) || !isset($listing_info[$field_id])) { $errors['WRONG_PARAMETERS_SPECIFIED'] = 1; } else { if ($owner_sid != $current_user_sid) { $errors['NOT_OWNER'] = 1; } else { $uploaded_file_id = $listing_info[$field_id]; SJB_UploadFileManager::deleteUploadedFileByID($uploaded_file_id); $listing_info[$field_id] = ''; $listing = new SJB_Listing($listing_info, $listing_info['listing_type_sid']); $props = $listing->getProperties(); foreach ($props as $prop) { if ($prop->getID() !== $field_id) { $listing->deleteProperty($prop->getID()); } } $listing->setSID($listing_id); SJB_ListingManager::saveListing($listing); } } } $tp = SJB_System::getTemplateProcessor(); $tp->assign('errors', $errors); $tp->assign('listing_id', $listing_id); $tp->assign('listingTypeSID', $listingTypeSID); $tp->display('delete_uploaded_file.tpl'); }
/** * @param $params * @return mixed */ public static function getListingsFromJuju($params) { $listingTypeID = SJB_ListingTypeManager::getListingTypeIDBySID($params->listing_type_sid); if ($listingTypeID == 'Job' && $GLOBALS['uri'] == '/search-results-jobs/' || $GLOBALS['uri'] == '/ajax/') { $criteria = $params->criteria_saver->criteria; $keywords = self::getKeywords(isset($criteria['keywords']) ? $criteria['keywords'] : array()); $category = self::getCategory(isset($criteria['JobCategory']['multi_like']) ? $criteria['JobCategory']['multi_like'] : array()); if (!empty($category)) { $keywords .= '+' . $category; } $location = self::getLocation($criteria, 'JujuLocation'); $radius = self::getRadius(isset($criteria['Location']['location']['radius']) ? $criteria['Location']['location']['radius'] : null); $countListings = self::getCountListings(); $page = self::getPage(); $publisherID = SJB_Settings::getSettingByName('JujuID'); $ip = SJB_Request::getVar('REMOTE_ADDR', '', 'SERVER'); $userAgent = urlencode(SJB_Request::getUserAgent()); $url = "http://api.juju.com/jobs?partnerid={$publisherID}&k={$keywords}&l={$location}&r={$radius}&useragent={$userAgent}&ipaddress={$ip}&jpp={$countListings}&page={$page}&highlight=0"; self::setListingsUsingUrl($url); } return $params; }
public function execute() { $tp = SJB_System::getTemplateProcessor(); $current_user = SJB_UserManager::getCurrentUser(); $currentUserInfo = SJB_UserManager::getCurrentUserInfo(); $tp->assign('current_user', $currentUserInfo); $errors = array(); $error = ''; $listing_id = SJB_Request::getVar('listing_id', null, 'default', 'int'); if (SJB_UserGroupManager::getUserGroupIDBySID($current_user->user_group_sid) == 'Employer') { $template = SJB_Request::getVar('input_template', 'copy_listing.tpl'); } else { SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . '/my-listings/Job/'); } //getting $tmp_listing_id from request $tmp_listing_id_from_request = SJB_Request::getVar('tmp_listing_id', false, 'default', 'int'); $listing_info = SJB_ListingManager::getListingInfoBySID($listing_id); $listing_type_id = SJB_ListingTypeManager::getListingTypeIDBySID($listing_info['listing_type_sid']); if ($productsInfo = $this->canCurrentUserAddListing($error, $listing_type_id)) { $pages = SJB_PostingPagesManager::getPagesByListingTypeSID($listing_info['listing_type_sid']); if (!empty($tmp_listing_id_from_request)) { $tmp_listing_sid = $tmp_listing_id_from_request; } elseif (!$tmp_listing_id_from_request) { $tmp_listing_sid = time(); } $gallery = new SJB_ListingGallery(); $gallery->setListingSID($listing_info['sid']); $pictures_info = $gallery->getPicturesInfo(); $gallery->setListingSID($tmp_listing_sid); $pictures_info_new = $gallery->getPicturesInfo(); //reuploading pictures if (!$pictures_info_new) { foreach ($pictures_info as $v) { if (!$gallery->uploadImage($v['picture_url'], $v['caption'])) { $field_errors['Picture'] = $gallery->getError(); } } } $contractID = SJB_Request::getVar('contract_id', false, 'default', 'int'); if ($contractID) { $contract = new SJB_Contract(array('contract_id' => $contractID)); } elseif (count($productsInfo) == 1) { $productInfo = array_pop($productsInfo); $contractID = $productInfo['contract_id']; $contract = new SJB_Contract(array('contract_id' => $contractID)); } else { $tp->assign('listing_id', $listing_id); $tp->assign("products_info", $productsInfo); $tp->assign("listing_type_id", $listing_type_id); $tp->display("listing_product_choice.tpl"); } if ($contractID) { $tp->assign('tmp_listing_id', $tmp_listing_sid); $extraInfo = $contract->extra_info; $numberOfPictures = isset($extraInfo['number_of_pictures']) ? $extraInfo['number_of_pictures'] : 0; $tp->assign("pic_limit", $numberOfPictures); $tp->assign('contractID', $contractID); if ($listing_info['user_sid'] != SJB_UserManager::getCurrentUserSID()) { $errors['NOT_OWNER_OF_LISTING'] = $listing_id; } elseif (!is_null($listing_info)) { $listing_info = array_merge($listing_info, $_REQUEST); $listing = new SJB_Listing($listing_info, $listing_info['listing_type_sid']); $listing->deleteProperty('featured'); $listing->deleteProperty('priority'); $listing->deleteProperty('status'); $listing->deleteProperty('reject_reason'); $listing->setSID($listing_id); $screening_questionnaires = SJB_ScreeningQuestionnaires::getList($current_user->getSID()); if (SJB_Acl::getInstance()->isAllowed('use_screening_questionnaires') && $screening_questionnaires) { $issetQuestionnairyField = $listing->getProperty('screening_questionnaire'); if ($issetQuestionnairyField) { $value = SJB_Request::getVar('screening_questionnaire'); $value = $value ? $value : isset($listing_info['screening_questionnaire']) ? $listing_info['screening_questionnaire'] : ''; $listing->addProperty(array('id' => 'screening_questionnaire', 'type' => 'list', 'caption' => 'Screening Questionnaire', 'value' => $value, 'list_values' => SJB_ScreeningQuestionnaires::getListSIDsAndCaptions($current_user->getSID()), 'is_system' => true)); } } else { $listing->deleteProperty('screening_questionnaire'); } $listing_edit_form = new SJB_Form($listing); $listing_edit_form->registerTags($tp); $extraInfo = $listing_info['product_info']; if ($extraInfo) { $extraInfo = unserialize($extraInfo); $numberOfPictures = isset($extraInfo['number_of_pictures']) ? $extraInfo['number_of_pictures'] : 0; $tp->assign("pic_limit", $numberOfPictures); } $form_is_submitted = isset($_REQUEST['action']) && $_REQUEST['action'] == 'save_info' || isset($_REQUEST['action']) && $_REQUEST['action'] == 'add'; $listing->addProperty(array('id' => 'contract_id', 'type' => 'id', 'value' => $contractID, 'is_system' => true)); $delete = SJB_Request::getVar('action', '') == 'delete'; $field_errors = null; if ($delete && isset($_REQUEST['field_id'])) { $field_id = $_REQUEST['field_id']; $listing->details->properties[$field_id]->type->property_info['value'] = null; } elseif ($form_is_submitted && $listing_edit_form->isDataValid($field_errors)) { $listing->addProperty(array('id' => 'complete', 'type' => 'integer', 'value' => 1, 'is_system' => true)); $listing->setUserSID($current_user->getSID()); $extraInfo = $contract->extra_info; $listing->setProductInfo($extraInfo); $listing->sid = null; if (!empty($listing_info['subuser_sid'])) { $listing->addSubuserProperty($listing_info['subuser_sid']); } $listingSidsForCopy = array('filesFrom' => $listing_id, 'picturesFrom' => $tmp_listing_sid); SJB_ListingManager::saveListing($listing, $listingSidsForCopy); // >>> SJB-1197 // SET VALUES FROM TEMPORARY SESSION STORAGE $formToken = SJB_Request::getVar('form_token'); $sessionFileStorage = SJB_Session::getValue('tmp_uploads_storage'); $tempFieldsData = SJB_Array::getPath($sessionFileStorage, $formToken); if (is_array($tempFieldsData)) { foreach ($tempFieldsData as $fieldId => $fieldData) { $isComplex = false; if (strpos($fieldId, ':') !== false) { $isComplex = true; } $tmpUploadedFileId = $fieldData['file_id']; // rename it to real listing field value $newFileId = $fieldId . "_" . $listing->getSID(); SJB_DB::query("UPDATE `uploaded_files` SET `id` = ?s WHERE `id` =?s", $newFileId, $tmpUploadedFileId); if ($isComplex) { list($parentField, $subField, $complexStep) = explode(':', $fieldId); $parentProp = $listing->getProperty($parentField); $parentValue = $parentProp->getValue(); // look for complex property with current $fieldID and set it to new value of property if (!empty($parentValue)) { foreach ($parentValue as $id => $value) { if ($id == $subField) { $parentValue[$id][$complexStep] = $newFileId; } } $listing->setPropertyValue($parentField, $parentValue); } } else { $listing->setPropertyValue($fieldId, $newFileId); } // clean temporary field storage $sessionFileStorage = SJB_Array::unsetValueByPath($sessionFileStorage, "{$formToken}/{$fieldId}"); } //and remove token key from temporary storage $sessionFileStorage = SJB_Array::unsetValueByPath($sessionFileStorage, "{$formToken}"); // clear temporary data in session storage SJB_Session::setValue('tmp_uploads_storage', $sessionFileStorage); $listingSidsForCopy = array('filesFrom' => $listing_id, 'picturesFrom' => $listing_id); SJB_ListingManager::saveListing($listing, $listingSidsForCopy); } // <<< SJB-1197 SJB_Statistics::addStatistics('addListing', $listing->getListingTypeSID(), $listing->getSID(), false, $extraInfo['featured'], $extraInfo['priority']); $contract->incrementPostingsNumber(); SJB_ProductsManager::incrementPostingsNumber($contract->product_sid); // is listing featured by default if ($extraInfo['featured']) { SJB_ListingManager::makeFeaturedBySID($listing->getSID()); } if ($extraInfo['priority']) { SJB_ListingManager::makePriorityBySID($listing->getSID()); } SJB_ListingManager::activateListingBySID($listing->getSID()); SJB_AdminNotifications::sendAdminListingAddedLetter($listing); SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . '/manage-' . strtolower($listing_type_id) . '/?listing_id=' . $listing->getSID()); } elseif ($form_is_submitted) { $field_id = 'video'; if (!isset($_REQUEST['video_hidden']) && $listing->getPropertyValue($field_id)) { $listing->details->properties[$field_id]->type->property_info['value'] = null; } } $listing_structure = SJB_ListingManager::createTemplateStructureForListing($listing); $form_fields = $listing_edit_form->getFormFieldsInfo(); $listing_fields_by_page = array(); $countPages = count($pages); $i = 1; foreach ($pages as $page) { $listing_fields_by_page[$page['page_name']] = SJB_PostingPagesManager::getAllFieldsByPageSIDForForm($page['sid']); if ($i == $countPages && isset($form_fields['screening_questionnaire'])) { $listing_fields_by_page[$page['page_name']]['screening_questionnaire'] = $form_fields['screening_questionnaire']; } foreach (array_keys($listing_fields_by_page[$page['page_name']]) as $field) { if (!$listing->propertyIsSet($field)) { unset($listing_fields_by_page[$page['page_name']][$field]); } } $i++; } $metaDataProvider = SJB_ObjectMother::getMetaDataProvider(); $tp->assign('METADATA', array('listing' => $metaDataProvider->getMetaData($listing_structure['METADATA']), 'form_fields' => $metaDataProvider->getFormFieldsMetadata($form_fields))); $contract_id = $listing_info['contract_id']; $contract = new SJB_Contract(array('contract_id' => $contract_id)); $tp->assign('contract_id', $contract_id); $tp->assign('contract', $contract->extra_info); $tp->assign('countPages', count($listing_fields_by_page)); $tp->assign('copy_listing', 1); $tp->assign('tmp_listing_id', $tmp_listing_sid); $tp->assign('listing_id', $listing_id); $tp->assign('contractID', $contractID); $tp->assign('listing', $listing_structure); $tp->assign('pages', $listing_fields_by_page); $tp->assign('field_errors', $field_errors); } $tp->assign('errors', $errors); $tp->display($template); } } else { $listing_type_id = isset($listing_info['listing_type_sid']) ? $listing_info['listing_type_sid'] : false; if ($error == 'NO_CONTRACT') { if ($_GET) { $getParam = '?'; foreach ($_GET as $key => $val) { $getParam .= $key . '=' . $val . '&'; } $getParam = substr($getParam, 0, -1); } $page = base64_encode(SJB_System::getURI() . $getParam); SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . '/my-products/?page=' . $page); } $tp->assign('clone_job', 1); $tp->assign('listing_type_id', $listing_type_id); $tp->assign('error', $error); $tp->display('add_listing_error.tpl'); } }
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(); $action = SJB_Request::getVar('action', 'search'); $template = SJB_Request::getVar('template', 'listings_statistics.tpl'); $errors = array(); $userGroups = SJB_UserGroupManager::getAllUserGroupsIDsAndCaptions(); foreach ($userGroups as $key => $userGroup) { unset($userGroups[$key]); $userGroups[$userGroup['id']] = $userGroup; } switch ($action) { case 'export': $period = SJB_Request::getVar('period', array()); $filter = SJB_Request::getVar('filter', false); $listingTypeSID = SJB_Request::getVar('listingTypeSID', false); $listingTypeID = SJB_ListingTypeManager::getListingTypeIDBySID($listingTypeSID); $sorting_field = SJB_Request::getVar('sorting_field', 'total'); $sorting_order = SJB_Request::getVar('sorting_order', 'DESC'); $statistics = array(); if ($filter) { $statistics = SJB_Statistics::getListingsStatistics($period, $listingTypeSID, $filter, $sorting_field, $sorting_order); if (!empty($statistics['errors'])) { $errors = $statistics['errors']; } } else { $errors[] = 'EMPTY_PARAMETER'; } $columnTitle = ''; if (strstr($filter, 'userGroup_')) { $userGroupSID = str_replace('userGroup_', '', $filter); if ($userGroups[$userGroupSID]['key'] == 'Employer') { $columnTitle = 'Company Name'; } else { $columnTitle = $userGroups[$userGroupSID]['caption'] . ' Name'; } } else { $fieldInfo = SJB_ListingFieldDBManager::getListingFieldInfoByID($filter); $columnTitle = $fieldInfo['caption']; } if (!$errors && $statistics) { $type = SJB_Request::getVar('type', 'csv'); $listingTypes = SJB_ListingTypeManager::getListingAllTypesForListType(); SJB_StatisticsExportController::createExportDirectory(); $exportProperties['title'] = $columnTitle; $exportProperties['regular'] = ''; if ($listingTypeID == 'Job') { $exportProperties['featured'] = ''; } $exportProperties['priority'] = ''; $exportProperties['total'] = 'Total'; $exportProperties['percent'] = '%'; foreach ($listingTypes as $listingType) { if ($listingType['id'] == $listingTypeSID) { switch ($listingType['key']) { case 'Job': $featuredTitle = "Number of Featured {$listingType['key']}s Posted"; $exportProperties['featured'] = $featuredTitle; case 'Resume': $regularTitle = "Number of Regular {$listingType['key']}s Posted"; $exportProperties['regular'] = $regularTitle; $priorityTitle = "Number of Priority {$listingType['key']}s Posted"; $exportProperties['priority'] = $priorityTitle; break; default: $regularTitle = 'Number of Regular "' . $listingType['caption'] . '" Listings Posted'; $exportProperties['regular'] = $regularTitle; $priorityTitle = 'Number of Priority "' . $listingType['caption'] . '" Listings Posted'; $exportProperties['priority'] = $priorityTitle; break; } } } switch ($type) { case 'csv': $exportData = SJB_StatisticsExportController::getListingExportData($statistics, $listingTypeID); $fileName = strtolower($listingTypeID) . '_statistics.csv'; SJB_StatisticsExportController::makeCSVExportFile($exportData, $fileName, "{$listingTypeID} Statistics"); SJB_StatisticsExportController::archiveAndSendExportFile(strtolower($listingTypeID) . '_statistics', 'csv'); break; case 'xls': $exportData = SJB_StatisticsExportController::getListingExportData($statistics, $listingTypeID); $fileName = strtolower($listingTypeID) . '_statistics.xls'; SJB_StatisticsExportController::makeXLSExportFile($exportData, $fileName, "{$listingTypeID} Statistics"); SJB_StatisticsExportController::archiveAndSendExportFile(strtolower($listingTypeID) . '_statistics', 'xls'); break; } break; } case 'search': $search = SJB_Request::getVar('search', false); $period = SJB_Request::getVar('period', array()); $filter = SJB_Request::getVar('filter', false); $listingTypeSID = SJB_Request::getVar('listingTypeSID', false); $sorting_field = SJB_Request::getVar('sorting_field', 'total'); $sorting_order = SJB_Request::getVar('sorting_order', 'DESC'); $statistics = array(); if ($search) { $i18n = SJB_I18N::getInstance(); $from = $i18n->getInput('date', $period['from']); $to = $i18n->getInput('date', $period['to']); if (!empty($period['from']) && !empty($period['to']) && strtotime($from) > strtotime($to)) { $errors[] = 'SELECTED_PERIOD_IS_INCORRECT'; } else { if ($filter) { $statistics = SJB_Statistics::getListingsStatistics($period, $listingTypeSID, $filter, $sorting_field, $sorting_order); if (!empty($statistics['errors'])) { $errors = $statistics['errors']; } } else { $errors[] = 'EMPTY_PARAMETER'; } } } $columnTitle = ''; if (strstr($filter, 'userGroup_')) { $userGroupSID = str_replace('userGroup_', '', $filter); if ($userGroups[$userGroupSID]['key'] == 'Employer') { $columnTitle = 'Company Name'; } else { $columnTitle = $userGroups[$userGroupSID]['caption'] . ' Name'; } $tp->assign('link', 'user'); } else { if (in_array($filter, array('Location_Country', 'Location_State', 'Location_City'))) { $fieldInfo = SJB_ListingFieldDBManager::getLocationFieldsInfoById($filter); } else { $fieldInfo = SJB_ListingFieldDBManager::getListingFieldInfoByID($filter); } $columnTitle = $fieldInfo['caption']; } $i18n = SJB_I18N::getInstance(); $periodView = array(); foreach ($period as $key => $value) { $periodView[$key] = $i18n->getInput('date', $period[$key]); } $tp->assign('filter', $filter); $tp->assign('search', $search); $tp->assign('columnTitle', $columnTitle); $tp->assign('listingTypeSID', $listingTypeSID); $tp->assign('period', $period); $tp->assign('periodView', $periodView); $tp->assign('statistics', $statistics); $tp->assign('countResult', count($statistics)); $tp->assign('sorting_field', $sorting_field); $tp->assign('sorting_order', $sorting_order); break; } $listingTypes = SJB_ListingTypeManager::getListingAllTypesForListType(); $products = SJB_ProductsManager::getAllProductsInfo(); $acl = SJB_Acl::getInstance(); foreach ($listingTypes as $key => $listingType) { $userGroup = array(); foreach ($products as $productInfo) { if ($acl->isAllowed('post_' . strtolower($listingType['key']), $productInfo['sid'], 'product') && !in_array($productInfo['user_group_sid'], $userGroup)) { $userGroup[] = $productInfo['user_group_sid']; } } $listingTypes[$listingType['id']] = $listingType; $listingTypes[$listingType['id']]['userGroups'] = $userGroup; unset($listingTypes[$key]); } $tp->assign('userGroups', $userGroups); $tp->assign('listingTypes', $listingTypes); $tp->assign('errors', $errors); $tp->assign('action', $action); $tp->display($template); }
public static function getRedirectUrlByPageID($pageId) { $error = ''; if (!is_null(SJB_Session::getValue('fromAnonymousShoppingCart'))) { SJB_Session::unsetValue('fromAnonymousShoppingCart'); return SJB_System::getSystemSettings('SITE_URL') . '/shopping-cart/?'; } $redirectUrl = SJB_System::getSystemSettings('SITE_URL') . '/my-account/?'; if (empty($pageId)) { return $redirectUrl; } if ($pageId == 'posting_page') { $user = SJB_UserManager::getCurrentUser(); $userGroupId = SJB_UserGroupManager::getUserGroupIDBySID($user->getUserGroupSID()); $listingTypeSid = SJB_ListingTypeManager::getListingTypeByUserSID($user->getSID()); $listingTypeId = !empty($listingTypeSid) ? SJB_ListingTypeManager::getListingTypeIDBySID(array_pop($listingTypeSid)) : ''; if ($user->hasContract() && SJB_ListingManager::canCurrentUserAddListing($error, $listingTypeId)) { $redirectUrl = SJB_System::getSystemSettings('SITE_URL') . '/add-listing/?listing_type_id=' . $listingTypeId . "&"; } elseif ($user->hasContract()) { $redirectUrl = SJB_System::getSystemSettings('SITE_URL') . '/my-account/?'; } else { $redirectUrl = SJB_System::getSystemSettings('SITE_URL') . '/' . mb_strtolower($userGroupId) . '-products/?postingProductsOnly=1&'; } } return $redirectUrl; }
public function execute() { $tp = SJB_System::getTemplateProcessor(); $display_form = new SJB_Form(); $display_form->registerTags($tp); $current_user = SJB_UserManager::getCurrentUser(); $errors = array(); $template = SJB_Request::getVar('display_template', 'display_listing.tpl'); $tcpdfError = SJB_Request::getVar('error', false); $action = substr($template, 0, -4); $listing_id = SJB_Request::getVar("listing_id"); if (isset($_REQUEST['passed_parameters_via_uri'])) { $passed_parameters_via_uri = SJB_UrlParamProvider::getParams(); $listing_id = isset($passed_parameters_via_uri[0]) ? $passed_parameters_via_uri[0] : null; } if (is_null($listing_id) && SJB_FormBuilderManager::getIfBuilderModeIsSet()) { $listing_type_id = SJB_Request::getVar('listing_type_id'); $listing_id = SJB_ListingManager::getListingIDByListingTypeID($listing_type_id); } if (is_null($listing_id)) { $errors['UNDEFINED_LISTING_ID'] = true; } elseif (is_null($listing = SJB_ListingManager::getObjectBySID($listing_id)) || !SJB_ListingManager::isListingAccessableByUser($listing_id, SJB_UserManager::getCurrentUserSID())) { $errors['WRONG_LISTING_ID_SPECIFIED'] = true; } elseif (!$listing->isActive() && $listing->getUserSID() != SJB_UserManager::getCurrentUserSID()) { $errors['LISTING_IS_NOT_ACTIVE'] = true; } elseif (($listingStatus = SJB_ListingManager::getListingApprovalStatusBySID($listing_id)) != 'approved' && SJB_ListingTypeManager::getWaitApproveSettingByListingType($listing->listing_type_sid) == 1 && $listing->getUserSID() != SJB_UserManager::getCurrentUserSID()) { $errors['LISTING_IS_NOT_APPROVED'] = true; } elseif (SJB_ListingTypeManager::getListingTypeIDBySID($listing->listing_type_sid) == 'Resume' && ($template == 'display_job.tpl' or SJB_System::getURI() == '/print-job/') || SJB_ListingTypeManager::getListingTypeIDBySID($listing->listing_type_sid) == 'Job' && ($template == 'display_resume.tpl' or SJB_System::getURI() == '/print-resume/')) { $errors['WRONG_DISPLAY_TEMPLATE'] = true; } else { $listing_type_id = SJB_ListingTypeManager::getListingTypeIDBySID($listing->listing_type_sid); if (SJB_System::getURI() == '/print-listing/') { SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . '/print-' . strtolower($listing_type_id) . '/?listing_id=' . $listing_id); exit; } $listing->addPicturesProperty(); $display_form = new SJB_Form($listing); $display_form->registerTags($tp); $form_fields = $display_form->getFormFieldsInfo(); $listingOwner = SJB_UserManager::getObjectBySID($listing->user_sid); if ($action !== 'print_listing') { SJB_ListingManager::incrementViewsCounterForListing($listing_id, $listing); } $listing_structure = SJB_ListingManager::createTemplateStructureForListing($listing, array('comments', 'ratings')); $filename = SJB_Request::getVar('filename', false); if ($filename) { $file = SJB_UploadFileManager::openFile($filename, $listing_id); $errors['NO_SUCH_FILE'] = true; } $metaDataProvider = SJB_ObjectMother::getMetaDataProvider(); $tp->assign("METADATA", array("listing" => $metaDataProvider->getMetaData($listing_structure['METADATA']), "form_fields" => $metaDataProvider->getFormFieldsMetadata($form_fields))); $comments = array(); $comments_total = ''; if (SJB_Settings::getSettingByName('show_comments') == '1') { $comments = SJB_CommentManager::getEnabledCommentsToListing($listing_id); $comments_total = count($comments); } $searchId = SJB_Request::getVar("searchId", ""); $page = SJB_Request::getVar("page", ""); $criteria_saver = new SJB_ListingCriteriaSaver($searchId); $searchCriteria = $criteria_saver->getCriteria(); $keywordsHighlight = ''; if (isset($searchCriteria['keywords']) && SJB_System::getSettingByName('use_highlight_for_keywords')) { foreach ($searchCriteria['keywords'] as $type => $keywords) { switch ($type) { case 'like': case 'exact_phrase': $keywordsHighlight = json_encode($keywords); break; case 'all_words': case 'any_words': $keywordsHighlight = json_encode(explode(' ', $keywords)); break; case 'boolean': $keywordsHighlight = json_encode(SJB_BooleanEvaluator::parse($keywords, true)); break; } } } $prevNextIds = $criteria_saver->getPreviousAndNextObjectID($listing_id); $search_criteria_structure = $criteria_saver->createTemplateStructureForCriteria(); //permissions contact info $acl = SJB_Acl::getInstance(); $permission = 'view_' . $listing_type_id . '_contact_info'; $allowViewContactInfo = false; if (SJB_UserManager::isUserLoggedIn()) { if (SJB_ContractManager::isPageViewed($current_user->getSID(), $permission, $listing_id) || $acl->isAllowed($permission) && in_array($acl->getPermissionParams($permission), array('', '0'))) { $allowViewContactInfo = true; } elseif ($acl->isAllowed($permission)) { $viewContactInfo['count_views'] = 0; $contractIDs = $current_user->getContractID(); $numberOfContactViewed = SJB_ContractManager::getNumbeOfPagesViewed($current_user->getSID(), $contractIDs, $permission); foreach ($contractIDs as $contractID) { if ($acl->getPermissionParams($permission, $contractID, 'contract')) { $params = $acl->getPermissionParams($permission, $contractID, 'contract'); $viewsLeft = SJB_ContractManager::getNumbeOfPagesViewed($current_user->getSID(), array($contractID), $permission); if (isset($viewContactInfo['count_views']) && is_numeric($params)) { $viewContactInfo['count_views'] += $params; if ($params > $viewsLeft) { $viewContactInfo['contract_id'] = $contractID; } } } } if ($viewContactInfo && $viewContactInfo['count_views'] > $numberOfContactViewed) { $allowViewContactInfo = true; SJB_ContractManager::addViewPage($current_user->getSID(), $permission, $listing_id, $viewContactInfo['contract_id'], $listing->getListingTypeSID()); } } $user_group_id = SJB_UserGroupManager::getUserGroupIDBySID($current_user->getUserGroupSID()); if ($allowViewContactInfo && $user_group_id == 'JobSeeker' && $listing_type_id == 'Job') { SJB_UserManager::saveRecentlyViewedListings($current_user->getSID(), $listing_id); } } elseif ($acl->isAllowed($permission)) { $allowViewContactInfo = true; } $tp->assign("keywordsHighlight", $keywordsHighlight); $tp->assign('allowViewContactInfo', $allowViewContactInfo); $tp->assign('show_rates', SJB_Settings::getSettingByName('show_rates')); $tp->assign("isApplied", SJB_Applications::isApplied($listing_id, SJB_UserManager::getCurrentUserSID())); $tp->assign('show_rates', SJB_Settings::getSettingByName('show_rates')); $tp->assign('show_comments', SJB_Settings::getSettingByName('show_comments')); $tp->assign('comments', $comments); $tp->assign('comments_total', $comments_total); $tp->assign('listing_id', $listing_id); $tp->assign("form_fields", $form_fields); $tp->assign('video_fields', SJB_HelperFunctions::takeMediaFields($form_fields)); $tp->assign('uri', base64_encode(SJB_Navigator::getURIThis())); $tp->assign('listingOwner', $listingOwner); $listing_structure = SJB_ListingManager::newValueFromSearchCriteria($listing_structure, $criteria_saver->criteria); // SJB-1197: ajax autoupload. // Fix to view video from temporary uploaded storage. $sessionFilesStorage = SJB_Session::getValue('tmp_uploads_storage'); // NEED TO CHECK FOR COMPLEX PARENT AND COMPLEX STEP PARAMETERS! $complexParent = SJB_Request::getVar('complexParent'); $complexStep = SJB_Request::getVar('complexEnum'); $fieldId = SJB_Request::getVar('field_id'); $isComplex = false; if ($complexParent && $complexStep) { $fieldId = $complexParent . ":" . $fieldId . ":" . $complexStep; $isComplex = true; } $tempFileValue = SJB_Array::getPath($sessionFilesStorage, "listings/{$listing_id}/{$fieldId}"); if ($isComplex) { $uploadFileManager = new SJB_UploadFileManager(); $fileLink = $uploadFileManager->getUploadedFileLink($tempFileValue['file_id']); $tp->assign('videoFileLink', $fileLink); } else { if (!empty($tempFileValue)) { $fileUniqueId = isset($tempFileValue['file_id']) ? $tempFileValue['file_id'] : ''; if (!empty($fileUniqueId)) { $upload_manager = new SJB_UploadFileManager(); // file structure for videoplayer $fileInfo = array('file_url' => $upload_manager->getUploadedFileLink($fileUniqueId), 'file_name' => $upload_manager->getUploadedFileName($fileUniqueId), 'saved_file_name' => $upload_manager->getUploadedSavedFileName($fileUniqueId), 'file_id' => $fileUniqueId); $listing_structure[$fieldId] = $fileInfo; } } } // SJB-1197 // GOOGLE MAP SEARCH RESULTS CUSTOMIZATION $zipCode = ''; if (!empty($listing_structure['Location']['ZipCode'])) { $zipCode = $listing_structure['Location']['ZipCode']; } // get 'latitude' and 'longitude' from zipCode field, if it not set $latitude = isset($listing_structure['latitude']) ? $listing_structure['latitude'] : ''; $longitude = isset($listing_structure['longitude']) ? $listing_structure['longitude'] : ''; if (!empty($zipCode) && empty($latitude) && empty($longitude)) { $result = SJB_DB::query("SELECT * FROM `locations` WHERE `name` = ?s LIMIT 1", $zipCode); if ($result) { $listing_structure['latitude'] = $result[0]['latitude']; $listing_structure['longitude'] = $result[0]['longitude']; } } elseif (!empty($listing_structure['Location']['City']) && !empty($listing_structure['Location']['State']) && !empty($listing_structure['Location']['Country'])) { $address = $listing_structure['Location']['City'] . ', ' . $listing_structure['Location']['State'] . ', ' . $listing_structure['Location']['Country']; $address = urlencode($address); $cache = SJB_Cache::getInstance(); $parameters = array('City' => $listing_structure['Location']['City'], 'State' => $listing_structure['Location']['State'], 'Country' => $listing_structure['Location']['Country']); $hash = md5('google_map' . serialize($parameters)); $data = $cache->load($hash); $geoCod = ''; if (!$data) { try { $geoCod = SJB_HelperFunctions::getUrlContentByCurl("http://maps.googleapis.com/maps/api/geocode/json?address={$address}&sensor=false"); $geoCod = json_decode($geoCod); if ($geoCod->status == 'OK') { $cache->save($geoCod, $hash); } } catch (Exception $e) { $backtrace = SJB_Logger::getBackTrace(); SJB_Error::writeToLog(array(array('level' => 'E_USER_WARNING', 'message' => $e->getMessage(), 'file' => $e->getFile(), 'line' => $e->getLine(), 'backtrace' => sprintf("BACKTRACE:\n [%s]", join("<br/>\n", $backtrace))))); } } else { $geoCod = $data; } try { if (!is_object($geoCod)) { throw new Exception("Map object nave not been Created"); } if ($geoCod->status !== 'OK') { throw new Exception("Status is not OK"); } $location = $geoCod->results[0]->geometry->location; $listing_structure['latitude'] = $location->lat; $listing_structure['longitude'] = $location->lng; } catch (Exception $e) { $backtrace = SJB_Logger::getBackTrace(); SJB_Error::writeToLog(array(array('level' => 'E_USER_WARNING', 'message' => $e->getMessage(), 'file' => $e->getFile(), 'line' => $e->getLine(), 'backtrace' => sprintf("BACKTRACE:\n [%s]", join("<br/>\n", $backtrace))))); } } if (SJB_Request::getVar('view')) { $tp->assign('listings', array($listing_structure)); } $tp->filterThenAssign("listing", $listing_structure); $tp->assign("prev_next_ids", $prevNextIds); $tp->assign("searchId", $searchId); $tp->assign("page", $page); $tp->filterThenAssign("search_criteria", $search_criteria_structure); $tp->filterThenAssign("search_uri", $criteria_saver->getUri()); if ($field_id = SJB_Request::getVar('field_id')) { // SJB-825 $complexEnum = SJB_Request::getVar('complexEnum', null, 'GET'); $complexFieldID = SJB_Request::getVar('complexParent', null, 'GET'); if (!is_null($complexEnum) && !is_null($complexFieldID)) { $videoFileID = $complexFieldID . ':' . $field_id . ':' . $complexEnum . '_' . $listing_id; $videoFileLink = SJB_UploadFileManager::getUploadedFileLink($videoFileID); if ($videoFileLink) { $tp->assign('videoFileLink', $videoFileLink); } } // SJB-825 $tp->assign('field_id', $field_id); } else { if (SJB_Request::getVar('action', false) == 'download_pdf_version') { $formBuilder = SJB_FormBuilderManager::getFormBuilder(SJB_FormBuilderManager::FORM_BUILDER_TYPE_PDF, $listing_type_id); $formBuilder->setChargedTemplateProcessor($tp); $tpl = 'resume_to_pdf.tpl'; if ($listing_structure['anonymous'] == '1') { $filename = 'Anonymous User_' . $listing_structure['Title'] . '.pdf'; } else { $filename = $listing_structure['user']['FirstName'] . ' ' . $listing_structure['user']['LastName'] . '_' . $listing_structure['Title'] . '.pdf'; } try { $html = $tp->fetch($tpl); $html = preg_replace('/<div[^>]*>/', '', $html); $html = str_replace('</div>', '', $html); SJB_HelperFunctions::html2pdf($html, $filename, str_replace('http://', '', SJB_HelperFunctions::getSiteUrl())); exit; } catch (Exception $e) { SJB_Error::writeToLog($e->getMessage()); SJB_HelperFunctions::redirect(SJB_System::getSystemSettings("SITE_URL") . '/display-resume/' . $listing_id . '/?error=TCPDF_ERROR'); } } else { $formBuilder = SJB_FormBuilderManager::getFormBuilder(SJB_FormBuilderManager::FORM_BUILDER_TYPE_DISPLAY, $listing_type_id); $formBuilder->setChargedTemplateProcessor($tp); } } } if ($errors) { foreach ($errors as $k => $v) { switch ($k) { case 'TCPDF_ERROR': case 'UNDEFINED_LISTING_ID': case 'WRONG_LISTING_ID_SPECIFIED': case 'LISTING_IS_NOT_ACTIVE': case 'LISTING_IS_NOT_APPROVED': $header = $_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found'; $header_status = "Status: 404 Not Found"; header($header_status); header($header); SJB_System::setGlobalTemplateVariable('page_not_found', true); break; } } } $tp->assign('errors', $errors); $tp->assign('tcpdfError', $tcpdfError); $tp->display($template); }
public function current() { $listing_structure = array(); $info = current($this->array); if (is_numeric($info)) { $sid = $info; $cache = SJB_Cache::getInstance(); $cacheID = md5('ListingIterator::SJB_ListingManager::getObjectBySID' . $sid); if ($cache->test($cacheID)) { $listing = $cache->load($cacheID); } else { $listing = SJB_ListingManager::getObjectBySID($sid); $cache->save($listing, $cacheID, array(SJB_Cache::TAG_LISTINGS)); } $listing->addPicturesProperty(); $cacheId = md5('SJB_ListingTypeManager::getListingTypeIDBySID' . $listing->getListingTypeSID()); if (SJB_MemoryCache::has($cacheId)) { $listing_type = SJB_MemoryCache::get($cacheId); } else { $listing_type = SJB_ListingTypeManager::getListingTypeIDBySID($listing->getListingTypeSID()); SJB_MemoryCache::set($cacheId, $listing_type); } $listing_structure = SJB_ListingManager::createTemplateStructureForListing($listing); $listing_structure = SJB_ListingManager::newValueFromSearchCriteria($listing_structure, $this->criteria); if ($this->user_logged_in) { $listing_structure['saved_listing'] = SJB_SavedListings::getSavedListingsByUserAndListingSid($this->current_user_sid, $listing->getID()); } $listing_structure['activation_date'] = date('Y-m-d H:i:s', strtotime($listing_structure['activation_date'])); $listing_structure['expiration_date'] = date('Y-m-d H:i:s', strtotime($listing_structure['expiration_date'])); $listing_structure['listing_url'] = SJB_System::getSystemSettings('SITE_URL') . "/display-" . strtolower($listing_type) . "/" . $listing->getSID() . "/"; if (isset($listing->details->properties['EmploymentType'])) { $employmentInfo = $listing->details->properties['EmploymentType']->type->property_info; $employmentTypes = array(); $employment = explode(",", $employmentInfo['value']); foreach ($employmentInfo['list_values'] as $type) { $empType = str_replace(" ", "", $type['caption']); $employmentTypes[$empType] = 0; if (in_array($type['id'], $employment)) { $employmentTypes[$empType] = 1; } } $listing_structure['myEmploymentType'] = $employmentTypes; } // GOOGLE MAP SEARCH RESULTS CUSTOMIZATION if ($this->view == 'map') { $zipCode = $listing_structure['Location']['ZipCode']; // get 'latitude' and 'longitude' from zipCode field, if it not set $latitude = isset($listing_structure['latitude']) ? $listing_structure['latitude'] : ''; $longitude = isset($listing_structure['longitude']) ? $listing_structure['longitude'] : ''; if (!empty($zipCode) && empty($latitude) && empty($longitude)) { $result = SJB_DB::query("SELECT * FROM `locations` WHERE `name` = ?s LIMIT 1", $zipCode); if ($result) { $current_coordinates = array($result[0]['latitude'], $result[0]['longitude']); if (in_array($current_coordinates, self::$coordinates)) { self::$index += 0.0001; } $listing_structure['latitude'] = $result[0]['latitude'] + self::$index; $listing_structure['longitude'] = $result[0]['longitude'] + self::$index; self::$coordinates = array_merge(self::$coordinates, array($current_coordinates)); } } elseif (!empty($listing_structure['Location']['City']) && !empty($listing_structure['Location']['State']) && !empty($listing_structure['Location']['Country'])) { $address = $listing_structure['Location']['City'] . ', ' . $listing_structure['Location']['State'] . ', ' . $listing_structure['Location']['Country']; $address = urlencode($address); $cache = SJB_Cache::getInstance(); $parameters = array('City' => $listing_structure['Location']['City'], 'State' => $listing_structure['Location']['State'], 'Country' => $listing_structure['Location']['Country']); $hash = md5('google_map' . serialize($parameters)); $data = $cache->load($hash); if (!$data) { try { $geoCod = SJB_HelperFunctions::getUrlContentByCurl("http://maps.googleapis.com/maps/api/geocode/json?address={$address}&sensor=false"); $geoCod = json_decode($geoCod); if ($geoCod->status == 'OK') { $cache->save($geoCod, $hash); } } catch (Exception $e) { $backtrace = SJB_Logger::getBackTrace(); SJB_Error::writeToLog(array(array('level' => 'E_USER_WARNING', 'message' => $e->getMessage(), 'file' => $e->getFile(), 'line' => $e->getLine(), 'backtrace' => sprintf("BACKTRACE:\n [%s]", join("<br/>\n", $backtrace))))); } } else { $geoCod = $data; } try { if (!is_object($geoCod)) { throw new Exception("Map object nave not been Created"); } if ($geoCod->status != 'OK') { throw new Exception("Status is not OK"); } $location = $geoCod->results[0]->geometry->location; $current_coordinates = array($location->lat, $location->lng); if (in_array($current_coordinates, self::$coordinates)) { self::$index += 0.0001; } $listing_structure['latitude'] = $location->lat + self::$index; $listing_structure['longitude'] = $location->lng + self::$index; self::$coordinates = array_merge(self::$coordinates, array($current_coordinates)); } catch (Exception $e) { $backtrace = SJB_Logger::getBackTrace(); SJB_Error::writeToLog(array(array('level' => 'E_USER_WARNING', 'message' => $e->getMessage(), 'file' => $e->getFile(), 'line' => $e->getLine(), 'backtrace' => sprintf("BACKTRACE:\n [%s]", join("<br/>\n", $backtrace))))); } } } } elseif ($info) { $listing_structure = $info; } return $listing_structure; }
public static function updatePagesByListingTypeSID($listingTypeSID, $newListingTypeName) { $listingTypeID = SJB_ListingTypeManager::getListingTypeIDBySID($listingTypeSID); $listingTypeID = strtolower($listingTypeID); $pagesInfo = SJB_DB::query("SELECT `uri`, `title` FROM `pages` WHERE `access_type` = 'user' AND `uri` LIKE '%{$listingTypeID}%'"); if (!in_array($listingTypeID, array('Job', 'Resume'))) { $newListingTypeName = $newListingTypeName . ' Listing'; } foreach ($pagesInfo as $pageInfo) { switch ($pageInfo['uri']) { case '/' . strtolower($listingTypeID) . '-preview/': $title = $newListingTypeName . ' Preview'; self::updatePageTitleByUri($title, $pageInfo['uri']); break; case '/my-' . strtolower($listingTypeID) . '-details/': $title = $newListingTypeName . ' Details'; self::updatePageTitleByUri($title, $pageInfo['uri']); break; case '/print-my-' . strtolower($listingTypeID) . '/': $title = 'Print ' . $newListingTypeName; self::updatePageTitleByUri($title, $pageInfo['uri']); break; case '/print-' . strtolower($listingTypeID) . '/': $title = 'Print ' . $newListingTypeName; self::updatePageTitleByUri($title, $pageInfo['uri']); break; case '/edit-' . strtolower($listingTypeID) . '/': $title = 'Edit ' . $newListingTypeName; self::updatePageTitleByUri($title, $pageInfo['uri']); break; case '/manage-' . strtolower($listingTypeID) . '/': $title = 'Manage ' . $newListingTypeName; self::updatePageTitleByUri($title, $pageInfo['uri']); break; } } }
public function execute() { // xml-feeds table $feedsTable = 'listing_feeds'; $feed_mimetype = 'text/xml'; $feedId = SJB_Request::getVar('feedId', ''); $searchSID = SJB_Request::getVar('searchSID', false); $feed = SJB_DB::query("SELECT * FROM {$feedsTable} WHERE `sid` = ?n", $feedId); $feed = array_pop($feed); if (empty($feed) && $searchSID === false) { $tp = SJB_System::getTemplateProcessor(); $errors[] = 'RSS is not exists'; $template = 'feed_error.tpl'; $tp->assign('errors', $errors); } else { if ($searchSID) { $template = 'feed_saved_search.tpl'; $count_listings = SJB_Request::getVar('count_listings', 10); if ($count_user_defined = SJB_Request::getVar('count_listings', false, 'GET')) { $count_listings = $count_user_defined; } // get saved search results for feed $searches = SJB_SavedSearches::getSavedJobAlertFromDBBySearchSID($searchSID); $searches = array_pop($searches); $listing_type_id = null; foreach ($searches['data']['listing_type'] as $val) { $listing_type_id = $val; break; } $searches['data']['default_sorting_field'] = 'activation_date'; $searches['data']['default_sorting_order'] = 'DESC'; $searches['data']['default_listings_per_page'] = $count_listings; $searchResultsTP = new SJB_SearchResultsTP($searches['data'], $listing_type_id); $tp = $searchResultsTP->getChargedTemplateProcessor(); // TODO: нужно абстрагировать получение переменной из шаблонизатора $tp->assign("listings", $tp->getVariable('listings')->value); $tp->assign('listing_type_id', $listing_type_id); $tp->assign("search_name", $searches['name']); $tp->assign("feed", $feed); $tp->assign("query_string", htmlspecialchars($_SERVER['QUERY_STRING'])); $tp->assign("lastBuildDate", date('D, d M Y H:i:s')); } else { $template = $feed['template']; $count_listing = $feed['count']; $feed_type = $feed['type']; $feed_mimetype = $feed['mime_type']; if ($count_listing == 0) { $count_listing = 1000000; } $listing_type = SJB_ListingTypeManager::getListingTypeIDBySID($feed_type); $searches['data']['listing_type']['equal'] = $listing_type; $searches['data']['default_sorting_field'] = 'activation_date'; $searches['data']['default_sorting_order'] = 'DESC'; $searches['data']['default_listings_per_page'] = $count_listing; $searchResultsTP = new SJB_SearchResultsTP($searches['data'], $listing_type); $tp = $searchResultsTP->getChargedTemplateProcessor(); $tp->assign('feed', $feed); $tp->assign('count_listing', $count_listing); $tp->assign('lastBuildDate', date('D, d M Y H:i:s')); } } for ($i = 0; $i < ob_get_level(); $i++) { ob_end_clean(); } header('Content-Type: ' . $feed_mimetype); $tp->display($template); exit; }
public static function deleteBreadcrumbsByListingTypeSID($listingTypeSID) { $listingTypeID = SJB_ListingTypeManager::getListingTypeIDBySID($listingTypeSID); $uris = self::getBreadcrumbsUrisByListingTypeID($listingTypeID); SJB_DB::query("DELETE FROM `breadcrumbs_structure` WHERE `uri` IN (?l)", $uris); }
public function execute() { $tp = SJB_System::getTemplateProcessor(); $current_user = SJB_UserManager::getCurrentUser(); $action = SJB_Request::getVar('action', 'productList'); $productSID = SJB_Request::getVar('product_sid', 0, 'default', 'int'); $template = 'products.tpl'; $availableProducts = array(); $errors = array(); switch ($action) { case 'productList': if (SJB_UserManager::isUserLoggedIn()) { $postingProductsOnly = SJB_Request::getVar('postingProductsOnly', false); $availableProducts = SJB_ProductsManager::getProductsByUserGroupSID($current_user->getUserGroupSID(), $current_user->getSID()); $trialProduncts = $current_user->getTrialProductSIDByUserSID(); foreach ($availableProducts as $key => $availableProduct) { if (in_array($availableProduct['sid'], $trialProduncts) || $postingProductsOnly && $availableProduct['product_type'] != "post_listings" && $availableProduct['product_type'] != "mixed_product") { unset($availableProducts[$key]); } } if ($postingProductsOnly) { $tp->assign('postingProductsOnly', $postingProductsOnly); } } elseif ($userGroupID = SJB_Request::getVar('userGroupID', false)) { $userGroupSID = SJB_UserGroupManager::getUserGroupSIDByID($userGroupID); $availableProducts = SJB_ProductsManager::getProductsByUserGroupSID($userGroupSID, 0); } else { $availableProducts = SJB_ProductsManager::getAllActiveProducts(); } foreach ($availableProducts as $key => $availableProductInfo) { if (SJB_ProductsManager::isProductTrialAndAlreadyInCart($availableProductInfo, $current_user)) { unset($availableProducts[$key]); continue; } $availableProduct = new SJB_Product($availableProductInfo, $availableProductInfo['product_type']); $availableProduct->setNumberOfListings(1); $availableProducts[$key]['price'] = $availableProduct->getPrice(); if (isset($availableProducts[$key]['listing_type_sid'])) { $availableProducts[$key]['listing_type_id'] = SJB_ListingTypeDBManager::getListingTypeIDBySID($availableProducts[$key]['listing_type_sid']); } } SJB_Event::dispatch('RedefineTemplateName', $template, true); SJB_Event::dispatch('RedefineProductsDisplayInfo', $availableProducts, true); $tp->assign("account_activated", SJB_Request::getVar('account_activated', '')); $tp->assign("availableProducts", $availableProducts); break; case 'view_product_detail': $template = 'view_product_detail.tpl'; if (!SJB_UserManager::isUserLoggedIn() || $current_user->mayChooseProduct($productSID, $errors)) { $productInfo = SJB_ProductsManager::getProductInfoBySID($productSID); if (in_array($productInfo['product_type'], array('post_listings', 'mixed_product'))) { $productInfo['listingTypeID'] = SJB_ListingTypeManager::getListingTypeIDBySID($productInfo['listing_type_sid']); } $event = SJB_Request::getVar('event', false); if ($event) { if ($productInfo) { switch ($productInfo['product_type']) { case 'banners': $params = $_REQUEST; if (empty($params['title'])) { $errors[] = "Banner Title is empty."; } if (empty($params['link'])) { $errors[] = "Banner link mismatched!"; } if (empty($_FILES['image']['name'])) { $errors[] = "No file attached!"; } elseif ($_FILES['image']['error']) { switch ($_FILES['image']['error']) { case '1': $errors[] = 'UPLOAD_ERR_INI_SIZE'; break; case '2': $errors[] = 'UPLOAD_ERR_FORM_SIZE'; break; case '3': $errors[] = 'UPLOAD_ERR_PARTIAL'; break; case '4': $errors[] = 'UPLOAD_ERR_NO_FILE'; break; default: $errors[] = 'NOT_UPLOAD_FILE'; break; } } else { $imageInfo = @getimagesize($_FILES['image']['tmp_name']); if (!$imageInfo || $imageInfo['2'] < 1 && $imageInfo['2'] > 3) { $errors[] = 'Image format is not supported'; } elseif (!empty($productInfo['width']) && $imageInfo[0] != $productInfo['width']) { $errors[] = "Your banner dimensions exceed the required size. Please upload an appropriate banner."; } elseif (!empty($productInfo['height']) && $imageInfo[1] != $productInfo['height']) { $errors[] = "Your banner dimensions exceed the required size. Please upload an appropriate banner."; } } if ($errors) { break; } //add banner $title = $params['title']; $link = $params['link']; $expr = preg_match("/(http:\\/\\/)/", $link, $matches); if ($expr != true) { $link = "http://" . $link; } $filesDir = SJB_System::getSystemSettings('FILES_DIR'); $ext = preg_match("|\\.(\\w{3})\\b|u", $_FILES['image']['name'], $arr); $fileName = preg_replace("|\\.(\\w{3})\\b|u", "", $_FILES['image']['name']); $hashName = md5(time() * $_FILES['image']['size']) . "_" . $fileName; $bannerFilePath = $filesDir . "banners/" . $hashName . "." . $arr[1]; $copy = move_uploaded_file($_FILES['image']['tmp_name'], $bannerFilePath); if (!$copy) { $errors[] = 'Cannot copy file from TMP dir to Banners Dir'; break; } if ($_FILES['image']['type'] != 'application/x-shockwave-flash') { $bannerInfo = getimagesize($bannerFilePath); if ($productInfo['width'] != '' && $productInfo['height'] != '') { $sx = $productInfo['width']; $sy = $productInfo['height']; } else { $sx = $bannerInfo[0]; $sy = $bannerInfo[1]; } $type = $bannerInfo['mime']; } else { if ($productInfo['width'] == '' || $productInfo['height'] == '') { $errors[] = 'Your banner dimensions exceed the required size. Please upload an appropriate banner.'; break; } $sx = $productInfo['width']; $sy = $productInfo['height']; $type = $_FILES['image']['type']; } $active = 0; $group = $productInfo['banner_group_sid']; $params['bannerFilePath'] = "/" . str_replace("../", "/", str_replace(SJB_BASE_DIR, '', $bannerFilePath)); $params['openBannerIn'] = ''; $params['bannerType'] = 'file'; $params['code'] = ''; $params['title'] = $title; $params['link'] = $link; $params['type'] = $type; $params['sx'] = $sx; $params['sy'] = $sy; $params['banner_group_sid'] = $group; $productInfo['banner_info'] = $params; break; } if (!$errors) { $numberOfListings = SJB_Request::getVar('number_of_listings'); $extraInfo = SJB_ProductsManager::getProductExtraInfoBySID($productSID); if (!empty($extraInfo['pricing_type']) && $extraInfo['pricing_type'] == 'volume_based' && $numberOfListings) { $productInfo['number_of_listings'] = $numberOfListings; $productObj = new SJB_Product($productInfo, $productInfo['product_type']); $number_of_listings = !empty($productInfo['number_of_listings']) ? $productInfo['number_of_listings'] : 1; $productObj->setNumberOfListings($number_of_listings); $productInfo['price'] = $productObj->getPrice(); } if (SJB_UserManager::isUserLoggedIn()) { SJB_ShoppingCart::addToShoppingCart($productInfo, $current_user->getSID()); } else { if (isset($_SESSION['products'])) { foreach ($_SESSION['products'] as $addedProduct) { $addedProductInfo = unserialize($addedProduct['product_info']); if ($addedProductInfo['user_group_sid'] != $productInfo['user_group_sid']) { $errors[] = 'You are trying to add products of different User Groups in your Shopping Cart. You сan add only products belonging to one User Group. If you want to add this product in the Shopping Cart please go back to the Shopping Cart and remove products of other User Groups.'; break; } } } if (!$errors) { $id = time(); $_SESSION['products'][$id]['product_info'] = serialize($productInfo); $_SESSION['products'][$id]['sid'] = $id; $_SESSION['products'][$id]['user_sid'] = 0; } } if (!$errors) { SJB_HelperFunctions::redirect(SJB_System::getSystemsettings('SITE_URL') . '/shopping-cart/'); } } } } if (!empty($productInfo['expiration_period']) && !is_numeric($productInfo['expiration_period'])) { $productInfo['period'] = ucwords($productInfo['expiration_period']); } elseif (!empty($productInfo['pricing_type']) && $productInfo['pricing_type'] == 'volume_based' && !empty($productInfo['volume_based_pricing'])) { $volumeBasedPricing = $productInfo['volume_based_pricing']; $price = array(); $firstPrice = 0; if (!empty($volumeBasedPricing['listings_range_from'])) { for ($i = 1; $i <= count($volumeBasedPricing['listings_range_from']); $i++) { if ($volumeBasedPricing['listings_range_from'][$i] == $volumeBasedPricing['listings_range_to'][$i]) { $price[$i]['range']['from'] = $volumeBasedPricing['listings_range_from'][$i]; } else { $price[$i]['range']['from'] = $volumeBasedPricing['listings_range_from'][$i]; $price[$i]['range']['to'] = $volumeBasedPricing['listings_range_to'][$i]; } $price[$i]['price'] = $volumeBasedPricing['price_per_unit'][$i]; if ($i > 1 && $firstPrice > $volumeBasedPricing['price_per_unit'][$i]) { $price[$i]['savings'] = round(100 - 100 / $firstPrice * $volumeBasedPricing['price_per_unit'][$i]); } else { $firstPrice = $volumeBasedPricing['price_per_unit'][$i]; } } } $productInfo['volume_based_pricing'] = $price; $minListings = min($volumeBasedPricing['listings_range_from']); $maxListings = max($volumeBasedPricing['listings_range_to']); $countListings = array(); for ($i = $minListings; $i <= $maxListings; $i++) { $countListings[] = $i; } $productInfo['count_listings'] = $countListings; } elseif (!empty($productInfo['pricing_type']) && $productInfo['pricing_type'] == 'fixed') { $productInfo['fixed_period'] = 1; } if ($productInfo['product_type'] == 'banners') { $params = $_REQUEST; $bannersObj = new SJB_Banners(); $banner_fields = $bannersObj->getBannersMeta(); foreach ($banner_fields as $key => $banner_field) { $banner_fields[$banner_field['id']] = $banner_field; if (!empty($params[$banner_field['id']])) { $banner_fields[$banner_field['id']]['value'] = $params[$banner_field['id']]; } unset($banner_fields[$key]); } if (!empty($params['errors'])) { $tp->assign("errors", $params['errors']); } $tp->assign("banner_fields", $banner_fields); } $userGroupID = SJB_UserGroupDBManager::getUserGroupIDBySID($productInfo['user_group_sid']); $tp->assign('productInfo', $productInfo); $tp->assign('userGroupID', $userGroupID); $tp->assign('productSID', $productSID); $tp->assign('mayChooseProduct', true); } $tp->assign('errors', $errors); break; } $tp->display($template); }
public function execute() { $this->tp = SJB_System::getTemplateProcessor(); $error = null; $post_max_size_orig = ini_get("post_max_size"); $session_maxlifetime = ini_get("session.gc_maxlifetime"); $server_content_length = isset($_SERVER['CONTENT_LENGTH']) ? $_SERVER['CONTENT_LENGTH'] : null; $this->listingTypeID = SJB_Request::getVar('listing_type_id', false); /** * >>>>> for listing preview @author still */ $this->formSubmittedFromPreview = SJB_Request::getVar('action_add', false, 'POST') && SJB_Request::getVar('from-preview', false, 'POST'); $editTempListing = SJB_Request::getVar('edit_temp_listing', false, 'POST'); if ($this->formSubmittedFromPreview || $editTempListing) { $listingSID = SJB_Session::getValue('preview_listing_sid_for_add'); $listingInfo = SJB_ListingManager::getListingInfoBySID($listingSID); if (empty($this->listingTypeID) && !empty($listingInfo)) { // if on preview page "POST" button was pressed if ($this->formSubmittedFromPreview) { $listing = new SJB_Listing($listingInfo, $listingInfo['listing_type_sid']); $properties = $listing->getProperties(); foreach ($properties as $fieldID => $property) { switch ($property->getType()) { case 'date': if (!empty($listingInfo[$fieldID])) { $listingInfo[$fieldID] = SJB_I18N::getInstance()->getDate($listingInfo[$fieldID]); } break; case 'complex': $complex = $property->type->complex; $complexProperties = $complex->getProperties(); foreach ($complexProperties as $complexfieldID => $complexProperty) { if ($complexProperty->getType() == 'date') { $values = $complexProperty->getValue(); foreach ($values as $index => $value) { if (!empty($listingInfo[$fieldID][$complexfieldID][$index])) { $listingInfo[$fieldID][$complexfieldID][$index] = SJB_I18N::getInstance()->getDate($listingInfo[$fieldID][$complexfieldID][$index]); } } } } break; } } } if ($editTempListing || $this->formSubmittedFromPreview) { $current_user = SJB_UserManager::getCurrentUser(); $this->listingTypeID = SJB_ListingTypeManager::getListingTypeIDBySID($listingInfo['listing_type_sid']); // check wether user is owner of the temp listing if ($listingInfo['user_sid'] != $current_user->getID()) { $error['NOT_OWNER_OF_LISTING'] = $listingSID; } // set listing info and listing type id $_REQUEST = array_merge($_REQUEST, $listingInfo); $_REQUEST['listing_type_id'] = $this->listingTypeID; } } if (empty($listingInfo)) { $listingSID = null; SJB_Session::unsetValue('preview_listing_sid_for_add'); } } else { $listingSID = null; SJB_Session::unsetValue('preview_listing_sid_for_add'); } /* * <<<<< for listing preview */ // get post_max_size in bytes $val = trim($post_max_size_orig); $tmp = substr($val, strlen($val) - 1); $tmp = strtolower($tmp); /* * if ini value is K - then multiply to 1024 * if ini value is M - then multiply twice: in case 'm', and case 'k' * if ini value is G - then multiply tree times: in 'g', 'm', 'k' * * out value - in bytes! */ switch ($tmp) { case 'g': $val *= 1024; case 'm': $val *= 1024; case 'k': $val *= 1024; } $post_max_size = $val; $filename = SJB_Request::getVar('filename', false); if ($filename) { $listing_id = SJB_Request::getVar('listing_id', '', 'default', 'int'); $file = SJB_UploadFileManager::openFile($filename, $listing_id); $errors['NO_SUCH_FILE'] = true; } if (empty($_POST) && $server_content_length > $post_max_size) { $errors['MAX_FILE_SIZE_EXCEEDED'] = 1; $listing_id = SJB_Request::getVar('listing_id', null, 'GET', 'int'); $this->tp->assign('post_max_size', $post_max_size_orig); } $tmpListingIDFromRequest = SJB_Request::getVar('listing_id', false, 'default', 'int'); if (!empty($tmpListingIDFromRequest)) { $tmpListingSID = $tmpListingIDFromRequest; } elseif (!$tmpListingIDFromRequest) { $tmpListingSID = time(); } $this->buttonPressedPostToProceed = SJB_Request::getVar('proceed_to_posting'); if (SJB_UserManager::isUserLoggedIn()) { SJB_Session::unsetValue('proceed_to_posting'); SJB_Session::unsetValue('productSID'); SJB_Session::unsetValue('listing_type_id'); if (!is_null($this->buttonPressedPostToProceed)) { $productSID = SJB_Request::getVar('productSID', false, 'default', 'int'); $productInfo = SJB_ProductsManager::getProductInfoBySID($productSID); $userInfo = SJB_UserManager::getCurrentUserInfo(); if ($userInfo['user_group_sid'] == $productInfo['user_group_sid']) { $this->tp->assign('productSID', $productSID); $this->tp->assign('proceed_to_posting', $productSID); $this->tp->assign("listing_id", $tmpListingSID); $this->addListing($listingSID, 0, $productSID); } else { $this->displayErrorTpl('DO_NOT_MATCH_POST_THIS_TYPE_LISTING'); } } else { if ($productsInfo = SJB_ListingManager::canCurrentUserAddListing($error, $this->listingTypeID)) { if ($contractID = SJB_Request::getVar('contract_id', false, 'POST')) { $this->tp->assign("listing_id", $tmpListingSID); $this->addListing($listingSID, $contractID, false); } elseif (count($productsInfo) == 1) { $productInfo = array_pop($productsInfo); $contractID = $productInfo['contract_id']; $this->tp->assign("listing_id", $tmpListingSID); $this->addListing($listingSID, $contractID, false); } else { $this->tp->assign('listing_id', $tmpListingSID); $this->tp->assign('products_info', $productsInfo); $this->tp->assign('listingTypeID', $this->listingTypeID); $this->tp->display('listing_product_choice.tpl'); } } else { if ($error == 'NO_CONTRACT') { SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . '/products/?postingProductsOnly=1&page='); } $this->displayErrorTpl($error); } } } else { if ($this->buttonPressedPostToProceed != false) { SJB_Session::setValue('proceed_to_posting', true); SJB_Session::setValue('productSID', SJB_Request::getVar('productSID', '', 'default', 'int')); SJB_Session::setValue('listing_type_id', $this->listingTypeID); } $this->displayErrorTpl('NOT_LOGGED_IN'); } }
public static function getListingsFromIndeed($params) { $listingTypeID = SJB_ListingTypeManager::getListingTypeIDBySID($params->listing_type_sid); if ($listingTypeID == 'Job' && $GLOBALS['uri'] == '/search-results-jobs/' || $GLOBALS['uri'] == '/ajax/') { $page = isset($_REQUEST['page']) ? $_REQUEST['page'] : $params->listing_search_structure['current_page']; $publisherID = SJB_Settings::getSettingByName('IndeedPublisherID'); $limit = SJB_Settings::getSettingByName('countIndeedListings'); $ip = $_SERVER['REMOTE_ADDR']; $userAgent = urlencode(SJB_Request::getUserAgent()); $start = $limit * ($page - 1); $stateIndexes = array('AL' => 'Alabama', 'AK' => 'Alaska', 'AZ' => 'Arizona', 'AR' => 'Arkansas', 'CA' => 'California', 'CO' => 'Colorado', 'CT' => 'Connecticut', 'DE' => 'Delaware', 'FL' => 'Florida', 'GA' => 'Georgia', 'HI' => 'Hawaii', 'ID' => 'Idaho', 'IL' => 'Illinois', 'IN' => 'Indiana', 'IA' => 'Iowa', 'KS' => 'Kansas', 'KY' => 'Kentucky', 'LA' => 'Louisiana', 'ME' => 'Maine', 'MD' => 'Maryland', 'MA' => 'Massachusetts', 'MI' => 'Michigan', 'MN' => 'Minnesota', 'MS' => 'Mississippi', 'MO' => 'Missouri', 'MT' => 'Montana', 'NE' => 'Nebraska', 'NV' => 'Nevada', 'NH' => 'New Hampshire', 'NJ' => 'New Jersey', 'NM' => 'New Mexico', 'NY' => 'New York', 'NC' => 'North Carolina', 'ND' => 'North Dakota', 'OH' => 'Ohio', 'OK' => 'Oklahoma', 'OR' => 'Oregon', 'PA' => 'Pennsylvania', 'RI' => 'Rhode Island', 'SC' => 'South Carolina', 'SD' => 'South Dakota', 'TN' => 'Tennessee', 'TX' => 'Texas', 'UT' => 'Utah', 'VT' => 'Vermont', 'VA' => 'Virginia', 'WA' => 'Washington', 'WV' => 'West Virginia', 'WI' => 'Wisconsin', 'WY' => 'Wyoming', 'DC' => 'District of Columbia', 'AS' => 'American Samoa', 'GU' => 'Guam', 'MP' => 'Northern Mariana Islands', 'PR' => 'Puerto Rico', 'UM' => "United's Minor Outlying Islands", 'VI' => 'Virgin Islands'); $countryCodes = array('United States' => 'us', 'Argentina' => 'ar', 'Australia' => 'au', 'Austria' => 'at', 'Bahrain' => 'bh', 'Belgium' => 'be', 'Brazil' => 'br', 'Canada' => 'ca', 'Chile' => 'cl', 'China' => 'cn', 'Colombia' => 'co', 'Czech Republic' => 'cz', 'Denmark' => 'dk', 'Finland' => 'fi', 'France' => 'fr', 'Germany' => 'de', 'Greece' => 'gr', 'Hong Kong' => 'hk', 'Hungary' => 'hu', 'India' => 'in', 'Indonesia' => 'id', 'Ireland' => 'ie', 'Israel' => 'il', 'Italy' => 'it', 'Japan' => 'jp', 'Korea' => 'kr', 'Kuwait' => 'kw', 'Luxembourg' => 'lu', 'Malaysia' => 'my', 'Mexico' => 'mx', 'Netherlands' => 'nl', 'New Zealand' => 'nz', 'Norway' => 'no', 'Oman' => 'om', 'Pakistan' => 'pk', 'Peru' => 'pe', 'Philippines' => 'ph', 'Poland' => 'pl', 'Portugal' => 'pt', 'Qatar' => 'qa', 'Romania' => 'ro', 'Russia' => 'ru', 'Russian Federation' => 'ru', 'Saudi Arabia' => 'sa', 'Singapore' => 'sg', 'South Africa' => 'za', 'Spain' => 'es', 'Sweden' => 'se', 'Switzerland' => 'ch', 'Taiwan' => 'tw', 'Turkey' => 'tr', 'United Arab Emirates' => 'ae', 'United Kingdom' => 'gb', 'Venezuela' => 've'); $countryDomains = array('us' => 'indeed.com', 'ar' => 'ar.indeed.com', 'au' => 'au.indeed.com', 'at' => 'at.indeed.com', 'bh' => 'bh.indeed.com', 'be' => 'be.indeed.com', 'br' => 'indeed.com.br', 'ca' => 'ca.indeed.com', 'cl' => 'indeed.cl', 'cn' => 'cn.indeed.com', 'co' => 'co.indeed.com', 'cz' => 'cz.indeed.com', 'dk' => 'dk.indeed.com', 'fi' => 'indeed.fi', 'fr' => 'indeed.fr', 'de' => 'de.indeed.com', 'gr' => 'gr.indeed.com', 'hk' => 'indeed.hk', 'hu' => 'hu.indeed.com', 'in' => 'indeed.co.in', 'id' => 'id.indeed.com', 'ie' => 'ie.indeed.com', 'il' => 'il.indeed.com', 'it' => 'it.indeed.com', 'jp' => 'jp.indeed.com', 'kr' => 'kr.indeed.com', 'kw' => 'kw.indeed.com', 'lu' => 'indeed.lu', 'my' => 'indeed.com.my', 'mx' => 'indeed.com.mx', 'nl' => 'indeed.nl', 'nz' => 'nz.indeed.com', 'no' => 'no.indeed.com', 'om' => 'om.indeed.com', 'pk' => 'indeed.com.pk', 'pe' => 'indeed.com.pe', 'ph' => 'indeed.com.ph', 'pl' => 'pl.indeed.com', 'pt' => 'indeed.pt', 'qa' => 'qa.indeed.com', 'ro' => 'ro.indeed.com', 'ru' => 'ru.indeed.com', 'sa' => 'sa.indeed.com', 'sg' => 'indeed.com.sg', 'za' => 'indeed.co.za', 'es' => 'indeed.es', 'se' => 'se.indeed.com', 'ch' => 'indeed.ch', 'tw' => 'tw.indeed.com', 'tr' => 'tr.indeed.com', 'ae' => 'indeed.ae', 'gb' => 'indeed.co.uk', 've' => 've.indeed.com'); // SET PARAMS FOR REQUEST $keywords = ''; $criteria = $params->criteria_saver->criteria; $fieldSID = SJB_ListingFieldManager::getListingFieldSIDByID('JobCategory'); $fieldInfo = SJB_ListingFieldDBManager::getListValuesBySID($fieldSID); $fieldList = array(); foreach ($fieldInfo as $val) { $fieldList[$val['id']] = $val['caption']; } $categoryCriteria = isset($criteria['JobCategory']['multi_like']) ? $criteria['JobCategory']['multi_like'] : ''; if (!empty($categoryCriteria)) { if (!empty($keywords)) { $keywords .= ' or '; } foreach ($categoryCriteria as $category) { if (!empty($category) && !empty($fieldList[$category])) { $keywords .= $fieldList[$category] . ' or '; } } $keywords = substr($keywords, 0, strlen($keywords) - 4); } foreach ($criteria as $fieldName => $field) { if (is_array($field)) { foreach ($field as $fieldType => $values) { if ($fieldType === 'multi_like_and') { foreach ($values as $val) { if ($keywords != '') { $keywords .= " and "; } $keywords .= $val; } } } } } if (isset($criteria['keywords']) && !empty($criteria['keywords'])) { foreach ($criteria['keywords'] as $key => $item) { if (in_array($key, array('exact_phrase', 'any_words', 'all_words'))) { if (!empty($keywords)) { $keywords .= ' or '; } $keywords .= $item; } } } if (substr($keywords, -4) == ' or ') { $keywords = substr($keywords, 0, strlen($keywords) - 4); } $keywords = trim($keywords); $keywords = urlencode($keywords); $location = self::getLocation($criteria); if (isset($criteria['Location']['location']['radius']) && !empty($criteria['Location']['location']['radius'])) { if ($criteria['Location']['location']['radius'] == 'any') { $radius = ''; } else { $radius = $criteria['Location']['location']['radius']; } } else { $radius = 0; } $indeedCountry = SJB_Settings::getSettingByName('IndeedCountry'); $country = !empty($criteria['Location_Country']['multi_like'][0]) ? $criteria['Location_Country']['multi_like'][0] : $indeedCountry; $codes = array_values($countryCodes); if (!in_array($country, $codes)) { // ok. Country value - not correct Indeed value. Lets try convert it. if (is_numeric($country)) { $countryInfo = SJB_CountriesManager::getCountryInfoBySID($country); $country = !empty($countryInfo['country_code']) ? $countryInfo['country_code'] : ''; } } $jobType = SJB_Settings::getSettingByName('IndeedJobType'); $siteType = SJB_Settings::getSettingByName('IndeedSiteType'); $sort = SJB_Settings::getSettingByName('IndeedSort'); $highlight = SJB_Settings::getSettingByName('IndeedHighlightKeywords'); $url = "http://api.indeed.com/ads/apisearch?publisher={$publisherID}&q={$keywords}&l={$location}&sort={$sort}&radius={$radius}&st={$siteType}&jt={$jobType}&start={$start}&limit={$limit}&fromage=&filter=&latlong=1&co={$country}&highlight={$highlight}&chnl=&userip={$ip}&useragent={$userAgent}&v=2"; $ch = curl_init(); // set URL and other appropriate options curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // grab URL and pass it to the browser $xml = curl_exec($ch); curl_close($ch); $indeedListings = array(); if ($xml !== false) { $doc = new DOMDocument(); try { $doc->loadXML($xml, LIBXML_NOERROR); $results = $doc->getElementsByTagName('results'); if ($results instanceof DOMNodeList) { $outputCountry = array_flip($countryCodes); $totalResults = $doc->getElementsByTagName('totalresults')->item(0)->nodeValue; $totalPages = ceil((int) $totalResults / $limit); $pageNumber = $doc->getElementsByTagName('pageNumber')->item(0)->nodeValue; $indeedDomain = !empty($indeedCountry) && isset($countryDomains[$indeedCountry]) ? $countryDomains[$indeedCountry] : $countryDomains['us']; if (strpos($indeedDomain, '.') !== 2) { $indeedDomain = 'www.' . $indeedDomain; } foreach ($results as $node) { foreach ($node->getElementsByTagName('result') as $result) { $resultXML = simplexml_import_dom($result); $jobKey = (string) $resultXML->jobkey; $state = (string) $resultXML->state; $country = (string) $resultXML->country; $indeedListings[$jobKey] = array('Title' => (string) $resultXML->jobtitle, 'CompanyName' => (string) $resultXML->company, 'JobDescription' => (string) $resultXML->snippet, 'Location' => array('Country' => empty($country) ? '' : $outputCountry[strtolower($country)], 'State' => empty($state) ? '' : isset($stateIndexes[strtoupper($state)]) ? $stateIndexes[strtoupper($state)] : $state, 'State_Code' => empty($state) ? '' : strtoupper($state), 'City' => (string) $resultXML->city), 'url' => (string) $resultXML->url, 'onmousedown' => ' onMouseDown="' . (string) $resultXML->onmousedown . '" ', 'target' => ' target="_blank" ', 'jobkey' => $jobKey, 'activation_date' => (string) $resultXML->date, 'api' => 'indeed', 'code' => '<span id="indeed_at"><a href="' . SJB_Request::getProtocol() . '://' . $indeedDomain . '/">jobs</a> by <a href="' . SJB_Request::getProtocol() . '://' . $indeedDomain . '/" title="Job Search"><img src="' . SJB_Request::getProtocol() . '://www.indeed.com/p/jobsearch.gif" style="border: 0; vertical-align: middle;" alt="Indeed job search"></a></span>', 'pageNumber' => $pageNumber, 'totalPages' => $totalPages); } } } else { SJB_Logger::error('CANT GET INDEED XML RESULTS'); } } catch (ErrorException $e) { SJB_Logger::error($e->getMessage()); } } else { SJB_Logger::error('NOT VALID RESPONSE FROM INDEED'); } self::$indeedListings = $indeedListings; } return $params; }
public function execute() { $tp = SJB_System::getTemplateProcessor(); $display_form = new SJB_Form(); $display_form->registerTags($tp); $errors = array(); $criteria_saver = new SJB_ListingCriteriaSaver('MyListings'); $listingSID = SJB_Request::getVar("listing_id"); if (isset($_REQUEST['passed_parameters_via_uri'])) { $passed_parameters_via_uri = SJB_UrlParamProvider::getParams(); $listingSID = isset($passed_parameters_via_uri[0]) ? $passed_parameters_via_uri[0] : null; } $template = SJB_Request::getVar('display_template', 'display_listing.tpl'); if (is_null($listingSID)) { $errors['UNDEFINED_LISTING_ID'] = true; } elseif (is_null($listing = SJB_ListingManager::getObjectBySID($listingSID))) { $errors['WRONG_LISTING_ID_SPECIFIED'] = true; } elseif (!$listing->isActive() && $listing->getUserSID() != SJB_UserManager::getCurrentUserSID()) { $errors['LISTING_IS_NOT_ACTIVE'] = true; } else { $listing->addPicturesProperty(); if ($listing->getUserSID() != SJB_UserManager::getCurrentUserSID()) { $errors['NOT_OWNER'] = true; } $display_form = new SJB_Form($listing); $display_form->registerTags($tp); $form_fields = $display_form->getFormFieldsInfo(); $listingOwner = SJB_UserManager::getObjectBySID($listing->user_sid); // listing preview @author still $listingTypeSID = $listing->getListingTypeSID(); $listingTypeID = SJB_ListingTypeManager::getListingTypeIDBySID($listingTypeSID); if (SJB_Request::getInstance()->page_config->uri == '/' . strtolower($listingTypeID) . '-preview/') { if (!empty($_SERVER['HTTP_REFERER']) && (stristr($_SERVER['HTTP_REFERER'], 'edit-' . $listingTypeID) || stristr($_SERVER['HTTP_REFERER'], 'clone-job'))) { $tp->assign('referer', $_SERVER['HTTP_REFERER']); } else { $lastPage = SJB_PostingPagesManager::getPagesByListingTypeSID($listingTypeSID); $lastPage = array_pop($lastPage); $tp->assign('referer', SJB_System::getSystemSettings('SITE_URL') . '/add-listing/' . $listingTypeID . '/' . $lastPage['page_id'] . '/' . $listing->getSID()); } $tp->assign('checkouted', SJB_ListingManager::isListingCheckOuted($listing->getSID())); $tp->assign('contract_id', $listing->contractID); } $listingStructure = SJB_ListingManager::createTemplateStructureForListing($listing, array('comments', 'ratings')); $filename = SJB_Request::getVar('filename', false); if ($filename) { SJB_UploadFileManager::openFile($filename, $listingSID); $errors['NO_SUCH_FILE'] = true; } $prev_and_next_listing_id = $criteria_saver->getPreviousAndNextObjectID($listingSID); $metaDataProvider = SJB_ObjectMother::getMetaDataProvider(); $tp->assign('METADATA', array('listing' => $metaDataProvider->getMetaData($listingStructure['METADATA']), 'form_fields' => $metaDataProvider->getFormFieldsMetadata($form_fields))); $comments = ''; $comments_total = ''; if (SJB_Settings::getSettingByName('show_comments') == '1') { $comments = SJB_CommentManager::getEnabledCommentsToListing($listingSID); $comments_total = count($comments); } $tp->assign('show_rates', SJB_Settings::getSettingByName('show_rates')); $tp->assign('show_comments', SJB_Settings::getSettingByName('show_comments')); $tp->assign('comments', $comments); $tp->assign('comments_total', $comments_total); $tp->assign('listing_id', $listingSID); $tp->assign('form_fields', $form_fields); $tp->assign('video_fields', SJB_HelperFunctions::takeMediaFields($form_fields)); $tp->filterThenAssign("listing", $listingStructure); $tp->assign('prev_next_ids', $prev_and_next_listing_id); $tp->assign('preview_listing_sid', SJB_Request::getVar('preview_listing_sid')); $tp->assign('listingOwner', $listingOwner); if (SJB_Request::getVar('action', false) == 'download_pdf_version') { $formBuilder = SJB_FormBuilderManager::getFormBuilder(SJB_FormBuilderManager::FORM_BUILDER_TYPE_PDF, SJB_Array::getPath($listingStructure, 'type/id')); $formBuilder->setChargedTemplateProcessor($tp); $tpl = 'resume_to_pdf.tpl'; $filename = $listingStructure['user']['FirstName'] . ' ' . $listingStructure['user']['LastName'] . '_' . $listingStructure['Title'] . '.pdf'; try { $tp->assign('myListing', 1); $html = $tp->fetch($tpl); $html = preg_replace('/<div[^>]*>/', '', $html); $html = str_replace('</div>', '', $html); SJB_HelperFunctions::html2pdf($html, $filename, str_replace('http://', '', SJB_HelperFunctions::getSiteUrl())); exit; } catch (Exception $e) { SJB_Error::writeToLog($e->getMessage()); SJB_HelperFunctions::redirect(SJB_System::getSystemSettings("SITE_URL") . '/my-resume-details/' . $listingSID . '/?error=TCPDF_ERROR'); } } else { $formBuilder = SJB_FormBuilderManager::getFormBuilder(SJB_FormBuilderManager::FORM_BUILDER_TYPE_DISPLAY, SJB_Array::getPath($listingStructure, 'type/id')); $formBuilder->setChargedTemplateProcessor($tp); } } $search_criteria_structure = $criteria_saver->createTemplateStructureForCriteria(); $tp->filterThenAssign('search_criteria', $search_criteria_structure); $tp->assign('errors', $errors); $tp->assign('myListing', true); $tp->display($template); }
/** * @param array $menu * @param $item * @param $menuKey * @param $itemKey */ private function removeSimilarHighlight(array &$menu, $item, $menuKey, $itemKey) { if (in_array(SJB_System::getSystemSettings('SITE_URL') . $this->pageID, $item['highlight'])) { $highlight = ''; $highlightPrefix = '/manage-'; $userSid = SJB_Request::getVar('user_sid', 0); switch ($menuKey) { case 'Listing Configuration': $fieldSID = SJB_Request::getVar('field_sid', false); if ($fieldSID) { $fieldInfo = SJB_ListingFieldManager::getFieldInfoBySID($fieldSID); //remove unwanted highlights if ($fieldInfo['listing_type_sid'] == 0 && $item['title'] == 'Listing Types' || $fieldInfo['listing_type_sid'] != 0 && $item['title'] == 'Common Fields') { $highlight = $this->pageID; } } break; case 'Listing Management': if (preg_match('/manage-resume|job|[a-zA-Z0-9]+-listings/', $item['reference']) && !preg_match('/import|export|flagged-listings/', $item['reference'])) { if (!($listingTypeId = SJB_Request::getVar('listing_type_id', null))) { $listingId = SJB_Request::getVar('listing_id', null); $listingInfo = SJB_ListingManager::getListingInfoBySID($listingId); $listingTypeId = SJB_ListingTypeManager::getListingTypeIDBySID($listingInfo['listing_type_sid']); } $highlight = strtolower($listingTypeId); } break; case 'Users': $highlightPrefix = '/manage-users/'; if ($userSid) { $userGroupSid = SJB_UserManager::getUserGroupByUserSid($userSid); $userGroupInfo = SJB_UserGroupManager::getUserGroupInfoBySID($userGroupSid); if (preg_match($highlightPrefix, $item['reference'])) { $highlight = strtolower($userGroupInfo['id']); } } else { if ($role = SJB_Request::getVar('role', null)) { $type = SJB_Request::getVar('type', null); // for user permissions if ($type == 'user') { $role = SJB_UserManager::getUserGroupByUserSid($role); $userGroupInfo = SJB_UserGroupManager::getUserGroupInfoBySID($role); $highlight = strtolower($userGroupInfo['id']); } else { if (in_array($type, array('group', 'guest'))) { $highlightPrefix = 'user-'; $highlight = 'group'; } } } else { //retrieve user group from uri if (preg_match('|./(\\w*)/?|u', urldecode(SJB_Navigator::getURI()), $userGroupHub)) { $highlight = array_pop($userGroupHub); } //remove unwanted highlights if ($this->pageID == '/email-log/') { $highlight = $this->pageID; } } } break; case 'System Configuration': //remove unwanted highlights if ($this->pageID == '/email-log/' && $userSid) { $highlight = $this->pageID; } break; default: } if (!$highlight || strpos($item['reference'], $highlightPrefix . $highlight) !== false) { if (!isset($this->handledHighlightGroups[$highlightPrefix])) { $this->handledHighlightGroups[$highlightPrefix] = true; $handledHighlightGroups[$highlightPrefix] = true; $menu[$menuKey][$itemKey]['active'] = true; $menu[$menuKey]['active'] = true; } } } }
/** * @param $listingSID * @return string */ public static function getListingUrlBySID($listingSID) { $listingInfo = SJB_ListingManager::getListingInfoBySID($listingSID); $lowerListingTypeID = strtolower(SJB_ListingTypeManager::getListingTypeIDBySID($listingInfo['listing_type_sid'])); return SJB_System::getSystemSettings('USER_SITE_URL') . "/display-{$lowerListingTypeID}/{$listingInfo['id']}/"; }
public static function getListingsFromBeyond($params) { $listingTypeID = SJB_ListingTypeManager::getListingTypeIDBySID($params->listing_type_sid); if ($listingTypeID == 'Job' && $GLOBALS['uri'] == '/search-results-jobs/' || $GLOBALS['uri'] == '/ajax/') { $limit = SJB_Settings::getSettingByName('countBeyondListings'); $start = $limit * ($params->listing_search_structure['current_page'] - 1) + 1; if ($limit) { // SET PARAMS FOR REQUEST $criteria = $params->criteria_saver->criteria; $categoryCriteria = isset($criteria['JobCategory']['multi_like']) ? $criteria['JobCategory']['multi_like'] : ''; $category = SJB_Settings::getSettingByName('BeyondIndustryList'); if (!empty($categoryCriteria)) { $categoryFromCriteria = self::getCategory($categoryCriteria); if ($category) { $category = explode('|', $category); $category = array_unique(array_merge($category, $categoryFromCriteria)); } else { $category = $categoryFromCriteria; } $category = implode('|', $category); } $keywords = SJB_Settings::getSettingByName('BeyondKeywords'); foreach ($criteria as $field) { if (is_array($field)) { foreach ($field as $fieldType => $values) { if ($fieldType === 'multi_like_and') { foreach ($values as $val) { if ($keywords != '') { $keywords .= ' AND '; } $keywords .= $val; } } if ($fieldType === 'location') { if (isset($values['value']) && !empty($values['value'])) { if ($keywords != '') { $keywords .= ' AND '; } $keywords .= $values['value']; } } if ($fieldType === 'like') { if ($keywords != '') { $keywords .= ' AND '; } $keywords .= $values; } } } } if (isset($criteria['keywords']) && !empty($criteria['keywords'])) { foreach ($criteria['keywords'] as $key => $item) { if (in_array($key, array('exact_phrase', 'any_words', 'all_words', 'like'))) { if (!empty($keywords)) { $keywords .= ' OR '; } $keywords .= $item; } } } if (substr($keywords, -4) == ' OR ') { $keywords = substr($keywords, 0, strlen($keywords) - 4); } $keywords = trim($keywords); $keywords = urlencode($keywords); $keywords = !empty($keywords) ? "({$keywords})" : ''; $city = ''; if (!empty($criteria['Location_City']['like'])) { $city = urlencode($criteria['Location_City']['like']); } else { if (!empty($criteria['Location_City']['multi_like_and'][0])) { $city = urlencode($criteria['Location_City']['multi_like_and'][0]); } else { if (!empty($criteria['Location']['location']['value'])) { $city = urlencode($criteria['Location']['location']['value']); } } } $state = SJB_Settings::getSettingByName('BeyondState'); if (isset($criteria['Location_State']['multi_like'])) { foreach ($criteria['Location_State']['multi_like'] as $stateSID) { if (!empty($stateSID)) { $stateInfo = SJB_StatesManager::getStateInfoBySID($stateSID); $state = !empty($stateInfo['state_code']) ? $stateInfo['state_code'] : ''; } } } $countryCriteria = isset($criteria['Location_Country']['multi_like'][0]) ? $criteria['Location_Country']['multi_like'][0] : SJB_Settings::getSettingByName('BeyondCountry'); $country = SJB_Settings::getSettingByName('BeyondCountry'); if ($countryCriteria && is_numeric($countryCriteria)) { $countryInfo = SJB_CountriesManager::getCountryInfoBySID($countryCriteria); $country = !empty($countryInfo['country_code']) ? $countryInfo['country_code'] : ''; } $employmentTypeCriteria = isset($criteria['EmploymentType']['multi_like']) ? $criteria['EmploymentType']['multi_like'] : ''; $employmentType = SJB_Settings::getSettingByName('BeyonEmploymentType'); if ($employmentTypeCriteria) { $employmentType = self::getEmploymentType($employmentTypeCriteria); } $zipCode = SJB_Settings::getSettingByName('BeyondZipcode'); if (isset($criteria['Location_ZipCode']['geo']['location']) && !empty($criteria['Location_ZipCode']['geo']['location'])) { $zipCode = $criteria['Location_ZipCode']['geo']['location']; } $educationLevel = SJB_Settings::getSettingByName('BeyonEducationLevel'); $experienceLevel = SJB_Settings::getSettingByName('BeyonExperienceLevel'); $affID = SJB_Settings::getSettingByName('BeyondAffiliateID'); $isIPhone = false; if (class_exists('MobilePlugin')) { $isIPhone = MobilePlugin::isPhone(); } if (str_replace('www.', '', $_SERVER['HTTP_HOST']) === SJB_Settings::getValue('mobile_url') || SJB_Settings::getValue('detect_iphone') && $isIPhone) { $mobileAffID = SJB_Settings::getSettingByName('MobileBeyondAffiliateID'); $affID = $mobileAffID ? $mobileAffID : $affID; } $url = "http://www.beyond.com/common/services/job/search/default.asp?aff={$affID}&kw={$keywords}&kt=3&il={$category}&ct={$country}&st={$state}&zc={$zipCode}&el={$educationLevel}&et={$employmentType}&ex={$experienceLevel}&nw=e&pn={$start}&mx={$limit}&fwhere={$city}"; $ch = curl_init(); // set URL and other appropriate options curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // grab URL and pass it to the browser $xml = curl_exec($ch); // close cURL resource, and free up system resources curl_close($ch); $beyondListings = array(); if ($xml !== false) { $doc = new DOMDocument(); $doc->loadXML($xml, LIBXML_NOERROR | LIBXML_NOWARNING); $results = $doc->getElementsByTagName('Item'); if ($results instanceof DOMNodeList) { // if we need just total results number foreach ($results as $node) { $resultXML = simplexml_import_dom($node); $jobKey = (string) $resultXML->SourceInformationID; $location = explode(',', (string) $resultXML->Location); $state = ''; $stateCode = ''; $country = ''; $city = !empty($location[0]) ? $location[0] : ''; if (isset($location[1])) { $location = explode(' ', trim($location[1])); if (!empty($location[0])) { $stateCode = trim($location[0]); $state = self::getState($stateCode); } if (!empty($location[1])) { $country = self::getCountry(trim($location[1])); } } $beyondListings[$jobKey] = array('Title' => (string) $resultXML->Title, 'CompanyName' => (string) $resultXML->CompanyName, 'JobDescription' => (string) $resultXML->ShortDescription, 'JobCategory' => (string) $resultXML->CareerFocus, 'State' => $state, 'Country' => $country, 'City' => $city, 'Location' => array('Country' => $country, 'State' => $state, 'State_Code' => $stateCode, 'City' => $city), 'url' => SJB_System::getSystemSettings('SITE_URL') . '/partnersite/?url=' . base64_encode((string) $resultXML->ApplyURL), 'jobkey' => $jobKey, 'activation_date' => (string) $resultXML->Modified, 'api' => 'beyond', 'code' => '<span id=beyond_at><a href="http://www.beyond.com/">jobs</a> by <a href="http://www.beyond.com/" title="Job Search"><img src="' . SJB_System::getSystemSettings('SITE_URL') . '/system/plugins/beyond_integration_plugin/logo.png" style="border: 0; vertical-align: middle;" alt="Beyond job search"></a></span>'); } } else { SJB_Logger::error('CANT GET BEYOND XML RESULTS'); } } else { SJB_Logger::error('NOT VALID RESPONSE FROM BEYOND'); } self::$beyondListings = $beyondListings; } } return $params; }
public static function sendUserListingApproveOrRejectLetter($listing_sid, $user_sid, $mode = 'approve') { $user = SJB_UserManager::getObjectBySID($user_sid); $userGroupSID = $user->getUserGroupSID(); switch ($mode) { case 'reject': $emailTplSID = SJB_UserGroupManager::getEmailTemplateSIDByUserGroupAndField($userGroupSID, 'notify_on_listing_reject'); break; case 'approve': default: $emailTplSID = SJB_UserGroupManager::getEmailTemplateSIDByUserGroupAndField($userGroupSID, 'notify_on_listing_approve'); break; } $user_info = SJB_UserManager::createTemplateStructureForUser($user); $listing = SJB_ListingManager::getObjectBySID($listing_sid); $listing_info = SJB_ListingManager::createTemplateStructureForListing($listing); $listingTypeId = SJB_ListingTypeManager::getListingTypeIDBySID($listing_info['type']['id']); $data = array('user' => $user_info, 'listing' => $listing_info, 'listingTypeId' => $listingTypeId); $email = SJB_EmailTemplateEditor::getEmail($user_info['email'], $emailTplSID, $data); return $email->send('User Listing Approve Or Reject'); }
public static function getListingsFromSimplyHired($params) { $listingTypeID = SJB_ListingTypeManager::getListingTypeIDBySID($params->listing_type_sid); if ($listingTypeID == 'Job' && $GLOBALS['uri'] == '/search-results-jobs/' || $GLOBALS['uri'] == '/ajax/') { $publisherID = SJB_Settings::getSettingByName('simplyHiredPublisherID'); $limit = SJB_Settings::getSettingByName('countSimplyHiredListings'); $ip = $_SERVER['REMOTE_ADDR']; $userAgent = urlencode(SJB_Request::getUserAgent()); $start = $limit * ($params->listing_search_structure['current_page'] - 1) + 1; $stateIndexes = array('AL' => 'Alabama', 'AK' => 'Alaska', 'AZ' => 'Arizona', 'AR' => 'Arkansas', 'CA' => 'California', 'CO' => 'Colorado', 'CT' => 'Connecticut', 'DE' => 'Delaware', 'FL' => 'Florida', 'GA' => 'Georgia', 'HI' => 'Hawaii', 'ID' => 'Idaho', 'IL' => 'Illinois', 'IN' => 'Indiana', 'IA' => 'Iowa', 'KS' => 'Kansas', 'KY' => 'Kentucky', 'LA' => 'Louisiana', 'ME' => 'Maine', 'MD' => 'Maryland', 'MA' => 'Massachusetts', 'MI' => 'Michigan', 'MN' => 'Minnesota', 'MS' => 'Mississippi', 'MO' => 'Missouri', 'MT' => 'Montana', 'NE' => 'Nebraska', 'NV' => 'Nevada', 'NH' => 'New Hampshire', 'NJ' => 'New Jersey', 'NM' => 'New Mexico', 'NY' => 'New York', 'NC' => 'North Carolina', 'ND' => 'North Dakota', 'OH' => 'Ohio', 'OK' => 'Oklahoma', 'OR' => 'Oregon', 'PA' => 'Pennsylvania', 'RI' => 'Rhode Island', 'SC' => 'South Carolina', 'SD' => 'South Dakota', 'TN' => 'Tennessee', 'TX' => 'Texas', 'UT' => 'Utah', 'VT' => 'Vermont', 'VA' => 'Virginia', 'WA' => 'Washington', 'WV' => 'West Virginia', 'WI' => 'Wisconsin', 'WY' => 'Wyoming', 'DC' => 'District of Columbia', 'AS' => 'American Samoa', 'GU' => 'Guam', 'MP' => 'Northern Mariana Islands', 'PR' => 'Puerto Rico', 'UM' => "United's Minor Outlying Islands", 'VI' => 'Virgin Islands'); $countryCodes = array('United States' => 'us', 'Australia' => 'au', 'Austria' => 'at', 'Belgium' => 'be', 'Brazil' => 'br', 'Canada' => 'ca', 'France' => 'fr', 'Germany' => 'de', 'India' => 'in', 'Ireland' => 'ie', 'Italy' => 'it', 'Mexico' => 'mx', 'Netherlands' => 'nl', 'Spain' => 'es', 'Switzerland' => 'ch', 'United Kingdom' => 'gb'); // SET PARAMS FOR REQUEST $keywords = ''; $criteria = $params->criteria_saver->criteria; $fieldSID = SJB_ListingFieldManager::getListingFieldSIDByID('JobCategory'); $fieldInfo = SJB_ListingFieldDBManager::getListValuesBySID($fieldSID); $fieldList = array(); foreach ($fieldInfo as $val) { $fieldList[$val['id']] = $val['caption']; } $categoryCriteria = isset($criteria['JobCategory']['multi_like']) ? $criteria['JobCategory']['multi_like'] : ''; if (!empty($categoryCriteria)) { foreach ($categoryCriteria as $category) { if (!empty($fieldList[$category])) { $keywords .= empty($keywords) ? $fieldList[$category] : ' OR ' . $fieldList[$category]; } } if (!empty($keywords)) { $keywords = "({$keywords})"; } } foreach ($criteria as $field) { if (is_array($field)) { foreach ($field as $fieldType => $values) { if ($fieldType == 'multi_like_and') { foreach ($values as $val) { $keywords .= empty($keywords) ? $val : ' ' . $val; } } } } } if (isset($criteria['keywords']) && !empty($criteria['keywords'])) { foreach ($criteria['keywords'] as $key => $item) { if (in_array($key, array('exact_phrase', 'any_words', 'all_words', 'like'))) { $keywords .= $item; } } } $systemKeywords = trim(SJB_Settings::getSettingByName('simplyHiredKeyword')); $keywords = $systemKeywords ? '(' . $systemKeywords . ')' . ($keywords ? ' OR (' . $keywords . ')' : '') : $keywords; $keywords = preg_replace('/\\s+/', ' ', $keywords); $keywords = str_replace(',', '', $keywords); $keywords = urlencode(trim($keywords)); $location = self::getLocation($criteria, 'simplyHiredLocation'); $radius = SJB_Settings::getSettingByName('simplyHiredMiles'); if (isset($criteria['Location_ZipCode']['geo']['radius']) && !empty($criteria['Location_ZipCode']['geo']['radius'])) { $radius = $criteria['Location_ZipCode']['geo']['radius']; if ($radius == 'any') { $radius = ''; } } $sortBy = SJB_Settings::getSettingByName('simplyHiredSortBy'); $siteUrl = SJB_Settings::getSettingByName('simplyHiredSiteUrl'); $jobAMaticDomain = SJB_Settings::getSettingByName('jobAMaticDomain', false); if (!empty($jobAMaticDomain) && $siteUrl == 'simplyhired.com') { $jobAMaticDomain = str_replace('http://', '', $jobAMaticDomain); $jobAMaticDomain = str_replace('/', '', $jobAMaticDomain); $jobAMaticDomain = "&jbd={$jobAMaticDomain}"; } else { $jobAMaticDomain = ''; } if ($siteUrl == 'simplyhired.com') { $ssty = 2; } else { $ssty = 3; } $url = "http://api.{$siteUrl}/a/jobs-api/xml-v2/q-{$keywords}/l-{$location}/mi-{$radius}/ws-{$limit}/pn-{$params->listing_search_structure['current_page']}/sb-{$sortBy}?pshid={$publisherID}&ssty={$ssty}&cflg=r{$jobAMaticDomain}&clip={$ip}"; $sxml = new simplexml(); $xmlString = SJB_HelperFunctions::getUrlContentByCurl($url); $simplyhiredListings = array(); if ($xmlString === false) { // throw new Exception("simplyHiredPlugin: Failed to read XML from url - {$url}"); SJB_Logger::error("simplyHiredPlugin: Failed to read XML from url - {$url}"); } else { //$tree = $sxml->xml_load_file($url, 'array'); $tree = $sxml->xml_load_file($xmlString, 'array'); $totalResults = 0; if ($tree !== false) { $results = isset($tree['rs']) ? $tree['rs'] : array(); $outputCountry = array_flip($countryCodes); foreach ($results as $node) { if ($tree['rq']['rpd'] == 1) { $node = array($node); } foreach ($node as $key => $result) { $state = (string) $result['loc']['@attributes']['st']; $country = (string) $result['loc']['@attributes']['country']; $simplyhiredListings[$key] = array('Title' => (string) $result['jt'], 'CompanyName' => (string) isset($result['cn']['@content']) ? $result['cn']['@content'] : '', 'JobDescription' => (string) $result['e'], 'Location' => array('Country' => empty($country) ? '' : (isset($outputCountry[strtolower($country)]) ? $outputCountry[strtolower($country)] : ''), 'State' => empty($location[1]) ? '' : (isset($stateIndexes[strtoupper($state)]) ? $stateIndexes[strtoupper($state)] : ''), 'State_Code' => empty($state) ? '' : strtoupper($state), 'City' => (string) $result['loc']['@attributes']['cty']), 'activation_date' => (string) $result['dp'], 'url' => (string) $result['src']['@attributes']['url'], 'api' => 'simplyHired', 'onmousedown' => ' onMouseDown="xml_sclk(this);" ', 'target' => ' target="_blank"', 'onclick' => 'onclick="addStatisticsForSimplyHired();" ', 'code' => '<span style="font-size:10px; position:relative; top:-5px; font-family:Arial,sans-serif;color: #333;"><a style="color: #333; text-decoration:none" href="' . SJB_Request::getProtocol() . '://www.simplyhired.com/">Jobs</a> by</span> <a STYLE="text-decoration:none" href="' . SJB_Request::getProtocol() . '://www.simplyhired.com/"><img src="' . SJB_Request::getProtocol() . '://www.jobamatic.com/c/jbb/images/simplyhired.png" alt="Simply Hired"></a>'); } } } } self::$simplyhiredListings = $simplyhiredListings; } return $params; }
public function execute() { $errors = array(); if (SJB_Request::isAjax()) { $response = null; if ($logoId = SJB_Request::getVar('logo_id')) { SJB_UploadFileManager::deleteUploadedFileByID($logoId, 'logo'); $parsersId = SJB_Request::getVar('id'); SJB_DB::query("UPDATE `parsers` SET `xml_logo` = NULL WHERE id = ?n", $parsersId); } elseif ($userName = SJB_Request::getVar('parser_user')) { $userType = SJB_Request::getVar('user_type'); $products = SJB_XmlImport::getProducts($userType, $userName, $errors); $response = array('products' => empty($products) ? '' : SJB_XmlImport::translateProductsName($products), 'error' => empty($errors) ? '' : array_pop($errors)); $response = json_encode($response); } die($response); } $tp = SJB_System::getTemplateProcessor(); $original_xml = !empty($_REQUEST['xml']) ? $_REQUEST['xml'] : ''; $xml = $original_xml; $tree = ''; $listing_fields = array(); $parsing_name = isset($_REQUEST['parser_name']) ? $_REQUEST['parser_name'] : ''; $usr_name = isset($_REQUEST['parser_user']) ? $_REQUEST['parser_user'] : ''; $pars_url = isset($_REQUEST['parser_url']) ? $_REQUEST['parser_url'] : ''; $form_description = isset($_POST['form_description']) ? $_POST['form_description'] : ""; $type_id = isset($_POST['type_id']) ? intval($_POST['type_id']) : ""; $custom_script = SJB_Request::getVar('custom_script', ''); $custom_script_users = SJB_Request::getVar('custom_script_users', ''); $add_new_user = isset($_POST['add_new_user']) ? intval($_POST['add_new_user']) : 0; $username = SJB_Request::getVar('username', ''); $external_id = SJB_Request::getVar('external_id', ''); $defaultValue = array(); $logo_options_array = array('not_logo' => 'Do Not Import Logo', 'import_logo' => 'Import Logo with Listings', 'upload_logo' => 'Upload Logo for Imported Listings'); $id = isset($_GET['id']) ? intval($_GET['id']) : 0; $selected = array(); $a_selected = array(); $selectedLogoOption = null; $selectedLogoField = null; $xml_logo = null; $selectedProduct = SJB_Request::getVar('postUnderProduct'); $save_error = SJB_Request::getVar('save_error'); if ($save_error) { $errors[] = base64_decode($save_error); } if (!empty($_REQUEST['xml']) || $id > 0) { // step 2 OR edit exist if ($id > 0) { // load exist parser $parser_from_id = SJB_XmlImport::getSystemParsers($id); if (isset($parser_from_id[0]['name'])) { $parser_from_id = $parser_from_id[0]; } $parsing_name = $parser_from_id['name']; $usr_id = $parser_from_id['usr_id']; $usr_name = $parser_from_id['usr_name']; $form_description = $parser_from_id['description']; $pars_url = $parser_from_id['url']; $type_id = $parser_from_id['type_id']; $custom_script = $parser_from_id['custom_script']; $custom_script_users = $parser_from_id['custom_script_users']; $add_new_user = $parser_from_id['add_new_user']; $importType = $parser_from_id['import_type']; $xml = $parser_from_id['xml']; $xml_logo = $parser_from_id['xml_logo']; $xml = SJB_XmlImport::cleanXmlFromImport($xml); $defaultValue = $parser_from_id['default_value'] != '' ? unserialize($parser_from_id['default_value']) : array(); $username = $parser_from_id['username']; $map = unserialize($parser_from_id['maper']); $external_id = str_replace('@', '_dog_', $parser_from_id['external_id']); $selected_logo_options = unserialize($parser_from_id['logo_options']); $selectedLogoOption = $selected_logo_options['option']; $selectedLogoField = $selected_logo_options['field']; if ($selected_logo_options['option'] == 'upload_logo') { $upload_manager = new SJB_UploadPictureManager(); $upload_manager->getUploadedPictureInfo($xml_logo . '_thumb'); $logo_link = $upload_manager->getUploadedFileLink($xml_logo . '_thumb'); $tp->assign('logo_link', $logo_link); } foreach ($map as $key => $val) { unset($map[$key]); $key = SJB_XmlImport::encodeSpecialEntities($key); $map[$key] = $val; } $selected = array_values($map); $a_selected = array_keys($map); $selectedProduct = $parser_from_id['product_sid']; } else { $xml = SJB_XmlImport::cleanXmlFromImport($_REQUEST['xml']); } $sxml = new simplexml(); $xml = stripslashes($xml); $tree = $sxml->xml_load_file($xml, 'array'); if (isset($tree['@content'])) { $tree = $tree[0]; } if (is_array($tree)) { $tree = SJB_XmlImport::convertArray($tree); foreach ($tree as $key => $val) { unset($tree[$key]); $key = SJB_XmlImport::encodeSpecialEntities($key); $tree[$key]['val'] = $val; $tree[$key]['key'] = $key; } $field_types = array(0, $type_id); $listing_fields = array(); $i = 0; foreach ($field_types as $type) { $listing_fields_info = SJB_ListingFieldManager::getListingFieldsInfoByListingType($type); foreach ($listing_fields_info as $listing_field_info) { if ($listing_field_info['type'] == 'location') { foreach ($listing_field_info['fields'] as $fieldInfo) { $listing_field = new SJB_ListingField($fieldInfo); $listing_field->setSID($fieldInfo['sid']); $listing_fields[$i]['id'] = $listing_field_info['id'] . '_' . $listing_field->details->properties['id']->value; $listing_fields[$i]['caption'] = $listing_field->details->properties['id']->value; $i++; } } else { $listing_field = new SJB_ListingField($listing_field_info); $listing_field->setSID($listing_field_info['sid']); $listing_fields[$i]['id'] = $listing_field->details->properties['id']->value; $listing_fields[$i]['caption'] = $listing_field->details->properties['id']->value; $i++; } } } $listing_fields[$i]['id'] = $listing_fields[$i]['caption'] = "date"; $i++; $listing_fields[$i]['id'] = $listing_fields[$i]['caption'] = "url"; $i++; $listing_fields[$i]['id'] = $listing_fields[$i]['caption'] = "external_id"; } else { $errors[] = 'XML syntaxis error.'; } } else { $errors[] = 'Please input correct xml'; } if (empty($selectedProduct)) { $errors[] = 'Please select a product'; } if (!filter_var($pars_url, FILTER_VALIDATE_URL)) { $errors[] = 'Please input correct URL'; } $error = SJB_Request::getVar('error', false, 'GET'); if ($error) { $errors[$error] = true; } $userType = empty($add_new_user) ? 'username' : 'group'; if ($userType == 'group') { $userName = SJB_UserGroupManager::getUserGroupSIDByID($usr_name); } else { $userName = $usr_name; } $products = SJB_XmlImport::getProducts($userType, $userName, $errors); $tp->assign('id', $id); $tp->assign('selected', $selected); $tp->assign('a_selected', $a_selected); $tp->assign('xml', htmlspecialchars($xml)); $tp->assign('xml_logo', $xml_logo); $tp->assign('xmlToUser', $xml); $tp->assign('default_value', $defaultValue); $tp->assign('form_name', $parsing_name); $tp->assign('form_user', $usr_name); $tp->assign('form_user_sid', $usr_id); $tp->assign('form_url', $pars_url); $tp->assign('form_description', $form_description); $tp->assign('custom_script', $custom_script); $tp->assign('custom_script_users', $custom_script_users); $tp->assign('username', $username); $tp->assign('external_id', $external_id); $tp->assign('import_type', $importType); $tp->assign('user_groups', SJB_UserGroupManager::getAllUserGroupsInfo()); $type_name = SJB_ListingTypeManager::getListingTypeIDBySID($type_id); $tp->assign('add_new_user', $add_new_user); $tp->assign('type_id', $type_id); $tp->assign('type_name', $type_name); $tp->assign('errors', $errors); $tp->assign('tree', $tree); $tp->assign("fields", $listing_fields); $tp->assign('logo_options', $logo_options_array); $tp->assign('selectedLogoOption', $selectedLogoOption); $tp->assign('selectedLogoField', $selectedLogoField); $tp->assign('selectedProduct', $selectedProduct); $tp->assign('products', $products); $tp->assign("uploadMaxFilesize", SJB_UploadFileManager::getIniUploadMaxFilesize()); $tp->display('add_step_two.tpl'); }
public function execute() { $tp = SJB_System::getTemplateProcessor(); $isAlert = $enableNotify = isset($_REQUEST["alert"]); $tp->assign('is_alert', $isAlert); if (SJB_UserManager::isUserLoggedIn()) { $cu = SJB_UserManager::getCurrentUser(); if ($cu->isSubuser()) { $current_user_info = $cu->getSubuserInfo(); } else { $current_user_info = SJB_UserManager::getCurrentUserInfo(); } $criteria_saver = new SJB_ListingCriteriaSaver(SJB_Request::getVar("searchId", "")); $requested_data = $criteria_saver->getCriteria(); if (isset($requested_data['listing_type'])) { $current_listing_type = array_pop($requested_data['listing_type']); } else { $current_listing_type = ''; if (isset($requested_data['listing_type_sid'])) { $listing_type_sid = array_pop($requested_data['listing_type_sid']); $current_listing_type = SJB_ListingTypeManager::getListingTypeIDBySID($listing_type_sid); } } $errors = array(); if (!$isAlert && !SJB_Acl::getInstance()->isAllowed('save_searches')) { $errors[] = "DENIED_SAVE_JOB_SEARCH"; } elseif ($isAlert && !SJB_Acl::getInstance()->isAllowed('use_' . trim($current_listing_type) . '_alerts')) { $errors[] = "DENIED_SAVE_JOB_SEARCH"; } switch (SJB_Request::getVar("action")) { case 'edit': unset($_GET['action']); if (isset($_GET['id_saved'])) { $id_saved = $_GET['id_saved']; unset($_GET['id_saved']); $errors = array(); SJB_SavedSearches::updateSearchOnDB($_GET, $id_saved, $current_user_info['sid'], 0); if (!empty($errors)) { $tp->assign("errors", $errors); $tp->display("save_search_failed.tpl"); } else { $url = SJB_System::getSystemSettings('SITE_URL') . "/saved-searches/"; if ($isAlert) { $url = SJB_System::getSystemSettings('SITE_URL') . "/job-alerts/"; } $tp->assign("url", $url); $tp->display("save_search_success.tpl"); } } break; case 'save': $search_name = SJB_Request::getVar("search_name"); $errors = array(); $criteria_saver = new SJB_ListingCriteriaSaver(SJB_Request::getVar("searchId", "")); $requested_data = $criteria_saver->getCriteria(); if (is_array($criteria_saver->order_info)) { $requested_data = array_merge($requested_data, $criteria_saver->order_info); } $requested_data['listings_per_page'] = $criteria_saver->listings_per_page; $emailFrequency = SJB_Request::getVar("email_frequency", 'daily'); SJB_SavedSearches::saveSearchOnDB($requested_data, $search_name, $current_user_info['sid'], $enableNotify, $isAlert, $emailFrequency); if (!empty($errors)) { $tp->assign("errors", $errors); $tp->display("save_search_failed.tpl"); } else { if (isset($_REQUEST['url'])) { SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . $_REQUEST['url'] . "?alert=added"); } $tp->display("save_search_success.tpl"); } break; default: if (!empty($errors)) { $tp->assign("errors", $errors); $tp->display("save_search_failed.tpl"); } else { $tp->assign("searchId", SJB_Request::getVar("searchId", "")); $tp->assign("listing_type_id", SJB_Session::getValue('listing_type_id')); $tp->display("save_search_form.tpl"); } break; } } else { $tp->assign("return_url", base64_encode(SJB_Navigator::getURIThis())); $tp->assign("ajaxRelocate", true); $tp->display("../users/login.tpl"); } }