[ Index ]
 

Code source de Phorum 5.1.25

Accédez au Source d'autres logiciels libres

Classes | Fonctions | Variables | Constantes | Tables

title

Body

[fermer]

/mods/smileys/ -> settings.php (source)

   1  <?php
   2  
   3  if(!defined("PHORUM_ADMIN")) return;
   4  
   5  require_once ("./include/admin/PhorumInputForm.php");
   6  require_once ("./mods/smileys/smileyslib.php");
   7  require_once ("./mods/smileys/defaults.php");
   8  
   9  // The definition of the possible uses for a smiley.
  10  $PHORUM_MOD_SMILEY_USES = array(
  11      0   => "Body",
  12      1   => "Subject",
  13      2   => "Body + Subject",
  14  );
  15  
  16  // ---------------------------------------------------------------------------
  17  // Handle actions for sent form data.
  18  // ---------------------------------------------------------------------------
  19  
  20  // The action to perform.
  21  $action = isset($_POST["action"]) ? $_POST["action"] : "";
  22  
  23  // Keep track if the settings must be saved in the database.
  24  $do_db_update = false;
  25  
  26  // Keep track of error and success messages.
  27  $error="";
  28  $okmsg = "";
  29  
  30  // Initialize smiley_id parameter.
  31  $smiley_id = isset($_POST["smiley_id"]) ?  $_POST["smiley_id"] : "NEW";
  32  
  33  // ACTION: Changing the mod_smileys settings.
  34  if (empty($error) && $action == "edit_settings") {
  35      $_POST["prefix"] = trim($_POST["prefix"]);
  36      // Is the field filled in?
  37      if (empty($_POST["prefix"])) {
  38          $error = "Please, fill in the smiley prefix path";
  39      // Deny absolute paths.
  40      } elseif (preg_match(MOD_SMILEYS_ABSPATH_MATCH, $_POST["prefix"])) {
  41          $error = "The smiley path must be a path, relative to Phorum's " .
  42                   "installation directory";
  43      // Is the specified prefix a directory?
  44      } elseif (!is_dir($_POST["prefix"])) {
  45          $error = "The smiley prefix path " . 
  46                   '"' . htmlspecialchars($_POST["prefix"]) . '" ' .
  47                   " does not exist";
  48      }
  49  
  50      // All is okay. Set the prefix path in the config.
  51      if (empty($error))
  52      { 
  53          // Make sure the prefix path ends with a "/".
  54          if (substr($_POST["prefix"], -1, 1) != '/') {
  55              $_POST["prefix"] .= "/";
  56          }
  57  
  58          $PHORUM["mod_smileys"]["prefix"] = $_POST["prefix"];
  59  
  60          $okmsg = "The smiley settings have been saved successfully";
  61          $do_db_update = true;
  62      }
  63  }
  64  
  65  // ACTION: Adding or updating smileys.
  66  if (empty($error) && $action == "edit_smiley")
  67  {
  68      // Trim whitespace from form input fields.
  69      foreach (array("search","smiley","alt") as $field) {
  70          if (isset($_POST[$field])) $_POST[$field] = trim($_POST[$field]);
  71      }
  72  
  73      // Check if the search string is entered.
  74      if (empty($_POST["search"]))
  75          $error = "Please enter the string to match";
  76      // Check if a replace smiley is selected.
  77      elseif (empty($_POST["smiley"]))
  78          $error = "Please, select a smiley to replace the string " .
  79                   htmlspecialchars($_POST["search"]) . " with";
  80      // Check if the smiley doesn't already exist.
  81      if (empty($error)) {
  82          foreach ($PHORUM["mod_smileys"]["smileys"] as $id => $smiley) {
  83              if ($smiley["search"] == $_POST["search"] &&
  84                  $_POST["smiley_id"] != $id) {
  85                  $error = "The smiley " .
  86                           '"' . htmlspecialchars($_POST["search"]) . '" ' .
  87                           "already exists";
  88                  break;
  89              }
  90          }
  91      }
  92  
  93      // All fields are okay. Update the smiley list.
  94      if (empty($error))
  95      {
  96          $item = array(
  97              "search" => $_POST["search"],
  98              "smiley" => $_POST["smiley"],
  99              "alt"    => $_POST["alt"],
 100              "uses"   => $_POST['uses']
 101          );
 102  
 103          if ($smiley_id == "NEW") {
 104              $PHORUM["mod_smileys"]["smileys"][]=$item;
 105              $okmsg = "The smiley has been added successfully";
 106          } else {
 107              $PHORUM["mod_smileys"]["smileys"][$smiley_id]=$item;
 108              $okmsg = "The smiley has been updated successfully";
 109          }
 110  
 111          $do_db_update = true;
 112      }
 113  }
 114  
 115  // GET based actions.
 116  if (empty($error) && isset($_GET["smiley_id"])) 
 117  {
 118      // ACTION: Deleting a smiley from the list.
 119      if (isset($_GET["delete"])) {
 120          unset($PHORUM["mod_smileys"]["smileys"][$_GET["smiley_id"]]);
 121          $do_db_update = true;
 122          $okmsg = "The smiley has been deleted successfully";
 123      }
 124  
 125      // ACTION: Startup editing a smiley from the list.
 126      if (isset($_GET["edit"])) {
 127          $smiley_id = $_GET["smiley_id"];
 128      }
 129  }
 130  
 131  
 132  // ---------------------------------------------------------------------------
 133  // Do database updates.
 134  // ---------------------------------------------------------------------------
 135  
 136  // Changes have been made to the smileys configuration.
 137  // Store these changes in the database.
 138  if (empty($error) && $do_db_update)
 139  {
 140      list($modinfo, $message) = phorum_mod_smileys_store($PHORUM["mod_smileys"]);
 141      if ($modinfo == NULL) {
 142          $error = $message;
 143      } else {
 144          if (empty($okmsg)) $okmsg = $message;
 145          $PHORUM["mod_smileys"] = $modinfo;
 146  
 147          // Back to the startscreen
 148          unset($_POST);
 149          $smiley_id = 'NEW';
 150      }
 151  }
 152  
 153  
 154  // ---------------------------------------------------------------------------
 155  // Display the settings page
 156  // ---------------------------------------------------------------------------
 157  
 158  // Get the current list of available smiley images.
 159  $available_smileys = phorum_mod_smileys_available();
 160  
 161  // Javascript for displaying a smiley preview when a smiley image
 162  // is selected from the drop down box.
 163  ?>
 164  <script type="text/javascript">
 165  function change_image(new_image) {
 166    var div = document.getElementById("preview_div");
 167    var img = document.getElementById("preview_image");
 168    if (new_image.length == 0) {
 169      new_image = "./images/trans.gif";
 170      div.style.display = 'none';
 171    } else {
 172      new_image = "<?php print $PHORUM["mod_smileys"]["prefix"]?>" + new_image;
 173      div.style.display = 'block';
 174    }
 175    img.src =new_image;
 176  }
 177  </script>
 178  <?php
 179  
 180  // Display the result message.
 181  if (! empty($error)) {
 182      phorum_admin_error($error);
 183  } elseif (! empty($okmsg)) {
 184      phorum_admin_okmsg($okmsg);
 185  }
 186  
 187  // Count things.
 188  $total_smileys = 0;
 189  $inactive_smileys = 0;
 190  foreach ($PHORUM["mod_smileys"]["smileys"] as $id => $smiley) {
 191      $total_smileys ++;
 192      if (! $smiley["active"]) $inactive_smileys ++;
 193  }
 194  
 195  // Display a warning in case there are no smiley images available.
 196  if (! count($available_smileys)) {
 197      phorum_admin_error(
 198          "<strong>Warning:</strong><br/>" .
 199          "No smiley images were found in your current smiley prefix " .
 200          "path. Please place some smileys in the directory " .
 201          htmlspecialchars($PHORUM["mod_smileys"]["prefix"]) . 
 202          " or change your prefix path to point to a directory " .
 203          "containing smiley images.");
 204  } elseif ($inactive_smileys) {
 205      phorum_admin_error(
 206          "<strong>Warning:</strong><br/>" .
 207          "You have $inactive_smileys smiley(s) configured for which the " .
 208          "image file was not found (marked as \"UNAVAILBLE\" in the list " .
 209          "below). Delete the smiley(s) from the list or place the missing " .
 210          "images in the directory \"" .
 211          htmlspecialchars($PHORUM["mod_smileys"]["prefix"]) . "\". After " .
 212          "placing new smiley images, click \"Save settings\" to update " .
 213          "the smiley settings."); 
 214  }
 215  
 216  // Create the smiley settings form.
 217  if ($smiley_id == "NEW")
 218  {
 219      $frm = new PhorumInputForm ("", "post", 'Save settings');
 220      $frm->hidden("module", "modsettings");
 221      $frm->hidden("mod", "smileys");
 222      $frm->hidden("action", "edit_settings");
 223      $frm->addbreak("Smiley Settings");
 224      $row = $frm->addrow("Smiley Prefix Path", $frm->text_box("prefix", $PHORUM["mod_smileys"]["prefix"], 50));
 225      $frm->addhelp($row,
 226          "Set the smiley image prefix path",
 227          "This option can be used to set the path to the directory where
 228           you have stored your smileys. This path must be relative to the
 229           directory in which you installed the Phorum software. Absolute
 230           paths cannot be used here.");
 231      $frm->show();
 232  }
 233  
 234  // No smiley images in the current prefix path? Then do not show the
 235  // rest of the forms. Let the admin fix this issue first.
 236  if (!count($available_smileys)) return;
 237  
 238  // Create the smiley adding and editing form.
 239  if (isset($_POST["smiley_id"])) {
 240      $search = $_POST["search"];
 241      $smiley = $_POST["smiley"];
 242      $alt    = $_POST["alt"];
 243      $uses   = $_POST["uses"];
 244  }
 245  if ($smiley_id == "NEW") {
 246      $title = "Add a new smiley";
 247      $submit = "Add smiley";
 248  
 249      // Fill initial form data for creating smileys.
 250      if (! isset($_POST["smiley_id"])) {
 251          $search = "";
 252          $smiley = "";
 253          $alt    = "";
 254          $uses   = 2;
 255      }
 256  } else {
 257      $title = "Update a smiley";
 258      $submit = "Update smiley";
 259  
 260      // Fill initial form data for editing smileys.
 261      if (! isset($_POST["smiley_id"])) {
 262          $smileydata = $PHORUM["mod_smileys"]["smileys"][$smiley_id];
 263          $search = $smileydata["search"];
 264          $smiley = $smileydata["smiley"];
 265          $alt    = $smileydata["alt"];
 266          $uses   = $smileydata["uses"];
 267      }
 268  }
 269  $frm = new PhorumInputForm ("", "post", $submit);
 270  $frm->hidden("module", "modsettings");
 271  $frm->hidden("mod", "smileys");
 272  $frm->hidden("smiley_id", $smiley_id);
 273  $frm->hidden("action", "edit_smiley");
 274  $frm->addbreak($title);
 275  $frm->addrow("Smiley string to match", $frm->text_box("search", $search, 20));
 276  $row = $frm->addrow("Image to replace the string with", $frm->select_tag("smiley", array_merge(array(''=>'Select smiley ...'),$available_smileys), $smiley, "onChange=\"change_image(this.options[this.selectedIndex].value);\"") . "&nbsp;&nbsp;<div style=\"display:none;margin-top:5px\" id=\"preview_div\"><strong>Preview: </strong><img src=\"images/trans.gif\" id=\"preview_image\" /></div>");
 277  $frm->addhelp($row,
 278      "Smiley replacement image",
 279      "The drop down list shows all images that were found in your
 280       smiley prefix path. If you want to add your own smileys, simply place
 281       them in \"" . htmlspecialchars($PHORUM["mod_smileys"]["prefix"]) . "\"
 282       and reload this page.");
 283  $frm->addrow("ALT attribute for the image", $frm->text_box("alt", $alt, 40));
 284  $frm->addrow("Used for", $frm->select_tag("uses", $PHORUM_MOD_SMILEY_USES, $uses));
 285  $frm->show();
 286  
 287  // Make the preview image visible in case a $smiley is set.
 288  if (!empty($smiley)) {?>
 289      <script type="text/javascript">
 290      change_image('<?php print addslashes($smiley) ?>');
 291      </script><?php
 292  }
 293  
 294  // Show the configured list of smileys.
 295  if ($smiley_id == "NEW")
 296  {
 297      print "<hr class=\"PhorumAdminHR\" />";
 298  
 299      if (count($PHORUM["mod_smileys"]["smileys"]))
 300      { ?>
 301          <table cellspacing="1" class="PhorumAdminTable" width="100%">
 302          <tr>
 303            <td class="PhorumAdminTableHead">String</td>
 304            <td class="PhorumAdminTableHead">Image file</td>
 305            <td class="PhorumAdminTableHead">Image</td>
 306            <td class="PhorumAdminTableHead">ALT attribute</td>
 307            <td class="PhorumAdminTableHead">Used for</td>
 308            <td class="PhorumAdminTableHead">&nbsp;</td>
 309          </tr>
 310          <?php
 311  
 312          foreach ($PHORUM["mod_smileys"]["smileys"] as $id => $item)
 313          {
 314              $used_for_txt = $PHORUM_MOD_SMILEY_USES[$item['uses']];
 315              foreach ($item as $key => $val) {
 316                  $item[$key] = htmlspecialchars($val);
 317              }
 318              $action_url = "$_SERVER[PHP_SELF]?module=modsettings&mod=smileys&smiley_id=$id";
 319  
 320              print "<tr>\n";
 321              print "  <td class=\"PhorumAdminTableRow\">{$item["search"]}</td>\n";
 322              print "  <td class=\"PhorumAdminTableRow\">{$item["smiley"]}</td>\n";
 323              print "  <td class=\"PhorumAdminTableRow\" align=\"center\">";
 324              if ($item["active"]) {
 325                print "<img src=\"{$PHORUM["mod_smileys"]["prefix"]}{$item["smiley"]}\"/></td>\n";
 326              } else {
 327                print "<div style=\"color:red\">UNAVAILBLE</div>";
 328              }
 329              print "  <td class=\"PhorumAdminTableRow\">{$item["alt"]}</td>\n";
 330              print "  <td class=\"PhorumAdminTableRow\" style=\"white-space:nowrap\">$used_for_txt</td>\n";
 331              print "  <td class=\"PhorumAdminTableRow\">" .
 332                    "<a href=\"$action_url&edit=1\">Edit</a>&nbsp;&#149;&nbsp;" .
 333                    "<a href=\"$action_url&delete=1\">Delete</a></td>\n";
 334              print "</tr>\n";
 335          }
 336  
 337          print "</table>\n";
 338  
 339      } else {
 340  
 341          print "Currently, you have no smiley replacements configured.";
 342  
 343      }
 344  
 345      // For a more clear end of page.
 346      print "<br/><br/><br/>";
 347  }
 348  
 349  ?>


Généré le : Thu Nov 29 12:22:27 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics