Beispiel #1
0
 /**
  * Создаёт новую группу.
  * Массив $data может содержать следующие ключи:
  * owner        id владельца (обязательно)
  * name                название группы
  * domain        имя поддомена группы
  * Поддерживается Additionals
  * @param array $data
  * @throws \Difra\Exception
  * @return Group
  */
 public static function create($data)
 {
     $db = Difra\MySQL::getInstance();
     $instance = new self();
     $query = 'INSERT INTO `groups`';
     if (!empty($data['name']) or !trim($data['name'])) {
         $instance->name = $db->escape(trim($data['name']));
     }
     $query .= " SET `name`='{$instance->name}'";
     if (!empty($data['domain']) or !trim($data['domain'])) {
         $instance->domain = $db->escape(trim($data['domain']));
     }
     $query .= ",`domain`='{$instance->domain}'";
     if (empty($data['owner']) or !$data['owner'] or !ctype_digit($data['owner']) or !intval($data['owner'])) {
         throw new Difra\Exception("Group::create() expects valid owner id");
     }
     $instance->owner = $db->escape($data['owner']);
     $query .= ",`owner`='{$instance->owner}'";
     if (true !== ($res = Difra\Additionals::checkAdditionals('groups', $data))) {
         return $res;
     }
     $db->query($query);
     if (!($instance->id = $db->getLastId())) {
         throw new \Difra\Exception("Group::create() failed to create a new group");
     }
     Difra\Additionals::saveAdditionals('groups', $instance->id, $data);
     return $instance;
 }