Esempio n. 1
0
 /**
  * Constructor
  * @param string     gallery id
  * @param sgGallery  reference to the parent gallery
  */
 function sgGallery($id, &$parent)
 {
     $this->id = $id;
     $this->parent = $parent;
     $this->config = sgConfig::getInstance();
     $this->translator = Translator::getInstance();
 }
Esempio n. 2
0
 function sgThumbnail(&$img, $type)
 {
     $this->config = sgConfig::getInstance();
     $this->image = $img;
     $widthVar = "thumb_width_" . $type;
     $heightVar = "thumb_height_" . $type;
     $cropVar = "thumb_crop_" . $type;
     $this->maxWidth = $this->config->{$widthVar};
     $this->maxHeight = $this->config->{$heightVar};
     if (isset($this->config->{$cropVar})) {
         $this->forceSize = $this->config->{$cropVar};
     }
     if ($this->image == null) {
         return;
     }
     $this->imagePath = $this->image->realPath();
     $this->thumbPath = $this->config->base_path . Singapore::thumbnailPath($this->image->parent->id, $this->image->id, $this->maxWidth, $this->maxHeight, $this->forceSize);
     $this->thumbURL = $this->config->base_url . Singapore::thumbnailPath($this->image->parent->id, $this->image->id, $this->maxWidth, $this->maxHeight, $this->forceSize);
     //security check: make sure requested file is in galleries directory
     if (!Singapore::isSubPath($this->config->base_path . $this->config->pathto_galleries, $this->imagePath) && !$this->image->isRemote()) {
         return;
     }
     //security check: make sure $image has a valid extension
     if (!$this->image->isRemote() && !preg_match("/.+\\.(" . $this->config->recognised_extensions . ")\$/i", $this->image->id)) {
         return;
     }
     $this->calculateDimensions();
     //link straight to image if it smaller than required size
     if ($this->image->width <= $this->thumbWidth && $this->image->height <= $this->thumbHeight) {
         $this->thumbURL = $this->image->realURL();
         return;
     }
     $imageModified = @filemtime($this->imagePath);
     $thumbModified = @filemtime($this->thumbPath);
     if ($imageModified > $thumbModified || !$thumbModified) {
         $this->buildThumbnail();
     }
 }
Esempio n. 3
0
     $config->pathto_cache = $config->pathto_data_dir . "cache/";
     $config->base_path = $basePath;
     if (createDirectories($config)) {
         setupHeader("OK");
         setupMessage("This step completed successfully");
     } else {
         setupHeader("Oops!");
         setupError('There was a problem. Please fix it and <a href="install.php?step=directories">retry this step</a>');
     }
     echo '<br /><a href="install.php?step=test">&lt;&lt; Previous: test server</a>';
     echo ' | <a href="install.php?step=database">Next: setup database &gt;&gt;</a>';
     break;
 case "database":
     setupHeader("Step 2 of 2: Setup Database");
     //create config object
     $config = sgConfig::getInstance();
     $config->loadConfig($basePath . "singapore.ini");
     $config->base_path = $basePath;
     switch ($config->io_handler) {
         case "csv":
             setupMessage("The default CSV file database does not require any further setting up");
             setupHeader("OK");
             setupMessage("This step completed successfully");
             break;
         case "mysql":
             include_once $basePath . "includes/io_mysql.class.php";
             $config->loadConfig($basePath . "secret.ini.php");
             setupMessage("Setup will now create the tables necessary to run singapore on a MySQL database");
             setupHeader("Connecting to database");
             $io = new sgIO_mysql();
             if (!$io) {
Esempio n. 4
0
     break;
 case "defaults":
     setupHeader("Step 2 of 3: Select default permissions");
     setupMessage("Nothing is deleted at this time");
     makeWritable($basePath);
     setupHeader("OK");
     setupMessage("This step completed successfully");
     setupHeader("WARNING!");
     setupMessage("The following step will delete all gallery, image and user information from the currently selected database. Gallery directories and image files will not be deleted but all extended information (e.g. name, artist, copyright etc.) will be irretrievably lost");
     echo '<br /><a href="index.html">Finish</a>';
     echo ' | <a href="uninstall.php?step=database">Next: I AM SURE I WANT TO delete database information &gt;&gt;</a>';
     break;
 case "convert":
     setupHeader("Step 2 of 2: Delete database information");
     //create config object
     $config = new sgConfig($basePath . "singapore.ini");
     $config->loadConfig($basePath . "secret.ini.php");
     $config->base_path = $basePath;
     //include base classes
     require_once $basePath . "includes/io.class.php";
     require_once $basePath . "includes/io_sql.class.php";
     switch ($config->io_handler) {
         case "csv":
             setupMessage("The default CSV file database does not require uninstalling");
             setupHeader("OK");
             setupMessage("This step completed successfully");
             break;
         case "mysql":
             require_once $basePath . "includes/io_mysql.class.php";
             setupMessage("Setup will now delete all gallery, image and user information");
             setupHeader("Connecting to MySQL database");
Esempio n. 5
0
 /**
  * Admin constructor. Doesn't call {@link Singapore} constructor.
  * @param string the path to the base singapore directory
  */
 function sgAdmin($basePath = "")
 {
     //import class definitions
     //io handler class included once config is loaded
     require_once $basePath . "includes/translator.class.php";
     require_once $basePath . "includes/thumbnail.class.php";
     require_once $basePath . "includes/gallery.class.php";
     require_once $basePath . "includes/config.class.php";
     require_once $basePath . "includes/image.class.php";
     require_once $basePath . "includes/user.class.php";
     //start execution timer
     $this->scriptStartTime = microtime();
     //remove slashes
     if (get_magic_quotes_gpc()) {
         $_REQUEST = array_map(array("Singapore", "arraystripslashes"), $_REQUEST);
         //as if magic_quotes_gpc wasn't insane enough, php doesn't add slashes
         //to the tmp_name variable so I have to add them manually. Grrrr.
         foreach ($_FILES as $key => $nothing) {
             $_FILES[$key]["tmp_name"] = addslashes($_FILES[$key]["tmp_name"]);
         }
         $_FILES = array_map(array("Singapore", "arraystripslashes"), $_FILES);
     }
     $galleryId = isset($_REQUEST["gallery"]) ? $_REQUEST["gallery"] : ".";
     //load config from singapore root directory
     $this->config = sgConfig::getInstance();
     $this->config->loadConfig($basePath . "singapore.ini");
     $this->config->loadConfig($basePath . "secret.ini.php");
     //set runtime values
     $this->config->pathto_logs = $this->config->pathto_data_dir . "logs/";
     $this->config->pathto_cache = $this->config->pathto_data_dir . "cache/";
     $this->config->pathto_current_template = $this->config->pathto_templates . $this->config->default_template . "/";
     $this->config->pathto_admin_template = $this->config->pathto_templates . $this->config->admin_template_name . "/";
     //load config from admin template ini file (admin.ini) if present
     $this->config->loadConfig($basePath . $this->config->pathto_admin_template . "admin.ini");
     $this->template = $this->config->default_template;
     //do not load gallery-specific ini files
     //set current language from request vars or config
     $this->language = isset($_REQUEST["lang"]) ? $_REQUEST["lang"] : $this->config->default_language;
     //read the language file
     $this->translator = Translator::getInstance($this->language);
     $this->translator->readLanguageFile($this->config->base_path . $this->config->pathto_locale . "singapore." . $this->language . ".pmo");
     $this->translator->readLanguageFile($this->config->base_path . $this->config->pathto_locale . "singapore.admin." . $this->language . ".pmo");
     //include IO handler class and create instance
     require_once $basePath . "includes/io_" . $this->config->io_handler . ".class.php";
     $ioClassName = "sgIO_" . $this->config->io_handler;
     $this->io = new $ioClassName($this->config);
     //set character set
     if (!empty($this->translator->languageStrings[0]["charset"])) {
         $this->character_set = $this->translator->languageStrings[0]["charset"];
     } else {
         $this->character_set = $this->config->default_charset;
     }
     //set action to perform
     if (empty($_REQUEST["action"])) {
         $this->action = "menu";
     } else {
         $this->action = $_REQUEST["action"];
     }
     //set page title
     $this->pageTitle = $this->config->gallery_name;
     //set root node of crumb line
     $holder = new sgGallery("", new stdClass());
     $holder->name = $this->config->gallery_name;
     $this->ancestors = array($holder);
 }
Esempio n. 6
0
 /**
  * @param sgConfig pointer to a {@link sgConfig} object representing 
  *   the current script configuration
  */
 function sgIO_sqlite()
 {
     $this->config = sgConfig::getInstance();
     $this->db = sqlite_open($this->config->base_path . $this->config->pathto_data_dir . "sqlite.dat");
 }
Esempio n. 7
0
 /**
  * Wrapper for mkdir() implementing the safe-mode hack
  */
 function mkdir($path)
 {
     $config = sgConfig::getInstance();
     if ($config->safe_mode_hack) {
         $connection = ftp_connect($config->ftp_server);
         // login to ftp server
         $result = ftp_login($connection, $config->ftp_user, $config->ftp_pass);
         // check if connection was made
         if (!$connection || !$result) {
             return false;
         }
         ftp_chdir($connection, $config->ftp_base_path);
         // go to destination dir
         if (!ftp_mkdir($connection, $path)) {
             // create directory
             return false;
         }
         ftp_site($connection, "CHMOD " . $config->directory_mode . " " . $path);
         ftp_close($connection);
         // close connection
         return true;
     } else {
         return mkdir($path, octdec($config->directory_mode));
     }
 }
Esempio n. 8
0
 /**
  * @param sgConfig pointer to a {@link sgConfig} object representing 
  *   the current script configuration
  */
 function sgIO_mysql()
 {
     $this->config = sgConfig::getInstance();
     mysql_connect($this->config->sql_host, $this->config->sql_user, $this->config->sql_pass);
     mysql_select_db($this->config->sql_database);
 }