本文整理汇总了PHP中xmldb_index::setHints方法的典型用法代码示例。如果您正苦于以下问题:PHP xmldb_index::setHints方法的具体用法?PHP xmldb_index::setHints怎么用?PHP xmldb_index::setHints使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类xmldb_index
的用法示例。
在下文中一共展示了xmldb_index::setHints方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: invoke
//.........这里部分代码省略.........
// Check that all the fields in belong to the table
foreach ($fieldsarr as $field) {
if (!$table->getField($field)) {
$errors[] = $this->str['fieldsnotintable'];
break;
}
}
// Check that there isn't any key using exactly the same fields
$tablekeys = $table->getKeys();
if ($tablekeys) {
foreach ($tablekeys as $tablekey) {
$keyfieldsarr = $tablekey->getFields();
// Compare both arrays, looking for differences
$diferences = array_merge(array_diff($fieldsarr, $keyfieldsarr), array_diff($keyfieldsarr, $fieldsarr));
if (empty($diferences)) {
$errors[] = $this->str['fieldsusedinkey'];
break;
}
}
}
// Check that there isn't any index using exactly the same fields
$tableindexes = $table->getIndexes();
if ($tableindexes) {
foreach ($tableindexes as $tableindex) {
// Skip checking against itself
if ($indexparam == $tableindex->getName()) {
continue;
}
$indexfieldsarr = $tableindex->getFields();
// Compare both arrays, looking for differences
$diferences = array_merge(array_diff($fieldsarr, $indexfieldsarr), array_diff($indexfieldsarr, $fieldsarr));
if (empty($diferences)) {
$errors[] = $this->str['fieldsusedinindex'];
break;
}
}
}
}
$hintsarr = array();
foreach (explode(',', $hints) as $hint) {
$hint = preg_replace('/[^a-z]/', '', $hint);
if ($hint === '') {
continue;
}
$hintsarr[] = $hint;
}
if (!empty($errors)) {
$tempindex = new xmldb_index($name);
$tempindex->setUnique($unique);
$tempindex->setFields($fieldsarr);
$tempindex->setHints($hintsarr);
// Prepare the output
$o = '<p>' . implode(', ', $errors) . '</p>
<p>' . $tempindex->readableInfo() . '</p>';
$o .= '<a href="index.php?action=edit_index&index=' . $index->getName() . '&table=' . $table->getName() . '&dir=' . urlencode(str_replace($CFG->dirroot, '', $dirpath)) . '">[' . $this->str['back'] . ']</a>';
$this->output = $o;
}
// Continue if we aren't under errors
if (empty($errors)) {
// If there is one name change, do it, changing the prev and next
// attributes of the adjacent fields
if ($indexparam != $name) {
$index->setName($name);
if ($index->getPrevious()) {
$prev = $table->getIndex($index->getPrevious());
$prev->setNext($name);
$prev->setChanged(true);
}
if ($index->getNext()) {
$next = $table->getIndex($index->getNext());
$next->setPrevious($name);
$next->setChanged(true);
}
}
// Set comment
$index->setComment($comment);
// Set the rest of fields
$index->setUnique($unique);
$index->setFields($fieldsarr);
$index->setHints($hintsarr);
// If the hash has changed from the old one, change the version
// and mark the structure as changed
$index->calculateHash(true);
if ($oldhash != $index->getHash()) {
$index->setChanged(true);
$table->setChanged(true);
// Recalculate the structure hash
$structure->calculateHash(true);
$structure->setVersion(userdate(time(), '%Y%m%d', 99, false));
// Mark as changed
$structure->setChanged(true);
}
// Launch postaction if exists (leave this here!)
if ($this->getPostAction() && $result) {
return $this->launch($this->getPostAction());
}
}
// Return ok if arrived here
return $result;
}