// theme class improvement
git-svn-id: http://dev.prestashop.com/svn/v1/branches/1.5.x@11953 b9a71923-0436-4b27-9f14-aed3839534dd
This commit is contained in:
+18
-1
@@ -30,6 +30,8 @@ class ThemeCore extends ObjectModel
|
|||||||
public $name;
|
public $name;
|
||||||
public $directory;
|
public $directory;
|
||||||
|
|
||||||
|
/** @var int access rights of created folders (octal) */
|
||||||
|
public static $access_rights = 0775;
|
||||||
/**
|
/**
|
||||||
* @see ObjectModel::$definition
|
* @see ObjectModel::$definition
|
||||||
*/
|
*/
|
||||||
@@ -38,7 +40,7 @@ class ThemeCore extends ObjectModel
|
|||||||
'primary' => 'id_theme',
|
'primary' => 'id_theme',
|
||||||
'fields' => array(
|
'fields' => array(
|
||||||
'name' => array('type' => self::TYPE_STRING, 'validate' => 'isGenericName', 'size' => 64, 'required' => true),
|
'name' => array('type' => self::TYPE_STRING, 'validate' => 'isGenericName', 'size' => 64, 'required' => true),
|
||||||
'directory' => array('type' => self::TYPE_STRING, 'validate' => 'isValidThemeDir', 'size' => 64, 'required' => true),
|
'directory' => array('type' => self::TYPE_STRING, 'validate' => 'isDirName', 'size' => 64, 'required' => true),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -93,4 +95,19 @@ class ThemeCore extends ObjectModel
|
|||||||
return Db::getInstance()->getValue('SELECT count(*)
|
return Db::getInstance()->getValue('SELECT count(*)
|
||||||
FROM '._DB_PREFIX_.'shop WHERE id_theme = '.(int)$this->id);
|
FROM '._DB_PREFIX_.'shop WHERE id_theme = '.(int)$this->id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* add only theme if the directory exists
|
||||||
|
*
|
||||||
|
* @param bool $null_values
|
||||||
|
* @param bool $autodate
|
||||||
|
* @return boolean Insertion result
|
||||||
|
*/
|
||||||
|
public function add($autodate = true, $null_values = false)
|
||||||
|
{
|
||||||
|
if (!is_dir(_PS_ALL_THEMES_DIR_.$this->directory))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return parent::add($autodate, $null_values);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+11
-11
@@ -714,6 +714,17 @@ class ValidateCore
|
|||||||
return preg_match('/^[a-zA-Z0-9_.-]*$/', $name);
|
return preg_match('/^[a-zA-Z0-9_.-]*$/', $name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check for standard name directory validity
|
||||||
|
*
|
||||||
|
* @param string $name Name to validate
|
||||||
|
* @return boolean Validity is ok or not
|
||||||
|
*/
|
||||||
|
public static function isDirName($dir)
|
||||||
|
{
|
||||||
|
return (bool)preg_match('/^[a-zA-Z0-9_.-]*$/', $dir);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check for admin panel tab name validity
|
* Check for admin panel tab name validity
|
||||||
*
|
*
|
||||||
@@ -966,16 +977,5 @@ class ValidateCore
|
|||||||
return (bool)preg_match('/^[0-9]{3,4}[a-zA-Z]{1}$/s', $ape);
|
return (bool)preg_match('/^[0-9]{3,4}[a-zA-Z]{1}$/s', $ape);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Validate theme directory
|
|
||||||
* We currently check if the item is a valid theme directory
|
|
||||||
*
|
|
||||||
* @param string $dir
|
|
||||||
* @return boolean
|
|
||||||
*/
|
|
||||||
public static function isValidThemeDir($dir)
|
|
||||||
{
|
|
||||||
return ($dir[0] != '.') && is_dir(_PS_ALL_THEMES_DIR_.DIRECTORY_SEPARATOR.$dir);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user