root/dev/common/includes/class.pilot.php @ 419

Revision 419, 6.5 KB (checked in by kovell, 12 years ago)

Fixes: some php4 errors fixed. The great commenting project continues.

Line 
1<?php
2require_once('class.corp.php');
3require_once('class.item.php');
4require_once('class.thumb.php');
5
6//! Creates a new Pilot or fetches an existing one from the database.
7class Pilot
8{
9    //! Create a new Pilot object from the given $id.
10
11    /*!
12     * \param $id The pilot ID.
13         * \param $externalIDFlag whether the id is external or internal
14     */
15    function Pilot($id = 0, $externalIDFlag = false)
16    {
17        if($externalIDFlag) $this->externalid_=intval($id);
18        else $this->id_ = intval($id);
19    }
20        //! Return the alliance ID.
21    function getID()
22    {
23            if($this->id_) return $this->id_;
24            elseif($this->externalid_)
25            {
26                    $this->execQuery();
27                    return $this->id_;
28            }
29            else return 0;
30    }
31        //! Return the pilot's CCP ID.
32    function getExternalID()
33    {
34                if($this->externalid_) return $this->externalid_;
35                elseif($this->id_)
36                {
37                        $this->execQuery();
38                        if($this->externalid_) return $this->externalid_;
39                        require_once("class.api.php");
40                        $api = new Api();
41                        $id = $api->getCharId($this->getName());
42                        if ($id > 0) $this->setCharacterID($id);
43                        return $this->externalid_;
44                }
45                else return 0;
46    }
47    //! Return the pilot name.
48    function getName()
49    {
50        if(!$this->name_) $this->execQuery();
51        $pos = strpos($this->name_, "#");
52        if ($pos === false)
53        {
54            return $this->name_;
55        }
56        else
57        {
58            $name = explode("#", $this->name_);
59            $item = new Item($name[2]);
60            return $item->getName();
61        }
62    }
63    //! Return the URL for the pilot's portrait.
64
65    /*!
66     * \param $size The desired portrait size.
67         * \return URL for a portrait.
68     */
69    function getPortraitURL($size = 64)
70    {
71                if(!$this->externalid_) $this->execQuery();
72        if (!$this->externalid_)
73        {
74                return '?a=thumb&amp;id='.$this->id_.'&amp;size='.$size.'&amp;int=1';
75        }
76        else
77        {
78                        if( file_exists('cache/portraits/'.$this->externalid_.'_'.$size.'.jpg'))
79                                return 'cache/portraits/'.$this->externalid_.'_'.$size.'.jpg';
80                        else return '?a=thumb&amp;id='.$this->externalid_.'&amp;size='.$size;
81        }
82    }   
83    //! Fetch the pilot details from the database using the id given on construction.
84    function execQuery()
85    {
86        if (!$this->qry_)
87        {
88                        if(!$this->externalid_ && !$this->id_)
89                        {
90                                        $this->valid_ = false;
91                                        return;
92                        }
93            $this->qry_ = new DBQuery();
94            $this->sql_ = 'select * from kb3_pilots plt, kb3_corps crp, kb3_alliances ali
95                               where crp.crp_id = plt.plt_crp_id
96                               and ali.all_id = crp.crp_all_id ';
97            if($this->externalid_) $this->sql_ .= 'and plt.plt_externalid = '.$this->externalid_;
98            else $this->sql_ .= 'and plt.plt_id = '.$this->id_;
99            $this->qry_->execute($this->sql_) or die($this->qry_->getErrorMsg());
100            //$this->row_ = $this->qry_->getRow();
101            $row = $this->qry_->getRow();
102            if (!$row)
103                $this->valid_ = false;
104            else
105            {
106                $this->valid_ = true;
107                $this->id_ = $row['plt_id'];
108                $this->name_ = $row['plt_name'];
109                $this->corp_ = $row['plt_crp_id'];
110                $this->externalid_ = intval($row['plt_externalid']);
111                               
112            }
113        }
114    }
115    //! Return the corporation this pilot is a member of.
116
117    /*!
118         * \return Corporation object
119     */
120    function getCorp()
121    {
122        if(!$this->corp_) $this->execQuery();
123        return new Corporation($this->corp_);
124    }
125        //! Check if the id given on construction is valid.
126
127    /*!
128         * \return boolean - true for exists.
129     */
130    function exists()
131    {
132        $this->execQuery();
133        return $this->valid_;
134    }
135    //! Add a new pilot to the database or update the details of an existing one.
136
137    /*!
138     * \param $name Pilot name
139         * \param $corp Corporation object for this pilot's corporation
140         * \param $timestamp time this pilot's corp was updated
141         * \param $externalID CCP external id
142     */
143    function add($name, $corp, $timestamp, $externalID = '0')
144    {
145        $qry = new DBQuery();
146        $qry->execute("select *
147                        from kb3_pilots
148                       where plt_name = '".slashfix($name)."'");
149
150        if ($qry->recordCount() == 0)
151        {
152            $qry->execute("insert into kb3_pilots (plt_id, plt_name, plt_crp_id, plt_externalid, plt_updated) values ( null,
153                                                        '".slashfix($name)."',
154                                                        ".$corp->getID().",
155                                                        ".$externalID.",
156                                                        date_format( '".$timestamp."', '%Y.%m.%d %H:%i:%s'))");
157            $this->id_ = $qry->getInsertID();
158        }
159        else
160        {
161            $row = $qry->getRow();
162            $this->id_ = $row['plt_id'];
163            if ($this->isUpdatable($timestamp) && $row['plt_crp_id'] != $corp->getID())
164            {
165                $qry->execute("update kb3_pilots
166                             set plt_crp_id = ".$corp->getID().",
167                                 plt_updated = date_format( '".$timestamp."', '%Y.%m.%d %H:%i:%s') where plt_id = ".$this->id_);
168            }
169            if (!$row['plt_externalid'] && $externalID) $this->setCharacterID($externalID);
170        }
171
172        return $this->id_;
173    }
174    //! Return whether this pilot was updated before the given timestamp.
175
176    /*!
177     * \param $timestamp A timestamp to compare this pilot's details with.
178         * \return boolean - true if update time was before the given timestamp.
179     */
180    function isUpdatable($timestamp)
181    {
182        $qry = new DBQuery();
183        $qry->execute("select plt_id
184                        from kb3_pilots
185                       where plt_id = ".$this->id_."
186                         and ( plt_updated < date_format( '".$timestamp."', '%Y.%m.%d %H:%i')
187                               or plt_updated is null )");
188
189        return $qry->recordCount() == 1;
190    }
191        //! Set the CCP external ID for this pilot.
192
193    /*!
194     * \param $externalID CCP external ID for this pilot.
195     */
196    function setCharacterID($externalID)
197    {
198        if (!intval($externalID))
199        {
200            return false;
201        }
202        $this->externalid_ = intval($externalID);
203        $qry = new DBQuery();
204        $qry->execute("update kb3_pilots set plt_externalid = ".$this->externalid_."
205                       where plt_id = ".$this->id_);
206    }
207}
208?>
Note: See TracBrowser for help on using the browser.