コード例 #1
0
 public static function save($type_, $element_, $group_)
 {
     Logger::debug('main', "Abstract_Liaison::save ({$type_},{$element_},{$group_})");
     $sql2 = SQL::getInstance();
     $res = $sql2->DoQuery('SELECT @3,@4 FROM #1 WHERE @2=%5 AND @3=%6 AND @4=%7', self::table, 'type', 'element', 'group', $type_, $element_, $group_);
     if ($sql2->NumRows() > 0) {
         ErrorManager::report('liaison(type=' . $type_ . ',element=' . $element_ . ',group=' . $group_ . ') already exists');
         return false;
     }
     $res = $sql2->DoQuery('INSERT INTO #1 ( @2,@3,@4 ) VALUES ( %5,%6,%7)', self::table, 'type', 'element', 'group', $type_, $element_, $group_);
     return $res !== false;
 }
コード例 #2
0
ファイル: Task.class.php プロジェクト: bloveing/openulteo
 public function init()
 {
     $server = Abstract_Server::load($this->server);
     if (!is_object($server)) {
         Logger::error('apt-get', 'TASK::init for task ' . $this->id . ' returned an error (unknown server ' . $this->server . ')');
         return false;
     }
     $dom = new DomDocument('1.0', 'utf-8');
     $node = $dom->createElement('debian');
     $node->setAttribute('request', $this->getRequest());
     foreach ($this->getPackages() as $package) {
         $buf = $dom->createElement('package');
         $buf->setAttribute('name', $package);
         $node->appendChild($buf);
     }
     $dom->appendChild($node);
     $xml = $dom->saveXML();
     $xml = query_url_post_xml($server->getBaseURL() . '/aps/debian', $xml);
     if (!$xml) {
         ErrorManager::report('Unable to submit Task to server "' . $server->fqdn . '"');
         return false;
     }
     $dom = new DomDocument('1.0', 'utf-8');
     $buf = @$dom->loadXML($xml);
     if (!$buf) {
         return false;
     }
     if (!$dom->hasChildNodes()) {
         return false;
     }
     $node = $dom->getElementsByTagname('debian_request')->item(0);
     if (is_null($node)) {
         return false;
     }
     $this->job_id = $node->getAttribute('id');
     $this->status = $node->getAttribute('status');
     return true;
 }
コード例 #3
0
ファイル: User.class.php プロジェクト: bloveing/openulteo
 public function getSessionSettings($container_)
 {
     $prefs = Preferences::getInstance();
     $overriden = array();
     $default_settings = $prefs->get('general', $container_);
     // load rules (overriden settings)
     $user_groups_preferences = Abstract_UserGroup_Preferences::load_all('general', $container_);
     $users_group_id = array();
     foreach ($user_groups_preferences as $key => $pref) {
         if (in_array($pref->usergroup_id, $users_group_id)) {
             continue;
         }
         array_push($users_group_id, $pref->usergroup_id);
     }
     // from this group, which are these I am into
     $users_groups_mine_ids = $this->get_my_usersgroups_from_list($users_group_id);
     // Finnaly, overwrite default settings with users groups settings
     foreach ($user_groups_preferences as $pref) {
         $key = $pref->element_id;
         if (!in_array($pref->usergroup_id, $users_groups_mine_ids)) {
             continue;
         }
         $element = $pref->toConfigElement();
         if (isset($overriden[$key]) && $overriden[$key] == true && $element->content != $default_settings[$key]) {
             ErrorManager::report('User "' . $this->getAttribute('login') . '" has at least two groups with the same overriden rule but with different values, the result will be unpredictable.');
         }
         $default_settings[$key] = $element->content;
         $overriden[$key] = true;
     }
     $prefs_of_a_user_unsort = Abstract_User_Preferences::loadByUserLogin($this->getAttribute('login'), 'general', $container_);
     foreach ($prefs_of_a_user_unsort as $key => $pref) {
         $element = $pref->toConfigElement();
         if (isset($overriden[$key]) && $overriden[$key] == true && $element->content != $default_settings[$key]) {
             Logger::debug("User '" . $this->getAttribute('login') . "' has at least overriden preferences but with different values, the result will be unpredictable.");
         }
         $default_settings[$key] = $element->content;
         $overriden[$key] = true;
     }
     return $default_settings;
 }
コード例 #4
0
ファイル: internal.php プロジェクト: bloveing/openulteo
 public function addToServer($sharedfolder_, $an_fs_server_)
 {
     Logger::debug('main', "SharedFolderDB::internal::addToServer({$sharedfolder_}, {$an_fs_server_})");
     if (is_object($sharedfolder_) == false) {
         Logger::error('main', 'SharedFolderDB::internal sharedfolder parameter is not an object (content: ' . serialize($sharedfolder_));
         return false;
     }
     if (is_object($an_fs_server_) == false) {
         Logger::error('main', 'SharedFolderDB::internal fs parameter is not an object (content: ' . serialize($an_fs_server_));
         return false;
     }
     $sharedfolder_->server = $an_fs_server_->id;
     if ($this->exists($sharedfolder_->id) === false) {
         // we save the object first
         $ret = $this->add($sharedfolder_);
         // 			if ($ret !== true) {
         // 				Logger::error('main', "SharedFolderDB::internal failed to add $sharedfolder_ to the DB");
         // 				return false;
         // 			}
     }
     // do the request to the server
     $ret = $an_fs_server_->createNetworkFolder($sharedfolder_->id);
     if (!$ret) {
         ErrorManager::report('SharedFolderDB::internal Unable to create shared folder on file server "' . $sharedfolder_->server . '"');
         $this->remove($sharedfolder_);
         return false;
     }
     return true;
 }
コード例 #5
0
ファイル: Server.class.php プロジェクト: bloveing/openulteo
 public function isOnline()
 {
     if (!in_array($this->getAttribute('status'), array('ready', 'pending'))) {
         Logger::debug('main', 'Server::isOnline server "' . $this->fqdn . ':' . $this->web_port . '" is not "ready"');
         return false;
     }
     $warn = false;
     if (!$this->hasAttribute('status') || !$this->uptodateAttribute('status')) {
         $warn = true;
         $this->getStatus();
     }
     if ($this->hasAttribute('status') && in_array($this->getAttribute('status'), array('ready', 'pending'))) {
         return true;
     }
     if ($warn === true && $this->getAttribute('locked') == 0) {
         ErrorManager::report('"' . $this->fqdn . '": is NOT online!');
     }
     $this->isNotReady();
     return false;
 }
コード例 #6
0
ファイル: sql.php プロジェクト: bloveing/openulteo
 public function add($user_)
 {
     Logger::debug('main', 'UserDB::sql::add');
     if ($this->isOK($user_)) {
         // user already exists ?
         $user_from_db = $this->exists($user_->getAttribute('login'));
         if ($user_from_db === true) {
             ErrorManager::report('user (login='******'login') . ') already exists');
             return false;
         }
         $query_keys = "";
         $query_values = "";
         $attributes = $user_->getAttributesList();
         foreach ($attributes as $key) {
             if ($key == 'password') {
                 $value = crypt($user_->getAttribute($key), '$1$' . md5($user_->getAttribute('login')));
             } else {
                 $value = $user_->getAttribute($key);
             }
             $query_keys .= '`' . $key . '`,';
             $query_values .= '"' . mysql_escape_string($value) . '",';
         }
         $query_keys = substr($query_keys, 0, -1);
         // del the last ,
         $query_values = substr($query_values, 0, -1);
         // del the last ,
         $SQL = SQL::getInstance();
         $query = 'INSERT INTO #1 ( ' . $query_keys . ' ) VALUES (' . $query_values . ' )';
         $ret = $SQL->DoQuery($query, self::table);
         $id = $SQL->InsertId();
         $user_->setAttribute('id', $id);
         return $ret;
     } else {
         if ($user_->hasAttribute('login')) {
             Logger::debug('main', 'UserDB::sql::add failed (user \'' . $user_->getAttribute('login') . '\' not ok)');
         } else {
             Logger::debug('main', 'UserDB::sql::add failed (user not ok)');
         }
         return false;
     }
 }
コード例 #7
0
ファイル: sql.php プロジェクト: bloveing/openulteo
 public function add($usergroup_)
 {
     Logger::debug('main', "USERGROUPDB::add({$usergroup_})");
     $sql2 = SQL::getInstance();
     // usergroup already exists ?
     $res = $sql2->DoQuery('SELECT 1 FROM #1 WHERE @2 = %3 AND @4 = %5', self::table, 'name', $usergroup_->name, 'description', $usergroup_->description);
     if ($sql2->NumRows($res) > 0) {
         ErrorManager::report('usersgroup (name=' . $usergroup_->name . ',description=' . $usergroup_->description . ') already exists');
         return false;
     }
     $res = $sql2->DoQuery('INSERT INTO #1 (@2,@3,@4) VALUES (%5,%6,%7)', self::table, 'name', 'description', 'published', $usergroup_->name, $usergroup_->description, $usergroup_->published);
     if ($res !== false) {
         $usergroup_->id = $sql2->InsertId();
         return is_object($this->import($sql2->InsertId()));
     } else {
         return false;
     }
 }