Index: trunk/core/units/general/helpers/themes_helper.php
===================================================================
diff -u -N
--- trunk/core/units/general/helpers/themes_helper.php (revision 8397)
+++ trunk/core/units/general/helpers/themes_helper.php (revision 0)
@@ -1,209 +0,0 @@
-themesFolder = FULL_PATH.'/themes';
- }
-
- /**
- * Updates file system changes to database for selected theme
- *
- * @param string $theme_name
- *
- * @return mixed returns ID of created/used theme or false, if none created
- */
- function refreshTheme($theme_name)
- {
- if (!file_exists($this->themesFolder.'/'.$theme_name)) {
- // requested theme was not found on hdd
- return false;
- }
-
- $id_field = $this->Application->getUnitOption('theme', 'IDField');
- $table_name = $this->Application->getUnitOption('theme', 'TableName');
-
- $sql = 'SELECT '.$id_field.'
- FROM '.$table_name.'
- WHERE Name = '.$this->Conn->qstr($theme_name);
- $theme_id = $this->Conn->GetOne($sql);
-
- $this->themeFiles = Array ();
- if ($theme_id) {
- // reset found mark for every themes file (if theme is not new)
- $sql = 'UPDATE '.TABLE_PREFIX.'ThemeFiles
- SET FileFound = 0
- WHERE ThemeId = '.$theme_id;
- $this->Conn->Query($sql);
-
- // get all theme files from db
- $sql = 'SELECT FileId, CONCAT(FilePath, "/", FileName) AS FullPath
- FROM '.TABLE_PREFIX.'ThemeFiles
- WHERE ThemeId = '.$theme_id;
- $this->themeFiles = $this->Conn->GetCol($sql, 'FullPath');
- }
- else {
- // theme was not found in db, but found on hdd -> create new
- $fields_hash = Array (
- 'Name' => $theme_name,
- 'Enabled' => 0,
- 'Description' => $theme_name,
- 'PrimaryTheme' => 0,
- 'CacheTimeout' => 3600, // not in use right now
- 'StylesheetId' => 0, // not in use right now
- );
- $this->Conn->doInsert($fields_hash, $table_name);
- $theme_id = $this->Conn->getInsertID();
- }
-
- $theme_path = $this->themesFolder.'/'.$theme_name;
- $this->FindThemeFiles('', $theme_path, $theme_id); // search from base theme directory
-
- // delete file records from db, that were not found on hdd
- $sql = 'DELETE FROM '.TABLE_PREFIX.'ThemeFiles
- WHERE ThemeId = '.$theme_id.' AND FileFound = 0';
- $this->Conn->Query($sql);
-
- return $theme_id;
- }
-
- /**
- * Searches for new templates (missing in db) in spefied folder
- *
- * @param string $folder_path subfolder of searchable theme
- * @param string $theme_path theme path from web server root
- * @param int $theme_id id of theme we are scanning
- */
- function FindThemeFiles($folder_path, $theme_path, $theme_id, $auto_structure_mode=1)
- {
- $fh = opendir($theme_path.$folder_path.'/');
-
- if (file_exists($theme_path.$folder_path.'/'.'.smsignore')) {
- $ignore = file($theme_path.$folder_path.'/'.'.smsignore');
- }
- else {
- $ignore = array();
- }
-
- while (($filename = readdir($fh))) {
- if ($filename == '.' || $filename == '..') continue;
-
- $auto_structure = $auto_structure_mode;
- foreach ($ignore as $pattern)
- {
- if (preg_match('/'.str_replace('/', '\\/', trim($pattern)).'/', $filename)) {
- $auto_structure = 2;
- break;
- }
- }
-
- $full_path = $theme_path.$folder_path.'/'.$filename;
- if (is_dir($full_path)) {
- $this->FindThemeFiles($folder_path.'/'.$filename, $theme_path, $theme_id, $auto_structure);
- }
- elseif (substr($filename, -4) == '.tpl') {
- $file_path = $folder_path.'/'.$filename;
-
- $file_id = isset($this->themeFiles[$file_path]) ? $this->themeFiles[$file_path] : false;
- if ($file_id) {
- // file was found in db & on hdd -> mark as existing
- $sql = 'UPDATE '.TABLE_PREFIX.'ThemeFiles
- SET FileFound = 1, FileType = '.$auto_structure.'
- WHERE FileId = '.$file_id;
- $this->Conn->Query($sql);
- }
- else {
- // file was found on hdd, but missing in db -> create new file record
- $fields_hash = Array (
- 'ThemeId' => $theme_id,
- 'FileName' => $filename,
- 'FilePath' => $folder_path,
- 'Description' => '',
- 'FileType' => $auto_structure, // 1 - built-in, 0 - custom (not in use right now), 2 - skipped in structure
- 'FileFound' => 1,
- );
- $this->Conn->doInsert($fields_hash, TABLE_PREFIX.'ThemeFiles');
- $this->themeFiles[$file_path] = $this->Conn->getInsertID();
- }
-// echo 'FilePath: ['.$folder_path.']; FileName: ['.$filename.']; IsNew: ['.($file_id > 0 ? 'NO' : 'YES').']
';
- }
-
- }
- }
-
- /**
- * Updates file system changes to database for all themes (including new ones)
- *
- */
- function refreshThemes()
- {
- $themes_found = Array();
-
- $fh = opendir($this->themesFolder.'/');
- while (($filename = readdir($fh))) {
- if ($filename == '.' || $filename == '..' || $filename == 'CVS') continue;
-
- if (is_dir($this->themesFolder.'/'.$filename)) {
- $theme_id = $this->refreshTheme($filename);
- if ($theme_id) {
- $themes_found[] = $theme_id;
- }
- }
- }
-
- $id_field = $this->Application->getUnitOption('theme', 'IDField');
- $table_name = $this->Application->getUnitOption('theme', 'TableName');
-
- // if none themes found -> delete all from db OR delete all except of found themes
- $sql = 'SELECT '.$id_field.'
- FROM '.$table_name;
- if ($themes_found) {
- $sql .= ' WHERE '.$id_field.' NOT IN ('.implode(',', $themes_found).')';
- }
- $theme_ids = $this->Conn->GetCol($sql);
- $this->deleteThemes($theme_ids);
-
- }
-
- /**
- * Deletes themes with ids passed from db
- *
- * @param Array $theme_ids
- */
- function deleteThemes($theme_ids)
- {
- if (!$theme_ids) {
- return ;
- }
-
- $id_field = $this->Application->getUnitOption('theme', 'IDField');
- $table_name = $this->Application->getUnitOption('theme', 'TableName');
-
- $sql = 'DELETE FROM '.$table_name.'
- WHERE '.$id_field.' IN ('.implode(',', $theme_ids).')';
- $this->Conn->Query($sql);
-
- $sql = 'DELETE FROM '.TABLE_PREFIX.'ThemeFiles
- WHERE '.$id_field.' IN ('.implode(',', $theme_ids).')';
- $this->Conn->Query($sql);
- }
- }
-
-
-?>
\ No newline at end of file