$oP->add_linked_script("../js/jquery.blockUI.js"); break; } switch ($operation) { /////////////////////////////////////////////////////////////////////////////////////////// case 'details': // Details of an object $sClass = utils::ReadParam('class', ''); $id = utils::ReadParam('id', ''); if (empty($sClass) || empty($id)) { throw new ApplicationException(Dict::Format('UI:Error:2ParametersMissing', 'class', 'id')); } if (is_numeric($id)) { $oObj = MetaModel::GetObject($sClass, $id, false); } else { $oObj = MetaModel::GetObjectByName($sClass, $id, false); } if (is_null($oObj)) { $oP->set_title(Dict::S('UI:ErrorPageTitle')); $oP->P(Dict::S('UI:ObjectDoesNotExist')); } else { try { $oObj->Reload(); } catch (Exception $e) { // Probably not allowed to see this instance of a derived class $oObj = null; $oP->set_title(Dict::S('UI:ErrorPageTitle')); $oP->P(Dict::S('UI:ObjectDoesNotExist')); } if (!is_null($oObj)) { DisplayDetails($oP, $sClass, $oObj, $id);
public static function RenderWikiHtml($sText) { $sPattern = '/' . str_replace('/', '\\/', utils::GetConfig()->Get('url_validation_pattern')) . '/i'; if (preg_match_all($sPattern, $sText, $aAllMatches, PREG_SET_ORDER | PREG_OFFSET_CAPTURE)) { $aUrls = array(); $i = count($aAllMatches); // Replace the URLs by an actual hyperlink <a href="...">...</a> // Let's do it backwards so that the initial positions are not modified by the replacement // This works if the matches are captured: in the order they occur in the string AND // with their offset (i.e. position) inside the string while ($i > 0) { $i--; $sUrl = $aAllMatches[$i][0][0]; // String corresponding to the main pattern $iPos = $aAllMatches[$i][0][1]; // Position of the main pattern $sText = substr_replace($sText, "<a href=\"{$sUrl}\">{$sUrl}</a>", $iPos, strlen($sUrl)); } } if (preg_match_all(WIKI_OBJECT_REGEXP, $sText, $aAllMatches, PREG_SET_ORDER)) { foreach ($aAllMatches as $iPos => $aMatches) { $sClass = $aMatches[1]; $sName = $aMatches[2]; if (MetaModel::IsValidClass($sClass)) { $oObj = MetaModel::GetObjectByName($sClass, $sName, false); if (is_object($oObj)) { // Propose a std link to the object $sText = str_replace($aMatches[0], $oObj->GetHyperlink(), $sText); } else { // Propose a std link to the object $sClassLabel = MetaModel::GetName($sClass); $sText = str_replace($aMatches[0], "<span class=\"wiki_broken_link\">{$sClassLabel}:{$sName}</span>", $sText); // Later: propose a link to create a new object // Anyhow... there is no easy way to suggest default values based on the given FRIENDLY name //$sText = preg_replace('/\[\[(.+):(.+)\]\]/', '<a href="'.utils::GetAbsoluteUrlAppRoot().'pages/UI.php?operation=new&class='.$sClass.'&default[att1]=xxx&default[att2]=yyy">'.$sName.'</a>', $sText); } } } } return $sText; }
/** * Helper method to create a CAS based user * @param string $sEmail * @param array $aGroups * @return bool true on success, false otherwise */ protected static function CreateCASUser($sEmail, $aGroups) { if (!MetaModel::IsValidClass('URP_Profiles')) { phpCAS::log("URP_Profiles is not a valid class. Automatic creation of Users is not supported in this context, sorry."); return false; } $oUser = MetaModel::GetObjectByName('UserExternal', $sEmail, false); if ($oUser == null) { // Create the user, link it to a contact phpCAS::log("Info: the user '{$sEmail}' does not exist. A new UserExternal will be created."); $oSearch = new DBObjectSearch('Person'); $oSearch->AddCondition('email', $sEmail); $oSet = new DBObjectSet($oSearch); $iContactId = 0; switch ($oSet->Count()) { case 0: phpCAS::log("Error: found no contact with the email: '{$sEmail}'. Cannot create the user in iTop."); return false; case 1: $oContact = $oSet->Fetch(); $iContactId = $oContact->GetKey(); phpCAS::log("Info: Found 1 contact '" . $oContact->GetName() . "' (id={$iContactId}) corresponding to the email '{$sEmail}'."); break; default: phpCAS::log("Error: " . $oSet->Count() . " contacts have the same email: '{$sEmail}'. Cannot create a user for this email."); return false; } $oUser = new UserExternal(); $oUser->Set('login', $sEmail); $oUser->Set('contactid', $iContactId); $oUser->Set('language', MetaModel::GetConfig()->GetDefaultLanguage()); } else { phpCAS::log("Info: the user '{$sEmail}' already exists (id=" . $oUser->GetKey() . ")."); } // Now synchronize the profiles if (!self::SetProfilesFromCAS($oUser, $aGroups)) { return false; } else { if ($oUser->IsNew() || $oUser->IsModified()) { $oMyChange = MetaModel::NewObject("CMDBChange"); $oMyChange->Set("date", time()); $oMyChange->Set("userinfo", 'CAS/LDAP Synchro'); $oMyChange->DBInsert(); if ($oUser->IsNew()) { $oUser->DBInsertTracked($oMyChange); } else { $oUser->DBUpdateTracked($oMyChange); } } return true; } }