예제 #1
0
 public static function updateDatabasePerPatch()
 {
     if (!($patchList = self::getPatchList())) {
         return false;
     }
     ini_set('memory_limit', -1);
     $originalMaxExecutionTime = ini_get('max_execution_time');
     ini_set('max_execution_time', 0);
     SJB_DB::hideMysqlErrors();
     SJB_DB::cleanMysqlErrors();
     $patchList = (include SJB_BASE_DIR . self::UPDATE_DB_FILE);
     $patchFound = false;
     $patchCode = '';
     foreach ($patchList as $patch) {
         if (!$patchCode) {
             $patchCode = $patch;
         } else {
             $patched = SJB_Settings::getValue('db-patch-' . $patchCode);
             if (empty($patched)) {
                 $patch();
                 if (SJB_DB::isErrorExist()) {
                     self::logMysqlErrors($patchCode);
                     $patchFound = 'Can\'t install patch ' . $patchCode;
                 } else {
                     SJB_Settings::addSetting('db-patch-' . $patchCode, 'patched');
                     $patchFound = true;
                 }
                 break;
             }
             $patchCode = '';
         }
     }
     ini_set('max_execution_time', $originalMaxExecutionTime);
     return $patchFound;
 }
예제 #2
0
 public function execute()
 {
     $tp = SJB_System::getTemplateProcessor();
     $theme = SJB_Settings::getValue('TEMPLATE_USER_THEME', 'default');
     $tp->assign('theme', $theme);
     $errors = array();
     $message = '';
     $alternativeText = SJB_Request::getVar('logoAlternativeText', '');
     switch (SJB_Request::getVar('action', '')) {
         case 'save':
             if (isset($_FILES['logo']['error'])) {
                 if ($_FILES['logo']['error'] == UPLOAD_ERR_OK) {
                     if (SJB_System::getSystemSettings('isDemo')) {
                         $errors[] = 'NOT_ALLOWED_IN_DEMO';
                     } else {
                         $themePath = SJB_TemplatePathManager::getAbsoluteThemePath($theme);
                         if (move_uploaded_file($_FILES['logo']['tmp_name'], "{$themePath}main/images/logo.png")) {
                             $message = 'Logo has been uploaded successfully';
                         }
                     }
                 } else {
                     switch ($_FILES['logo']['error']) {
                         case UPLOAD_ERR_INI_SIZE:
                             $errors[] = 'File size exceeds system limit. Please check the file size limits on your hosting or upload another file.';
                             break;
                         case UPLOAD_ERR_FORM_SIZE:
                             $errors[] = 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form';
                             break;
                         case UPLOAD_ERR_PARTIAL:
                             $errors[] = 'The uploaded file was only partially uploaded';
                             break;
                         case UPLOAD_ERR_NO_FILE:
                             // Разрешим изменять текст без аплоада лого
                             break;
                         case UPLOAD_ERR_NO_TMP_DIR:
                             $errors[] = 'Missing a temporary folder';
                             break;
                         case UPLOAD_ERR_CANT_WRITE:
                             $errors[] = 'Failed to write file to disk';
                             break;
                         default:
                             $errors[] = 'File upload error';
                     }
                     if ($alternativeText == SJB_Settings::getSettingByName('logoAlternativeText')) {
                         $errors[] = 'Upload a logo or enter alternative text';
                     }
                 }
             }
             if (SJB_Settings::getSettingByName('logoAlternativeText') === false) {
                 SJB_Settings::addSetting('logoAlternativeText', $alternativeText);
             } else {
                 if ($alternativeText != SJB_Settings::getSettingByName('logoAlternativeText')) {
                     SJB_Settings::updateSetting('logoAlternativeText', $alternativeText);
                     if (!$message) {
                         $message = 'Alternative text has been updated successfully';
                     } else {
                         $message = 'Logo and Alternative text has been uploaded successfully';
                     }
                 }
             }
             break;
     }
     $tp->assign('errors', $errors);
     $tp->assign('message', $message);
     $tp->assign('uploadMaxFilesize', SJB_UploadFileManager::getIniUploadMaxFilesize());
     $tp->assign('logoAlternativeText', SJB_Request::getVar('logoAlternativeText', SJB_Settings::getSettingByName('logoAlternativeText')));
     $tp->display('upload_logo.tpl');
 }
예제 #3
0
 function copyEntireTheme($copiedThemeName, $newThemeName)
 {
     $newThemePath = SJB_TemplatePathManager::getAbsoluteThemePath($copiedThemeName);
     $copiedThemePath = SJB_TemplatePathManager::getAbsoluteThemePath($newThemeName);
     SJB_Filesystem::copy($newThemePath, $copiedThemePath);
     SJB_Filesystem::mkpath(SJB_TemplatePathManager::getAbsoluteThemeCachePath($newThemeName));
     $themeFields = SJB_FormBuilderManager::getFieldsByTheme($copiedThemeName);
     foreach ($themeFields as $themeField) {
         SJB_FormBuilderManager::insertField($newThemeName, $themeField);
     }
     $screenFile = $copiedThemePath . "main/images/{$copiedThemeName}.png";
     $newScreenFile = $copiedThemePath . "main/images/{$newThemeName}.png";
     if (file_exists($screenFile)) {
         rename($screenFile, $newScreenFile);
     }
     $listingTypes = SJB_ListingTypeDBManager::getAllListingTypesInfo();
     foreach ($listingTypes as $listingType) {
         SJB_Settings::addSetting("display_layout_{$listingType['id']}_{$newThemeName}", SJB_Settings::getSettingByName("display_layout_{$listingType['id']}_{$copiedThemeName}"));
     }
 }
예제 #4
0
 private function lockPatchDatabaseOnlyUsingSJB()
 {
     $patchDatabaseOnlyUsingSJB = SJB_Settings::getSettingByName('patchDatabaseOnlyUsingSJB');
     if ($patchDatabaseOnlyUsingSJB === false) {
         SJB_Settings::addSetting('patchDatabaseOnlyUsingSJB', '1');
     } else {
         if (!$patchDatabaseOnlyUsingSJB) {
             SJB_Settings::updateSetting('patchDatabaseOnlyUsingSJB', '1');
         }
     }
 }
예제 #5
0
 public function execute()
 {
     $tp = SJB_System::getTemplateProcessor();
     $action = SJB_Request::getVar('action');
     $field_id = SJB_Request::getVar('field_id', false);
     if ($field_id || $action == 'save_setting') {
         switch ($action) {
             case 'save':
                 $listing_type_sid = SJB_Request::getVar('listing_type_sid', false);
                 $userField = 0;
                 if ($listing_type_sid) {
                     if (strstr($field_id, 'user_')) {
                         $field_id = str_replace('user_', '', $field_id);
                         $userField = 1;
                     }
                     if (!SJB_RefineSearch::getFieldByFieldSIDListingTypeSID($field_id, $listing_type_sid, $userField)) {
                         SJB_RefineSearch::addField($field_id, $listing_type_sid, $userField);
                     }
                 }
                 break;
             case 'save_setting':
                 $listing_type_id = SJB_Request::getVar('listing_type_id', false);
                 $refine_search_items_limit = SJB_Request::getVar('refine_search_items_limit', false);
                 if ($listing_type_id) {
                     $settingValue = SJB_Request::getVar('turn_on_refine_search_' . $listing_type_id, 0);
                     if (SJB_Settings::getSettingByName('turn_on_refine_search_' . $listing_type_id) === false) {
                         SJB_Settings::addSetting('turn_on_refine_search_' . $listing_type_id, $settingValue);
                     } else {
                         SJB_Settings::updateSetting('turn_on_refine_search_' . $listing_type_id, $settingValue);
                     }
                 } elseif ($refine_search_items_limit) {
                     if (SJB_Settings::getSettingByName('refine_search_items_limit') === false) {
                         SJB_Settings::addSetting('refine_search_items_limit', $refine_search_items_limit);
                     } else {
                         SJB_Settings::updateSetting('refine_search_items_limit', $refine_search_items_limit);
                     }
                 }
                 break;
             case 'delete':
                 SJB_RefineSearch::removeField($field_id);
                 break;
             case 'move_up':
                 $listing_type_sid = SJB_Request::getVar('listing_type_sid', false);
                 if ($listing_type_sid) {
                     SJB_RefineSearch::moveUpFieldBySID($field_id, $listing_type_sid);
                 }
                 break;
             case 'move_down':
                 $listing_type_sid = SJB_Request::getVar('listing_type_sid', false);
                 if ($listing_type_sid) {
                     SJB_RefineSearch::moveDownFieldBySID($field_id, $listing_type_sid);
                 }
                 break;
         }
     }
     $listingTypes = SJB_ListingTypeManager::getAllListingTypesInfo();
     foreach ($listingTypes as $key => $listingType) {
         $fields = array_merge(SJB_ListingFieldManager::getCommonListingFieldsInfo(), SJB_ListingFieldManager::getListingFieldsInfoByListingType($listingType['sid']));
         foreach ($fields as $field_key => $field) {
             if ($field['type'] == 'location') {
                 if (is_array($field['fields'])) {
                     $fields = array_merge($fields, $field['fields']);
                 }
             }
             if (!in_array($field['type'], array('list', 'multilist', 'string', 'boolean', 'tree')) || in_array($field['id'], array('ApplicationSettings', 'access_type', 'anonymous', 'screening_questionnaire'))) {
                 foreach ($fields as $fieldKey => $searchField) {
                     if ($searchField['id'] == $field['id']) {
                         unset($fields[$fieldKey]);
                     }
                 }
             }
         }
         $listingTypes[$key]['fields'] = $fields;
         if ($key == 'Job') {
             $userFieldSID = SJB_DB::queryValue("SELECT `sid` FROM `user_profile_fields` WHERE `id` = 'CompanyName'");
             if (!empty($userFieldSID)) {
                 $listingTypes[$key]['user_fields'] = SJB_UserProfileFieldManager::getFieldInfoBySID($userFieldSID);
             }
         }
         $listingTypes[$key]['saved_fields'] = SJB_RefineSearch::getFieldsByListingTypeSID($listingType['sid']);
         $listingTypes[$key]['setting'] = SJB_Settings::getSettingByName('turn_on_refine_search_' . $listingType['id']);
     }
     $tp->assign('refine_search_items_limit', SJB_Settings::getSettingByName('refine_search_items_limit'));
     $tp->assign('listingTypes', $listingTypes);
     $tp->display('refine_search.tpl');
 }