Пример #1
0
/**
 * Autoload: inclui uma classe caso ela seja chamada sem existir
 * @param: class(string), classe a ser incluída
 * @access: global
 * @return: void
 */
function __autoload($class)
{
    global $_CLASSES;
    if (array_key_exists($class, $_CLASSES)) {
        if (file_exists($_CLASSES[$class])) {
            require_once $_CLASSES[$class];
        } else {
            Zeus_Error::raise("Autoload: o arquivo da classe {$class} definido em \$_CLASSES não está correto!");
        }
    } else {
        Zeus_Error::raise("Autoload: a classe {$class} não está definida em \$_CLASSES!");
    }
}
Пример #2
0
/**
 * Import:    importa arquivos do framework, semelhande ao import do Java
 *
 * @param:    file(string), Arquivo a ser importado.
 *		      Caso este arquivo esteja dentro de um diretório em /lib/,
 *		      Este diretório deverá ser separado por '.' no lugar de '/'
 *		      E caso queira incluir todos os arquivos de um diretório,
 *		      deve-se seguir o exemplo: import('Dir.*')
 *
 * @exemplos: para um arquivo no diretório base do framework(lib): import('File');
 *			  para um arquivo em um subdiretório : import('Dir.File')
 *			  para todos os arquivos de um subdiretorio: import('Dir.*')
 *
 * @access:   global
 * @return:   void
 */
function import($file, $base = '')
{
    $base = $base == '' ? BASE_PATH . DS . 'lib' . DS : $base;
    if (is_array($file)) {
        foreach ($file as $f) {
            import($f, $base);
        }
    } else {
        $pts = explode('.', $file);
        if ($pts[count($pts) - 1] == '*') {
            $base = $base . DS;
            for ($i = 0; $i < count($pts) - 1; $i++) {
                $base .= $pts[$i];
            }
            !class_exists('Zeus_Dir') ? import('Files.Dir') : '';
            $_file = Zeus_Dir::listFiles($base, true, false);
            foreach ($_file as $f) {
                if (is_dir($f)) {
                    import('*', $f);
                } else {
                    if (file_exists($f) && !is_dir($f)) {
                        require_once $f;
                    } else {
                        Zeus_Error::raise("Import: O aqruivo {$f} não existe!");
                    }
                }
            }
        } else {
            $f = $base;
            for ($i = 0; $i < count($pts); $i++) {
                $f .= DS . $pts[$i];
            }
            if (is_dir($f)) {
                import($file . '.*');
            } else {
                if (file_exists($f . '.php')) {
                    require_once $f . '.php';
                } else {
                    Zeus_Error::raise("Import: O aruivo {$f}.php não existe!");
                }
            }
        }
    }
}
Пример #3
0
 public function upload()
 {
     $names = array();
     foreach ($this->files as $file) {
         if (!$this->isValid($file)) {
             Zeus_Error::raise("zUpload::upload(): Arquivo inválido {$file['name']}!");
         } else {
             $file['name'] = $this->toValidName($file['name']);
             $prefix = '';
             while (file_exists($this->baseDir . DS . $prefix . $file['name'])) {
                 $prefix .= rand(0, 9);
             }
             if (move_uploaded_file($file['tmp_name'], $this->baseDir . DS . $prefix . $file['name'])) {
                 $names[] = $file['name'];
             } else {
                 Zeus_Error::raise("Upload::upload(): Erro ao fazer upload de {$file['name']}!");
             }
         }
     }
     return $names;
 }
Пример #4
0
 /**
  * Resize: redimensiona uma imagem
  * @param: w(int), nova largura da imagem
  * @param: h(int), nova altura da imagem
  * @param: i(int), indice do arquivo em @files a ser redimensionado
  * @param: t(string), tipo de redimensionamento a ser aplicado
  *		   @value: simple, redimensiona para os tamanhos passados em @w, e @h
  * 		   @value: max, redimensiona relativamente, não deixando que a largura nem altura
  * 				   ultrapassem @w ou @h, respectivamente
  * 		   @value: fill, redimensiona relativamente e completa com uma cor o restante da imagem
  * 		   @value: byWidth, redimensiona relativamente, não deixando que a largura ultrapasse @w
  * 		   @value: byHeight, redimensiona relativamente, não deixando que a altura ultrapasse @h
  * 		   @value: width, redimensiona apenas a largura
  * 		   @value: height, redimensiona apenas a altura
  * @access: public
  * @return: bool
  */
 public function resize($w, $h, $i = 0, $t = 'simple')
 {
     if (!isset($this->files[$i])) {
         return false;
     }
     if (!$this->create($i)) {
         return false;
     }
     switch ($t) {
         case 'simple':
             return $this->resizeSimple($w, $h, $i);
             break;
         case 'byWidth':
             return $this->resizeByWidth($w, $h, $i);
             break;
         case 'byHeight':
             return $this->resizeByHeight($w, $h, $i);
             break;
         case 'max':
             return $this->resizeMax($w, $h, $i);
             break;
         default:
             Zeus_Error::raise("Zeus_Image::resize(): Modo de redimensionamento não reconhecido! {$t}");
             break;
     }
     return false;
 }
Пример #5
0
 /**
  * Set Property: edita tags do arquivo
  * @param: prop(mixed), nome da tag a ser editada, ou um array associativo.
  * 		   tendo como chave, o nome da propriedade; e valor, o valor da tag
  * @param: val(string), Opcional. Necessário apenas no caso de @prop ser uma string
  * @access: public
  * @return: string
  */
 public function setProperty($prop, $val = null, $i = 0)
 {
     if (!isset($this->files[$i])) {
         Zeus_Error::raise("Zeus_Mp3: O indice {$i} não está definido em \\Zeus_Files::files");
         return false;
     }
     // OBS: método incompleto, fala implementar a função de editar
     $prop_list = array('title', 'artist', 'genre', 'year', 'album');
     if (is_array($prop)) {
         $i = $val == null ? 0 : $val;
         foreach ($prop as $p => $v) {
             if (in_array($p)) {
                 $this->setProperty($p, $v, $i);
             } else {
                 if (is_string($v)) {
                     foreach ($v as $p => $v) {
                         $this->setProperty($p, $v, $i);
                     }
                 }
             }
         }
         return true;
     } else {
         if (is_string($prop)) {
             if (is_null($val)) {
                 return false;
             }
             /**
              * Criar aqui a função de editar as tags
              */
             return true;
         }
     }
     return false;
 }
Пример #6
0
<?php

define('DS', preg_match('/\\//', __DIR__) ? '/' : '\\');
define('BASE_PATH', __DIR__ . DS . '..' . DS);
$_CLASSES = array('Zeus_Array' => BASE_PATH . DS . 'lib' . DS . 'Types' . DS . 'Array.php', 'Zeus_Object' => BASE_PATH . DS . 'lib' . DS . 'Types' . DS . 'Object.php', 'Zeus_String' => BASE_PATH . DS . 'lib' . DS . 'Types' . DS . 'String.php', 'Zeus_File' => BASE_PATH . DS . 'lib' . DS . 'Files' . DS . 'File.php', 'Zeus_Image' => BASE_PATH . DS . 'lib' . DS . 'Files' . DS . 'Image.php', 'Zeus_Mp3' => BASE_PATH . DS . 'lib' . DS . 'Files' . DS . 'Mp3.php', 'Zeus_Txt' => BASE_PATH . DS . 'lib' . DS . 'Files' . DS . 'Txt.php', 'Zeus_Upload' => BASE_PATH . DS . 'lib' . DS . 'Files' . DS . 'Upload.php', 'Zeus_Zip' => BASE_PATH . DS . 'lib' . DS . 'Files' . DS . 'Zip.php', 'Zeus_Dir' => BASE_PATH . DS . 'lib' . DS . 'Files' . DS . 'Dir.php', 'Zeus_Database' => BASE_PATH . DS . 'lib' . DS . 'Database' . DS . 'Database.php', 'Zeus_Class' => BASE_PATH . DS . 'lib' . DS . 'Class.php', 'Zeus_Mailer' => BASE_PATH . DS . 'lib' . DS . 'Mailer' . DS . 'Mailer.php', 'Zeus_Event' => BASE_PATH . DS . 'lib' . DS . 'Event.php', 'Zeus_Error' => BASE_PATH . DS . 'lib' . DS . 'Error.php', 'Zeus_Config' => BASE_PATH . DS . 'lib' . DS . 'Config.php', 'Zeus_Document' => BASE_PATH . DS . 'lib' . DS . 'Document.php', 'Zeus_Factory' => BASE_PATH . DS . 'lib' . DS . 'Factory.php', 'Zeus_Request' => BASE_PATH . DS . 'lib' . DS . 'Request.php');
require BASE_PATH . DS . 'lib' . DS . 'import.php';
require BASE_PATH . DS . 'lib' . DS . 'autoload.php';
$db = Zeus_Factory::getDBO();
$db->setQuery("SELECT class_name, class_file FROM #__extends ORDER BY class_id ASC");
$db->query();
if ($db->getNumRows()) {
    foreach ($db->loadObjectList() as $item) {
        if (isset($_CLASSES[$item->class_name])) {
            Zeus_Error::raise("Core: Existem duas ou mais classes com o mesmo nome, {$item->class_name}");
        }
        $_CLASSES[$item->class_name] = BASE_PATH . DS . 'lib' . DS . 'Classes' . DS . $item->class_file;
    }
}
Пример #7
0
 public function query()
 {
     $this->_query = mysql_query($this->_queryString);
     if ($this->_query) {
         return true;
     }
     Zeus_Error::raise(array('message' => mysql_error($this->_link), 'line' => __LINE__, 'file' => __FILE__, 'datestamp' => date('Y-m-d H:i:s')));
     return false;
 }