Exemple #1
0
 public function execute()
 {
     ini_set('max_execution_time', 0);
     $tp = SJB_System::getTemplateProcessor();
     $userGroupID = SJB_Request::getVar('user_group_id', 0);
     $user = SJB_UsersExportController::createUser($userGroupID);
     $searchFormBuilder = new SJB_SearchFormBuilder($user);
     $criteria = $searchFormBuilder->extractCriteriaFromRequestData($_REQUEST, $user);
     $searchFormBuilder->registerTags($tp);
     $searchFormBuilder->setCriteria($criteria);
     if ($_SERVER['REQUEST_METHOD'] == 'POST') {
         $exportProperties = SJB_Request::getVar('export_properties', array());
         if (empty($exportProperties)) {
             SJB_FlashMessages::getInstance()->addWarning('EMPTY_EXPORT_PROPERTIES');
         } else {
             $innerJoin = false;
             if (isset($_REQUEST['product']['multi_like']) && $_REQUEST['product']['multi_like'] != '') {
                 $products = $_REQUEST['product']['multi_like'];
                 if (is_array($products)) {
                     $products = implode(',', $products);
                 }
                 $whereParam = implode(',', explode(',', SJB_DB::quote($products)));
                 $innerJoin = array('contracts' => array('join_field' => 'user_sid', 'join_field2' => 'sid', 'join' => 'INNER JOIN', 'where' => "AND FIND_IN_SET(`contracts`.`product_sid`, '{$whereParam}')"));
                 unset($criteria['system']['product']);
             }
             $searcher = new SJB_UserSearcher(false, 'parent_sid', 'ASC', $innerJoin);
             $searchAliases = SJB_UsersExportController::getSearchPropertyAliases();
             $foundUsersSid = $searcher->getObjectsSIDsByCriteria($criteria, $searchAliases);
             if (!empty($foundUsersSid)) {
                 $result = SJB_UsersExportController::createExportDirectories();
                 if ($result === true) {
                     $exportProperties['extUserID'] = 1;
                     $exportProperties['parent_sid'] = 1;
                     $exportAliases = SJB_UsersExportController::getExportPropertyAliases();
                     $exportData = SJB_UsersExportController::getExportData($foundUsersSid, $exportProperties, $exportAliases);
                     $fileName = 'users.xls';
                     SJB_UsersExportController::makeExportFile($exportData, $fileName);
                     if (!file_exists(SJB_System::getSystemSettings('EXPORT_FILES_DIRECTORY') . "/{$fileName}")) {
                         SJB_FlashMessages::getInstance()->addWarning('CANT_CREATE_EXPORT_FILES');
                     } else {
                         SJB_HelperFunctions::redirect(SJB_System::getSystemSettings("SITE_URL") . "/users/archive-and-send-export-data/");
                     }
                 }
             } else {
                 SJB_FlashMessages::getInstance()->addWarning('EMPTY_EXPORT_DATA');
             }
         }
     }
     $userSystemProperties = SJB_UserManager::getAllUserSystemProperties();
     $userGroups = SJB_UserGroupManager::getAllUserGroupsInfo();
     $userCommonProperties = array();
     foreach ($userGroups as $userGroup) {
         $userGroupProperties = SJB_UserProfileFieldManager::getFieldsInfoByUserGroupSID($userGroup['sid']);
         $userCommonProperties[$userGroup['id']] = $userGroupProperties;
     }
     $tp->assign('userSystemProperties', $userSystemProperties);
     $tp->assign('userCommonProperties', $userCommonProperties);
     $tp->assign('selected_user_group_id', $userGroupID);
     $tp->display('export_users.tpl');
 }
 public function execute()
 {
     $tp = SJB_System::getTemplateProcessor();
     $user_group_sid = SJB_Request::getVar('user_group_sid', null);
     $user_group_info = SJB_UserGroupManager::getUserGroupInfoBySID($user_group_sid);
     $errors = null;
     if (!is_null($user_group_sid)) {
         if (isset($_REQUEST['action'], $_REQUEST['field_sid'])) {
             if ($_REQUEST['action'] == 'move_up') {
                 SJB_UserProfileFieldManager::moveUpFieldBySID($_REQUEST['field_sid']);
             } elseif ($_REQUEST['action'] == 'move_down') {
                 SJB_UserProfileFieldManager::moveDownFieldBySID($_REQUEST['field_sid']);
             }
         }
         $user_profile_fields = SJB_UserProfileFieldManager::getFieldsInfoByUserGroupSID($user_group_sid);
     } else {
         $errors['USER_GROUP_SID_NOT_SET'] = 1;
         $user_profile_fields = null;
     }
     $tp->assign("errors", $errors);
     $tp->assign("user_profile_fields", $user_profile_fields);
     $tp->assign("user_group_sid", $user_group_sid);
     $tp->assign("user_group_info", $user_group_info);
     $tp->display("edit_user_profile_fields.tpl");
 }
Exemple #3
0
 public static function getDetails($user_group_sid, $referenceUid = false)
 {
     $details = array(array('id' => 'featured', 'caption' => 'Featured', 'type' => 'boolean', 'length' => '20', 'is_required' => false, 'is_system' => true, 'order' => null), array('id' => 'active', 'caption' => 'Status', 'type' => 'list', 'list_values' => array(array('id' => '1', 'caption' => 'Active'), array('id' => '0', 'caption' => 'Not active')), 'length' => '10', 'is_required' => false, 'is_system' => true), array('id' => 'sendmail', 'caption' => "Don't send mailings", 'type' => 'boolean', 'length' => '1', 'is_required' => false, 'is_system' => true));
     $user_group_info = SJB_UserGroupManager::getUserGroupInfoBySID($user_group_sid);
     $email_confirmation = false;
     if (isset($user_group_info['email_confirmation'])) {
         $email_confirmation = $user_group_info['email_confirmation'];
     }
     if (SJB_UserGroupManager::isUserEmailAsUsernameInUserGroup($user_group_sid) || class_exists('SJB_SocialPlugin') && $referenceUid) {
         $userFields = array(array('id' => 'username', 'caption' => 'User name', 'type' => 'string', 'table_name' => 'users', 'length' => '20', 'is_required' => true, 'is_system' => true, 'order' => 0), array('id' => 'password', 'caption' => 'Password', 'type' => 'password', 'length' => '20', 'is_required' => true, 'is_system' => true, 'order' => 2), array('id' => 'email', 'caption' => 'Email', 'type' => 'unique_email', 'table_name' => 'users', 'length' => '20', 'is_required' => true, 'is_system' => true, 'order' => 1, 'email_confirmation' => $email_confirmation));
     } else {
         $userFields = array(array('id' => 'username', 'caption' => 'User name', 'type' => 'unique_string', 'table_name' => 'users', 'length' => '20', 'validators' => array('SJB_IdValidator', 'SJB_UniqueSystemValidator'), 'is_required' => true, 'is_system' => true, 'order' => 0), array('id' => 'password', 'caption' => 'Password', 'type' => 'password', 'length' => '20', 'is_required' => true, 'is_system' => true, 'order' => 1), array('id' => 'email', 'caption' => 'Email', 'type' => 'unique_email', 'table_name' => 'users', 'length' => '20', 'is_required' => true, 'is_system' => true, 'order' => 2, 'email_confirmation' => $email_confirmation));
     }
     $details = array_merge($userFields, $details);
     $extra_details = SJB_UserProfileFieldManager::getFieldsInfoByUserGroupSID($user_group_sid);
     foreach ($extra_details as $key => $extra_detail) {
         if ($extra_detail['type'] == 'monetary' || $extra_detail['type'] == 'complex') {
             $extra_details[$key]['is_system'] = false;
         } else {
             $extra_details[$key]['is_system'] = true;
         }
     }
     $details = array_merge($details, $extra_details);
     if (SJB_PluginManager::isPluginActive('CaptchaPlugin') && SJB_System::getSettingByName('registrationCaptcha') == 1 && SJB_System::getURI() == '/registration/') {
         $details_captcha = array(array('id' => 'captcha', 'caption' => 'Enter code from image', 'type' => 'captcha', 'length' => '20', 'is_required' => true, 'is_system' => false));
         $details = array_merge($details, $details_captcha);
     }
     return $details;
 }
Exemple #4
0
 public static function deleteUserGroupBySID($user_group_sid)
 {
     $user_profile_fields_info = SJB_UserProfileFieldManager::getFieldsInfoByUserGroupSID($user_group_sid);
     foreach ($user_profile_fields_info as $user_profile_field_info) {
         SJB_UserProfileFieldManager::deleteUserProfileFieldBySID($user_profile_field_info['sid']);
     }
     SJB_DB::query('DELETE FROM `products` WHERE `user_group_sid` = ?n', $user_group_sid);
     return SJB_UserGroupDBManager::deleteUserGroupInfo($user_group_sid);
 }
Exemple #5
0
    public function execute()
    {
        set_time_limit(0);
        ini_set('memory_limit', -1);
        $tp = SJB_System::getTemplateProcessor();
        $user_groups_info = SJB_UserGroupManager::getAllUserGroupsInfo();
        $user_group_info = reset($user_groups_info);
        $user_group_sid = $user_group_info['sid'];
        $fields_info = SJB_UserProfileFieldManager::getFieldsInfoByUserGroupSID($user_group_sid);
        $fields = array();
        $tp->assign('test_message', SJB_Request::getVar('test_message', false));
        $tp->assign('undeliveredMailingsForTest', SJB_Request::getVar('undeliveredMailingsForTest', false));
        foreach ($fields_info as $key => $val) {
            if ($val['id'] == 'Location') {
                foreach ($val['fields'] as $field) {
                    if ($field['id'] == 'Country') {
                        $fields['country'] = SJB_CountriesManager::getAllCountriesCodesAndNames();
                    } elseif ($field['id'] == 'State') {
                        $fields['state'] = SJB_StatesManager::getStatesNamesByCountry();
                    }
                }
            }
        }
        $tp->assign('fields', $fields);
        $errors = array();
        $errorId = SJB_Request::getVar('error', null, 'GET');
        if ($errorId) {
            $errors[$errorId] = 1;
        }
        if (isset($_REQUEST['submit']) && $_FILES['file_mail']['name'] && $_FILES['file_mail']['error']) {
            $errorId = SJB_UploadFileManager::getErrorId($_FILES['file_mail']['error']);
            if ($_REQUEST['submit'] != 'save') {
                $mailID = SJB_Request::getVar('mail_id', 0);
                $parameter = $mailID ? '?edit=' . $mailID : '';
                SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . '/mailing/' . $parameter . '&error=' . $errorId);
            }
            $errors[$errorId] = 1;
        } else {
            if (isset($_REQUEST['submit'])) {
                SJB_DB::query("DELETE FROM uploaded_files WHERE id = 'file_mail'");
                $upload_manager = new SJB_UploadFileManager();
                $upload_manager->setFileGroup('files');
                $upload_manager->setUploadedFileID('file_mail');
                $upload_manager->uploadFile('file_mail');
                $file_name = '';
                if (!isset($_REQUEST['delete_file']) && isset($_REQUEST['old_file']) && !$upload_manager->getUploadedFileName('file_mail')) {
                    $file_name = $_REQUEST['old_file'];
                } elseif ($upload_manager->getUploadedFileName('file_mail')) {
                    $file_name = "files/files/" . $upload_manager->getUploadedSavedFileName('file_mail');
                }
                $language = SJB_Request::getVar('language', 'any');
                $users = SJB_Request::getVar('users', 'any');
                $without_cv = SJB_Request::getVar('without_cv', false);
                $country = SJB_Request::getVar('country', '');
                $state = SJB_Request::getVar('state', '');
                $city = SJB_Request::getVar('city', '');
                $products = SJB_Request::getVar('products', array());
                $user_status = SJB_Request::getVar('user_status', '');
                $registration_date = SJB_Request::getVar('registration_date', array());
                $param = serialize(array('language' => $language, 'users' => $users, 'without_cv' => $without_cv, 'products' => $products, 'country' => $country, 'state' => $state, 'city' => $city, 'status' => $user_status, 'registration' => $registration_date));
                $email = '';
                $mailSubject = SJB_Request::getVar('subject', '');
                $mailText = stripcslashes(SJB_Request::getVar('text', ''));
                $mailID = SJB_Request::getVar('mail_id', 0);
                if ($mailID) {
                    SJB_DB::query('UPDATE `mailing` SET
					`subject` 	= ?s,
					`text` 		= ?s,
					`email` 	= ?s,
					`file` 		= ?s,
					`param` 	= ?s
				WHERE `id` 	= ?s', $mailSubject, $mailText, $email, $file_name, $param, $mailID);
                } else {
                    $query = "INSERT INTO mailing ( email , subject , text , file, param) VALUES ( ?s, ?s, ?s, ?s, ?s)";
                    SJB_DB::query($query, $email, $mailSubject, $mailText, $file_name, $param);
                }
                if ($_REQUEST['submit'] == 'save') {
                    SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . '/mailing/');
                } else {
                    $parameter = $mailID ? '?edit=' . $mailID : '';
                    SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . '/mailing/' . $parameter);
                }
            }
        }
        if (SJB_Request::getVar('delete')) {
            $mailings = SJB_Request::getVar('mailing');
            if (is_array($mailings)) {
                foreach ($mailings as $id => $value) {
                    SJB_DB::query('DELETE FROM `mailing` WHERE `id` = ?n', $id);
                    SJB_DB::query('DELETE FROM `mailing_info` WHERE `mailing_id` = ?n', $id);
                }
            } else {
                $idToDelete = SJB_Request::getInt('delete', 0);
                SJB_DB::query('DELETE FROM `mailing` WHERE `id` = ?n', $idToDelete);
                SJB_DB::query('DELETE FROM `mailing_info` WHERE `mailing_id` = ?n', $idToDelete);
            }
            SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . '/mailing/');
        }
        if (isset($_REQUEST['edit'])) {
            $idToEdit = SJB_Request::getInt('edit', 0);
            $mail_arr = SJB_DB::query('SELECT * FROM mailing WHERE id = ?n', $idToEdit);
            $tp->assign("mail_id", $mail_arr[0]['id']);
            $tp->assign("subject", $mail_arr[0]['subject']);
            $tp->assign("text", $mail_arr[0]['text']);
            $tp->assign("file", $mail_arr[0]['file']);
            $tp->assign("file_url", $mail_arr[0]['file']);
            $tp->assign("param", unserialize($mail_arr[0]['param']));
        }
        // get products by UserGroup ID
        if (SJB_Request::isAjax()) {
            $userGroupID = SJB_Request::getVar('usergr', 0);
            if ($userGroupID > 0) {
                $products = SJB_ProductsManager::getProductsInfoByUserGroupSID($userGroupID);
            } else {
                $products = SJB_ProductsManager::getAllProductsInfo();
            }
            $tp->assign("products", $products);
            $tp->display("mailing_products.tpl");
            exit;
        }
        $mail_list = SJB_DB::query('SELECT * FROM mailing');
        foreach ($mail_list as $key => $var) {
            $param = unserialize($mail_list[$key]['param']);
            $where = '';
            $join = '';
            $numSentEmails = SJB_DB::queryValue('SELECT count(*) FROM `mailing_info` WHERE `mailing_id` = ?n AND `status`=0', $var['id']);
            if ($param["language"] != 'any') {
                $where .= " and language='{$param['language']}'";
            }
            if ($param["users"] != '0') {
                $where .= ' and u.user_group_sid=' . $param['users'];
            }
            if ($param["without_cv"]) {
                $join = "left join listings l on l.user_sid = u.sid";
                $where .= " and l.sid is null";
            }
            // user status
            if (!empty($param['status'])) {
                $where .= ' and `u`.`active`=' . (int) $param['status'];
            }
            // registration date
            if (!empty($param['registration']) && is_array($param['registration'])) {
                $i18n = SJB_I18N::getInstance();
                if (!empty($param['registration']['not_less'])) {
                    $where .= ' AND `u`.`registration_date` > \'' . $i18n->getInput('date', $param['registration']['not_less']) . '\'';
                }
                if (!empty($param['registration']['not_more'])) {
                    $where .= ' AND `u`.`registration_date` < \'' . $i18n->getInput('date', $param['registration']['not_more']) . '\'';
                }
            }
            // products
            if (!empty($param['products'])) {
                $join .= "\n            LEFT JOIN contracts ON u.sid = contracts.user_sid\n            LEFT JOIN products ON products.sid = contracts.product_sid\n        ";
                $whereProduct = array();
                foreach ($param['products'] as $theProduct) {
                    $theProduct = (int) $theProduct;
                    if (!empty($theProduct)) {
                        $whereProduct[] .= "products.sid = '{$theProduct}'";
                    } else {
                        $whereProduct[] .= 'products.sid IS NULL';
                    }
                }
                if (!empty($whereProduct)) {
                    $where .= ' AND (' . implode(' OR ', $whereProduct) . ')';
                }
            }
            /// products
            if (!empty($param['country']) || !empty($param['state'])) {
                if (!empty($param['country'])) {
                    $where_country = array();
                    foreach ($param['country'] as $the_country) {
                        if (!empty($the_country)) {
                            $where_country[] .= "`u`.`Location_Country` = '{$the_country}'";
                        } else {
                            $where_country[] .= "`u`.`Location_Country` IS NULL";
                        }
                    }
                    if (!empty($where_country)) {
                        $where .= ' AND (' . implode(' OR ', $where_country) . ')';
                    }
                }
                if (!empty($param['state'])) {
                    $where_state = array();
                    foreach ($param['state'] as $the_state) {
                        if (!empty($the_state)) {
                            $where_state[] .= "`u`.`Location_State` = '{$the_state}'";
                        } else {
                            $where_state[] .= "`u`.`Location_State` IS NULL";
                        }
                    }
                }
                if (!empty($where_state)) {
                    $where .= ' AND (' . implode(' OR ', $where_state) . ')';
                }
                if (!empty($param['city'])) {
                    $where .= " AND `u`.`Location_City` = '{$param['city']}'";
                }
            }
            $mail_list[$key]['not_send'] = $numSentEmails;
            $mail_list[$key]['mail_arr'] = SJB_DB::query("\n        SELECT u.sid as sid, u.username, u.user_group_sid, u.language\n        FROM users u\n            {$join}\n            WHERE u.sendmail = 0\n            {$where}\n            GROUP BY `u`.`sid`");
            $mail_list[$key]['count'] = count($mail_list[$key]['mail_arr']);
        }
        /*
         * test sending
         */
        $testMailingID = SJB_Request::getVar('test_send', 0);
        if ($testMailingID) {
            if ($this->isTestEmailValid()) {
                $testSendResult = false;
                $oMailing = new SJB_Mailing($testMailingID);
                $mailings = SJB_Request::getVar('mailing');
                if (is_array($mailings)) {
                    foreach ($mailings as $id => $value) {
                        $oMailing->setMailingID($id);
                        $oMailing->setMailingList($mail_list);
                        if ($oMailing->testSend()) {
                            $testSendResult = true;
                        }
                    }
                } else {
                    $oMailing->setMailingList($mail_list);
                    $testSendResult = $oMailing->testSend();
                }
                if ($testSendResult) {
                    SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . '/mailing/?test_message=1');
                } else {
                    $email = urlencode(SJB_Request::getString('email', false));
                    SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . "/mailing/?undeliveredMailingsForTest={$email}");
                }
            } else {
                $tp->assign('testEmailNotValid', true);
            }
        }
        // general sending
        $sendToMailingID = SJB_Request::getVar('sending', 0);
        $sendResult = false;
        if ($sendToMailingID) {
            $oMailing = new SJB_Mailing($sendToMailingID);
            $mailings = SJB_Request::getVar('mailing');
            $undeliveredMailingsInfo = array();
            if (is_array($mailings)) {
                foreach ($mailings as $id => $value) {
                    $oMailing->setMailingID($id);
                    $oMailing->setMailingList($mail_list);
                    $countOfSendMailings = $oMailing->send();
                    if ($countOfSendMailings != 0) {
                        $sendResult = true;
                    }
                    $undeliveredMailingsInfo = array_merge($oMailing->getUndeliveredMailingsInfo(), $undeliveredMailingsInfo);
                }
            } else {
                $oMailing->setMailingList($mail_list);
                $countOfSendMailings = $oMailing->send();
                if ($countOfSendMailings != 0) {
                    $sendResult = true;
                }
                $undeliveredMailingsInfo = $oMailing->getUndeliveredMailingsInfo();
            }
            if ($sendResult) {
                $tp->assign('send_result', $sendResult);
            }
            if (count($undeliveredMailingsInfo)) {
                $tp->assign("UndeliveredMailings", $oMailing->getUndeliveredMailingsInfo());
            }
        }
        // send mailing to undelivered
        $sendToUndeliveredMailingID = SJB_Request::getVar('sendToUndeliveredEmails', 0);
        if (!empty($sendToUndeliveredMailingID)) {
            $oMailing = new SJB_Mailing($sendToUndeliveredMailingID);
            $oMailing->setMailingList($mail_list);
            $oMailing->sendToUndelivered();
            if ($oMailing->getUndeliveredMailingsInfo()) {
                $tp->assign("UndeliveredMailings", $oMailing->getUndeliveredMailingsInfo());
            }
        }
        $groups = SJB_DB::query("SELECT * FROM `user_groups`");
        $products = SJB_ProductsManager::getAllProductsInfo();
        $testEmail = SJB_Settings::getSettingByName('test_email');
        $tp->assign('test_email', $testEmail);
        $tp->assign("products", $products);
        $tp->assign("groups", $groups);
        $tp->assign("mail_list", $mail_list);
        $tp->assign('errors', $errors);
        $tp->assign("uploadMaxFilesize", SJB_UploadFileManager::getIniUploadMaxFilesize());
        $tp->display("mailing.tpl");
    }
 public function execute()
 {
     $tp = SJB_System::getTemplateProcessor();
     $listing_field_sid = SJB_Request::getVar('sid', null);
     if (!is_null($listing_field_sid)) {
         $listingFieldInfo = SJB_ListingFieldManager::getFieldInfoBySID($listing_field_sid);
         $old_listing_field_id = $listingFieldInfo['id'];
         $listingFieldInfo = array_merge($listingFieldInfo, $_REQUEST);
         $listing_field = new SJB_ListingField($listingFieldInfo, $listingFieldInfo['listing_type_sid']);
         $listing_field->setSID($listing_field_sid);
         $formSubmitted = SJB_Request::getVar('action', '');
         if (!in_array($listing_field->field_type, array('video', 'picture', 'file', 'complex'))) {
             $profileField = SJB_Request::getVar('profile_field', false);
             if ($formSubmitted) {
                 if ($profileField) {
                     $listingFieldInfo['default_value'] = '';
                 } else {
                     $listingFieldInfo['profile_field_as_dv'] = '';
                 }
             }
             $default_value = array('id' => 'default_value', 'sid' => isset($listingFieldInfo['sid']) ? $listingFieldInfo['sid'] : '', 'caption' => 'Default Value', 'value' => isset($listingFieldInfo['default_value']) ? $listingFieldInfo['default_value'] : '', 'type' => $listing_field->field_type, 'length' => '', 'is_required' => false, 'is_system' => true);
             $additionalParameters = array();
             switch ($listing_field->field_type) {
                 case 'list':
                     if (isset($listingFieldInfo['list_values'])) {
                         $additionalParameters = array('list_values' => $listingFieldInfo['list_values']);
                     }
                     break;
                 case 'multilist':
                     if (isset($listingFieldInfo['list_values'])) {
                         $additionalParameters = array('list_values' => $listingFieldInfo['list_values']);
                     }
                     if (!is_array($default_value['value'])) {
                         if (strpos($default_value['value'], ',')) {
                             $default_value['value'] = explode(',', $default_value['value']);
                         } else {
                             $default_value['value'] = array($default_value['value']);
                         }
                     }
                     break;
                 case 'tree':
                     if (isset($listingFieldInfo['tree_values'])) {
                         $additionalParameters = array('tree_values' => $listingFieldInfo['tree_values']);
                     }
                     break;
                 case 'monetary':
                     if (isset($listingFieldInfo['currency_values'])) {
                         $default_value['currency_values'] = $listingFieldInfo['currency_values'];
                     }
                     break;
             }
             $default_value = array_merge($default_value, $additionalParameters);
             $listing_field->addProperty($default_value);
             $user_groups = SJB_UserGroupManager::getAllUserGroupsInfo();
             $list_values = array();
             foreach ($user_groups as $user_group) {
                 $list_values = array_merge($list_values, SJB_UserProfileFieldManager::getFieldsInfoByUserGroupSID($user_group['sid']));
             }
             $profile_field_as_dv = array('id' => 'profile_field_as_dv', 'caption' => 'Default Value', 'value' => isset($listingFieldInfo['profile_field_as_dv']) ? $listingFieldInfo['profile_field_as_dv'] : '', 'type' => 'list', 'list_values' => $list_values, 'length' => '', 'is_required' => false, 'is_system' => true);
             $listing_field->addProperty($profile_field_as_dv);
             if (in_array($listing_field->field_type, array('tree', 'multilist', 'list'))) {
                 $sort_by_alphabet = array('id' => 'sort_by_alphabet', 'caption' => 'Sort Values By Alphabet', 'value' => isset($listingFieldInfo['sort_by_alphabet']) ? $listingFieldInfo['sort_by_alphabet'] : '', 'type' => 'boolean', 'lenght' => '', 'is_required' => false, 'is_system' => true);
                 $listing_field->addProperty($sort_by_alphabet);
             }
             $tp->assign('profileFieldAsDV', !empty($listingFieldInfo['profile_field_as_dv']));
         }
         if (in_array($listing_field->field_type, array('multilist', 'list'))) {
             $listing_field->addDisplayAsProperty($listingFieldInfo['display_as']);
         }
         // infil instructions should be the last element in form
         if (!in_array($listing_field->getFieldType(), array('complex', 'tree', 'location')) && 'ApplicationSettings' != $listing_field->getPropertyValue('id')) {
             if ($formSubmitted) {
                 $listing_field->addInfillInstructions(SJB_Request::getVar('instructions'));
             } else {
                 $listing_field->addInfillInstructions(isset($listingFieldInfo['instructions']) ? $listingFieldInfo['instructions'] : '');
             }
         }
         /**
          * "Display as" options for TREE TYPE
          */
         if ('tree' == $listing_field->getFieldType()) {
             $listing_field->addProperty(SJB_TreeType::getDisplayAsDetail(isset($listingFieldInfo['display_as_select_boxes']) ? $listingFieldInfo['display_as_select_boxes'] : ''));
             $treeLevelsNumber = SJB_ListingFieldTreeManager::getTreeDepthBySID($listing_field_sid);
             $tp->assign('tree_levels_number', $treeLevelsNumber);
             // treee levels captions
             for ($i = 1; $i <= $treeLevelsNumber; $i++) {
                 $levelID = 'level_' . $i;
                 $listing_field->addProperty(array('id' => $levelID, 'caption' => $i . ' Level Name', 'value' => isset($listingFieldInfo[$levelID]) ? $listingFieldInfo[$levelID] : '', 'type' => 'string', 'length' => '250', 'is_required' => false, 'is_system' => true));
             }
         }
         /*
          * end of ""Display as" options for TREE TYPE"
          */
         $edit_form = new SJB_Form($listing_field);
         $edit_form->makeDisabled("type");
         $errors = array();
         if ($formSubmitted && $edit_form->isDataValid($errors)) {
             SJB_ListingFieldManager::saveListingField($listing_field);
             SJB_ListingFieldManager::changeListingPropertyIDs($listingFieldInfo['id'], $old_listing_field_id);
             if ($formSubmitted == 'save_info') {
                 SJB_HelperFunctions::redirect(SJB_System::getSystemSettings("SITE_URL") . "/edit-listing-type/?sid=" . $listing_field->getListingTypeSID());
             }
         }
         $edit_form->registerTags($tp);
         $tp->assign("form_fields", $edit_form->getFormFieldsInfo());
         $tp->assign("errors", $errors);
         $tp->assign("listing_type_sid", $listing_field->getListingTypeSID());
         $tp->assign("field_type", $listing_field->getFieldType());
         $tp->assign("field_sid", $listing_field->getSID());
         $listing_type_info = SJB_ListingTypeManager::getListingTypeInfoBySID($listing_field->getListingTypeSID());
         $tp->assign("listing_type_info", $listing_type_info);
         $tp->assign("listing_field_info", $listingFieldInfo);
         $tp->display("edit_listing_type_field.tpl");
     }
 }
Exemple #7
0
 public function execute()
 {
     $tp = SJB_System::getTemplateProcessor();
     $template = SJB_Request::getVar('display_template');
     $page = 1;
     $searchId = strip_tags(SJB_Request::getVar('searchId', time()));
     if (!empty($_REQUEST["page"])) {
         $page = intval($_REQUEST["page"]);
     }
     $items_per_page = SJB_Request::getVar('companies_per_page', false);
     $listing_type_sid = SJB_ListingTypeManager::getListingTypeSIDByID($_REQUEST["listing_type_id"]);
     $alphabets = SJB_AlphabetManager::getAlphabetsForDisplay();
     $abArr = array();
     foreach ($alphabets as $alphabet) {
         $abArr[] = explode(' ', $alphabet['value']);
     }
     $action = SJB_Request::getVar('action', 'search_form');
     if (SJB_Request::getVar('first_char')) {
         $action = 'search';
         $_REQUEST['CompanyName']['first_char_like'] = SJB_Request::getVar('first_char');
     } elseif (!isset($_REQUEST['CompanyName']) || $_REQUEST['CompanyName']['like'] == '') {
         $_REQUEST['CompanyName']['not_empty'] = true;
     }
     $userGroupSid = SJB_UserGroupManager::getUserGroupSIDByID('Employer');
     $userGroupFields = SJB_UserProfileFieldManager::getFieldsInfoByUserGroupSID($userGroupSid);
     foreach ($userGroupFields as $key => $userGroupField) {
         if ($userGroupField['type'] == 'location') {
             $userGroupFields[$key]['fields'] = array();
             $userGroupFields[$key]['fields'][$userGroupField['sid']] = $userGroupField;
         }
     }
     $user = new SJB_User(array(), $userGroupSid);
     $_REQUEST['active']['equal'] = 1;
     $search_form_builder = new SJB_SearchFormBuilder($user);
     $criteria_saver = new SJB_UserCriteriaSaver($searchId);
     $criteria_saver->setSessionForOrderInfo($_REQUEST);
     if (isset($_REQUEST['searchId'])) {
         $action = 'search';
         $criteria = $criteria_saver->getCriteria();
         if (!empty($_REQUEST['sorting_field'])) {
             unset($criteria['sorting_field']);
         } else {
             $orderInfo = $criteria_saver->getOrderInfo();
             if (!empty($orderInfo['sorting_order'])) {
                 $criteria['sorting_order'] = $orderInfo['sorting_order'];
             }
         }
         $_REQUEST = array_merge($_REQUEST, $criteria);
         if (!$items_per_page) {
             $items_per_page = $criteria_saver->listings_per_page;
         }
     }
     $items_per_page = $items_per_page ? $items_per_page : 10;
     $criteria = $search_form_builder->extractCriteriaFromRequestData(array_merge($_REQUEST, array('username' => array('not_equal' => 'jobg8'))), $user);
     if ($items_per_page) {
         $criteria_saver->setSessionForListingsPerPage($items_per_page);
     }
     $search_form_builder->setCriteria($criteria);
     $search_form_builder->registerTags($tp);
     $form_fields = $search_form_builder->getFormFieldsInfo();
     $tp->assign('form_fields', $form_fields);
     $metaDataProvider = SJB_ObjectMother::getMetaDataProvider();
     $tp->assign('METADATA', array('form_fields' => $metaDataProvider->getFormFieldsMetadata($form_fields)));
     $tp->assign('userGroupFields', $userGroupFields);
     $tp->assign('action', $action);
     $tp->assign('alphabets', $abArr);
     if ($action == 'search') {
         $sorting_field = SJB_Request::getVar('sorting_field', false);
         $sorting_order = SJB_Request::getVar('sorting_order', false);
         if (isset($_REQUEST['searchId']) && !$sorting_field) {
             $order_info = $criteria_saver->order_info;
             if ($order_info) {
                 $sorting_field = $order_info['sorting_field'];
                 $sorting_order = $order_info['sorting_order'];
             }
         }
         if (!$sorting_field) {
             $sorting_field = 'CompanyName';
             $sorting_order = 'ASC';
         }
         $inner_join = array();
         if ($sorting_field == 'number_of_jobs') {
             if (SJB_ListingTypeManager::getWaitApproveSettingByListingType($listing_type_sid) == 1) {
                 $count = "sum( if( `listings`.`status` = 'approved', `listings`.`active`, 0 ) )";
             } else {
                 $count = "sum(`listings`.`active`)";
             }
             $inner_join = array('listings' => array('sort_field' => $count, 'noPresix' => true, 'join_field' => 'user_sid', 'join_field2' => 'sid', 'join' => 'LEFT JOIN', 'groupBy' => '`users`.`sid`'));
         } elseif ($sorting_field == 'Location_State') {
             $inner_join = array('states' => array('sort_field' => 'state_name', 'noPresix' => true, 'join_field' => 'sid', 'join_field2' => 'Location_State', 'join' => 'LEFT JOIN'));
         }
         $searcher = new SJB_UserSearcher(false, $sorting_field, $sorting_order, $inner_join, array('limit' => ($page - 1) * $items_per_page, 'num_rows' => $items_per_page));
         $found_users = array();
         $found_users_sids = array();
         $found_users_by_criteria = $searcher->getObjectsByCriteria($criteria, null, array(), true);
         $foundObjectSIDs = $searcher->getFoundObjectSIDs();
         // display search form
         $tp->display($template);
         $criteria_saver->setSession($_REQUEST, $foundObjectSIDs);
         if (count($foundObjectSIDs) > 0) {
             $listingType = SJB_ListingTypeManager::getListingTypeInfoBySID($listing_type_sid);
             $countListings = SJB_ListingDBManager::getActiveAndApproveJobsNumberForUsers($foundObjectSIDs, $listingType);
         }
         foreach ($found_users_by_criteria as $id => $user) {
             $listingsNumber = isset($countListings[$id]) ? $countListings[$id] : 0;
             $user->addProperty(array('id' => 'countListings', 'type' => 'string', 'value' => $listingsNumber));
             if ($user->getProperty('CompanyName')) {
                 $found_users_sids[$user->getSID()] = $user->getSID();
                 $found_users[$id] = $user;
             }
         }
         $usersCount = $searcher->getAffectedRows();
         $form_collection = new SJB_FormCollection($found_users);
         $form_collection->registerTags($tp);
         $pages = array();
         for ($i = $page - 3; $i < $page + 3; $i++) {
             if ($i > 0) {
                 $pages[] = $i;
             }
             if ($i * $items_per_page > $usersCount) {
                 break;
             }
         }
         $totalPages = ceil($usersCount / $items_per_page);
         if (empty($totalPages)) {
             $totalPages = 1;
         }
         if (array_search(1, $pages) === false) {
             array_unshift($pages, 1);
         }
         if (array_search($totalPages, $pages) === false) {
             array_push($pages, $totalPages);
         }
         $tp->assign("sorting_order", $sorting_order);
         $tp->assign("sorting_field", $sorting_field);
         $tp->assign("found_users_sids", $found_users_sids);
         $tp->assign("companies_per_page", $items_per_page);
         $tp->assign("searchId", $searchId);
         $tp->assign("usersCount", $usersCount);
         $tp->assign("current_page", $page);
         $tp->assign("pages_number", $totalPages);
         $tp->display('search_result_company.tpl');
     } else {
         // display search form
         $tp->display($template);
     }
 }