本文整理汇总了PHP中table_objet_sql函数的典型用法代码示例。如果您正苦于以下问题:PHP table_objet_sql函数的具体用法?PHP table_objet_sql怎么用?PHP table_objet_sql使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了table_objet_sql函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: critere_compteur
/**
* Permet de faire un comptage par table liee
*
* @syntaxe `{compteur table[, champ]}`
* @link http://www.spip-contrib.net/Classer-les-articles-par-nombre-de#forum409210
*
* @example
* Pour avoir les auteurs classes par articles et
* le nombre d'article de chacun :
*
* ```
* <BOUCLE1(AUTEURS){compteur articles}{par compteur_articles}>
* #ID_AUTEUR : #COMPTEUR{articles}
* </BOUCLE1>
* ```
*
* @note
* Avec un seul argument {compteur autre_table} le groupby est fait
* implicitement sur la cle primaire de la boucle en cours.
* Avec un second argument {compteur autre_table,champ_fusion}
* le groupby est fait sur le champ_fusion"
*
* @param string $idb
* Identifiant de la boucle
* @param Boucle[] $boucles
* AST du squelette
* @param Critere $crit
* Paramètres du critère dans cette boucle
* @param bool $left
* true pour utiliser un left join plutôt qu'un inner join.
* @return void
*/
function critere_compteur($idb, &$boucles, $crit, $left = false)
{
$boucle =& $boucles[$idb];
if (isset($crit->param[1])) {
$_fusion = calculer_liste($crit->param[1], array(), $boucles, $boucle->id_parent);
} else {
$_fusion = "''";
}
$params = $crit->param;
$table = reset($params);
$table = $table[0]->texte;
$op = false;
if (preg_match(',^(\\w+)([<>=])([0-9]+)$,', $table, $r)) {
$table = $r[1];
if (count($r) >= 3) {
$op = $r[2];
}
if (count($r) >= 4) {
$op_val = $r[3];
}
}
$type = objet_type($table);
$type_id = id_table_objet($type);
/**
* Si la clé primaire est une clé multiple, on prend la première partie
* Utile pour compter les versions de spip_versions par exemple
*/
if (count($types = explode(',', $type_id)) > 1) {
$type_id = $types[0];
}
$table_sql = table_objet_sql($type);
$trouver_table = charger_fonction('trouver_table', 'base');
$arrivee = array($table, $trouver_table($table, $boucle->sql_serveur));
$depart = array($boucle->id_table, $trouver_table($boucle->id_table, $boucle->sql_serveur));
// noter les jointures deja installees
$joins = array_keys($boucle->from);
if ($compt = calculer_jointure($boucle, $depart, $arrivee)) {
if ($_fusion != "''") {
// en cas de jointure, on ne veut pas du group_by sur la cle primaire !
// cela casse le compteur !
foreach ($boucle->group as $k => $group) {
if ($group == $boucle->id_table . '.' . $boucle->primary) {
unset($boucle->group[$k]);
}
}
$boucle->group[] = '".($gb=' . $_fusion . ')."';
}
$boucle->select[] = "COUNT({$compt}.{$type_id}) AS compteur_{$table}";
if ($op) {
$boucle->having[] = array("'" . $op . "'", "'compteur_" . $table . "'", $op_val);
}
if ($left) {
foreach ($boucle->from as $k => $val) {
if (!in_array($k, $joins)) {
$boucle->from_type[$k] = 'left';
}
}
}
}
}
示例2: genie_depublier_dist
function genie_depublier_dist($time)
{
//va chercher les objets de spip_depublies avec une date_depublie pour aujourd'hui
include_spip('base/abstract_sql');
$today = date('Y-m-d H:i:s');
if ($depublications = sql_allfetsel('*', 'spip_depublies', 'DATE_FORMAT(date_depublie, "%Y-%m-%d %H:%i:%s") <= ' . sql_quote($today) . ' AND DATE_FORMAT(date_depublie, "%Y-%m-%d %H:%i:%s") >0') and is_array($depublications)) {
foreach ($depublications as $depublication) {
$objet = $depublication['objet'];
$id_objet = $depublication['id_objet'];
$statut_depublication = $depublication['statut'];
$date_depublie = $depublication['date_depublie'];
spip_log("on veut depublier {$objet} {$id_objet} {$statut_depublication}", 'depublication');
//on cherche la table de l'objet donné
$_id_objet = id_table_objet($objet);
//id_article
$table = table_objet_sql($objet);
//articles
//si le statut est différent de celui demandé
if ($a_depublier = sql_getfetsel($_id_objet, $table, "statut != " . sql_quote($statut_depublication) . " AND {$_id_objet} = " . intval($id_objet))) {
//si les conditions sont remplies, on change le statut dans cette table
sql_updateq($table, array("statut" => $statut_depublication), "{$_id_objet}= " . intval($id_objet));
//et on supprime l'entrée
sql_delete('spip_depublies', 'id_objet=' . intval($id_objet) . ' AND objet=' . sql_quote($objet));
}
}
}
return 1;
}
示例3: accesrestreint_page_indisponible
/**
* Detecter les demande d'acces aux pages restreintes
* et re-orienter vers une 401 si necessaire
*
* @param <type> $contexte
* @return <type>
*/
function accesrestreint_page_indisponible($contexte){
if ($contexte['status']=='404' AND isset($contexte['type'])){
$objet = $contexte['type'];
$table_sql = table_objet_sql($objet);
$id_table_objet = id_table_objet($objet);
if ($id = intval($contexte[$id_table_objet])){
$publie = true;
$restreint = false;
$trouver_table = charger_fonction('trouver_table','base');
$desc = $trouver_table($table_sql);
if (isset($desc['field']['statut'])){
$statut = sql_getfetsel('statut', $table_sql, "$id_table_objet=".intval($id));
if ($statut!='publie')
$publie = false;
}
include_spip('inc/autoriser');
if ($publie AND !autoriser('voir',$objet,$id)){
// c'est un contenu restreint
$contexte['status'] = '401';
$contexte['code'] = '401 Unauthorized';
$contexte['fond'] = '401';
$contexte['erreur'] = _T('accesrestreint:info_acces_restreint');
$contexte['cible'] = self();
}
}
}
return $contexte;
}
示例4: calculer_balise_CHAMP_EXTRA
/**
* Retourne la description d'un champ extra indiqué
*
* Retourne le tableau de description des options de saisies
* ou un des attributs de ce tableau
*
* @param string $objet
* Type d'objet
* @param string $colonne
* Nom de la colonne SQL
* @param string $demande
* Nom du paramètre demandé.
* Non renseigné, tout le tableau de description est retourné
* @return mixed
* - Tableau si toute la description est demandée
* - Indéfini si un élément spécifique de la description est demandé.
* - Chaine vide si le champs extra n'est pas trouvé
*/
function calculer_balise_CHAMP_EXTRA($objet, $colonne, $demande='') {
// Si la balise n'est pas dans une boucle, on cherche un objet explicite dans le premier argument
// de la forme "trucs/colonne" ou "spip_trucs/colonne"
if (!$objet and $decoupe = explode('/', $colonne) and count($decoupe) == 2){
$objet = $decoupe[0];
$colonne = $decoupe[1];
}
// recuperer la liste des champs extras existants
include_spip('cextras_pipelines');
if (!$saisies = champs_extras_objet( $table = table_objet_sql($objet) )) {
return '';
}
include_spip('inc/saisies');
if (!$saisie = saisies_chercher($saisies, $colonne)) {
return '';
}
if (!$demande) {
return $saisie['options']; // retourne la description de la saisie...
}
if (array_key_exists($demande, $saisie['options'])) {
return $saisie['options'][$demande];
}
return '';
}
示例5: cextras_objets_valides
function cextras_objets_valides(){
$objets = array();
$objets_extensibles = pipeline("objets_extensibles", array(
'article' => _T('cextras:table_article'),
'auteur' => _T('cextras:table_auteur'),
'breve' => _T('cextras:table_breve'),
'groupes_mot' => _T('cextras:table_groupes_mot'),
'mot' => _T('cextras:table_mot'),
'rubrique' => _T('cextras:table_rubrique'),
'site' => _T('cextras:table_site')
));
ksort($objets_extensibles);
foreach ($objets_extensibles as $objet => $traduction) {
$objets[$objet] = array(
'table' => table_objet_sql($objet),
'type' => objet_type(table_objet($objet)),
'nom' => $traduction,
);
}
return $objets;
}
示例6: optimiser_base_revisions
/**
* Supprimer les révisions des objets disparus
*/
function optimiser_base_revisions()
{
/**
* On commence par récupérer la liste des types d'objet ayant au moins une révision
*/
$objets_revises = sql_select('objet', 'spip_versions', 'id_version=1', 'objet');
/**
* Pour chaque objet, on va contruire un tableau des identifiants disparus
* On supprimera ensuite les occurences dans spip_versions et spip_versions_fragments
*/
while ($objet = sql_fetch($objets_revises)) {
$in = array();
$table = table_objet_sql($objet['objet']);
$id_table_objet = id_table_objet($objet['objet']);
$res = sql_select("A.id_objet AS id_objet, A.objet AS objet", "spip_versions AS A LEFT JOIN {$table} AS R\n\t\t\t\t\t\t\tON R.{$id_table_objet}=A.id_objet AND A.objet=" . sql_quote($objet['objet']), "R.{$id_table_objet} IS NULL AND A.objet=" . sql_quote($objet['objet']) . " AND A.id_objet > 0", "A.id_objet", "A.id_objet");
while ($row = sql_fetch($res)) {
$in[$row['id_objet']] = true;
}
sql_free($res);
/**
* Si on a un array
* On supprime toute occurence des objets disparus dans :
* -* spip_versions
* -* spip_versions_fragments
*/
if ($in) {
foreach (array('spip_versions', 'spip_versions_fragments') as $table) {
sql_delete($table, sql_in('id_objet', array_keys($in)) . " AND objet=" . sql_quote($objet['objet']));
}
}
}
}
示例7: shop_liste_etapes
function shop_liste_etapes($id_panier)
{
static $lesetapes = array();
$etapes = array('panier', 'qui', 'commande', 'livraison', 'paiement');
if (!$id_panier) {
return $etapes;
}
if (isset($lesetapes["{$id_panier}"])) {
return $lesetapes["{$id_panier}"];
}
if ($id_auteur = intval(sql_getfetsel('id_auteur', 'spip_paniers', 'id_panier=' . intval($id_panier)))) {
$etapes = array_diff($etapes, array('qui'));
}
$items = sql_allfetsel("*", "spip_paniers_liens", "id_panier=" . intval($id_panier));
$livrable = false;
foreach ($items as $item) {
$table = table_objet_sql($item['objet']);
$primary = id_table_objet($item['objet']);
$objet = sql_fetsel("*", $table, "{$primary}=" . intval($item['id_objet']));
if (!isset($objet['immateriel']) or !$objet['immateriel']) {
$livrable = true;
break;
}
}
if (!$livrable) {
$etapes = array_diff($etapes, array('livraison'));
}
return $lesetapes["{$id_panier}"] = $etapes;
}
示例8: formulaires_editer_champs_extras_traiter_dist
function formulaires_editer_champs_extras_traiter_dist($objet, $redirect = '')
{
$retour = array('redirect' => $redirect);
$table = table_objet_sql($objet);
include_spip('inc/iextras');
$saisies = iextras_champs_extras_definis($table);
$nouvelles_saisies = session_get('constructeur_formulaire_champs_extras_' . $table);
$diff = saisies_comparer_par_identifiant($saisies, $nouvelles_saisies);
$extras = array();
include_spip('inc/cextras');
// supprimer les champs supprimes
champs_extras_supprimer($table, $diff['supprimees']);
// ajouter les nouveaux champs;
champs_extras_creer($table, $diff['ajoutees']);
// modifier les champs modifies;
if ($diff['modifiees']) {
$anciennes = saisies_lister_par_identifiant($saisies);
$anciennes = array_intersect_key($anciennes, $diff['modifiees']);
champs_extras_modifier($table, $diff['modifiees'], $anciennes);
}
# champs_extras_modifier($table, # modifiees nouvelles, # modifiees anciennes);
ecrire_meta("champs_extras_" . $table, serialize($nouvelles_saisies));
$retour['message_ok'] = 'Super !';
return $retour;
}
示例9: cs_corbeille_gerer
/**
* supprime/compte les elements listes d'un type donne
*
* @param nom $table
* @param tableau $ids (si $id==-1, on vide/compte tout)
* @param booleen $compter
* @return array(nb objets, nb objets lies, ids trouves)
*/
function cs_corbeille_gerer($table, $ids=array(), $vider=false) {
$params = cs_corbeille_table_infos($table);
if (isset($params['table'])) $table = $params['table'];
include_spip('base/abstract_sql');
$type = objet_type($table);
$table_sql = table_objet_sql($type);
$id_table = id_table_objet($type);
if (!$params['statut']) return false;
//echo "$type - $table_sql - $id_table - ",table_objet_sql($type),'<hr>';
// determine les index des elements a supprimer
$ids = $ids===-1
?array_map('reset',sql_allfetsel($id_table,$table_sql,'statut='.sql_quote($params['statut'])))
:array_map('reset',sql_allfetsel($id_table,$table_sql,sql_in($id_table,$ids).' AND statut='.sql_quote($params['statut'])));
if (!count($ids)) return array(0, 0, array());
// compte/supprime les elements definis par la liste des index
if($vider) sql_delete($table_sql,sql_in($id_table,$ids));
$nb = count($ids);
// compte/supprime des elements lies
$nb_lies = 0;
$f = $vider?'sql_delete':'sql_countsel';
if ($table_liee=$params['tableliee']) {
$trouver_table = charger_fonction('trouver_table','base');
foreach($table_liee as $unetable) {
$desc = $trouver_table($unetable);
if (isset($desc['field'][$id_table]))
$nb_lies += $f($unetable,sql_in($id_table,$ids));
elseif(isset($desc['field']['id_objet']) AND isset($desc['field']['objet']))
$nb_lies += $f($unetable,sql_in('id_objet',$ids)." AND objet=".sql_quote($type));
}
}
return array($nb, $vider?'-1':$nb_lies, $ids);
}
示例10: action_dereferencer_traduction_rubrique_dist
function action_dereferencer_traduction_rubrique_dist() {
$securiser_action = charger_fonction('securiser_action', 'inc');
$arg = $securiser_action();
list($type, $id_objet) = explode('/', $arg);
if (!$type = objet_type($type) or !$id_objet = intval($id_objet)) {
if (!_AJAX) {
include_spip('inc/minipres');
minipres('Arguments incompris');
}
else {
spip_log('Arguments incompris dans action dereferencer_traduction_rubrique');
return false;
}
}
$objet = table_objet($type);
$_id_objet = id_table_objet($objet);
$table = table_objet_sql($objet);
$id_trad_old = sql_getfetsel('id_trad', $table, "$_id_objet = " . sql_quote($id_objet));
if ($id_trad_old) {
include_spip('inc/modifier');
modifier_contenu($objet, $id_objet, array('invalideur' => "id='$objet/$id_objet'"), array('id_trad' => 0));
// si la deliaison fait qu'il ne reste plus que la source
// dans le groupe de traduction on lui remet l'id_trad a 0
if (1 == $nb_dans_groupe = sql_countsel($table, array('id_trad = ' . sql_quote($id_trad_old)))) {
modifier_contenu($objet, $id_trad_old, array('invalideur' => "id='$objet/$id_trad_old'"), array('id_trad' => 0));
}
}
}
示例11: supprimer_lien_document
/**
* Supprimer un lien entre un document et un objet
*
* @param int $id_document
* @param string $objet
* @param int $id_objet
* @param bool $supprime
* si true, le document est supprime si plus lie a aucun objet
* @param bool $check
* si true, on verifie les documents references dans le texte de l'objet
* et on les associe si pas deja fait
* @return bool
*/
function supprimer_lien_document($id_document, $objet, $id_objet, $supprime = false, $check = false)
{
if (!($id_document = intval($id_document))) {
return false;
}
// D'abord on ne supprime pas, on dissocie
include_spip('action/editer_liens');
objet_dissocier(array('document' => $id_document), array($objet => $id_objet));
// Si c'est une vignette, l'eliminer du document auquel elle appartient
// cas tordu peu probable
sql_updateq("spip_documents", array('id_vignette' => 0), "id_vignette=" . $id_document);
// verifier son statut apres une suppression de lien
include_spip('action/editer_document');
document_instituer($id_document);
pipeline('post_edition', array('args' => array('operation' => 'delier_document', 'action' => 'delier_document', 'table' => 'spip_documents', 'id_objet' => $id_document, 'objet' => $objet, 'id' => $id_objet), 'data' => null));
if ($check) {
// si demande, on verifie que ses documents vus sont bien lies !
$spip_table_objet = table_objet_sql($objet);
$table_objet = table_objet($objet);
$id_table_objet = id_table_objet($objet, $serveur);
$champs = sql_fetsel('*', $spip_table_objet, addslashes($id_table_objet) . "=" . intval($id_objet));
$marquer_doublons_doc = charger_fonction('marquer_doublons_doc', 'inc');
$marquer_doublons_doc($champs, $id_objet, $objet, $id_table_objet, $table_objet, $spip_table_objet, '', $serveur);
}
// On supprime ensuite s'il est orphelin
// et si demande
// ici on ne bloque pas la suppression d'un document rattache a un autre
if ($supprime and !sql_countsel('spip_documents_liens', "objet!='document' AND id_document=" . $id_document)) {
$supprimer_document = charger_fonction('supprimer_document', 'action');
return $supprimer_document($id_document);
}
}
示例12: action_instituer_langue_objet_dist
/**
* Modifier la langue d'un objet
*
* @param string $objet
* @param int $id
* @param int $id_rubrique
* @param string $changer_lang
* @return string
*/
function action_instituer_langue_objet_dist($objet, $id, $id_rubrique, $changer_lang)
{
if ($changer_lang) {
$table_objet_sql = table_objet_sql($objet);
$id_table_objet = id_table_objet($objet);
if ($changer_lang != "herit") {
sql_updateq($table_objet_sql, array('lang' => $changer_lang, 'langue_choisie' => 'oui'), "{$id_table_objet}=" . intval($id));
include_spip('inc/rubriques');
if ($table_objet_sql == 'spip_rubriques') {
calculer_langues_rubriques();
}
$langues = calculer_langues_utilisees();
ecrire_meta('langues_utilisees', $langues);
} else {
$langue_parent = sql_getfetsel("lang", "spip_rubriques", "id_rubrique=" . intval($id_rubrique));
if (!$langue_parent) {
$langue_parent = $GLOBALS['meta']['langue_site'];
}
sql_updateq($table_objet_sql, array('lang' => $langue_parent, 'langue_choisie' => 'non'), "{$id_table_objet}=" . intval($id));
$changer_lang = $langue_parent;
if ($table_objet_sql == 'spip_rubriques') {
include_spip('inc/rubriques');
calculer_langues_rubriques();
}
}
}
return $changer_lang;
}
示例13: action_deplacer_objets_dist
function action_deplacer_objets_dist()
{
include_spip('inc/autoriser');
if (!autoriser('ecrire')) {
return plan_json_erreur(_T("plan:erreur_autorisation_insuffisante") . " " . _T("plan:erreur_deplacement_impossible"));
}
include_spip('base/objets');
$objet = objet_type(_request('objet'));
$table = table_objet_sql($objet);
$_id_table = id_table_objet($table);
$ids = _request('id_objet');
$id_rubrique_old = _request('id_rubrique_source');
$id_rubrique_new = _request('id_rubrique_destination');
if (!is_array($ids) or !$objet) {
return plan_json_erreur(_T("plan:erreur_aucun_identifiant") . " " . _T("plan:erreur_deplacement_impossible"));
}
if ($id_rubrique_old == $id_rubrique_new) {
return plan_json_erreur(_T("plan:erreur_rubriques_parentes_incorrectes") . " " . _T("plan:erreur_deplacement_impossible"));
}
if ($objet != 'rubrique' and !$id_rubrique_new) {
return plan_json_erreur(_T("plan:erreur_rubriques_parentes_incorrectes") . " " . _T("plan:erreur_deplacement_impossible"));
}
$ids = array_filter($ids);
if ($objet == 'rubrique') {
$champ = 'id_parent';
} else {
$champ = 'id_rubrique';
}
// ne modifier que si les emplacements n'ont pas déjà changé !
$ids = sql_allfetsel($_id_table, $table, array(sql_in($_id_table, $ids), $champ . '=' . sql_quote($id_rubrique_old)));
$ids = array_map('array_shift', $ids);
include_spip('action/editer_objet');
$errors = $success = array();
$modifs = array('id_parent' => $id_rubrique_new);
foreach ($ids as $id) {
if (autoriser('modifier', $objet, $id)) {
if ($err = objet_modifier($objet, $id, $modifs)) {
$errors["{$objet}-{$id}"] = $err;
} else {
$success["{$objet}-{$id}"] = true;
}
} else {
$errors["{$objet}-{$id}"] = _T("plan:erreur_autorisation_insuffisante") . " " . _T("plan:erreur_deplacement_impossible");
}
}
// dans certains cas… on ne reçoit pas d'erreur… et pourtant !
if (!$errors) {
// on verifie qu'il n'y a plus d'objets à l'ancien emplacement
$ids = sql_allfetsel($_id_table, $table, array(sql_in($_id_table, $ids), $champ . '=' . sql_quote($id_rubrique_old)));
$ids = array_map('array_shift', $ids);
if ($ids) {
foreach ($ids as $id) {
$errors["{$objet}-{$id}"] = _T("plan:erreur_deplacement");
unset($success["{$objet}-{$id}"]);
}
}
}
return plan_json_envoi(array('done' => true, 'success' => $success, 'errors' => $errors));
}
示例14: lister_traductions
function lister_traductions($id_trad, $objet)
{
$table_objet_sql = table_objet_sql($objet);
$primary = id_table_objet($objet);
$rows = sql_allfetsel("{$primary} as id,lang", $table_objet_sql, 'id_trad=' . intval($id_trad));
lang_select();
return $rows;
}
示例15: classement_populaires
/**
* Construire un tableau par popularite
* classemnt => id_truc
*
* @param string $type
* @param string $serveur
* @return array
*/
function classement_populaires($type, $serveur = '')
{
static $classement = array();
if (isset($classement[$type])) {
return $classement[$type];
}
$classement[$type] = sql_allfetsel(id_table_objet($type, $serveur), table_objet_sql($type, $serveur), "statut='publie' AND popularite > 0", "", "popularite DESC", '', '', $serveur);
$classement[$type] = array_map('reset', $classement[$type]);
return $classement[$type];
}