• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Aac

Status
Not open for further replies.
będzie paxton style? na podstawie którego poradnika go piszesz? how to make your own gesior? <3
obiecanki-macanki, elo.
 
będzie paxton style? na podstawie którego poradnika go piszesz? how to make your own gesior? <3
obiecanki-macanki, elo.

Nie wiem w jakim swiecie zyjesz i na serio nie wiem o co ci chodzi? :blink:
 
elf said:
Paxton
Quote:
Typowy JP 100%, w dodatku skretyniały w swoich przekonaniach. Osoba ograniczona umysłowo, kopiuje tutoriale i lansi się po sieci swoją pracą, za którą podobno zbija kokosy. Mieszka w anglii i jest polskim dresem, przez co myśli że jest jeszcze bardziej fajny, a tak naprawdę coraz więcej osób uważa go za debila.
Nie znam się, ale wydaje mi się, że to oto chodzi :blink:?
 
Okej, przepisalem AAC na nowy system :) Teraz znow pozostaje pisanie podstron. Pisanie modulow sie kompletnie zmienia od teraz.
 
Macie tu przyklad Kontrolera dla konta, nie bede pokazywal widoku bo jest rozlozony na kilka plikow, a model jest dopiero zaczety wiec nie ma sesnu. Jak by sie ktos przyswoil chetnie bym przyjol kogos do pomocy :) Wstawiam to aby ktos moze jakas wskazowke napisal jak by to ulepszyc itp :confused:

Postanowilem ze AAC bedzie nazywal sie "Modern AAC" a silnik na ktorym bedzie lecial to IDE, ktory jest zbiorem wielu roznych bibliotek ktore pomoga w budowaniu tego, oraz zbiorem wlasnych funkcji.:$ Wszystkie podstawy sa ukonczone, tak jak mowilem teraz jedynie to kwestia pisania podstron ktora zajmie chyba najdluzej jesli nikt nie zdola pomoc.:(

PHP:
<?php
/* 
+I.D.E ENGINE+
Controller of Account for Modern AAC - Powered by IDE Engine.
A lot of new functionality and variables can be hard-coded here.
If you do NOT understand the code, do NOT change anything in here.
*/
	
	class Account extends Controller {
	
		/* Main index of Account controllers, also work as a __construct(); It is called by engine as a default. */
		function index() {
			$this->load->model("Account_model");
			$ide = new IDE;
			$ide->requireLogin();
			$data = array();
			$data['loggedUser'] = $_SESSION['name'];
			/* TODO - GET REST OF THE DATA FROM DB AND SEND IT TO VIEW. */
			$recovery_key = $this->Account_model->getRecoveryKey($_SESSION['name']);
			if($recovery_key == 0) alert("You don't have recovery key set up. Click <a href='account/generate_recovery_key'><b>here</b></a> to create one. We strongly recommend to create one now for security reasons.");
			/* Load view of account page and send data to it. */
			$this->load->view('account', $data);
		}
		
		/*
		Function to check if account with this name already exists, it is used by create controller as a callaback in form validation. 
		It should be made as an abstract class of database in Model, but I don't think there is point of it.
		*/
		function _account_exists($name) {
			$ots = POT::getInstance();
			$ots->connect(POT::DB_MYSQL, connection());
			$account = new OTS_Account();
			$account->find($name);
			if($account->isLoaded()) { $this->form_validation->set_message('_account_exists', 'Account with this name already exists.');return false;} else return true;
		}

		/* Controller of creating new account. New values can be hard-coded here. (only experienced users) */
		function create() {
			$ide = new IDE;
			if($ide->isLogged()) $ide->redirect('../account');
			$this->load->helper('form');
			if($_POST) {
				$this->load->library('form_validation');
				$this->form_validation->set_rules('name', 'Account Name', 'required|min_length[4]|max_length[32]|callback__account_exists|alpha');
				$this->form_validation->set_rules('password', 'Password', 'required|matches[repeat]|min_length[4]|max_length[255]');
				$this->form_validation->set_rules('email', 'Email', 'required|valid_email');
				if($this->form_validation->run() == TRUE) {
					require(APPPATH.'config/ide_default.php');
					$ots = POT::getInstance();
					$ots->connect(POT::DB_MYSQL, connection());
					$account = new OTS_Account();
					$name = $account->createNamed($_POST['name']);
					$account->setPassword($_POST['password']);
					$account->setEmail($_POST['email']);
					$account->setPremiumEnd(PREMDAYS);
					try {
						$account->save();
						$_SESSION['logged'] = 1;
						$_SESSION['name'] = $_POST['name'];
						$ide->redirect('../account');
					}
					catch(Exception $e) {
						error($e->getMessage());
					}
				}
			}
			#Load view of creating account
			$this->load->view('create');
		}
		
		/* Function to check if passed login and password are correct, it uses abstract database model. */
		function _check_login() {
			$this->load->model("Account_model");
			if($this->Account_model->check_login() == false) {
				$this->form_validation->set_message("_check_login", "Account name or password are incorrect.");
				return false;
			}
			else
				return true;
		}
		
		/* Login controller  */
		function login($action = 0) {
			if((int) $action == 1) success("You have been logged out.");
			$ide = new IDE;
			$this->load->helper("form");
			$this->load->library("form_validation");
			if($_POST) {
				$this->form_validation->set_rules('name', 'Account Name', 'required|callback__check_login');
				$this->form_validation->set_rules('pass', 'Password', 'required');
				if($this->form_validation->run() == true) {
					$_SESSION['logged'] = 1;
					$_SESSION['name'] = $_POST['name'];
					$ide->redirect('../account');
				}
			}
			/* Load view of login page. */
			$this->load->view("login");
			
		}
		/* Function to logout from account. */
		function logout() {
			$ide = new IDE;
			$_SESSION['logged'] = '';
			$_SESSION['name'] = '';
			$ide->redirect('login/1');
		}
		
		/* Controller to generate random recovery key and save it, accessed by user, only once per account. */
		function generate_recovery_key() {
			$this->load->helper("form");
			$ide = new IDE;
			$ide->requireLogin();
			$this->load->model("Account_model");
			if($this->Account_model->getRecoveryKey($_SESSION['name']) != 0) $ide->redirect('../account');
			if($_POST) {
				$data['info'] = '';
				$key = $this->Account_model->generateKey($_SESSION['name']);
				success("<center><font size='4'>$key</font></center>");
				alert("<b>Save this recovery key, you see this key only once! You will never see it again, don't refresh or move away from this website until you save it!</b>");
			}
			else
			$data['info'] = '<center id=\'info\'><b>Press this button to generate your unique recovery key. <br>Remember! You can do this only once! Your recovery key will be shown only once! Write it down, for security reasons we recommend to not save it on computers hard drive!</b></center><br><center><input type=\'submit\' value=\'Generate\' name=\'submit\'></center>';
			/* Load view of generating new recovery key. */
			$this->load->view('generate_recovery_key', $data);
		
		}
		
	}

?>

Ahh, i jeszcze chcialem sie zapytac, jaka szybko laduje sie Gesior na localhoscie? Bo mi sie wydaje nie jestem pewien, ale wszystko sie zajebiscie szybko laduje, wiem ze to local ale to i tak zbyt szybko jak na taka ilosc bibliotek (420 plikow) , mozliwe ze to Cache, bo sa 2 systemy od tego ale nawet z tym malo prawdopodobne mi sie to wydaje. Z tego co mi system wyswietla, to predkosc to 2-3 milisekundy, przy wywolaniu tego kontrolera, a dokladnie jego indexu to 4 milisekundy.
 
Last edited:
w gesiorze załaczane są tylko potrzebne w danej chwili klasy... ;)

#edit
Ten przykład nie wygląda za dobrze =d ale chaos...
 
w gesiorze załaczane są tylko potrzebne w danej chwili klasy... ;)

Tutaj rowniez po to sa kontrollery.

Co w nim zle? Jakas podpowiedz?

Chaos? Tu nie ma chaosu, to sa zwykle callbacki a nie funkcje systemowe. Nie moge rozlaczyc kontrollera na kilka plikow.
 
Oryginalny POT moze i jest super elo, ale jest zbedny gdy chcesz tworzyc nowy acc... anyway, powo.
 
Nie jest zbedny, wystarczy poprawic jego kompatybilnosc, a i rowniez nie trzeba uzywac POT w modulach, sa 2 sterowniki bazy danych w tym jeden (nie POT) obsluguje wszystkie bazy danych nawet Oracle, co i tak chyba nie bedzie potrzebne, istnieje metoda insert ktora przyjmuje cala tablice ktora zostanie przekonwertowana na wzor tablicy w bazie danych. Wydaje mi sie ze nie rozumiesz jak dziala kontroller.
 
Otworz ktorys ze skryptow w gesiorze tam zobaczysz prawdziwy chaos.
 
Otworz ktorys ze skryptow w gesiorze tam zobaczysz prawdziwy chaos.

Taa :)

W dodatku tutaj nie ma zadnego chaosu, nie moglem inaczej rozporzadzic klas, bo o ile mi wiadomo nie moge zwrocic sie do metody jako callback poza wlasna klasa wiec wszystkie metody z _ przed nazwa to sa zwykle metody (callbacks) a reszta to sa kontrollery ktore sa wywolywane w odpowiednim momencie CZYLI:

wchodzimy na www.example.com/index.php/account

otworzy nam sie Kontroller, Model i widok o nazwie account oraz odpali sie funkcja index lub jaka kolwiek ktora ma parent::Controller() w sobie jako 'default' jesli dodamy argument czyli

www.example.com/index.php/account/create

odpali sie metoda create() w tym kontrollerze, KTORA laduje widok
$this->load->view('create'); a ten widok wyswietli nam informacje na ekranie, a jak wyglada widokw create? Oto plik:

PHP:
<?php echo error(validation_errors()); ?>
<?php echo form_open('account/create'); ?>
	<label for="name">Account Name</label><input type="text" value="<?php echo set_value('name'); ?>" name="name"/><br>
	<label for="name">E-mail</label><input  type="text" value="<?php echo set_value('email'); ?>" name="email"/><br>
	<label for="name">Password</label><input type="password" name="password"/><br>
	<label for="name">Repeat</label><input type="password" name="repeat"/><br>
	<input class='sub' type="submit" value="Register"/>
</form>

Oto caly HTML.

OB na koncu pobiera caly output strony, wysyla do Smarty ktory przypisuje to do zmiennej a nastepnie laduje szablon z pliku .tpl wiec nie trzeba sie bac o zadne TRUNCATE w szablonach :peace:

Nic trudnego. I najlepsze rozwiazanie w duzych projektach. Tutaj macie maly diagram.

gen-interactions.gif


Z tym ze u nas taka roznica, ze Model nie decudyje o widoku, u nas jedynie bedzie to zbior metod abstrakcyjncyh bazy danych. Ale w pisaniu modulow nic nie stoi na przeszgodzie, ja po prostu nie bede tego uzywal, jesli wy chcecie nie ma problemu.
 
Last edited:
Chcialby sie moze ktos do projektu dolaczyc? Glownie chcialbym aby ktos pomogl w pisaniu tych podstron, jestem w stanie wytlumaczyc wszystko jak dziala wystarczy znajomosc PHP. Ja za to chcialbym sie zajac sama funkcjonalnoscia strony. Bo jesli sam bede to pisac to dlugo to zajmie jeszcze a AAC pod wzgledem technicznym jest dosc dobry.
 
Last edited:
jakim cudem w ciągu 4ms udaje Ci się połączyć z bazą danych... to jakiś cud?, nie wspominając o tym, że jeszcze musi wykonać cały skrypt
 
Sprawa wyglada tak:

Po wejsciu na konto:
Page rendered in: 0.0981

Po ponownym wejsciu na konto:

Page rendered in: 0.0376

na koncie jest kilka query robiony typu czy ma recovery key, wyswietla sie lista postaci itp.

Ogolem sa 2 mechanismy cache na ten moment dlatego za pierwszym razem dluzej sie laduje.

Prawdopodobnie nalezy dodac okolo 5ms wiecej bo zegar sie zatrzymuje przed wyswietleniem szablonu a dokladnie przed Renderowaniem przez Smarty, za to po wszystkich akcjach.
 
Status
Not open for further replies.
Back
Top