Even the stlying of the code was designed to be "invisible" for people who (didn't) check the code carefully before investing:
/// @dev Constructor
/// @param _token Pay Fair token address
/// @param _start token ICO start date
function Crowdsale(address _token, uint _start) {
require(_token != 0);
require(_start != 0);
owner = msg.sender;
token = ZiberToken(_token);
startsAt = _start;
}
Well a
Constructor needs to have the same name as the Contract (ZiberCrowdsale) -> it isn't in this case, but written as it is in the comment
An owner is normally assigned on the contract creation, and only the owner can transfer the ownership.
here, this method is designed to be transferd by anybody.
If it's by mistake, then it's a real stupid one and the crowdsale wouldn't have even started without explicitly calling this method. Then the custructor is only called once when the contract is created and can't be called afterwards.