public static function getCommentsInfo($raw_comments) { $comments_tree = new SJB_CommentsTree($raw_comments); $comments_tree->build(); $comments_to_listing = $comments_tree->toArray(); $comments = array(); foreach ($comments_to_listing as $comment) { if (intval($comment['user_id']) > 0) { $user = SJB_UserManager::getObjectBySID($comment['user_id']); $comment['user'] = SJB_UserManager::createTemplateStructureForUser($user); } $comment['added'] = strtotime($comment['added']); $comments[] = $comment; } return $comments; }
public static function sendInvoiceToCustomer($invoice_sid, $user_sid) { $invoice_info = SJB_InvoiceManager::getInvoiceInfoBySID($invoice_sid); $invoice_structure = SJB_InvoiceManager::createInvoiceTemplate($invoice_info); $user = SJB_UserManager::getObjectBySID($user_sid); $userInfo = SJB_UserManager::createTemplateStructureForUser($user); $parentSID = SJB_Array::get($userInfo, 'parent_sid'); if ($parentSID > 0) { $user = SJB_UserManager::getObjectBySID($parentSID); $userInfo = SJB_UserManager::createTemplateStructureForUser($user); } $data = array('user' => $userInfo, 'invoice' => $invoice_structure); $email = SJB_EmailTemplateEditor::getEmail($userInfo['email'], self::SEND_INVOICE_SID, $data); return $email->send('Send Invoice to Customer'); }
/** * retrieve user info like template structure * @static * @param int $userSID * @param int $contactSID * @return array|null */ public static function getContactInfo($userSID, $contactSID) { $result = SJB_DB::query('SELECT `contact_sid`, `note` FROM `private_message_contacts` WHERE `user_sid` = ?n AND `contact_sid` = ?n', $userSID, $contactSID); if (!empty($result)) { $contactInfo = array_pop($result); $contact = SJB_UserManager::getObjectBySID($contactInfo['contact_sid']); $contactInfo2 = !empty($contact) ? SJB_UserManager::createTemplateStructureForUser($contact) : null; if ($contactInfo2) { return array_merge($contactInfo, $contactInfo2); } } return null; }
/** * @param SJB_Listing $listing */ public static function createTemplateStructureForListing($listing, $extraInfo = array()) { $listing_info = parent::getObjectInfo($listing); if (SJB_MemoryCache::has('listingTypeInfo' . $listing->getListingTypeSID())) { $listing_type_info = SJB_MemoryCache::get('listingTypeInfo' . $listing->getListingTypeSID()); } else { $listing_type_info = SJB_ListingTypeManager::getListingTypeInfoBySID($listing->getListingTypeSID()); SJB_MemoryCache::set('listingTypeInfo' . $listing->getListingTypeSID(), $listing_type_info); } foreach ($listing->getProperties() as $property) { if ($property->isComplex()) { $isPropertyEmpty = true; $properties = $property->type->complex->getProperties(); $properties = is_array($properties) ? $properties : array(); foreach ($properties as $subProperty) { if (!empty($listing_info['user_defined'][$property->getID()][$subProperty->getID()]) && is_array($listing_info['user_defined'][$property->getID()][$subProperty->getID()])) { foreach ($listing_info['user_defined'][$property->getID()][$subProperty->getID()] as $subValue) { if (!empty($subValue)) { $isPropertyEmpty = false; } } } } if ($isPropertyEmpty) { $listing_info['user_defined'][$property->getID()] = ''; } } if ($property->getType() == 'list') { $value = $property->getValue(); $properties = $property->type->property_info; $listValues = isset($properties['list_values']) ? $properties['list_values'] : array(); foreach ($listValues as $listValue) { if ($listValue['id'] == $value) { $listing_info['user_defined'][$property->getID()] = $listValue['caption']; } } } elseif ($property->getType() == 'multilist') { $value = $property->getValue(); if (!is_array($property->getValue())) { $value = explode(',', $property->getValue()); } $properties = $property->type->property_info; $listValues = isset($properties['list_values']) ? $properties['list_values'] : array(); $listing_info['user_defined'][$property->getID()] = array(); foreach ($listValues as $listValue) { if (in_array($listValue['id'], $value)) { $listing_info['user_defined'][$property->getID()][$listValue['id']] = $listValue['caption']; } } } elseif ($property->getType() == 'location' && is_array($listing_info['user_defined'][$property->getID()])) { foreach ($property->type->fields as $locationField) { if (array_key_exists($locationField['id'], $listing_info['user_defined'][$property->getID()])) { if ($locationField['id'] == 'State') { $listValues = SJB_StatesManager::getStateNamesBySid($property->value['State'], 'state_name'); } else { $listValues = isset($locationField['list_values']) ? $locationField['list_values'] : array(); } $value = $property->getValue(); $value = isset($value[$locationField['id']]) ? $value[$locationField['id']] : ''; foreach ($listValues as $listValue) { if ($listValue['id'] == $value) { $listing_info['user_defined'][$property->getID()][$locationField['id']] = $listValue['caption']; $listing_info['user_defined'][$property->getID()][$locationField['id'] . '_Code'] = $listValue['Code']; $listing_info['user_defined'][$property->getID()][$locationField['id'] . '_Name'] = $listValue['Name']; } } } } } } $cache = SJB_Cache::getInstance(); $cacheId = md5('SJB_UserManager::getObjectBySID' . $listing_info['system']['user_sid']); $user_info = array(); if ($cache->test($cacheId)) { $user_info = $cache->load($cacheId); } else { $user = SJB_UserManager::getObjectBySID($listing_info['system']['user_sid']); $user_info = !empty($user) ? SJB_UserManager::createTemplateStructureForUser($user) : null; $cache->save($user_info, $cacheId, array(SJB_Cache::TAG_USERS)); } $productInfo = SJB_ProductsManager::createTemplateStructureForProduct($listing_info['system']['product_info']); $priceForUpgradeToFeatured = 0; $priceForUpgradeToPriority = 0; if (!empty($listing_info['system']['product_info'])) { $listingProductInfo = unserialize($listing_info['system']['product_info']); $priceForUpgradeToFeatured = SJB_Array::get($listingProductInfo, 'upgrade_to_featured_listing_price', 0); $priceForUpgradeToPriority = SJB_Array::get($listingProductInfo, 'upgrade_to_priority_listing_price', 0); } $structure = array('id' => $listing_info['system']['id'], 'type' => array('id' => $listing_type_info['id'], 'caption' => $listing_type_info['name']), 'user' => $user_info, 'activation_date' => $listing_info['system']['activation_date'], 'expiration_date' => $listing_info['system']['expiration_date'], 'featured' => $listing_info['system']['featured'], 'priority' => $listing_info['system']['priority'], 'views' => $listing_info['system']['views'], 'active' => $listing_info['system']['active'], 'product' => $productInfo, 'contract_id' => $listing_info['system']['contract_id'], 'number_of_pictures' => isset($listing_info['user_defined']['pictures']) ? count($listing_info['user_defined']['pictures']) : 0, 'approveStatus' => $listing_info['system']['status'], 'complete' => $listing_info['system']['complete'], 'external_id' => $listing_info['system']['external_id'], 'priceForUpgradeToFeatured' => $priceForUpgradeToFeatured, 'priceForUpgradeToPriority' => $priceForUpgradeToPriority); if (SJB_Settings::getSettingByName('jobg8Installed') && SJB_PluginManager::isPluginActive('JobG8IntegrationPlugin')) { $structure['jobType'] = JobG8::getJobProperty($listing_info['system']['id'], 'jobType'); } if (array_search('comments', $extraInfo)) { $structure['comments_num'] = SJB_CommentManager::getCommentsNumToListing($listing_info['system']['id']); } if (array_search('ratings', $extraInfo)) { $structure['rating_num'] = SJB_Rating::getRatingNumToListing($listing_info['system']['id']); $structure['rating'] = SJB_Rating::getRatingToListing($listing_info['system']['id']); $structure['rating_array'] = SJB_Rating::getRatingTplToListing($listing_info['system']['id']); } if (!empty($listing_info['system']['subuser_sid'])) { $structure['subuser'] = SJB_UserManager::getUserInfoBySID($listing_info['system']['subuser_sid']); } $structure['METADATA'] = array('activation_date' => array('type' => 'date'), 'expiration_date' => array('type' => 'date'), 'views' => array('type' => 'integer'), 'number_of_pictures' => array('type' => 'integer'), 'approveStatus' => array('type' => 'string'), 'rejectReason' => array('type' => 'string')); $structure = array_merge($structure, $listing_info['user_defined']); $structure['METADATA'] = array_merge($structure['METADATA'], parent::getObjectMetaData($listing)); $listing_user_meta_data = array(); if (isset($user_info['METADATA'])) { $listing_user_meta_data = $user_info['METADATA']; unset($user_info['METADATA']); } $listing_product_meta_data = array(); if (isset($productInfo['METADATA'])) { $listing_product_meta_data = $productInfo['METADATA']; unset($productInfo['METADATA']); } $listing_type_meta_data = array('caption' => array('type' => 'string', 'propertyID' => 'listing_type')); $structure['METADATA'] = array_merge($structure['METADATA'], array('user' => $listing_user_meta_data, 'product' => $listing_product_meta_data, 'type' => $listing_type_meta_data)); return array_merge($structure, $listing_info['user_defined']); }
public function execute() { $tp = SJB_System::getTemplateProcessor(); $displayForm = new SJB_Form(); $displayForm->registerTags($tp); $invoiceSid = SJB_Request::getVar('sid', false); if (SJB_Request::getVar('error', false)) { SJB_FlashMessages::getInstance()->addWarning('TCPDF_ERROR'); } $action = SJB_Request::getVar('action', false); $paymentGateway = SJB_Request::getVar('payment_gateway', false); $template = 'print_invoice.tpl'; $currentUserSID = SJB_UserManager::getCurrentUserSID(); $invoiceInfo = SJB_InvoiceManager::getInvoiceInfoBySID($invoiceSid); if ($invoiceInfo) { if ($currentUserSID == $invoiceInfo['user_sid']) { $taxInfo = SJB_TaxesManager::getTaxInfoBySID($invoiceInfo['tax_info']['sid']); $invoiceInfo = array_merge($invoiceInfo, $_REQUEST); if (is_array($taxInfo)) { $taxInfo = array_merge($invoiceInfo['tax_info'], $taxInfo); } else { $taxInfo = $invoiceInfo['tax_info']; } $invoice = new SJB_Invoice($invoiceInfo); $invoice->setSID($invoiceSid); $userInfo = SJB_UserManager::getUserInfoBySID($currentUserSID); $username = $userInfo['CompanyName'] . ' ' . $userInfo['FirstName'] . ' ' . $userInfo['LastName']; $user = SJB_UserManager::getObjectBySID($currentUserSID); $productsSIDs = SJB_ProductsManager::getProductsIDsByUserGroupSID($userInfo['user_group_sid']); $products = array(); foreach ($productsSIDs as $key => $productSID) { $product = SJB_ProductsManager::getProductInfoBySID($productSID); $products[$key] = $product; } $displayForm = new SJB_Form($invoice); $displayForm->registerTags($tp); $show = true; if ($action == 'download_pdf_version' || $action == 'print') { $show = false; } $tp->assign('show', $show); $tp->assign('products', $products); $tp->assign('invoice_sid', $invoiceSid); $tp->assign('invoice_status', $invoiceInfo['status']); $tp->assign('username', trim($username)); $tp->assign('user_sid', $currentUserSID); $tp->assign('tax', $taxInfo); $userStructure = SJB_UserManager::createTemplateStructureForUser($user); $tp->assign('user', $userStructure); $tp->assign('include_tax', $invoiceInfo['include_tax']); if ($action == 'download_pdf_version') { $template = 'invoice_to_pdf.tpl'; $filename = 'invoice_' . $invoiceSid . '.pdf'; try { SJB_HelperFunctions::html2pdf($tp->fetch($template), $filename); exit; } catch (Exception $e) { SJB_Error::writeToLog($e->getMessage()); SJB_HelperFunctions::redirect(SJB_System::getSystemSettings("SITE_URL") . '/print-invoice/?sid=' . $invoiceSid . '&action=print&error=TCPDF_ERROR'); } } } else { SJB_FlashMessages::getInstance()->addError('NOT_OWNER'); } } else { SJB_FlashMessages::getInstance()->addError('WRONG_INVOICE_ID_SPECIFIED'); } if ($paymentGateway) { $gatewaySID = SJB_PaymentGatewayManager::getSIDByID($paymentGateway); $gatewayInfo = SJB_PaymentGatewayManager::getInfoBySID($gatewaySID); $tp->assign('gatewayInfo', $gatewayInfo); } $tp->assign('paymentError', SJB_Request::getVar('payment_error', false)); $tp->display($template); }
/** * @param int $numberOfProfiles * @return array */ public static function getFeaturedProfiles($numberOfProfiles) { $logosInfo = SJB_UserProfileFieldManager::getFieldsInfoByType('logo'); $logoFields = array(); foreach ($logosInfo as $logoInfo) { if (!empty($logoInfo['id'])) { $logoFields[] = " `{$logoInfo['id']}` != '' "; } } $whereLogo = empty($logos) ? '' : 'AND (' . implode(' OR ', $logoFields) . ')'; $usersInfo = SJB_DB::query("SELECT `sid` FROM `users` WHERE `featured`=1 AND `active`=1 {$whereLogo} ORDER BY RAND() LIMIT 0, ?n", $numberOfProfiles); $users = array(); foreach ($usersInfo as $userInfo) { $user = SJB_UserManager::getObjectBySID($userInfo['sid']); $users[] = !empty($user) ? SJB_UserManager::createTemplateStructureForUser($user) : null; } return $users; }
function _getChargedTemplateProcessor(&$listings_structure) { $tp = SJB_System::getTemplateProcessor(); $searchCriteria = $this->criteria_saver->getCriteria(); $listing_type_info = SJB_ListingTypeManager::getListingTypeInfoBySID($this->listing_type_sid); if (!empty($listing_type_info['show_brief_or_detailed'])) { $is_show_brief_or_detailed = $listing_type_info['show_brief_or_detailed']; $show_brief_or_detailed = $this->criteria_saver->getBriefOrDetailedSearch(); $tp->assign("is_show_brief_or_detailed", $is_show_brief_or_detailed); $tp->assign("show_brief_or_detailed", $show_brief_or_detailed); } $keywordsHighlight = ''; if (isset($searchCriteria['keywords']) && SJB_System::getSettingByName('use_highlight_for_keywords')) { foreach ($searchCriteria['keywords'] as $type => $keywords) { $keywordsTrim = trim($keywords); if (!empty($keywordsTrim)) { 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; } } } } $view = !empty($this->requested_data['view']) ? $this->requested_data['view'] : 'list'; $tp->assign("keywordsHighlight", $keywordsHighlight); $tp->assign("sorting_field", $this->listing_search_structure['sorting_field']); $tp->assign("sorting_order", $this->listing_search_structure['sorting_order']); $tp->assign("listing_search", $this->listing_search_structure); $tp->assign("listings", $listings_structure); $tp->assign("searchId", $this->searchId); $tp->assign("view_on_map", SJB_System::getSettingByName('view_on_map')); $tp->assign("view", $view); $listing = new SJB_Listing(array(), $this->listing_type_sid); $user = new SJB_User(array()); $listing_structure_meta_data = SJB_ListingManager::createMetadataForListing($listing, $user); if (isset($searchCriteria['username']['equal'])) { $userSID = SJB_UserManager::getUserSIDbyUsername($searchCriteria['username']['equal']); $user = SJB_UserManager::getObjectBySID($userSID); $userInfo = !empty($user) ? SJB_UserManager::createTemplateStructureForUser($user) : null; $tp->assign("userInfo", $userInfo); } if (isset($searchCriteria['listing_type']['equal']) && SJB_System::getSettingByName('turn_on_refine_search_' . $searchCriteria['listing_type']['equal']) && $this->useRefine) { $tp->assign("refineSearch", true); } $metaDataProvider = SJB_ObjectMother::getMetaDataProvider(); $metadata = array("listing" => $metaDataProvider->getMetaData($listing_structure_meta_data)); $tp->assign("METADATA", $metadata); return $tp; }
public static function sendAdminBannerAddedLetter($userSID, $bannerGroup) { $user = SJB_UserManager::getObjectBySID($userSID); $user = SJB_UserManager::createTemplateStructureForUser($user); $params = array('user' => $user, 'bannerGroup' => $bannerGroup); $admin_email = SJB_Settings::getSettingByName('notification_email'); $email = SJB_EmailTemplateEditor::getEmail($admin_email, self::EMAIL_TEMPLATE_SID_SND_ADMIN_BANNER_ADDED_LTR, $params); if ($email) { return $email->send(); } return null; }
public function execute() { $tp = SJB_System::getTemplateProcessor(); $template = 'edit_invoice.tpl'; $errors = array(); $invoiceErrors = array(); $invoiceSID = SJB_Request::getVar('sid', false); $action = SJB_Request::getVar('action', false); $tcpdfError = SJB_Request::getVar('error', false); if ($tcpdfError) { $invoiceErrors[] = $tcpdfError; } $invoiceInfo = SJB_InvoiceManager::getInvoiceInfoBySID($invoiceSID); $user_structure = null; if ($invoiceInfo) { $product_info = array(); if (array_key_exists('custom_info', $invoiceInfo['items'])) { $product_info = $invoiceInfo['items']['custom_info']; } $invoiceInfo = array_merge($invoiceInfo, $_REQUEST); $invoiceInfo['items']['custom_info'] = $product_info; $includeTax = $invoiceInfo['include_tax']; $invoice = new SJB_Invoice($invoiceInfo); $invoice->setSID($invoiceSID); $userSID = $invoice->getPropertyValue('user_sid'); $userExists = SJB_UserManager::isUserExistsByUserSid($userSID); $subUserSID = $invoice->getPropertyValue('subuser_sid'); if (!empty($subUserSID)) { $userInfo = SJB_UserManager::getUserInfoBySID($subUserSID); $username = $userInfo['username'] . '/' . $userInfo['email']; } else { $userInfo = SJB_UserManager::getUserInfoBySID($userSID); $username = $userInfo['FirstName'] . ' ' . $userInfo['LastName'] . ' ' . $userInfo['ContactName'] . ' ' . $userInfo['CompanyName'] . '/' . $userInfo['email']; } $taxInfo = $invoice->getPropertyValue('tax_info'); $productsSIDs = SJB_ProductsManager::getProductsIDsByUserGroupSID($userInfo['user_group_sid']); $products = array(); foreach ($productsSIDs as $key => $productSID) { $productInfo = SJB_ProductsManager::getProductInfoBySID($productSID); if (!empty($productInfo['pricing_type']) && $productInfo['pricing_type'] == 'volume_based') { $volumeBasedPricing = $productInfo['volume_based_pricing']; $minListings = min($volumeBasedPricing['listings_range_from']); $maxListings = max($volumeBasedPricing['listings_range_to']); $countListings = array(); for ($i = $minListings; $i <= $maxListings; $i++) { $countListings[$i]['number_of_listings'] = $i; for ($j = 1; $j <= count($volumeBasedPricing['listings_range_from']); $j++) { if ($i >= $volumeBasedPricing['listings_range_from'][$j] && $i <= $volumeBasedPricing['listings_range_to'][$j]) { $countListings[$i]['price'] = $volumeBasedPricing['price_per_unit'][$j]; } } } $productInfo['count_listings'] = $countListings; } $products[$key] = $productInfo; } $addForm = new SJB_Form($invoice); $addForm->registerTags($tp); $tp->assign('userExists', $userExists); $tp->assign('products', $products); $tp->assign('invoice_sid', $invoiceSID); $tp->assign('include_tax', $includeTax); $tp->assign('username', trim($username)); if ($action) { switch ($action) { case 'save': case 'apply': $invoiceErrors = $invoice->isValid(); if (empty($invoiceErrors) && $addForm->isDataValid($errors)) { $invoice->setFloatNumbersIntoValidFormat(); SJB_InvoiceManager::saveInvoice($invoice); if ($action == 'save') { SJB_HelperFunctions::redirect(SJB_System::getSystemSettings("SITE_URL") . '/manage-invoices/'); } } else { $invoiceDate = SJB_I18N::getInstance()->getInput('date', $invoice->getPropertyValue('date')); $invoice->setPropertyValue('date', $invoiceDate); } $invoice->setFloatNumbersIntoValidFormat(); $taxInfo['tax_amount'] = SJB_I18N::getInstance()->getInput('float', $taxInfo['tax_amount']); break; case 'print': case 'download_pdf_version': $user = SJB_UserManager::getObjectBySID($userSID); $user_structure = SJB_UserManager::createTemplateStructureForUser($user); $template = 'print_invoice.tpl'; $username = SJB_Array::get($user_structure, 'CompanyName') . ' ' . SJB_Array::get($user_structure, 'FirstName') . ' ' . SJB_Array::get($user_structure, 'LastName'); $tp->assign('username', trim($username)); $tp->assign('user', $user_structure); $tp->assign('tax', $taxInfo); if ($action == 'download_pdf_version') { $template = 'invoice_to_pdf.tpl'; $filename = 'invoice_' . $invoiceSID . '.pdf'; try { SJB_HelperFunctions::html2pdf($tp->fetch($template), $filename); exit; } catch (Exception $e) { SJB_Error::writeToLog($e->getMessage()); SJB_HelperFunctions::redirect(SJB_System::getSystemSettings("SITE_URL") . '/edit-invoice/?sid=' . $invoiceSID . '&error=TCPDF_ERROR'); } } break; case 'send_invoice': $result = SJB_Notifications::sendInvoiceToCustomer($invoiceSID, $userSID); if ($result) { echo SJB_I18N::getInstance()->gettext("Backend", "Invoice successfully sent"); } else { echo SJB_I18N::getInstance()->gettext("Backend", "Invoice not sent"); } exit; break; } } $transactions = SJB_TransactionManager::getTransactionsByInvoice($invoiceSID); $tp->assign('tax', $taxInfo); $tp->assign('transactions', $transactions); } else { $tp->assign('action', 'edit'); $errors[] = 'WRONG_INVOICE_ID_SPECIFIED'; $template = 'errors.tpl'; } $tp->assign("errors", array_merge($errors, $invoiceErrors)); $tp->display($template); }
private function prepareTplVarsForUser($onlyUserGroupID = false) { $userGroups = SJB_UserGroupManager::getAllUserGroupsIDsAndCaptions(); foreach ($userGroups as $key => &$userGroupInfo) { if ($onlyUserGroupID && $userGroupInfo['key'] != $onlyUserGroupID) { unset($userGroups[$key]); continue; } $user = SJB_ObjectMother::createUser(array(), $userGroupInfo['id']); $fields = SJB_UserManager::createTemplateStructureForUser($user); unset($fields['METADATA']); unset($fields['password']); $userGroupInfo['fields'] = $this->echoVars($fields); } $this->tp->assign('userGroups', $userGroups); }